@marimo-team/islands 0.25.3-dev27 → 0.25.3-dev271

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 (847) hide show
  1. package/dist/{ConnectedDataExplorerComponent-DfG3PRaJ.js → ConnectedDataExplorerComponent-eLHPh6uu.js} +120 -116
  2. package/dist/{ErrorBoundary-DKAio_E4.js → ErrorBoundary-VLVnXoqP.js} +66 -71
  3. package/dist/_baseSet-BfI5FjBM.js +328 -0
  4. package/dist/{abnfDiagram-VCTEODGH-B3w-XWX8.js → abnfDiagram-VCTEODGH-hqd0IBtX.js} +2 -2
  5. package/dist/any-language-editor-DnG26QXh.js +75 -0
  6. package/dist/{architectureDiagram-5GKGNRK7-C18U9A6k.js → architectureDiagram-5GKGNRK7-BzLAFcc0.js} +1 -1
  7. package/dist/{arrays-CN1djC4k.js → arrays-DoQ-AILx.js} +15 -27
  8. package/dist/assertNever-DIU3JJbt.js +507 -0
  9. package/dist/assets/__vite-browser-external-BKBpimif.js +1 -0
  10. package/dist/assets/worker-CgoMtD-_.js +113 -0
  11. package/dist/{blockDiagram-I7D4REHJ-Cg25UrxT.js → blockDiagram-I7D4REHJ-Dkhe6_PP.js} +1 -1
  12. package/dist/{button-CvjkwdSk.js → button-0-RqY1DW.js} +229 -218
  13. package/dist/{capabilities-CQ5IjhzL.js → capabilities-B6yy_CBN.js} +2 -2
  14. package/dist/{chat-ui-DDJuqS87.js → chat-ui-BWIkve2R.js} +2071 -1780
  15. package/dist/{check-BMKBBrdc.js → check-gUSZbRsl.js} +1 -1
  16. package/dist/{chunk-IMKFNOWR-CrS5bzqW.js → chunk-IMKFNOWR-DOeVvuyE.js} +1 -1
  17. package/dist/{chunk-SHT3W25Y-StpvPvUG.js → chunk-SHT3W25Y-DZoFI8wR.js} +1 -1
  18. package/dist/{chunk-SVP7TREG-CBXjbYZC.js → chunk-SVP7TREG-CWu86PSW.js} +1 -1
  19. package/dist/{chunk-TICWLB2K-Dp6bIb-q.js → chunk-TICWLB2K-BrM0GoP3.js} +1 -1
  20. package/dist/{chunk-YOKDWASO-DPZk8vhS.js → chunk-YOKDWASO-DKplTrBY.js} +20 -20
  21. package/dist/{classDiagram-ZZMXUADV-BFYuxV5g.js → classDiagram-ZZMXUADV-DYi4V2bB.js} +2 -2
  22. package/dist/{classDiagram-v2-VYDZK3BY-D_tjXVMl.js → classDiagram-v2-VYDZK3BY-tN7FIk-m.js} +2 -2
  23. package/dist/{code-visibility-CFvLbCZJ.js → code-visibility-Dv4bHkOd.js} +43 -50
  24. package/dist/{common-1HUDUr7W.js → common-KrCVlCIg.js} +10277 -9719
  25. package/dist/config-BsPruWMR.js +636 -0
  26. package/dist/{copy-icon-BgUO8jsi.js → copy-icon-C2I8sw4h.js} +3 -3
  27. package/dist/createReducer-DdtT_7ji.js +67 -0
  28. package/dist/{cynefinDiagram-5FMLGOSQ-DSgYrHB2.js → cynefinDiagram-5FMLGOSQ-D5nCnDc-.js} +1 -1
  29. package/dist/{dagre-GXQ25YYZ-GYlruCBf.js → dagre-GXQ25YYZ-BHkd7f_i.js} +3 -3
  30. package/dist/{dagre-BGSfXNEb.js → dagre-mqiMAsFY.js} +531 -680
  31. package/dist/{data-grid-overlay-editor-ZxoN8gVB.js → data-grid-overlay-editor-BnCDQaMh.js} +5 -5
  32. package/dist/{data-grid-types-BH_r7g7l.js → data-grid-types-0PJ-9N5n.js} +1 -1
  33. package/dist/{debounce-C3jyATpc.js → debounce-DrhhziJv.js} +2 -2
  34. package/dist/{diagram-S7CK7UJ4-DRu5LX5_.js → diagram-S7CK7UJ4-D1ALppT2.js} +1 -1
  35. package/dist/{diagram-UQ7AKVKN-DD7uiejP.js → diagram-UQ7AKVKN-DLv0b83L.js} +1 -1
  36. package/dist/{diagram-VX7I27RA-ByH9KAJJ.js → diagram-VX7I27RA-7XJ7J6qg.js} +1 -1
  37. package/dist/{diagram-Z3DM3KII-BsQHPRke.js → diagram-Z3DM3KII-7M7zbHp_.js} +1 -1
  38. package/dist/{dialog-Cc479ZEH.js → dialog-DzCj1qQv.js} +26 -26
  39. package/dist/{dist-Bvs24R_E.js → dist-11T5wq3_.js} +31 -30
  40. package/dist/{dist-F8Ep36rk.js → dist-17ugwGZc.js} +59 -58
  41. package/dist/{dist-BMQf5zIS.js → dist-7cRjf--y.js} +123 -122
  42. package/dist/{dist-diIx5qJW.js → dist-B8pkfkzc.js} +31 -30
  43. package/dist/{dist-CN_BeG2I.js → dist-B9UoM_wq.js} +58 -57
  44. package/dist/{dist-CLdpGQVr.js → dist-BGuMTs1i.js} +118 -117
  45. package/dist/{dist-BK4Oj99o.js → dist-BHW11fni.js} +18 -17
  46. package/dist/dist-BLY4m1Wi.js +850 -0
  47. package/dist/{dist-PXYI_yuP.js → dist-BNlcVoxs.js} +24 -23
  48. package/dist/{dist-D6d86eNJ.js → dist-BQYe5Bju.js} +47 -46
  49. package/dist/{dist-CkTTIdBe.js → dist-BX1mn8na.js} +337 -337
  50. package/dist/{dist-DiDibOYr.js → dist-Bh0PTKUW.js} +151 -150
  51. package/dist/{dist-CSJ0MDRw.js → dist-CKaXK92p.js} +56 -55
  52. package/dist/{dist-C8fAKSH1.js → dist-CLhwfhpJ.js} +53 -52
  53. package/dist/{dist-DoE4XJBC.js → dist-CYeqK4Xw.js} +9801 -10649
  54. package/dist/{dist-BLfKmR-l.js → dist-Cxlp3WH6.js} +16 -15
  55. package/dist/{dist-D-wwqlzJ.js → dist-DSJPGj42.js} +158 -157
  56. package/dist/{dist-BorMD-uX.js → dist-DU9ICsWZ.js} +75 -74
  57. package/dist/{dist-DBtSl3sf.js → dist-DWv0ALBi.js} +47 -46
  58. package/dist/{dist-OR1OnN-y.js → dist-DiBpWEsB.js} +31 -30
  59. package/dist/{dist-CrSP_H1M.js → dist-DiLFTlnl.js} +242 -242
  60. package/dist/{dist-DpBpA_n1.js → dist-Lm-D-Vr6.js} +3 -3
  61. package/dist/{dist-CN8zI-XC.js → dist-X9CsotJl.js} +239 -239
  62. package/dist/{dist-CSbh1PNP.js → dist-cVDV5IuI.js} +23 -22
  63. package/dist/{dist-BuaRHxOc.js → dist-fRfaOoq8.js} +44 -43
  64. package/dist/{dist-Cg7gzw-a.js → dist-gTTI-9Px.js} +78 -77
  65. package/dist/dropdown-menu-CdXE15an.js +6089 -0
  66. package/dist/{ebnfDiagram-PWID7BFC-CQRK5_eT.js → ebnfDiagram-PWID7BFC-DHH1qlmV.js} +2 -2
  67. package/dist/{erDiagram-RLTQ6QDP-BKtWrDVh.js → erDiagram-RLTQ6QDP-fI_0dGef.js} +1 -1
  68. package/dist/{error-banner-CFPHFw4h.js → error-banner-DPc9eIw5.js} +87 -86
  69. package/dist/error-entries-CxN-Nq3V.js +2573 -0
  70. package/dist/{esm-AMFssoNp.js → esm-BDqqT86j.js} +329 -329
  71. package/dist/{esm-D2gTsXEV.js → esm-BgKjMvWw.js} +530 -529
  72. package/dist/feedback-button-7UVo7ro6.js +374 -0
  73. package/dist/{flowDiagram-HODETNUW-1IN-ih2E.js → flowDiagram-HODETNUW-Brg9MA6i.js} +2 -2
  74. package/dist/{formats-Buu00Z2q.js → formats-DbSvAPY-.js} +6 -6
  75. package/dist/{ganttDiagram-EL5Y4UJY-BQT16JSc.js → ganttDiagram-EL5Y4UJY-Dh_4cBJZ.js} +2 -2
  76. package/dist/{glide-data-editor-BBgCAPbk.js → glide-data-editor-DTtBwgEa.js} +6676 -2890
  77. package/dist/{glide-utils-DM9zBO4W.js → glide-utils-BSw3SSHF.js} +84 -45
  78. package/dist/{globals-DhH_o2tF.js → globals-CedpcDTN.js} +3 -3
  79. package/dist/{graphlib-BmY_CCV9.js → graphlib-nlwT3Wvy.js} +177 -220
  80. package/dist/hasIn-C20JsQ2m.js +28 -0
  81. package/dist/{highlighted-body-KPVGNVTW-zwjq21tf.js → highlighted-body-KPVGNVTW-3Ziwfz-V.js} +2 -2
  82. package/dist/{error-entries-Cz3yNs7w.js → html-to-image-Bc2AvXHG.js} +26695 -26850
  83. package/dist/{infoDiagram-27XIBGKW-CkB-zr4p.js → infoDiagram-27XIBGKW-E9e403YT.js} +1 -1
  84. package/dist/isArrayLikeObject-B-HXCsex.js +626 -0
  85. package/dist/isEmpty-CdX7MTE1.js +14 -0
  86. package/dist/{ishikawaDiagram-5VMMS53U-wlyLjBmM.js → ishikawaDiagram-5VMMS53U-C-RlYDRo.js} +1 -1
  87. package/dist/{kanban-definition-UXKFOSKX-C2usY0i-.js → kanban-definition-UXKFOSKX-CLFl_uqK.js} +1 -1
  88. package/dist/{linear-Cnaq3Tfb.js → linear-DWERh7eI.js} +121 -73
  89. package/dist/{loader-BQOfjTIJ.js → loader-BVEtQ4F3.js} +12 -12
  90. package/dist/main.js +10420 -8311
  91. package/dist/mermaid-HWGCJPDP-Du3-HPQA.js +2 -0
  92. package/dist/{mermaid-BA-Z6wGL.js → mermaid-rd09e1JL.js} +54 -54
  93. package/dist/{mindmap-definition-YA3MSWOX-nKOWS8RR.js → mindmap-definition-YA3MSWOX-BQ8TWtyB.js} +1 -1
  94. package/dist/{now-jM8-M7IR.js → now-BKZCLE5P.js} +12 -13
  95. package/dist/{number-overlay-editor-CvLhxHLb.js → number-overlay-editor-D_avDRZT.js} +3 -3
  96. package/dist/{objects-CzUgoMIF.js → objects-DCmMvZtn.js} +1 -3
  97. package/dist/{once-BtE-wKRL.js → once-NnpX_HnX.js} +1 -1
  98. package/dist/{pegDiagram-XKGWAZYB-Dac9EIKD.js → pegDiagram-XKGWAZYB-CN8UHFPi.js} +2 -2
  99. package/dist/pencil-DcT8AE0h.js +10 -0
  100. package/dist/pick-tCszMUbm.js +35 -0
  101. package/dist/{pieDiagram-E7YTZNPT-B7S-DsW_.js → pieDiagram-E7YTZNPT-DGuJ0EBd.js} +1 -1
  102. package/dist/precisionRound-DhAzeRcm.js +49 -0
  103. package/dist/{process-output-B-KBO95p.js → process-output-qecD7Dk8.js} +4 -4
  104. package/dist/{quadrantDiagram-AXDQQJYC-Ccw0xMjN.js → quadrantDiagram-AXDQQJYC-Blrm7V7_.js} +1 -1
  105. package/dist/{railroadDiagram-O6MQD6OU-Cfa5Q-hr.js → railroadDiagram-O6MQD6OU-BPDA8wy8.js} +2 -2
  106. package/dist/{react-vega-BED0DjiB.js → react-vega-C4T9Rb_w.js} +12284 -12270
  107. package/dist/{requirementDiagram-BXWQKSXE-d8zXCJIk.js → requirementDiagram-BXWQKSXE-ChzLGbGW.js} +1 -1
  108. package/dist/{reveal-component-C9BavSsS.js → reveal-component-cJ717FaI.js} +1131 -1108
  109. package/dist/schemas-CdscWNy_.js +4747 -0
  110. package/dist/select-OxgozOC8.js +1200 -0
  111. package/dist/{sequenceDiagram-WJ2MYXX4-b6pei3lJ.js → sequenceDiagram-WJ2MYXX4-DFX-bE6O.js} +1 -1
  112. package/dist/{spec-BJzgmvVa.js → spec-oJn0RhpQ.js} +41 -11
  113. package/dist/{stateDiagram-D77RDMKH-Be-xSpaZ.js → stateDiagram-D77RDMKH-BR7cI3wK.js} +4 -4
  114. package/dist/{stateDiagram-v2-MP3YSRHH-5Y-FxesJ.js → stateDiagram-v2-MP3YSRHH-oGqB5UDI.js} +2 -2
  115. package/dist/static-state-CuV6Pc3a.js +72 -0
  116. package/dist/style.css +1 -1
  117. package/dist/{swimlanes-42K2YHIH-nRRl4NU0.js → swimlanes-42K2YHIH-DwSZl1yC.js} +1 -1
  118. package/dist/{swimlanesDiagram-VR7AAH4N-BS79510V.js → swimlanesDiagram-VR7AAH4N-BHlcd-Ri.js} +2 -2
  119. package/dist/{swiper-component-DKntyn8p.js → swiper-component-Dvj-goaD.js} +2 -2
  120. package/dist/{time-BieKwdYS.js → time-BaMbJs4z.js} +18 -18
  121. package/dist/{timeline-definition-24CTP7MA-Cfzf8WPf.js → timeline-definition-24CTP7MA-DMmP-G2O.js} +1 -1
  122. package/dist/toast-DbBHmxmB.js +491 -0
  123. package/dist/{tooltip-CtBZ5q8p.js → tooltip-BfcDQd2j.js} +329 -305
  124. package/dist/use-restore-focus-CmflVLWJ.js +1672 -0
  125. package/dist/{useAsyncData-BD534XmW.js → useAsyncData-BYIAoMqn.js} +15 -14
  126. package/dist/{useDateFormatter-DkajGwwd.js → useDateFormatter-ButWkdcK.js} +2 -2
  127. package/dist/{useDeepCompareMemoize-C72_RNsu.js → useDeepCompareMemoize-Bz0c5GN6.js} +1 -1
  128. package/dist/{useIframeCapabilities-DBETvvPl.js → useIframeCapabilities-BIolGsF1.js} +1 -1
  129. package/dist/useLifecycle-JjxCC7Vu.js +112 -0
  130. package/dist/useTheme-DPLobSFs.js +339 -0
  131. package/dist/utils-EBklsC5R.js +813 -0
  132. package/dist/{vega-component-nB1kV6sb.js → vega-component-rxIxAAh9.js} +171 -170
  133. package/dist/{vega-embed-container-BNHE18G9.js → vega-embed-container--LYZqguO.js} +2 -2
  134. package/dist/{vega-loader.browser-DNST6uVf.js → vega-loader.browser-B9Pz0EGP.js} +298 -507
  135. package/dist/{vennDiagram-4TSXK5OY-CeY6Z1xZ.js → vennDiagram-4TSXK5OY-Db8GtH1G.js} +1 -1
  136. package/dist/{wardleyDiagram-VM6X3IG4-Cxs9NtVi.js → wardleyDiagram-VM6X3IG4-DmIiC3FU.js} +1 -1
  137. package/dist/{xychartDiagram-S5SC5T6Z-DNWbvPK7.js → xychartDiagram-S5SC5T6Z-DS9OPrNq.js} +2 -2
  138. package/package.json +17 -20
  139. package/src/__mocks__/document.tsx +63 -0
  140. package/src/__mocks__/executions.ts +195 -0
  141. package/src/__mocks__/notebook.ts +3 -5
  142. package/src/__mocks__/partial.ts +26 -0
  143. package/src/__mocks__/requests.ts +1 -4
  144. package/src/__tests__/CellStatus.test.tsx +19 -20
  145. package/src/__tests__/fixtures/pair-config.ts +1 -1
  146. package/src/__tests__/main.test.tsx +24 -1
  147. package/src/__tests__/module-entry.test.ts +44 -0
  148. package/src/__tests__/mount.test.ts +1 -21
  149. package/src/__tests__/{host-imports.test.ts → replica-imports.test.ts} +12 -11
  150. package/src/components/ai/__tests__/ai-model-dropdown.test.tsx +63 -0
  151. package/src/components/ai/ai-model-dropdown.tsx +11 -6
  152. package/src/components/app-config/__tests__/state.test.tsx +50 -0
  153. package/src/components/app-config/ai-config.tsx +156 -150
  154. package/src/components/app-config/app-config-button.tsx +6 -5
  155. package/src/components/app-config/app-config-form.tsx +5 -9
  156. package/src/components/app-config/common.tsx +7 -9
  157. package/src/components/app-config/data-form.tsx +112 -113
  158. package/src/components/app-config/mcp-config.tsx +30 -53
  159. package/src/components/app-config/user-config-form.css +91 -0
  160. package/src/components/app-config/user-config-form.tsx +266 -349
  161. package/src/components/chat/__tests__/capabilities-popover.test.tsx +0 -1
  162. package/src/components/chat/__tests__/chat-display.test.tsx +196 -0
  163. package/src/components/chat/__tests__/chat-markdown.test.tsx +43 -0
  164. package/src/components/chat/__tests__/chat-utils.test.ts +93 -1
  165. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  166. package/src/components/chat/__tests__/notebook-access-selector.test.tsx +64 -0
  167. package/src/components/chat/__tests__/turn-timing.test.ts +84 -0
  168. package/src/components/chat/__tests__/use-assistant-turn.test.ts +95 -0
  169. package/src/components/chat/__tests__/user-message.test.tsx +27 -0
  170. package/src/components/chat/acp/__tests__/agent-panel-initialization.test.tsx +1 -1
  171. package/src/components/chat/acp/__tests__/agent-panel.test.tsx +22 -17
  172. package/src/components/chat/acp/__tests__/session-tabs.test.tsx +43 -0
  173. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  174. package/src/components/chat/acp/agent-panel.tsx +6 -3
  175. package/src/components/chat/acp/blocks.tsx +13 -12
  176. package/src/components/chat/acp/common.tsx +4 -5
  177. package/src/components/chat/acp/model-selector.tsx +1 -1
  178. package/src/components/chat/acp/session-tabs.tsx +8 -3
  179. package/src/components/chat/agent-activity.tsx +132 -0
  180. package/src/components/chat/capabilities-popover.tsx +2 -11
  181. package/src/components/chat/chat-components.tsx +9 -4
  182. package/src/components/chat/chat-display.tsx +131 -57
  183. package/src/components/chat/chat-history-popover.tsx +6 -1
  184. package/src/components/chat/chat-markdown.tsx +15 -0
  185. package/src/components/chat/chat-panel.tsx +216 -294
  186. package/src/components/chat/chat-typography.css +108 -0
  187. package/src/components/chat/chat-utils.ts +24 -35
  188. package/src/components/chat/notebook-access-selector.stories.tsx +22 -0
  189. package/src/components/chat/notebook-access-selector.tsx +100 -0
  190. package/src/components/chat/tool-call/__tests__/tool-labels.test.ts +76 -0
  191. package/src/components/chat/tool-call/__tests__/tool-step.test.tsx +57 -0
  192. package/src/components/chat/tool-call/shared.ts +6 -0
  193. package/src/components/chat/tool-call/tool-call-view.tsx +22 -76
  194. package/src/components/chat/tool-call/tool-labels.ts +172 -0
  195. package/src/components/chat/tool-call/tool-result.tsx +1 -1
  196. package/src/components/chat/tool-call/tool-step.tsx +145 -0
  197. package/src/components/chat/turn-timing.ts +73 -0
  198. package/src/components/chat/use-assistant-turn.ts +65 -0
  199. package/src/components/chat/use-chat-generation.ts +20 -0
  200. package/src/components/chat/user-message.tsx +145 -0
  201. package/src/components/data-table/TableBottomBar.tsx +4 -1
  202. package/src/components/data-table/TableTopBar.tsx +2 -0
  203. package/src/components/data-table/__tests__/chart-spec-model.test.ts +195 -195
  204. package/src/components/data-table/__tests__/column-explorer.test.tsx +27 -1
  205. package/src/components/data-table/__tests__/columns.test.tsx +105 -0
  206. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  207. package/src/components/data-table/__tests__/data-table.test.tsx +1 -0
  208. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  209. package/src/components/data-table/__tests__/export-actions.test.tsx +105 -0
  210. package/src/components/data-table/__tests__/keyboard-selection.test.tsx +188 -0
  211. package/src/components/data-table/__tests__/pagination.test.tsx +28 -1
  212. package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
  213. package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
  214. package/src/components/data-table/cell-selection/feature.ts +2 -2
  215. package/src/components/data-table/cell-selection/types.ts +2 -2
  216. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +74 -1
  217. package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +20 -20
  218. package/src/components/data-table/charts/__tests__/spec.test.ts +78 -52
  219. package/src/components/data-table/charts/__tests__/storage.test.ts +4 -1
  220. package/src/components/data-table/charts/chart-spec/spec.ts +68 -43
  221. package/src/components/data-table/charts/charts.tsx +40 -30
  222. package/src/components/data-table/charts/storage.ts +16 -5
  223. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  224. package/src/components/data-table/column-formatting/types.ts +1 -2
  225. package/src/components/data-table/column-summary/chart-spec-model.tsx +23 -16
  226. package/src/components/data-table/column-summary/column-summary.tsx +2 -4
  227. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  228. package/src/components/data-table/columns.tsx +45 -46
  229. package/src/components/data-table/context-menu.tsx +36 -20
  230. package/src/components/data-table/data-table.tsx +17 -1
  231. package/src/components/data-table/date-popover.tsx +6 -4
  232. package/src/components/data-table/export-actions.tsx +76 -48
  233. package/src/components/data-table/pagination.tsx +44 -33
  234. package/src/components/data-table/range-focus/atoms.ts +4 -6
  235. package/src/components/data-table/range-focus/use-cell-range-selection.ts +65 -38
  236. package/src/components/data-table/range-focus/use-scroll-into-view.ts +21 -2
  237. package/src/components/data-table/renderers.tsx +16 -7
  238. package/src/components/data-table/row-viewer-panel/__tests__/row-viewer.test.tsx +24 -1
  239. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +4 -4
  240. package/src/components/data-table/search-highlight.tsx +79 -0
  241. package/src/components/data-table/types.ts +1 -0
  242. package/src/components/data-table/url-detector.tsx +49 -9
  243. package/src/components/datasources/__tests__/column-actions.test.tsx +97 -0
  244. package/src/components/datasources/__tests__/column-preview.test.tsx +96 -5
  245. package/src/components/datasources/__tests__/datasources-interactions.test.tsx +181 -0
  246. package/src/components/datasources/__tests__/table-list.test.tsx +118 -0
  247. package/src/components/datasources/__tests__/utils.test.ts +57 -6
  248. package/src/components/datasources/column-preview.tsx +17 -12
  249. package/src/components/datasources/datasources.tsx +56 -43
  250. package/src/components/datasources/utils.ts +32 -23
  251. package/src/components/debugger/debugger-code.tsx +5 -0
  252. package/src/components/dependency-graph/custom-node.tsx +1 -1
  253. package/src/components/dependency-graph/dependency-graph-tree.tsx +8 -8
  254. package/src/components/dependency-graph/elements.ts +24 -21
  255. package/src/components/dependency-graph/minimap-content.tsx +15 -20
  256. package/src/components/dependency-graph/panels.tsx +4 -2
  257. package/src/components/dependency-graph/utils/__tests__/layout.test.ts +18 -11
  258. package/src/components/editor/SortableCell.tsx +1 -3
  259. package/src/components/editor/__tests__/Output.test.tsx +50 -32
  260. package/src/{core/attachments/__tests__/toast.test.tsx → components/editor/__tests__/agent-toast.test.tsx} +1 -1
  261. package/src/components/editor/__tests__/data-attributes.test.tsx +28 -21
  262. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +111 -18
  263. package/src/components/editor/__tests__/output-persistence.test.tsx +8 -4
  264. package/src/components/editor/__tests__/package-alert.test.tsx +22 -1
  265. package/src/components/editor/actions/__tests__/name-cell-input.test.tsx +69 -0
  266. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +21 -40
  267. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +41 -14
  268. package/src/components/editor/actions/__tests__/pair-with-agent.test.tsx +6 -24
  269. package/src/components/editor/actions/__tests__/useCellActionButton.test.tsx +131 -0
  270. package/src/components/editor/actions/name-cell-input.tsx +4 -3
  271. package/src/components/editor/actions/pair-with-agent-commands.ts +10 -7
  272. package/src/components/editor/actions/pair-with-agent-modal.tsx +29 -30
  273. package/src/components/editor/actions/pair-with-agent.tsx +16 -39
  274. package/src/components/editor/actions/useCellActionButton.tsx +47 -35
  275. package/src/components/editor/actions/useConfigActions.tsx +3 -4
  276. package/src/components/editor/actions/useNotebookActions.tsx +25 -29
  277. package/src/components/editor/actions/useRestartKernel.tsx +1 -1
  278. package/src/components/editor/actions/useSetCodeVisibility.ts +11 -12
  279. package/src/components/editor/actions/useSetOutputsExpanded.ts +14 -19
  280. package/src/components/editor/ai/ai-completion-editor.tsx +2 -1
  281. package/src/components/editor/ai/completion-handlers.tsx +0 -37
  282. package/src/components/editor/ai/prompt-input.tsx +189 -0
  283. package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +1 -1
  284. package/src/components/editor/alerts/connection-notice.tsx +1 -1
  285. package/src/components/editor/alerts/startup-logs-alert.tsx +1 -0
  286. package/src/components/editor/alerts/stdin-blocking-alert.tsx +4 -2
  287. package/src/components/editor/app-container.tsx +1 -1
  288. package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +1 -1
  289. package/src/components/editor/cell/CellStatus.tsx +23 -19
  290. package/src/components/editor/cell/CreateCellButton.tsx +15 -21
  291. package/src/components/editor/cell/DeleteButton.tsx +3 -2
  292. package/src/components/editor/cell/RunButton.tsx +18 -8
  293. package/src/components/editor/cell/StagedAICell.tsx +52 -137
  294. package/src/components/editor/cell/StopButton.tsx +2 -2
  295. package/src/components/editor/cell/__tests__/useRunCells.test.ts +45 -0
  296. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  297. package/src/components/editor/cell/cell-actions.tsx +12 -1
  298. package/src/components/editor/cell/cell-context-menu.tsx +4 -1
  299. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +54 -0
  300. package/src/components/editor/cell/code/cell-editor.tsx +65 -169
  301. package/src/components/editor/cell/code/language-toggle.tsx +8 -7
  302. package/src/components/editor/cell/collapse.tsx +15 -4
  303. package/src/components/editor/cell/useAddCell.ts +4 -8
  304. package/src/components/editor/cell/useDeleteCell.tsx +10 -36
  305. package/src/components/editor/cell/useRunCells.ts +20 -8
  306. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  307. package/src/components/editor/cell/useSplitCell.tsx +10 -6
  308. package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +1 -1
  309. package/src/components/editor/chrome/components/feedback-button.tsx +2 -8
  310. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +31 -2
  311. package/src/components/editor/chrome/panels/__tests__/runtime-details.test.tsx +1 -1
  312. package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +1 -1
  313. package/src/components/editor/chrome/panels/cache-panel.tsx +1 -0
  314. package/src/components/editor/chrome/panels/dependency-graph-panel.tsx +1 -1
  315. package/src/components/editor/chrome/panels/logs-panel.tsx +2 -1
  316. package/src/components/editor/chrome/panels/outline/__tests__/outline-keyboard.test.tsx +84 -0
  317. package/src/components/editor/chrome/panels/outline/floating-outline.tsx +39 -14
  318. package/src/components/editor/chrome/panels/outline/useActiveOutline.tsx +3 -2
  319. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  320. package/src/components/editor/chrome/panels/panel-header.tsx +13 -0
  321. package/src/components/editor/chrome/panels/secrets-panel.tsx +1 -0
  322. package/src/components/editor/chrome/panels/session-panel.tsx +1 -1
  323. package/src/components/editor/chrome/panels/snippets-panel.tsx +10 -12
  324. package/src/components/editor/chrome/panels/variable-panel.tsx +1 -5
  325. package/src/components/editor/chrome/types.ts +1 -1
  326. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +7 -9
  327. package/src/components/editor/chrome/wrapper/__tests__/document-sync-status.test.tsx +92 -0
  328. package/src/components/editor/chrome/wrapper/__tests__/pending-ai-cells.test.tsx +265 -37
  329. package/src/components/editor/chrome/wrapper/__tests__/useAskAiAboutCell.test.tsx +58 -0
  330. package/src/components/editor/chrome/wrapper/app-chrome.tsx +91 -74
  331. package/src/components/editor/chrome/wrapper/footer-items/attachment-status.tsx +4 -4
  332. package/src/components/editor/chrome/wrapper/footer-items/backend-status.tsx +1 -1
  333. package/src/components/editor/chrome/wrapper/footer-items/document-sync-status.tsx +54 -0
  334. package/src/components/editor/chrome/wrapper/footer-items/lsp-status.tsx +1 -1
  335. package/src/components/editor/chrome/wrapper/footer-items/machine-stats.tsx +1 -1
  336. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +1 -7
  337. package/src/components/editor/chrome/wrapper/footer.tsx +2 -2
  338. package/src/components/editor/chrome/wrapper/minimap-state.ts +1 -1
  339. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +143 -72
  340. package/src/components/editor/chrome/wrapper/pending-ai-changes-badge.tsx +25 -0
  341. package/src/components/editor/chrome/wrapper/sidebar.tsx +8 -4
  342. package/src/components/editor/chrome/wrapper/storage.ts +1 -1
  343. package/src/components/editor/chrome/wrapper/useAskAiAboutCell.ts +36 -0
  344. package/src/components/editor/columns/__tests__/cell-column.test.tsx +1 -1
  345. package/src/components/editor/columns/cell-column.tsx +1 -1
  346. package/src/components/editor/columns/sortable-column.tsx +2 -2
  347. package/src/components/editor/connections/components.tsx +5 -10
  348. package/src/components/editor/controls/Controls.tsx +4 -4
  349. package/src/components/editor/controls/__tests__/command-palette.test.tsx +53 -0
  350. package/src/components/editor/controls/__tests__/keyboard-shortcuts.test.tsx +61 -0
  351. package/src/components/editor/controls/__tests__/notebook-menu-dropdown.test.tsx +10 -4
  352. package/src/components/editor/controls/command-palette.tsx +22 -10
  353. package/src/components/editor/controls/keyboard-shortcuts.tsx +14 -5
  354. package/src/components/editor/documentation.css +34 -11
  355. package/src/components/editor/dynamic-favicon.tsx +21 -40
  356. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +25 -20
  357. package/src/components/editor/errors/auto-fix.tsx +4 -8
  358. package/src/components/editor/errors/send-error-report-button.tsx +3 -6
  359. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  360. package/src/components/editor/file-tree/__tests__/file-explorer-navigation.test.tsx +47 -0
  361. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  362. package/src/components/editor/file-tree/file-explorer.tsx +48 -15
  363. package/src/components/editor/file-tree/file-name-input.tsx +1 -0
  364. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  365. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  366. package/src/components/editor/header/__tests__/filename-form.test.tsx +1 -4
  367. package/src/components/editor/header/__tests__/status.test.tsx +5 -3
  368. package/src/components/editor/header/app-header.tsx +1 -1
  369. package/src/components/editor/header/filename-form.tsx +1 -1
  370. package/src/components/editor/header/status.tsx +44 -22
  371. package/src/components/editor/links/__tests__/cell-link.test.tsx +148 -0
  372. package/src/components/editor/links/cell-link-list.tsx +1 -1
  373. package/src/components/editor/links/cell-link.tsx +21 -11
  374. package/src/components/editor/navigation/__tests__/clipboard.test.ts +60 -38
  375. package/src/components/editor/navigation/__tests__/navigation.test.ts +108 -85
  376. package/src/components/editor/navigation/__tests__/selection.test.ts +43 -21
  377. package/src/components/editor/navigation/clipboard.ts +17 -14
  378. package/src/components/editor/navigation/focus-utils.ts +23 -4
  379. package/src/components/editor/navigation/multi-cell-action-toolbar.tsx +17 -33
  380. package/src/components/editor/navigation/navigation.ts +74 -72
  381. package/src/components/editor/navigation/selection.ts +30 -29
  382. package/src/components/editor/notebook-banner.tsx +1 -0
  383. package/src/components/editor/notebook-cell.tsx +114 -126
  384. package/src/components/editor/output/MarimoErrorOutput.tsx +2 -1
  385. package/src/components/editor/output/MarimoTracebackOutput.tsx +19 -17
  386. package/src/components/editor/output/Outputs.css +8 -0
  387. package/src/components/editor/output/VideoOutput.tsx +6 -0
  388. package/src/components/editor/output/__tests__/VideoOutput.test.tsx +131 -0
  389. package/src/components/editor/output/__tests__/traceback.test.tsx +27 -1
  390. package/src/components/editor/output/ansi-reduce.ts +33 -20
  391. package/src/components/editor/output/console/ConsoleOutput.tsx +19 -25
  392. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +125 -69
  393. package/src/components/editor/package-alert.tsx +14 -7
  394. package/src/components/editor/renderers/__tests__/add-cell-buttons.test.tsx +18 -0
  395. package/src/components/editor/renderers/cell-array.tsx +32 -100
  396. package/src/components/editor/renderers/grid-layout/__tests__/grid-layout.test.tsx +75 -0
  397. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +34 -22
  398. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +0 -2
  399. package/src/components/editor/renderers/slides-layout/slides-layout.tsx +1 -1
  400. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +4 -4
  401. package/src/components/editor/renderers/vertical-layout/sidebar/toggle.tsx +7 -1
  402. package/src/components/editor/renderers/vertical-layout/useFocusFirstEditor.ts +1 -1
  403. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +13 -34
  404. package/src/components/editor/stdin-blocking-alert.tsx +4 -2
  405. package/src/components/home/components.tsx +17 -31
  406. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  407. package/src/components/icons/large-spinner.tsx +3 -14
  408. package/src/components/icons/spinner.tsx +1 -1
  409. package/src/components/markdown/markdown-renderer.tsx +39 -28
  410. package/src/components/mcp/mcp-status-indicator.tsx +18 -14
  411. package/src/components/pages/__tests__/home-page.test.tsx +116 -0
  412. package/src/components/pages/edit-page.tsx +19 -17
  413. package/src/components/pages/home-page.tsx +164 -91
  414. package/src/components/scratchpad/scratchpad.test.tsx +89 -0
  415. package/src/components/scratchpad/scratchpad.tsx +47 -33
  416. package/src/components/scratchpad/state.ts +7 -0
  417. package/src/components/slides/__tests__/minimap-actions.test.tsx +22 -29
  418. package/src/components/slides/__tests__/minimap.test.ts +38 -19
  419. package/src/components/slides/__tests__/slide-scroll-hint.test.tsx +37 -0
  420. package/src/components/slides/minimap.tsx +21 -14
  421. package/src/components/slides/reveal-component.tsx +72 -36
  422. package/src/components/slides/reveal-slides.css +5 -4
  423. package/src/components/slides/slide-cell-view.tsx +32 -29
  424. package/src/components/slides/slide-form.tsx +1 -0
  425. package/src/components/slides/slide-scroll-hint.tsx +3 -1
  426. package/src/components/slides/slide.tsx +3 -4
  427. package/src/components/sort/SortableCellsProvider.tsx +8 -25
  428. package/src/components/tracing/tracing-keyboard.test.tsx +85 -0
  429. package/src/components/tracing/tracing.tsx +46 -42
  430. package/src/components/ui/__tests__/draggable-popover.test.tsx +24 -0
  431. package/src/components/ui/__tests__/fullscreen.test.tsx +44 -2
  432. package/src/components/ui/__tests__/range-slider.test.tsx +165 -0
  433. package/src/components/ui/alert-dialog.tsx +1 -1
  434. package/src/components/ui/draggable-popover.tsx +24 -2
  435. package/src/components/ui/fullscreen.tsx +25 -1
  436. package/src/components/ui/range-slider.tsx +22 -9
  437. package/src/components/ui/toast.tsx +1 -1
  438. package/src/core/MarimoApp.tsx +3 -1
  439. package/src/core/ai/__tests__/staged-cells.test.ts +89 -608
  440. package/src/core/ai/context/context.ts +2 -0
  441. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +8 -12
  442. package/src/core/ai/context/providers/__tests__/cell.test.ts +49 -0
  443. package/src/core/ai/context/providers/cell-output.ts +2 -2
  444. package/src/core/ai/context/providers/cell.ts +54 -0
  445. package/src/core/ai/context/providers/datasource.ts +6 -2
  446. package/src/core/ai/staged-cells.ts +56 -323
  447. package/src/core/ai/state.ts +3 -0
  448. package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +40 -88
  449. package/src/core/ai/tools/__tests__/registry.test.ts +17 -0
  450. package/src/core/ai/tools/base.ts +18 -15
  451. package/src/core/ai/tools/edit-notebook-tool.ts +86 -80
  452. package/src/core/ai/tools/registry.ts +13 -10
  453. package/src/core/ai/tools/sample-tool.ts +6 -7
  454. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +4 -426
  455. package/src/core/cells/__tests__/actions.test.ts +624 -35
  456. package/src/core/cells/__tests__/add-missing-import.test.ts +7 -8
  457. package/src/core/cells/__tests__/arrange.test.ts +432 -0
  458. package/src/core/cells/__tests__/cell.test.ts +85 -151
  459. package/src/core/cells/__tests__/cells.test.ts +269 -2667
  460. package/src/core/cells/__tests__/collapseConsoleOutputs.test.ts +54 -0
  461. package/src/core/cells/__tests__/document.test.ts +164 -0
  462. package/src/core/cells/__tests__/editor.test.ts +57 -0
  463. package/src/core/cells/__tests__/flush-document.test.ts +40 -0
  464. package/src/core/cells/__tests__/harness.ts +106 -0
  465. package/src/core/cells/__tests__/layout.test.ts +177 -0
  466. package/src/core/cells/__tests__/notebook-outline.test.ts +122 -0
  467. package/src/core/cells/__tests__/outputs.test.tsx +71 -53
  468. package/src/core/cells/__tests__/pending-delete-service.test.tsx +11 -20
  469. package/src/core/cells/__tests__/session.test.ts +445 -211
  470. package/src/core/cells/__tests__/utils.test.ts +76 -347
  471. package/src/core/cells/actions.ts +678 -6
  472. package/src/core/cells/add-missing-import.ts +47 -43
  473. package/src/core/cells/arrange.ts +529 -0
  474. package/src/core/cells/cell.ts +45 -136
  475. package/src/core/cells/cells.ts +133 -1385
  476. package/src/core/cells/columns.ts +38 -0
  477. package/src/core/cells/document.ts +178 -0
  478. package/src/core/cells/edit.ts +30 -0
  479. package/src/core/cells/editor.ts +82 -0
  480. package/src/core/cells/focus.ts +27 -6
  481. package/src/core/cells/layout.ts +221 -0
  482. package/src/core/cells/outputs.ts +12 -28
  483. package/src/core/cells/pending-delete-service.ts +8 -14
  484. package/src/core/cells/scrollCellIntoView.ts +6 -0
  485. package/src/core/cells/session.ts +76 -53
  486. package/src/core/cells/types.ts +34 -41
  487. package/src/core/cells/utils.ts +46 -75
  488. package/src/core/codemirror/__tests__/format.test.ts +0 -34
  489. package/src/core/codemirror/__tests__/setup.test.ts +61 -29
  490. package/src/core/codemirror/ai/__tests__/resources.test.ts +117 -0
  491. package/src/core/codemirror/ai/resources.ts +1 -1
  492. package/src/core/codemirror/cells/__tests__/extensions.test.ts +2 -6
  493. package/src/core/codemirror/cells/extensions.ts +30 -28
  494. package/src/core/codemirror/cells/state.ts +2 -6
  495. package/src/core/codemirror/cm.ts +5 -1
  496. package/src/core/codemirror/config/types.ts +1 -1
  497. package/src/core/codemirror/copilot/__tests__/getCodes.test.ts +6 -7
  498. package/src/core/codemirror/copilot/getCodes.ts +2 -2
  499. package/src/core/codemirror/format.ts +6 -23
  500. package/src/core/codemirror/keymaps/vim.ts +4 -8
  501. package/src/core/codemirror/language/__tests__/sql.test.ts +22 -20
  502. package/src/core/codemirror/language/__tests__/utils.test.ts +187 -15
  503. package/src/core/codemirror/language/cell-code.ts +114 -0
  504. package/src/core/codemirror/language/extension.ts +52 -35
  505. package/src/core/codemirror/language/languages/markdown.ts +8 -6
  506. package/src/core/codemirror/language/languages/python.ts +19 -13
  507. package/src/core/codemirror/language/languages/sql/sql.ts +16 -24
  508. package/src/core/codemirror/language/panel/panel.tsx +1 -0
  509. package/src/core/codemirror/language/types.ts +7 -7
  510. package/src/core/codemirror/language/utils.ts +9 -39
  511. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +1 -2
  512. package/src/core/codemirror/lsp/notebook-lsp.ts +6 -5
  513. package/src/core/codemirror/lsp/utils.ts +1 -1
  514. package/src/core/codemirror/misc/__tests__/paste.test.ts +3 -1
  515. package/src/core/codemirror/misc/paste.ts +1 -1
  516. package/src/core/codemirror/placeholder/__tests__/extensions.test.ts +75 -0
  517. package/src/core/codemirror/placeholder/extensions.ts +80 -19
  518. package/src/core/codemirror/readonly/__tests__/extension.test.ts +1 -1
  519. package/src/core/codemirror/readonly/extension.ts +2 -2
  520. package/src/core/codemirror/utils.ts +1 -0
  521. package/src/core/config/__tests__/app-config.test.ts +64 -0
  522. package/src/core/config/__tests__/config-schema.test.ts +56 -6
  523. package/src/core/config/config-schema.ts +17 -4
  524. package/src/core/config/config.ts +65 -20
  525. package/src/core/config/feature-flag.tsx +0 -2
  526. package/src/core/datasets/__tests__/data-source-discovery.test.ts +5 -5
  527. package/src/core/datasets/data-source-discovery.ts +4 -6
  528. package/src/core/documentation/doc-lookup.ts +1 -1
  529. package/src/core/edit-app.tsx +22 -28
  530. package/src/core/errors/error-entries.ts +4 -1
  531. package/src/core/executions/__tests__/atoms.test.ts +99 -0
  532. package/src/core/executions/__tests__/select.test.ts +268 -0
  533. package/src/core/executions/atoms.ts +206 -0
  534. package/src/core/executions/hooks.ts +31 -0
  535. package/src/core/executions/index.ts +31 -0
  536. package/src/core/executions/select.ts +175 -0
  537. package/src/core/export/__tests__/hooks.test.ts +0 -5
  538. package/src/core/export/hooks.ts +1 -1
  539. package/src/core/export/layout.ts +2 -2
  540. package/src/core/hotkeys/actions.ts +2 -4
  541. package/src/core/hotkeys/hotkeys.ts +2 -1
  542. package/src/core/islands/__tests__/bootstrap.test.ts +69 -17
  543. package/src/core/islands/__tests__/bridge.test.ts +85 -27
  544. package/src/core/islands/bootstrap.ts +50 -54
  545. package/src/core/islands/bridge.ts +84 -25
  546. package/src/core/islands/components/__tests__/IslandControls.test.tsx +7 -5
  547. package/src/core/islands/components/output-wrapper.tsx +5 -5
  548. package/src/core/islands/components/web-components.tsx +1 -1
  549. package/src/core/islands/worker/__tests__/controller.test.ts +62 -4
  550. package/src/core/islands/worker/controller.ts +4 -10
  551. package/src/core/islands/worker/worker.tsx +33 -33
  552. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  553. package/src/core/kernel/__tests__/handlers.test.ts +7 -153
  554. package/src/core/kernel/handlers.ts +17 -79
  555. package/src/core/kernel/state.ts +0 -15
  556. package/src/core/lifecycle/render-policy.ts +12 -26
  557. package/src/core/meta/__tests__/code-visibility.test.tsx +78 -70
  558. package/src/core/meta/code-visibility.ts +18 -9
  559. package/src/core/network/__tests__/connection.test.ts +1 -1
  560. package/src/core/network/__tests__/requests-lazy.test.ts +6 -8
  561. package/src/core/network/connection-notice.ts +1 -1
  562. package/src/core/network/connection.ts +1 -1
  563. package/src/core/network/requests-lazy.ts +5 -8
  564. package/src/core/network/requests-network.ts +5 -31
  565. package/src/core/network/requests-static.ts +1 -4
  566. package/src/core/network/requests-toasting.tsx +1 -4
  567. package/src/core/network/types.ts +6 -14
  568. package/src/core/network/useConnectionNotice.ts +8 -2
  569. package/src/core/notebook/__tests__/operations.test.ts +51 -0
  570. package/src/core/notebook/attachments.ts +38 -0
  571. package/src/core/notebook/document/__tests__/codemirror.test.ts +759 -0
  572. package/src/core/notebook/document/__tests__/draft.test.ts +363 -0
  573. package/src/core/notebook/document/__tests__/fixtures.ts +92 -0
  574. package/src/core/notebook/document/__tests__/hooks.test.tsx +391 -0
  575. package/src/core/notebook/document/__tests__/lifecycle-scenarios.test.ts +61 -0
  576. package/src/core/notebook/document/__tests__/model.test.ts +247 -0
  577. package/src/core/notebook/document/__tests__/protocol-fixtures.ts +38 -0
  578. package/src/core/notebook/document/__tests__/recovery-scenarios.test.ts +230 -0
  579. package/src/core/notebook/document/__tests__/scenario-fixture.ts +43 -0
  580. package/src/core/notebook/document/__tests__/scenarios.test.ts +205 -0
  581. package/src/core/notebook/document/__tests__/state.test.ts +459 -0
  582. package/src/core/notebook/document/__tests__/submission.test.ts +203 -0
  583. package/src/core/notebook/document/__tests__/test-host.test.ts +92 -0
  584. package/src/core/notebook/document/__tests__/test-host.ts +247 -0
  585. package/src/core/notebook/document/__tests__/test-notebook.ts +149 -0
  586. package/src/core/notebook/document/__tests__/user.ts +61 -0
  587. package/src/core/notebook/document/codemirror.ts +216 -0
  588. package/src/core/notebook/document/draft.ts +502 -0
  589. package/src/core/notebook/document/hooks.tsx +118 -0
  590. package/src/core/notebook/document/index.ts +24 -0
  591. package/src/core/notebook/document/model.ts +102 -0
  592. package/src/core/notebook/document/select.ts +41 -0
  593. package/src/core/notebook/document/state.ts +378 -0
  594. package/src/core/notebook/document/sync.ts +369 -0
  595. package/src/core/notebook/index.ts +19 -0
  596. package/src/core/notebook/operations.ts +30 -0
  597. package/src/core/notebook/replica/AGENTS.md +11 -0
  598. package/src/core/{host → notebook/replica}/__tests__/attachments.test.ts +9 -10
  599. package/src/core/{host → notebook/replica}/__tests__/document.test.ts +18 -16
  600. package/src/core/notebook/replica/__tests__/executions.test.ts +200 -0
  601. package/src/core/notebook/replica/__tests__/fixtures.ts +79 -0
  602. package/src/core/notebook/replica/__tests__/replica.test.ts +559 -0
  603. package/src/core/notebook/replica/__tests__/results.test.ts +193 -0
  604. package/src/core/notebook/replica/__tests__/runtime.test.ts +78 -0
  605. package/src/core/notebook/replica/backend.ts +19 -0
  606. package/src/core/notebook/replica/connection.ts +42 -0
  607. package/src/core/notebook/replica/index.ts +20 -0
  608. package/src/core/notebook/replica/replica.ts +336 -0
  609. package/src/core/{host → notebook/replica}/resources/attachments.ts +6 -3
  610. package/src/core/{host → notebook/replica}/resources/document.ts +3 -3
  611. package/src/core/notebook/replica/resources/executions.ts +157 -0
  612. package/src/core/notebook/replica/resources/results.ts +48 -0
  613. package/src/core/notebook/replica/resources/runtime.ts +14 -0
  614. package/src/core/packages/__tests__/useSandboxController.test.tsx +1 -1
  615. package/src/core/packages/useSandboxController.ts +1 -1
  616. package/src/core/run-app.tsx +49 -51
  617. package/src/core/runtime/__tests__/adapter.test.ts +4 -4
  618. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  619. package/src/core/runtime/__tests__/runtime.test.ts +32 -74
  620. package/src/core/runtime/adapter.ts +5 -5
  621. package/src/core/runtime/config.ts +2 -2
  622. package/src/core/runtime/runtime.ts +33 -46
  623. package/src/core/runtime/types.ts +0 -2
  624. package/src/core/saving/__tests__/document.test.tsx +123 -0
  625. package/src/core/saving/__tests__/state.test.ts +111 -0
  626. package/src/core/saving/__tests__/useAutoSave.test.tsx +67 -0
  627. package/src/core/saving/document.ts +33 -0
  628. package/src/core/saving/filename.ts +1 -1
  629. package/src/core/saving/save-component.tsx +39 -60
  630. package/src/core/saving/state.ts +38 -39
  631. package/src/core/saving/useAutoSave.ts +17 -53
  632. package/src/core/session/__tests__/backend.test.ts +236 -0
  633. package/src/core/session/__tests__/useNotebookReplica.hook.test.tsx +186 -0
  634. package/src/core/{websocket → session}/__tests__/useNotebookSession.hook.test.tsx +247 -262
  635. package/src/core/session/active-notebook.ts +28 -0
  636. package/src/core/session/backend.ts +123 -0
  637. package/src/core/session/embedded.ts +7 -0
  638. package/src/core/{websocket → session}/types.ts +2 -2
  639. package/src/core/session/useNotebookReplica.ts +74 -0
  640. package/src/core/{websocket → session}/useNotebookSession.tsx +85 -67
  641. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  642. package/src/core/state/jotai.ts +1 -1
  643. package/src/core/static/__tests__/files.test.ts +38 -10
  644. package/src/core/static/files.ts +2 -0
  645. package/src/core/{websocket → transports}/__tests__/connection-state.test.ts +1 -13
  646. package/src/core/transports/__tests__/server.test.ts +408 -0
  647. package/src/core/transports/__tests__/static.test.ts +306 -0
  648. package/src/core/transports/__tests__/wasm.test.ts +166 -0
  649. package/src/core/{websocket → transports}/connection-state.ts +9 -16
  650. package/src/core/transports/server.ts +152 -0
  651. package/src/core/transports/static.ts +166 -0
  652. package/src/core/transports/wasm.ts +97 -0
  653. package/src/core/vscode/__tests__/vscode-bindings.test.ts +125 -0
  654. package/src/core/vscode/vscode-bindings.ts +14 -2
  655. package/src/core/wasm/__tests__/bridge.test.ts +210 -64
  656. package/src/core/wasm/__tests__/worker.test.ts +188 -0
  657. package/src/core/wasm/bridge.ts +120 -73
  658. package/src/core/wasm/rpc.ts +15 -3
  659. package/src/core/wasm/store.ts +3 -3
  660. package/src/core/wasm/worker/bootstrap.ts +55 -51
  661. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  662. package/src/core/wasm/worker/save-worker.ts +9 -10
  663. package/src/core/wasm/worker/types.ts +30 -18
  664. package/src/core/wasm/worker/worker.ts +118 -72
  665. package/src/css/app/Cell.css +7 -36
  666. package/src/css/app/codemirror.css +1 -1
  667. package/src/css/common.css +1 -1
  668. package/src/css/globals.css +66 -22
  669. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  670. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  671. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  672. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  673. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  674. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  675. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  676. package/src/hooks/useAsyncData.ts +3 -3
  677. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  678. package/src/hooks/useDebounce.ts +6 -10
  679. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  680. package/src/hooks/useDelayElapsed.ts +14 -10
  681. package/src/hooks/useElapsedTime.ts +3 -3
  682. package/src/hooks/useEventListener.ts +1 -2
  683. package/src/hooks/useInputHistory.ts +4 -7
  684. package/src/hooks/useInternalStateWithSync.ts +6 -6
  685. package/src/hooks/useResizeObserver.ts +4 -7
  686. package/src/hooks/useScript.ts +67 -70
  687. package/src/hooks/useStateForKey.ts +93 -0
  688. package/src/mount.tsx +20 -15
  689. package/src/plugins/__tests__/plugin-object-schemas.test.ts +104 -0
  690. package/src/plugins/core/RenderHTML.tsx +3 -5
  691. package/src/plugins/core/__test__/RenderHTML-copy.test.tsx +60 -0
  692. package/src/plugins/core/registerReactComponent.tsx +5 -14
  693. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  694. package/src/plugins/impl/DataEditorPlugin.tsx +34 -9
  695. package/src/plugins/impl/DataTablePlugin.tsx +69 -37
  696. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  697. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  698. package/src/plugins/impl/FormPlugin.tsx +1 -1
  699. package/src/plugins/impl/RangeSliderPlugin.tsx +16 -2
  700. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  701. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  702. package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +93 -4
  703. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +387 -1
  704. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  705. package/src/plugins/impl/__tests__/RangeSliderPlugin.test.tsx +109 -0
  706. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  707. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +153 -0
  708. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  709. package/src/plugins/impl/anywidget/model.ts +3 -1
  710. package/src/plugins/impl/anywidget/registry.ts +18 -14
  711. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  712. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  713. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  714. package/src/plugins/impl/chat/chat-ui.tsx +17 -15
  715. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  716. package/src/plugins/impl/common/error-banner.tsx +5 -3
  717. package/src/plugins/impl/data-editor/__tests__/column-types.test.ts +37 -0
  718. package/src/plugins/impl/data-editor/__tests__/editor-state.test.ts +52 -1
  719. package/src/plugins/impl/data-editor/__tests__/glide-data-editor.test.tsx +113 -1
  720. package/src/plugins/impl/data-editor/__tests__/glide-utils.test.ts +116 -0
  721. package/src/plugins/impl/data-editor/column-types.ts +52 -0
  722. package/src/plugins/impl/data-editor/editor-state.ts +18 -2
  723. package/src/plugins/impl/data-editor/glide-data-editor.tsx +73 -12
  724. package/src/plugins/impl/data-editor/glide-utils.ts +33 -10
  725. package/src/plugins/impl/data-editor/types.ts +7 -0
  726. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  727. package/src/plugins/impl/data-explorer/components/column-summary.tsx +4 -2
  728. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  729. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -2
  730. package/src/plugins/impl/data-frames/__tests__/sidebar.test.tsx +160 -0
  731. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +66 -66
  732. package/src/plugins/impl/data-frames/panel.tsx +44 -16
  733. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  734. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  735. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  736. package/src/plugins/impl/panel/utils.ts +17 -0
  737. package/src/plugins/impl/plotly/PlotlyPlugin.tsx +2 -5
  738. package/src/plugins/impl/plotly/selection.ts +25 -19
  739. package/src/plugins/impl/vega/VegaPlugin.tsx +2 -3
  740. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  741. package/src/plugins/layout/DownloadPlugin.tsx +7 -11
  742. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  743. package/src/plugins/layout/__test__/DownloadPlugin.test.tsx +205 -0
  744. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  745. package/src/stories/button.stories.tsx +1 -0
  746. package/src/stories/cell-status.stories.tsx +17 -10
  747. package/src/stories/cell.stories.tsx +2 -36
  748. package/src/stories/data-table.stories.tsx +31 -0
  749. package/src/stories/editor.stories.tsx +24 -17
  750. package/src/stories/form-wrapper.stories.tsx +2 -2
  751. package/src/stories/layout/vertical/one-column.stories.tsx +28 -32
  752. package/src/stories/runtime-story.tsx +23 -17
  753. package/src/stories/select.stories.tsx +2 -2
  754. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  755. package/src/utils/__tests__/arrays.test.ts +35 -0
  756. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  757. package/src/utils/__tests__/{createReducer.test.ts → createReducer.test.tsx} +127 -1
  758. package/src/utils/__tests__/download.test.tsx +183 -23
  759. package/src/utils/__tests__/numbers.test.ts +105 -1
  760. package/src/utils/__tests__/objects.test.ts +21 -0
  761. package/src/utils/arrays.ts +11 -2
  762. package/src/utils/blob.ts +1 -1
  763. package/src/utils/createReducer.ts +115 -79
  764. package/src/utils/download.ts +67 -6
  765. package/src/utils/maps.ts +0 -3
  766. package/src/utils/numbers.ts +79 -18
  767. package/src/utils/objects.ts +4 -9
  768. package/src/utils/time.ts +10 -0
  769. package/src/utils/tracer.ts +9 -5
  770. package/src/utils/zod-utils.ts +1 -3
  771. package/dist/_baseMerge-BiGRwuqv.js +0 -165
  772. package/dist/any-language-editor-D4q-IFcM.js +0 -76
  773. package/dist/assets/__vite-browser-external-BXYkiFsk.js +0 -1
  774. package/dist/assets/worker-HPY9fbhz.js +0 -114
  775. package/dist/dropdown-menu-DHP9P4VE.js +0 -4678
  776. package/dist/feedback-button-B2JRVQRd.js +0 -379
  777. package/dist/hasIn-o2Us0uVx.js +0 -132
  778. package/dist/html-to-image-DWTzN7q3.js +0 -3251
  779. package/dist/isArrayLikeObject-BZl-15ir.js +0 -450
  780. package/dist/isEmpty-BSZ1LaUo.js +0 -35
  781. package/dist/isSymbol-kQcfYbNX.js +0 -8
  782. package/dist/label-DoysmLMW.js +0 -281
  783. package/dist/mermaid-HWGCJPDP-ByCsZnYF.js +0 -2
  784. package/dist/pick-CJeoxYOS.js +0 -51
  785. package/dist/precisionRound-DMIVQrt2.js +0 -97
  786. package/dist/select-DemoKT4G.js +0 -1344
  787. package/dist/toDate-CJWU9dyl.js +0 -1185
  788. package/dist/toast-PkdZraM8.js +0 -1830
  789. package/dist/use-restore-focus-CKjfFjLM.js +0 -6369
  790. package/dist/useLifecycle-BGWzTwHK.js +0 -169
  791. package/dist/useTheme-BhQvec43.js +0 -904
  792. package/src/components/chat/reasoning-accordion.tsx +0 -61
  793. package/src/components/chat/tool-call/tool-error-card.tsx +0 -81
  794. package/src/components/chat/tool-call/tool-history-row.tsx +0 -174
  795. package/src/components/editor/ai/__tests__/staged-cell-submission.test.ts +0 -106
  796. package/src/components/editor/ai/add-cell-with-ai.tsx +0 -506
  797. package/src/components/editor/ai/staged-cell-submission.ts +0 -46
  798. package/src/components/editor/cell/__tests__/StagedAICell.test.tsx +0 -64
  799. package/src/components/editor/cell/code/__tests__/rtc-editor-config.test.ts +0 -50
  800. package/src/components/editor/chrome/wrapper/footer-items/rtc-status.tsx +0 -65
  801. package/src/components/editor/navigation/__tests__/state.test.ts +0 -81
  802. package/src/components/editor/navigation/state.ts +0 -65
  803. package/src/components/icons/loading-ellipsis.tsx +0 -46
  804. package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +0 -656
  805. package/src/core/ai/tools/run-cells-tool.ts +0 -303
  806. package/src/core/attachments/state.ts +0 -18
  807. package/src/core/cells/__tests__/apply-transaction.test.ts +0 -991
  808. package/src/core/cells/__tests__/document-changes.test.ts +0 -1140
  809. package/src/core/cells/__tests__/document-roundtrip.test.ts +0 -392
  810. package/src/core/cells/document-changes.ts +0 -944
  811. package/src/core/codemirror/rtc/extension.ts +0 -453
  812. package/src/core/codemirror/rtc/loro/__tests__/sync.test.ts +0 -52
  813. package/src/core/codemirror/rtc/loro/awareness.ts +0 -531
  814. package/src/core/codemirror/rtc/loro/colors.ts +0 -38
  815. package/src/core/codemirror/rtc/loro/sync.ts +0 -168
  816. package/src/core/host/AGENTS.md +0 -11
  817. package/src/core/host/__tests__/events.test.ts +0 -46
  818. package/src/core/host/__tests__/fixtures.ts +0 -39
  819. package/src/core/host/__tests__/notebook-client.test.ts +0 -433
  820. package/src/core/host/__tests__/protocol.test.ts +0 -214
  821. package/src/core/host/__tests__/stream.test.ts +0 -209
  822. package/src/core/host/connection.ts +0 -81
  823. package/src/core/host/events.ts +0 -61
  824. package/src/core/host/notebook-client.ts +0 -290
  825. package/src/core/host/protocol.ts +0 -1945
  826. package/src/core/host/resources/resource.ts +0 -47
  827. package/src/core/host/stream.ts +0 -211
  828. package/src/core/rtc/state.ts +0 -34
  829. package/src/core/state/__tests__/jotai.test.ts +0 -25
  830. package/src/core/wasm/worker/message-buffer.ts +0 -33
  831. package/src/core/websocket/__tests__/createConnectionTransport.test.ts +0 -49
  832. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +0 -170
  833. package/src/core/websocket/state.ts +0 -7
  834. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  835. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -335
  836. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  837. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  838. package/src/core/websocket/transports/basic.ts +0 -102
  839. package/src/core/websocket/transports/create.ts +0 -31
  840. package/src/core/websocket/transports/sse.ts +0 -308
  841. package/src/core/websocket/transports/transport.ts +0 -50
  842. package/src/core/websocket/transports/ws.ts +0 -98
  843. package/src/core/websocket/useNotebookClient.ts +0 -88
  844. package/src/utils/__tests__/id-tree.test.ts +0 -2145
  845. package/src/utils/id-tree.tsx +0 -1134
  846. /package/src/{core/attachments/toast.ts → components/editor/agent-toast.ts} +0 -0
  847. /package/src/core/{websocket → session}/connection-utils.ts +0 -0
@@ -0,0 +1,2573 @@
1
+ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
+ import { g as t, h as n, p as r } from "./button-0-RqY1DW.js";
3
+ import { t as i } from "./react-sHtZdjeP.js";
4
+ import { t as a } from "./compiler-runtime-CldRdSsv.js";
5
+ import { i as o } from "./copy-icon-C2I8sw4h.js";
6
+ import { f as s, h as c } from "./tooltip-BfcDQd2j.js";
7
+ import { t as l } from "./check-gUSZbRsl.js";
8
+ import { n as u, r as d } from "./assertNever-DIU3JJbt.js";
9
+ import { t as f } from "./jsx-runtime-3BD1kT0s.js";
10
+ import { F as p, I as m, M as ee, N as h, j as g } from "./use-restore-focus-CmflVLWJ.js";
11
+ import { n as _ } from "./toast-DbBHmxmB.js";
12
+ import { _ as v, a as y, c as b, d as x, l as S, m as C, o as w, p as te, t as ne, u as re, v as ie, w as T, x as E } from "./utils-EBklsC5R.js";
13
+ import { t as D } from "./invariant-DLmrl-hA.js";
14
+ import { t as O } from "./objects-DCmMvZtn.js";
15
+ import { t as ae } from "./createReducer-DdtT_7ji.js";
16
+ import { M as oe, N as se, V as ce, g as le } from "./dist-CYeqK4Xw.js";
17
+ import { t as ue } from "./purify.es-DMv5zIkJ.js";
18
+ import { a as de, i as fe, l as pe, m as me, u as he } from "./static-state-CuV6Pc3a.js";
19
+ import { t as ge } from "./capabilities-B6yy_CBN.js";
20
+ var _e = c("external-link", [
21
+ ["path", {
22
+ d: "M15 3h6v6",
23
+ key: "1q9fwt"
24
+ }],
25
+ ["path", {
26
+ d: "M10 14 21 3",
27
+ key: "gplh6r"
28
+ }],
29
+ ["path", {
30
+ d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",
31
+ key: "a6xqqp"
32
+ }]
33
+ ]), ve = c("minus", [["path", {
34
+ d: "M5 12h14",
35
+ key: "1ays0h"
36
+ }]]), k = /* @__PURE__ */ e(i(), 1), A = f(), ye = Object.defineProperty, j = (e, t) => ye(e, "name", {
37
+ value: t,
38
+ configurable: !0
39
+ }), be = "Checkbox", [xe, Se] = p(be), [Ce, we] = xe(be);
40
+ function Te(e) {
41
+ let { __scopeCheckbox: t, checked: n, children: r, defaultChecked: i, disabled: a, form: o, name: s, onCheckedChange: c, required: l, value: u = "on", internal_do_not_use_render: d } = e, [f, p] = ee({
42
+ prop: n,
43
+ defaultProp: i ?? !1,
44
+ onChange: c,
45
+ caller: be
46
+ }), [m, h] = k.useState(null), [g, _] = k.useState(null), [v, y] = k.useState(null), b = !m || !!o || !!m.closest("form"), x = {
47
+ checked: f,
48
+ disabled: a,
49
+ setChecked: p,
50
+ control: m,
51
+ setControl: h,
52
+ name: s,
53
+ form: o,
54
+ value: u,
55
+ userClick: v,
56
+ onUserClick: y,
57
+ required: l,
58
+ defaultChecked: !M(i) && i,
59
+ isFormControl: b,
60
+ bubbleInput: g,
61
+ setBubbleInput: _
62
+ };
63
+ return /* @__PURE__ */ (0, A.jsx)(Ce, {
64
+ scope: t,
65
+ ...x,
66
+ children: Ne(d) ? d(x) : r
67
+ });
68
+ }
69
+ j(Te, "CheckboxProvider");
70
+ var Ee = "CheckboxTrigger", De = /* @__PURE__ */ k.forwardRef(/* @__PURE__ */ j(function({ __scopeCheckbox: e, onKeyDown: t, onClick: n, ...i }, a) {
71
+ let { control: o, value: s, disabled: c, checked: l, required: u, setControl: d, setChecked: f, onUserClick: p, isFormControl: ee, bubbleInput: g } = we(Ee, e), _ = r(a, d), v = k.useRef(l);
72
+ return k.useEffect(() => {
73
+ let e = o?.form;
74
+ if (e) {
75
+ let t = /* @__PURE__ */ j(() => f(v.current), "reset");
76
+ return e.addEventListener("reset", t), () => e.removeEventListener("reset", t);
77
+ }
78
+ }, [o, f]), /* @__PURE__ */ (0, A.jsx)(m.button, {
79
+ type: "button",
80
+ role: "checkbox",
81
+ "aria-checked": M(l) ? "mixed" : l,
82
+ "aria-required": u,
83
+ "data-state": Pe(l),
84
+ "data-disabled": c ? "" : void 0,
85
+ disabled: c,
86
+ value: s,
87
+ ...i,
88
+ ref: _,
89
+ onKeyDown: h(t, (e) => {
90
+ e.key === "Enter" && e.preventDefault();
91
+ }),
92
+ onClick: h(n, (e) => {
93
+ let t = e.isPropagationStopped();
94
+ p({
95
+ requestedChecked: M(l) ? !0 : !l,
96
+ hasConsumerStoppedPropagation: t
97
+ }), f((e) => M(e) ? !0 : !e), g && ee && (t || e.stopPropagation());
98
+ })
99
+ });
100
+ }, "CheckboxTrigger")), Oe = /* @__PURE__ */ k.forwardRef(/* @__PURE__ */ j(function(e, t) {
101
+ let { __scopeCheckbox: n, name: r, checked: i, defaultChecked: a, required: o, disabled: s, value: c, onCheckedChange: l, form: u, ...d } = e;
102
+ return /* @__PURE__ */ (0, A.jsx)(Te, {
103
+ __scopeCheckbox: n,
104
+ checked: i,
105
+ defaultChecked: a,
106
+ disabled: s,
107
+ required: o,
108
+ onCheckedChange: l,
109
+ name: r,
110
+ form: u,
111
+ value: c,
112
+ internal_do_not_use_render: ({ isFormControl: e }) => /* @__PURE__ */ (0, A.jsxs)(A.Fragment, { children: [/* @__PURE__ */ (0, A.jsx)(De, {
113
+ ...d,
114
+ ref: t,
115
+ __scopeCheckbox: n
116
+ }), e && /* @__PURE__ */ (0, A.jsx)(Me, { __scopeCheckbox: n })] })
117
+ });
118
+ }, "Checkbox")), ke = "CheckboxIndicator", Ae = /* @__PURE__ */ k.forwardRef(/* @__PURE__ */ j(function(e, t) {
119
+ let { __scopeCheckbox: n, forceMount: r, ...i } = e, a = we(ke, n);
120
+ return /* @__PURE__ */ (0, A.jsx)(g, {
121
+ present: r || M(a.checked) || a.checked === !0,
122
+ children: /* @__PURE__ */ (0, A.jsx)(m.span, {
123
+ "data-state": Pe(a.checked),
124
+ "data-disabled": a.disabled ? "" : void 0,
125
+ ...i,
126
+ ref: t,
127
+ style: {
128
+ pointerEvents: "none",
129
+ ...e.style
130
+ }
131
+ })
132
+ });
133
+ }, "CheckboxIndicator")), je = "CheckboxBubbleInput", Me = /* @__PURE__ */ k.forwardRef(/* @__PURE__ */ j(function({ __scopeCheckbox: e, onClick: t, ...n }, i) {
134
+ let { control: a, userClick: o, checked: c, defaultChecked: l, required: u, disabled: d, name: f, value: p, form: ee, bubbleInput: g, setBubbleInput: _ } = we(je, e), v = r(i, _), y = s(a), b = k.useRef(!1), x = k.useRef(c), S = k.useRef(o), C = k.useRef(null);
135
+ k.useEffect(() => {
136
+ let e = g;
137
+ if (!e) return;
138
+ let t = window.HTMLInputElement.prototype, n = Object.getOwnPropertyDescriptor(t, "checked").set;
139
+ if (!n) return;
140
+ let r = x.current !== c;
141
+ x.current = c;
142
+ let i = o !== null && o !== S.current;
143
+ if (S.current = o, i) C.current = r ? null : o, r && (e.indeterminate = M(c), n.call(e, !M(c) && c)), e.dispatchEvent(new Event("click", { bubbles: !o.hasConsumerStoppedPropagation }));
144
+ else if (r) {
145
+ let t = C.current;
146
+ C.current = null;
147
+ let r = t?.requestedChecked === c;
148
+ b.current = !0, e.indeterminate = M(c), n.call(e, !M(c) && c), e.dispatchEvent(new Event("click", { bubbles: !(r && t.hasConsumerStoppedPropagation) })), b.current = !1;
149
+ }
150
+ }, [
151
+ g,
152
+ c,
153
+ o
154
+ ]);
155
+ let w = k.useRef(!M(c) && c);
156
+ return /* @__PURE__ */ (0, A.jsx)(m.input, {
157
+ type: "checkbox",
158
+ "aria-hidden": !0,
159
+ defaultChecked: l ?? w.current,
160
+ required: u,
161
+ disabled: d,
162
+ name: f,
163
+ value: p,
164
+ form: ee,
165
+ ...n,
166
+ tabIndex: -1,
167
+ ref: v,
168
+ onClick: h(t, (e) => {
169
+ b.current && e.stopPropagation();
170
+ }),
171
+ style: {
172
+ ...n.style,
173
+ ...y,
174
+ position: "absolute",
175
+ pointerEvents: "none",
176
+ opacity: 0,
177
+ margin: 0,
178
+ transform: "translateX(-100%)"
179
+ }
180
+ });
181
+ }, "CheckboxBubbleInput"));
182
+ function Ne(e) {
183
+ return typeof e == "function";
184
+ }
185
+ j(Ne, "isFunction");
186
+ function M(e) {
187
+ return e === "indeterminate";
188
+ }
189
+ j(M, "isIndeterminate");
190
+ function Pe(e) {
191
+ return M(e) ? "indeterminate" : e ? "checked" : "unchecked";
192
+ }
193
+ j(Pe, "getState");
194
+ //#endregion
195
+ //#region src/utils/time.ts
196
+ var Fe = class e {
197
+ ms;
198
+ static fromMilliseconds(t) {
199
+ return t == null ? null : new e(t);
200
+ }
201
+ static fromSeconds(t) {
202
+ return t == null ? null : new e(t * 1e3);
203
+ }
204
+ static now() {
205
+ return new e(Date.now());
206
+ }
207
+ static parse(t) {
208
+ return new e(Date.parse(t));
209
+ }
210
+ constructor(e) {
211
+ this.ms = e;
212
+ }
213
+ toMilliseconds() {
214
+ return this.ms;
215
+ }
216
+ since(e) {
217
+ return this.ms - e.ms;
218
+ }
219
+ toSeconds() {
220
+ return this.ms / 1e3;
221
+ }
222
+ };
223
+ //#endregion
224
+ //#region src/core/executions/select.ts
225
+ function Ie(e) {
226
+ let t = e.outcome;
227
+ return t === null ? null : t.kind;
228
+ }
229
+ function Le(e) {
230
+ return e === null ? null : Fe.parse(e).toMilliseconds();
231
+ }
232
+ function Re(e, t) {
233
+ let n = e.latest.get(t);
234
+ return n === void 0 ? null : e.executions.get(n) ?? null;
235
+ }
236
+ function ze(e, t) {
237
+ return e.executions.latest.get(t) ?? e.results.get(t)?.id ?? null;
238
+ }
239
+ function Be(e, t) {
240
+ let n = Re(e.executions, t), r = e.results.get(t) ?? null, i = e.submissions.has(t) && e.submissions.get(t) === ze(e, t), a = "idle", o = r === null ? null : Le(r.started_at), s = !1;
241
+ n !== null && n.record.status !== "completed" ? (a = n.record.status, o = Le(n.record.started_at) ?? o, s = n.record.outcome !== null) : i && (a = "queued");
242
+ let c = a === "idle", l = c && r !== null && r.started_at !== null && r.completed_at !== null ? Fe.parse(r.completed_at).since(Fe.parse(r.started_at)) : null;
243
+ return {
244
+ status: a,
245
+ blocked: e.blocked.has(t),
246
+ outcome: c && r !== null ? Ie(r) : null,
247
+ startedAt: o,
248
+ duration: l,
249
+ rendered: s
250
+ };
251
+ }
252
+ function Ve(e) {
253
+ return [...e.executions.values()].filter((e) => e.record.status !== "completed");
254
+ }
255
+ function He(e) {
256
+ return Ve(e).some((e) => e.record.status === "running");
257
+ }
258
+ function Ue(e) {
259
+ let t = Ve(e.executions), n = new Set(t.flatMap((e) => e.record.cell_id === null ? [] : [e.record.cell_id])), r = 0;
260
+ for (let [t, i] of e.submissions) !n.has(t) && i === ze(e, t) && (r += 1);
261
+ return t.length + r;
262
+ }
263
+ //#endregion
264
+ //#region src/core/executions/atoms.ts
265
+ var We = {
266
+ runs: /* @__PURE__ */ new Map(),
267
+ executions: /* @__PURE__ */ new Map(),
268
+ latest: /* @__PURE__ */ new Map()
269
+ }, Ge = /* @__PURE__ */ new Map(), Ke = /* @__PURE__ */ new Map(), qe = /* @__PURE__ */ new Set(), Je = T(null), Ye = T(null);
270
+ function Xe(e, t, n, r) {
271
+ return e !== null && e.notebook.replica === t && e.notebook.id === n ? e.value : r;
272
+ }
273
+ function Ze(e, t) {
274
+ let n = e.get(x), r = n === null ? null : e.get(n.notebookAtom);
275
+ return n === null || r === null ? null : {
276
+ notebook: {
277
+ replica: n,
278
+ id: r.id
279
+ },
280
+ value: t
281
+ };
282
+ }
283
+ var N = T((e) => {
284
+ let t = e(x), n = t === null ? null : e(t.notebookAtom)?.id ?? null;
285
+ return {
286
+ executions: t === null ? We : e(t.executionsAtom),
287
+ results: t === null ? Ge : e(t.resultsAtom),
288
+ submissions: Xe(e(Je), t, n, Ke),
289
+ blocked: Xe(e(Ye), t, n, qe)
290
+ };
291
+ }), Qe = T((e) => {
292
+ let t = e(x);
293
+ return t === null ? null : e(t.runtimeAtom)?.status ?? null;
294
+ });
295
+ T((e) => He(e(N).executions)), T((e) => Ue(e(N)));
296
+ function $e(e, t) {
297
+ e.set(Je, Ze(e, t));
298
+ }
299
+ function et(e, t) {
300
+ let n = new Map(e.get(N).submissions);
301
+ for (let e of t) n.delete(e);
302
+ $e(e, n);
303
+ }
304
+ function tt(e, t, n) {
305
+ let r = e.get(N).blocked;
306
+ if (r.has(t) === n) return;
307
+ let i = new Set(r);
308
+ n ? i.add(t) : i.delete(t), e.set(Ye, Ze(e, i));
309
+ }
310
+ function nt(e, t) {
311
+ let n = t.cell_id, r = t.status === "disabled-transitively";
312
+ t.status != null && tt(e, n, r), (r || t.output?.mimetype === "application/vnd.marimo+error") && et(e, [n]);
313
+ }
314
+ //#endregion
315
+ //#region src/core/codemirror/editing/commands.ts
316
+ var rt = a();
317
+ function it(e) {
318
+ return (t) => {
319
+ let n = !1;
320
+ for (let r of t) r && (n = e(r) || n);
321
+ return n;
322
+ };
323
+ }
324
+ var at = it(le), ot = it(se);
325
+ //#endregion
326
+ //#region src/utils/schedule-task.ts
327
+ function st() {
328
+ let e = globalThis.scheduler;
329
+ if (typeof e?.postTask == "function") return (t) => {
330
+ e.postTask(t, { priority: "user-visible" }).catch((e) => {
331
+ setTimeout(() => {
332
+ throw e;
333
+ });
334
+ });
335
+ };
336
+ if (typeof MessageChannel == "function") {
337
+ let e = [], t = new MessageChannel();
338
+ return t.port1.onmessage = () => {
339
+ e.shift()?.();
340
+ }, (n) => {
341
+ e.push(n), t.port2.postMessage(null);
342
+ };
343
+ }
344
+ return (e) => {
345
+ setTimeout(e, 0);
346
+ };
347
+ }
348
+ var ct = st();
349
+ //#endregion
350
+ //#region src/core/codemirror/editor-mount-scheduler.ts
351
+ function lt(e = ct) {
352
+ let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), r = !1;
353
+ function i() {
354
+ r || t.size === 0 || (r = !0, e(o));
355
+ }
356
+ function a() {
357
+ for (let e of n) {
358
+ if (t.has(e)) return e;
359
+ n.delete(e);
360
+ }
361
+ return t.keys().next().value;
362
+ }
363
+ function o() {
364
+ r = !1;
365
+ try {
366
+ let e = a();
367
+ if (e !== void 0) {
368
+ let r = t.get(e);
369
+ t.delete(e), n.delete(e), r?.();
370
+ }
371
+ } finally {
372
+ i();
373
+ }
374
+ }
375
+ return {
376
+ request(e, n) {
377
+ t.set(e, n), i();
378
+ },
379
+ promote(e) {
380
+ let r = t.get(e);
381
+ r && (t.delete(e), n.delete(e), r());
382
+ },
383
+ prioritize(e) {
384
+ t.has(e) && n.add(e);
385
+ },
386
+ deprioritize(e) {
387
+ n.delete(e);
388
+ },
389
+ cancel(e) {
390
+ t.delete(e), n.delete(e);
391
+ }
392
+ };
393
+ }
394
+ var ut = lt();
395
+ //#endregion
396
+ //#region src/plugins/core/sanitize-html.ts
397
+ if (typeof document < "u") {
398
+ let e = "data-temp-href-target";
399
+ ue.addHook("beforeSanitizeAttributes", (t) => {
400
+ t.tagName === "A" && (t.hasAttribute("target") || t.setAttribute("target", "_self"), t.hasAttribute("target") && t.setAttribute(e, t.getAttribute("target") || ""));
401
+ }), ue.addHook("afterSanitizeAttributes", (t) => {
402
+ t.tagName === "A" && t.hasAttribute(e) && (t.setAttribute("target", t.getAttribute(e) || ""), t.removeAttribute(e), t.getAttribute("target") === "_blank" && t.setAttribute("rel", "noopener noreferrer"));
403
+ });
404
+ }
405
+ function dt(e) {
406
+ let t = {
407
+ USE_PROFILES: {
408
+ html: !0,
409
+ svg: !0,
410
+ mathMl: !0
411
+ },
412
+ ADD_TAGS: ["use"],
413
+ ADD_ATTR: ["href", "xlink:href"],
414
+ FORCE_BODY: !0,
415
+ CUSTOM_ELEMENT_HANDLING: {
416
+ tagNameCheck: /^(marimo-[A-Za-z][\w-]*|iconify-icon)$/,
417
+ attributeNameCheck: /^[A-Za-z][\w-]*$/
418
+ },
419
+ SAFE_FOR_XML: !e.includes("marimo-mermaid")
420
+ };
421
+ return ue.sanitize(e, t);
422
+ }
423
+ //#endregion
424
+ //#region src/core/dom/outline.ts
425
+ var ft = [
426
+ "marimo-carousel",
427
+ "marimo-tabs",
428
+ "marimo-accordion",
429
+ "marimo-sidebar"
430
+ ], pt = "h1, h2, h3, h4, h5, h6";
431
+ function mt(e) {
432
+ if (typeof DOMParser > "u") return null;
433
+ let t = [], n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(pt);
434
+ for (let e of Array.from(n)) {
435
+ let n = e.textContent;
436
+ if (ft.some((t) => e.closest(t)) || !n) continue;
437
+ let r = Number.parseInt(e.tagName[1], 10), i = e.innerHTML, a = {
438
+ name: n,
439
+ level: r,
440
+ by: gt(e)
441
+ };
442
+ i !== n && (a.html = dt(i)), t.push(a);
443
+ }
444
+ return { items: t };
445
+ }
446
+ function ht(e) {
447
+ if (!e.includes("\"")) return `"${e}"`;
448
+ if (!e.includes("'")) return `'${e}'`;
449
+ let t = e.split("\""), n = [];
450
+ for (let [e, r] of t.entries()) r && n.push(`"${r}"`), e < t.length - 1 && n.push("'\"'");
451
+ return `concat(${n.join(", ")})`;
452
+ }
453
+ function gt(e) {
454
+ let t = e.id;
455
+ if (t) return { id: t };
456
+ let n = e.textContent ?? "";
457
+ return { path: `//${e.tagName}[contains(., ${ht(n)})]` };
458
+ }
459
+ function _t(e) {
460
+ return { items: e.filter(Boolean).flatMap((e) => e.items) };
461
+ }
462
+ function vt(e) {
463
+ if (e == null || e.mimetype !== "text/html" && e.mimetype !== "text/markdown" || e.data == null) return null;
464
+ try {
465
+ return D(typeof e.data == "string", "expected string"), mt(e.data);
466
+ } catch {
467
+ return t.error("Failed to parse outline"), null;
468
+ }
469
+ }
470
+ function yt(e) {
471
+ return e != null && e.items.some((e) => e.level <= 3);
472
+ }
473
+ function bt(e, n) {
474
+ let r = (e) => e.items.length === 0 ? 7 : Math.min(...e.items.map((e) => e.level)), i = n[e];
475
+ if (i == null || i.items.length === 0) return t.warn("Failed to find a starting outline"), null;
476
+ let a = r(i), o = e + 1;
477
+ for (; o < n.length;) {
478
+ let t = n[o];
479
+ if (t && r(t) <= a) return [e, o - 1];
480
+ o++;
481
+ }
482
+ return [e, n.length - 1];
483
+ }
484
+ //#endregion
485
+ //#region src/core/mime.ts
486
+ function xt(e) {
487
+ return e === "application/vnd.marimo+error";
488
+ }
489
+ function P(e) {
490
+ return e === "application/vnd.marimo+traceback";
491
+ }
492
+ function F(e) {
493
+ return xt(e) || P(e);
494
+ }
495
+ //#endregion
496
+ //#region src/components/editor/output/ansi-reduce.ts
497
+ var St = class e {
498
+ lines = [""];
499
+ cursor = {
500
+ row: 0,
501
+ col: 0
502
+ };
503
+ static ESCAPE_REGEX = new RegExp(String.raw`\u001B\[([0-9;]*)([A-DJKH])`, "u");
504
+ ensureLine(e) {
505
+ for (; this.lines.length <= e;) this.lines.push("");
506
+ }
507
+ moveCursor(e, t) {
508
+ this.cursor.row = Math.max(0, this.cursor.row + e), this.cursor.col = Math.max(0, this.cursor.col + t), this.ensureLine(this.cursor.row);
509
+ }
510
+ setCursor(e, t) {
511
+ this.cursor.row = Math.max(0, e), this.cursor.col = Math.max(0, t), this.ensureLine(this.cursor.row);
512
+ }
513
+ writeChar(e) {
514
+ this.ensureLine(this.cursor.row);
515
+ let t = this.lines[this.cursor.row].padEnd(this.cursor.col, " ");
516
+ this.lines[this.cursor.row] = t.slice(0, this.cursor.col) + e + t.slice(this.cursor.col + 1), this.cursor.col++;
517
+ }
518
+ writeString(e) {
519
+ if (e.length === 0) return;
520
+ this.ensureLine(this.cursor.row);
521
+ let t = this.lines[this.cursor.row].padEnd(this.cursor.col, " ");
522
+ this.lines[this.cursor.row] = t.slice(0, this.cursor.col) + e + t.slice(this.cursor.col + e.length), this.cursor.col += e.length;
523
+ }
524
+ control(e) {
525
+ switch (e) {
526
+ case "\n":
527
+ this.cursor.row++, this.cursor.col = 0, this.ensureLine(this.cursor.row);
528
+ break;
529
+ case "\r":
530
+ this.cursor.col = 0;
531
+ break;
532
+ case " ":
533
+ this.writeChar(" ");
534
+ break;
535
+ case "\b":
536
+ this.cursor.col = Math.max(0, this.cursor.col - 1);
537
+ break;
538
+ case "\v": this.cursor.row++, this.ensureLine(this.cursor.row);
539
+ }
540
+ }
541
+ handleEscape(t) {
542
+ let n = e.ESCAPE_REGEX.exec(t);
543
+ if (!n) {
544
+ this.writeString(t);
545
+ return;
546
+ }
547
+ let r = n[1].split(";").map((e) => e === "" ? 1 : Number.parseInt(e, 10));
548
+ switch (n[2]) {
549
+ case "A":
550
+ this.moveCursor(-r[0], 0);
551
+ break;
552
+ case "B":
553
+ this.moveCursor(r[0], 0);
554
+ break;
555
+ case "C":
556
+ this.moveCursor(0, r[0]);
557
+ break;
558
+ case "D":
559
+ this.moveCursor(0, -r[0]);
560
+ break;
561
+ case "H":
562
+ this.setCursor(r[0] - 1 || 0, r[1] - 1 || 0);
563
+ break;
564
+ case "J":
565
+ r[0] === 2 && (this.lines = [""], this.setCursor(0, 0));
566
+ break;
567
+ case "K":
568
+ switch (this.ensureLine(this.cursor.row), r[0]) {
569
+ case 0:
570
+ this.lines[this.cursor.row] = this.lines[this.cursor.row].slice(0, this.cursor.col);
571
+ break;
572
+ case 1: {
573
+ let e = this.lines[this.cursor.row].length;
574
+ this.lines[this.cursor.row] = " ".repeat(this.cursor.col) + this.lines[this.cursor.row].slice(this.cursor.col, e);
575
+ break;
576
+ }
577
+ case 2: this.lines[this.cursor.row] = "";
578
+ }
579
+ break;
580
+ default: this.writeString(t);
581
+ }
582
+ }
583
+ render() {
584
+ return this.lines.join("\n");
585
+ }
586
+ }, Ct = class {
587
+ ESC_REGEX = new RegExp(String.raw`\u001B(?:\[[0-9;]*[A-Za-z]|\([0-9A-Za-z])`, "gu");
588
+ parse(e) {
589
+ let t = [], n = 0;
590
+ for (let r of e.matchAll(this.ESC_REGEX)) {
591
+ let i = r.index ?? 0;
592
+ i > n && t.push({
593
+ type: "text",
594
+ value: e.slice(n, i)
595
+ }), t.push({
596
+ type: "escape",
597
+ value: r[0]
598
+ }), n = i + r[0].length;
599
+ }
600
+ return n < e.length && t.push({
601
+ type: "text",
602
+ value: e.slice(n)
603
+ }), t;
604
+ }
605
+ }, wt = class {
606
+ parser = new Ct();
607
+ buffer = new St();
608
+ reduce(e) {
609
+ return this.reset(), this.append(e), this.render();
610
+ }
611
+ append(e) {
612
+ let t = this.parser.parse(e);
613
+ if (t.length === 1 && t[0].type === "text") {
614
+ let e = t[0].value;
615
+ if (!this.hasControlChars(e)) {
616
+ this.buffer.writeString(e);
617
+ return;
618
+ }
619
+ }
620
+ for (let e of t) e.type === "text" ? this.processText(e.value) : this.buffer.handleEscape(e.value);
621
+ }
622
+ reset() {
623
+ this.buffer = new St();
624
+ }
625
+ render() {
626
+ return this.buffer.render();
627
+ }
628
+ hasControlChars(e) {
629
+ for (let t of e) if (t < " ") return !0;
630
+ return !1;
631
+ }
632
+ processText(e) {
633
+ let t = 0, n = e.length;
634
+ for (let r = 0; r < n; r++) {
635
+ let n = e[r];
636
+ if (n === "\n" || n === "\r" || n === " " || n === "\b" || n === "\v") {
637
+ if (r > t) {
638
+ let n = e.slice(t, r), i = this.filterControlChars(n);
639
+ i.length > 0 && this.buffer.writeString(i);
640
+ }
641
+ this.buffer.control(n), t = r + 1;
642
+ } else if (n < " ") {
643
+ if (r > t) {
644
+ let n = e.slice(t, r);
645
+ n.length > 0 && this.buffer.writeString(n);
646
+ }
647
+ t = r + 1;
648
+ }
649
+ }
650
+ if (t < n) {
651
+ let n = e.slice(t), r = this.filterControlChars(n);
652
+ r.length > 0 && this.buffer.writeString(r);
653
+ }
654
+ }
655
+ filterControlChars(e) {
656
+ let t = !1;
657
+ for (let n of e) if (n < " ") {
658
+ t = !0;
659
+ break;
660
+ }
661
+ if (!t) return e;
662
+ let n = "";
663
+ for (let t of e) t >= " " && (n += t);
664
+ return n;
665
+ }
666
+ }, I = class e {
667
+ mimetype;
668
+ channel;
669
+ timestamp;
670
+ code;
671
+ id;
672
+ ansiReducer = new wt();
673
+ _data;
674
+ get data() {
675
+ return this._data;
676
+ }
677
+ static create(t) {
678
+ let n = new wt();
679
+ return n.append(t.data), new e({
680
+ mimetype: t.mimetype,
681
+ channel: t.channel,
682
+ timestamp: t.timestamp,
683
+ ansiReducer: n,
684
+ code: t.code,
685
+ id: t.id
686
+ });
687
+ }
688
+ constructor({ mimetype: e, channel: t, timestamp: n, ansiReducer: r, code: i, id: a }) {
689
+ this.mimetype = e, this.channel = t, this.timestamp = n, this.code = i, this.id = a, this.ansiReducer = r, this._data = this.ansiReducer.render();
690
+ }
691
+ appendData(t) {
692
+ return this.ansiReducer.append(t), new e({
693
+ mimetype: this.mimetype,
694
+ channel: this.channel,
695
+ timestamp: this.timestamp,
696
+ ansiReducer: this.ansiReducer,
697
+ code: this.code,
698
+ id: this.id
699
+ });
700
+ }
701
+ toJSON() {
702
+ return {
703
+ mimetype: this.mimetype,
704
+ channel: this.channel,
705
+ timestamp: this.timestamp,
706
+ data: this.data,
707
+ ...this.code === void 0 ? {} : { code: this.code }
708
+ };
709
+ }
710
+ };
711
+ //#endregion
712
+ //#region src/core/cells/collapseConsoleOutputs.tsx
713
+ function Tt(e, t = 5e3) {
714
+ let n = [...e];
715
+ if (n.length < 2) return At(n.map(Dt), t);
716
+ let r = n[n.length - 1], i = n[n.length - 2];
717
+ return Et(r, i) && (kt(r), kt(i), n[n.length - 2] = Ot(i, r), n.pop()), At(n, t);
718
+ }
719
+ function Et(e, t) {
720
+ let n = e.mimetype === "text/plain" && t.mimetype === "text/plain";
721
+ if (!n) return !1;
722
+ let r = e.channel === t.channel, i = e.channel !== "stdin";
723
+ return n && r && i;
724
+ }
725
+ function Dt(e) {
726
+ return e instanceof I ? e : typeof e.data == "string" ? I.create(e) : e;
727
+ }
728
+ function Ot(e, t) {
729
+ return e instanceof I ? e.appendData(t.data) : I.create(e).appendData(t.data);
730
+ }
731
+ function kt(e) {
732
+ D(typeof e.data == "string", "expected string output");
733
+ }
734
+ function At(e, t) {
735
+ let n = 0, r;
736
+ for (r = e.length - 1; r >= 0 && n < t; r--) {
737
+ let t = e[r];
738
+ t.mimetype === "text/plain" ? (D(typeof t.data == "string", "expected string"), n += t.data.split("\n").length) : n++;
739
+ }
740
+ if (n < t) return e;
741
+ let i = r + 1, a = {
742
+ channel: "stderr",
743
+ mimetype: "text/html",
744
+ data: `<pre>Streaming output truncated to last ${t} lines.\n</pre>`,
745
+ timestamp: -1
746
+ }, o = e[i];
747
+ if (o == null) return [a, ...e.slice(i + 1)];
748
+ if (o.mimetype === "text/plain") {
749
+ D(typeof o.data == "string", "expected string");
750
+ let r = o.data.split("\n"), s = t - (n - r.length);
751
+ return [
752
+ a,
753
+ {
754
+ ...o,
755
+ data: r.slice(-s).join("\n")
756
+ },
757
+ ...e.slice(i + 1)
758
+ ];
759
+ }
760
+ return [a, ...e.slice(i + 1)];
761
+ }
762
+ //#endregion
763
+ //#region src/core/cells/cell.ts
764
+ function jt(e) {
765
+ return (e.at(-1)?.id ?? 0) + 1;
766
+ }
767
+ function Mt(e) {
768
+ return e == null || e.mimetype !== "application/vnd.marimo+error" || !Array.isArray(e.data) ? [] : e.data.map((e) => e.type);
769
+ }
770
+ function Nt(e, t) {
771
+ let n = { ...e };
772
+ t.status === "queued" && (n.debuggerActive = !1), t.status === "running" && Mt(e.output).some((e) => e.includes("ancestor")) && (n.output = null), n.output = t.output ?? n.output, n.staleInputs = t.stale_inputs ?? n.staleInputs, t.serialization !== void 0 && (n.serialization = t.serialization);
773
+ let r = Mt(t.output).includes("interruption"), i = e.consoleOutputs;
774
+ (r || t.status === "idle") && (n.debuggerActive = !1, i = i.map((e) => e.channel === "stdin" ? {
775
+ channel: e.channel,
776
+ mimetype: e.mimetype,
777
+ data: e.data,
778
+ timestamp: e.timestamp,
779
+ id: e.id,
780
+ response: e.response ?? ""
781
+ } : e));
782
+ let a = t.console;
783
+ a != null && (i = Tt(Array.isArray(a) ? a.map((e, t) => ({
784
+ ...e,
785
+ id: t + 1
786
+ })) : [...i, {
787
+ ...a,
788
+ id: jt(i)
789
+ }])), n.consoleOutputs = i, n.outline = vt(n.output);
790
+ let o = [t.console].flat().filter(Boolean).filter((e) => e.channel === "pdb");
791
+ return o.length > 0 && o.some((e) => e.data === "start") && (n.debuggerActive = !0), n;
792
+ }
793
+ function Pt(e) {
794
+ return e === "running" || e === "queued";
795
+ }
796
+ function Ft(e, t, n) {
797
+ let { status: r, outcome: i, rendered: a } = e;
798
+ return i === "interrupted" ? !1 : n || Pt(r) && !(r === "running" && a) ? !0 : t;
799
+ }
800
+ //#endregion
801
+ //#region src/core/cells/columns.ts
802
+ function It(e) {
803
+ let t = /* @__PURE__ */ new Map(), n = 0;
804
+ for (let r of e.order) {
805
+ let i = e.cells.get(r)?.config.column;
806
+ i != null && i >= 0 && (n = i), t.set(r, n);
807
+ }
808
+ return t;
809
+ }
810
+ function Lt(e) {
811
+ let t = [[]];
812
+ for (let [n, r] of It(e)) {
813
+ for (; t.length <= r;) t.push([]);
814
+ t[r].push(n);
815
+ }
816
+ return t;
817
+ }
818
+ //#endregion
819
+ //#region src/core/dom/ui-element-constants.ts
820
+ var Rt = "object-id", zt = "random-id", Bt = "abcdefghijklmnopqrstuvwxyz", Vt = Bt + Bt.toUpperCase(), Ht = /* @__PURE__ */ new Set(), L = "__scratch__", Ut = "setup", Wt = { create() {
821
+ let e = 0, t;
822
+ do {
823
+ let n = "";
824
+ for (let e = 0; e < 4; e++) n += Vt[Math.floor(Math.random() * 52)];
825
+ t = n, e++;
826
+ } while (Ht.has(t) && e < 100);
827
+ if (e >= 100) throw Error("Failed to generate unique CellId after 100 attempts");
828
+ return Ht.add(t), t;
829
+ } }, R = {
830
+ create(e) {
831
+ return D(e != null, "cellId is required"), `cell-${e}`;
832
+ },
833
+ parse(e) {
834
+ return e.slice(5);
835
+ },
836
+ findElement(e) {
837
+ return e.closest("div[id^=\"cell-\"]");
838
+ },
839
+ findElementThroughShadowDOMs(e) {
840
+ let t = e;
841
+ for (; t;) {
842
+ let e = R.findElement(t);
843
+ if (e) return e;
844
+ let n = t.getRootNode();
845
+ if (t = n instanceof ShadowRoot ? n.host : t.parentElement, t === n) break;
846
+ }
847
+ return null;
848
+ }
849
+ };
850
+ function Gt(e) {
851
+ let t = null, n = R.findElementThroughShadowDOMs(e);
852
+ return n && (t = R.parse(n.id)), t;
853
+ }
854
+ var Kt = {
855
+ parse(e) {
856
+ return e.getAttribute(Rt);
857
+ },
858
+ parseOrThrow(e) {
859
+ let t = Kt.parse(e);
860
+ return D(t, "<marimo-ui-element/> missing object-id attribute"), t;
861
+ }
862
+ }, qt = { create(e) {
863
+ return `output-${e}`;
864
+ } }, Jt = T(/* @__PURE__ */ new Set()), z = T([]), B = T([]);
865
+ function Yt() {
866
+ return `column-${Wt.create()}`;
867
+ }
868
+ var Xt = T(null, (e, t, n) => {
869
+ let r = Lt(n).length, i = e(z);
870
+ if (i.length === r) return;
871
+ let a = e(B), o = [...i, ...a].slice(0, r);
872
+ for (; o.length < r;) o.push(Yt());
873
+ t(z, o), t(B, a.slice(Math.max(0, r - i.length)));
874
+ });
875
+ function Zt(e, t, n) {
876
+ return [...(e === null ? [[]] : Lt(e)).map((e, n) => ({
877
+ id: t[n] ?? `column-${n}`,
878
+ ids: e
879
+ })), ...n.map((e) => ({
880
+ id: e,
881
+ ids: []
882
+ }))];
883
+ }
884
+ function Qt(e, t, n) {
885
+ let r = /* @__PURE__ */ new Map();
886
+ return e.forEach((i, a) => {
887
+ let o = t[a];
888
+ if (!n.has(i) || !o || o.items.length === 0) return;
889
+ let s = bt(a, t);
890
+ s !== null && r.set(i, e.slice(a + 1, s[1] + 1));
891
+ }), r;
892
+ }
893
+ function $t(e, t, n) {
894
+ return { columns: e.map(({ id: e, ids: r }) => {
895
+ let i = Qt(r, r.map(t), n), a = new Set([...i.values()].flat());
896
+ return {
897
+ id: e,
898
+ ids: r,
899
+ visible: r.filter((e) => !a.has(e)),
900
+ folds: i
901
+ };
902
+ }) };
903
+ }
904
+ var en = T((e) => {
905
+ let t = e(re), n = t === null ? null : e(t.documentAtom), r = e(ni);
906
+ return $t(Zt(n, e(z), e(B)), (e) => r[e] ?? null, e(Jt));
907
+ }), tn = () => E(en), nn = T((e) => e(en).columns.length);
908
+ function rn(e, t) {
909
+ return e.columns.find((e) => e.id === t);
910
+ }
911
+ function an(e, t) {
912
+ let n = e.columns.find((e) => e.ids.includes(t));
913
+ if (n === void 0) throw Error(`Cell ${t} is not in the layout`);
914
+ return n;
915
+ }
916
+ function on(e, t) {
917
+ for (let n of e.columns) {
918
+ let e = n.folds.get(t);
919
+ if (e !== void 0) return e;
920
+ }
921
+ }
922
+ function sn(e, t) {
923
+ let n = e.columns.find((e) => e.ids.includes(t));
924
+ return n === void 0 ? [] : [...n.folds].filter(([, e]) => e.includes(t)).map(([e]) => e);
925
+ }
926
+ function cn(e, t) {
927
+ let n = sn(e, t);
928
+ return on(e, t) === void 0 ? n : [...n, t];
929
+ }
930
+ var ln = /* @__PURE__ */ new Set(/* @__PURE__ */ "__*.marimo.app.False.None.True.__peg_parser__.and.as.assert.async.await.break.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.nonlocal.not.or.pass.raise.return.try.while.with.yield.None.setup".split("."));
931
+ function un(e, t = !0) {
932
+ return e = e.trim(), e ? (/^\d/.test(e) && (e = `_${e}`), e = e.replaceAll(/\W/g, "_"), t ? e.toLowerCase() : e) : "_";
933
+ }
934
+ function dn(e, t) {
935
+ let n = new Set(t), r = e, i = (e) => !n.has(e) && !ln.has(e);
936
+ if (i(e)) return e;
937
+ let a = 1;
938
+ for (; !i(r);) r = `${e}_${a}`, a++;
939
+ return r;
940
+ }
941
+ function fn(e, t) {
942
+ return pn(e) ? `cell-${t}` : e;
943
+ }
944
+ function pn(e) {
945
+ return !e || e === "_" || e === "__";
946
+ }
947
+ //#endregion
948
+ //#region src/core/cells/types.ts
949
+ function V(e, t) {
950
+ return e === null ? t.trim().length > 0 : e.trim() !== t.trim();
951
+ }
952
+ function mn({ id: e, name: t = "_", code: n = "", lastCodeRun: r = null, edited: i = !1, config: a }) {
953
+ return {
954
+ id: e,
955
+ config: a || {
956
+ hide_code: !1,
957
+ disabled: !1,
958
+ column: null,
959
+ expand_output: !1
960
+ },
961
+ name: t,
962
+ code: n,
963
+ edited: i,
964
+ lastCodeRun: r
965
+ };
966
+ }
967
+ function hn(e) {
968
+ return {
969
+ hide_code: !1,
970
+ disabled: !1,
971
+ column: null,
972
+ expand_output: !1,
973
+ ...e
974
+ };
975
+ }
976
+ function gn(e) {
977
+ return {
978
+ outline: null,
979
+ output: null,
980
+ consoleOutputs: [],
981
+ staleInputs: !1,
982
+ debuggerActive: !1,
983
+ ...e
984
+ };
985
+ }
986
+ //#endregion
987
+ //#region src/core/cells/document.ts
988
+ function _n(e, t) {
989
+ let n = t.code ?? e.code, r = S(e.config, t.config) ? e.config : hn(t.config);
990
+ return n === e.code && t.name === e.name && r === e.config ? e : n === e.code ? {
991
+ ...e,
992
+ name: t.name,
993
+ config: r
994
+ } : {
995
+ ...e,
996
+ code: n,
997
+ name: t.name,
998
+ config: r,
999
+ edited: V(e.lastCodeRun, n)
1000
+ };
1001
+ }
1002
+ function vn(e, t) {
1003
+ let n = S(t.order, e.cellIds) ? e.cellIds : [...t.order], { cellData: r, cellRuntime: i, cellHandles: a } = e;
1004
+ for (let o of n) {
1005
+ let n = t.cells.get(o), s = e.cellData[o];
1006
+ if (n === void 0) continue;
1007
+ if (s === void 0) {
1008
+ let e = n.code ?? "";
1009
+ r = {
1010
+ ...r,
1011
+ [o]: mn({
1012
+ id: o,
1013
+ code: e,
1014
+ name: n.name,
1015
+ config: hn(n.config),
1016
+ edited: V(null, e)
1017
+ })
1018
+ }, i = {
1019
+ ...i,
1020
+ [o]: i[o] ?? gn()
1021
+ }, a = {
1022
+ ...a,
1023
+ [o]: (0, k.createRef)()
1024
+ };
1025
+ continue;
1026
+ }
1027
+ let c = _n(s, n);
1028
+ c !== s && (r = {
1029
+ ...r,
1030
+ [o]: c
1031
+ });
1032
+ }
1033
+ let o = new Set(n), s = e.cellIds.filter((e) => !o.has(e));
1034
+ if (s.length > 0) {
1035
+ let e = new Set(s), t = (t) => Object.fromEntries(Object.entries(t).filter(([t]) => !e.has(t)));
1036
+ r = t(r), i = t(i), a = t(a);
1037
+ }
1038
+ return n === e.cellIds && r === e.cellData && s.length === 0 ? e : {
1039
+ ...e,
1040
+ cellIds: n,
1041
+ cellData: r,
1042
+ cellRuntime: i,
1043
+ cellHandles: a
1044
+ };
1045
+ }
1046
+ function yn({ store: e, model: t, reconcile: n, signal: r }) {
1047
+ let i = () => {
1048
+ let r = e.get(t.documentAtom);
1049
+ r !== null && (n(r), e.set(Xt, r));
1050
+ }, a = e.sub(t.documentAtom, i);
1051
+ r.addEventListener("abort", a, { once: !0 }), i();
1052
+ }
1053
+ async function bn() {
1054
+ let e = w.get(re);
1055
+ e !== null && w.get(e.syncStatusAtom).status !== "unavailable" && await e.flush();
1056
+ }
1057
+ //#endregion
1058
+ //#region src/core/cells/editor.ts
1059
+ var H = T(/* @__PURE__ */ new Set());
1060
+ function xn(e, t, n) {
1061
+ return !!e && !t.has(n);
1062
+ }
1063
+ T(null, (e, t, { cellId: n }) => {
1064
+ t(H, (e) => /* @__PURE__ */ new Set([...e, n]));
1065
+ }), T(null, (e, t, { cellId: n }) => e(H).has(n) ? (t(H, (e) => {
1066
+ let t = new Set(e);
1067
+ return t.delete(n), t;
1068
+ }), !0) : !1);
1069
+ var Sn = T(/* @__PURE__ */ new Map());
1070
+ T(null, (e, t, { cellId: n }) => {
1071
+ t(Sn, (e) => {
1072
+ let t = new Map(e);
1073
+ return t.delete(n), t;
1074
+ });
1075
+ });
1076
+ //#endregion
1077
+ //#region ../node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/fromUnixTime.js
1078
+ function Cn(e, t) {
1079
+ return he(e * 1e3, t?.in);
1080
+ }
1081
+ //#endregion
1082
+ //#region ../node_modules/.pnpm/ansi_up@6.0.6/node_modules/ansi_up/ansi_up.js
1083
+ var wn = function(e, t) {
1084
+ return Object.defineProperty ? Object.defineProperty(e, "raw", { value: t }) : e.raw = t, e;
1085
+ }, U;
1086
+ (function(e) {
1087
+ e[e.EOS = 0] = "EOS", e[e.Text = 1] = "Text", e[e.Incomplete = 2] = "Incomplete", e[e.ESC = 3] = "ESC", e[e.Unknown = 4] = "Unknown", e[e.SGR = 5] = "SGR", e[e.OSCURL = 6] = "OSCURL";
1088
+ })(U ||= {});
1089
+ var Tn = class {
1090
+ constructor() {
1091
+ this.VERSION = "6.0.6", this.setup_palettes(), this._use_classes = !1, this.bold = !1, this.faint = !1, this.italic = !1, this.underline = !1, this.fg = this.bg = null, this._buffer = "", this._url_allowlist = {
1092
+ http: 1,
1093
+ https: 1
1094
+ }, this._escape_html = !0, this.boldStyle = "font-weight:bold", this.faintStyle = "opacity:0.7", this.italicStyle = "font-style:italic", this.underlineStyle = "text-decoration:underline";
1095
+ }
1096
+ set use_classes(e) {
1097
+ this._use_classes = e;
1098
+ }
1099
+ get use_classes() {
1100
+ return this._use_classes;
1101
+ }
1102
+ set url_allowlist(e) {
1103
+ this._url_allowlist = e;
1104
+ }
1105
+ get url_allowlist() {
1106
+ return this._url_allowlist;
1107
+ }
1108
+ set escape_html(e) {
1109
+ this._escape_html = e;
1110
+ }
1111
+ get escape_html() {
1112
+ return this._escape_html;
1113
+ }
1114
+ set boldStyle(e) {
1115
+ this._boldStyle = e;
1116
+ }
1117
+ get boldStyle() {
1118
+ return this._boldStyle;
1119
+ }
1120
+ set faintStyle(e) {
1121
+ this._faintStyle = e;
1122
+ }
1123
+ get faintStyle() {
1124
+ return this._faintStyle;
1125
+ }
1126
+ set italicStyle(e) {
1127
+ this._italicStyle = e;
1128
+ }
1129
+ get italicStyle() {
1130
+ return this._italicStyle;
1131
+ }
1132
+ set underlineStyle(e) {
1133
+ this._underlineStyle = e;
1134
+ }
1135
+ get underlineStyle() {
1136
+ return this._underlineStyle;
1137
+ }
1138
+ setup_palettes() {
1139
+ this.ansi_colors = [[
1140
+ {
1141
+ rgb: [
1142
+ 0,
1143
+ 0,
1144
+ 0
1145
+ ],
1146
+ class_name: "ansi-black"
1147
+ },
1148
+ {
1149
+ rgb: [
1150
+ 187,
1151
+ 0,
1152
+ 0
1153
+ ],
1154
+ class_name: "ansi-red"
1155
+ },
1156
+ {
1157
+ rgb: [
1158
+ 0,
1159
+ 187,
1160
+ 0
1161
+ ],
1162
+ class_name: "ansi-green"
1163
+ },
1164
+ {
1165
+ rgb: [
1166
+ 187,
1167
+ 187,
1168
+ 0
1169
+ ],
1170
+ class_name: "ansi-yellow"
1171
+ },
1172
+ {
1173
+ rgb: [
1174
+ 0,
1175
+ 0,
1176
+ 187
1177
+ ],
1178
+ class_name: "ansi-blue"
1179
+ },
1180
+ {
1181
+ rgb: [
1182
+ 187,
1183
+ 0,
1184
+ 187
1185
+ ],
1186
+ class_name: "ansi-magenta"
1187
+ },
1188
+ {
1189
+ rgb: [
1190
+ 0,
1191
+ 187,
1192
+ 187
1193
+ ],
1194
+ class_name: "ansi-cyan"
1195
+ },
1196
+ {
1197
+ rgb: [
1198
+ 255,
1199
+ 255,
1200
+ 255
1201
+ ],
1202
+ class_name: "ansi-white"
1203
+ }
1204
+ ], [
1205
+ {
1206
+ rgb: [
1207
+ 85,
1208
+ 85,
1209
+ 85
1210
+ ],
1211
+ class_name: "ansi-bright-black"
1212
+ },
1213
+ {
1214
+ rgb: [
1215
+ 255,
1216
+ 85,
1217
+ 85
1218
+ ],
1219
+ class_name: "ansi-bright-red"
1220
+ },
1221
+ {
1222
+ rgb: [
1223
+ 0,
1224
+ 255,
1225
+ 0
1226
+ ],
1227
+ class_name: "ansi-bright-green"
1228
+ },
1229
+ {
1230
+ rgb: [
1231
+ 255,
1232
+ 255,
1233
+ 85
1234
+ ],
1235
+ class_name: "ansi-bright-yellow"
1236
+ },
1237
+ {
1238
+ rgb: [
1239
+ 85,
1240
+ 85,
1241
+ 255
1242
+ ],
1243
+ class_name: "ansi-bright-blue"
1244
+ },
1245
+ {
1246
+ rgb: [
1247
+ 255,
1248
+ 85,
1249
+ 255
1250
+ ],
1251
+ class_name: "ansi-bright-magenta"
1252
+ },
1253
+ {
1254
+ rgb: [
1255
+ 85,
1256
+ 255,
1257
+ 255
1258
+ ],
1259
+ class_name: "ansi-bright-cyan"
1260
+ },
1261
+ {
1262
+ rgb: [
1263
+ 255,
1264
+ 255,
1265
+ 255
1266
+ ],
1267
+ class_name: "ansi-bright-white"
1268
+ }
1269
+ ]], this.palette_256 = [], this.ansi_colors.forEach((e) => {
1270
+ e.forEach((e) => {
1271
+ this.palette_256.push(e);
1272
+ });
1273
+ });
1274
+ let e = [
1275
+ 0,
1276
+ 95,
1277
+ 135,
1278
+ 175,
1279
+ 215,
1280
+ 255
1281
+ ];
1282
+ for (let t = 0; t < 6; ++t) for (let n = 0; n < 6; ++n) for (let r = 0; r < 6; ++r) {
1283
+ let i = {
1284
+ rgb: [
1285
+ e[t],
1286
+ e[n],
1287
+ e[r]
1288
+ ],
1289
+ class_name: "truecolor"
1290
+ };
1291
+ this.palette_256.push(i);
1292
+ }
1293
+ let t = 8;
1294
+ for (let e = 0; e < 24; ++e, t += 10) {
1295
+ let e = {
1296
+ rgb: [
1297
+ t,
1298
+ t,
1299
+ t
1300
+ ],
1301
+ class_name: "truecolor"
1302
+ };
1303
+ this.palette_256.push(e);
1304
+ }
1305
+ }
1306
+ escape_txt_for_html(e) {
1307
+ return this._escape_html ? e.replace(/[&<>"']/gm, (e) => {
1308
+ if (e === "&") return "&amp;";
1309
+ if (e === "<") return "&lt;";
1310
+ if (e === ">") return "&gt;";
1311
+ if (e === "\"") return "&quot;";
1312
+ if (e === "'") return "&#x27;";
1313
+ }) : e;
1314
+ }
1315
+ append_buffer(e) {
1316
+ var t = this._buffer + e;
1317
+ this._buffer = t;
1318
+ }
1319
+ get_next_packet() {
1320
+ var e = {
1321
+ kind: U.EOS,
1322
+ text: "",
1323
+ url: ""
1324
+ }, t = this._buffer.length;
1325
+ if (t == 0) return e;
1326
+ var n = this._buffer.indexOf("\x1B");
1327
+ if (n == -1) return e.kind = U.Text, e.text = this._buffer, this._buffer = "", e;
1328
+ if (n > 0) return e.kind = U.Text, e.text = this._buffer.slice(0, n), this._buffer = this._buffer.slice(n), e;
1329
+ if (n == 0) {
1330
+ if (t < 3) return e.kind = U.Incomplete, e;
1331
+ var r = this._buffer.charAt(1);
1332
+ if (r != "[" && r != "]" && r != "(") return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1333
+ if (r == "[") {
1334
+ this._csi_regex ||= En(On ||= wn(["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \x1B[ # CSI\n ([<-?]?) # private-mode char\n ([d;]*) # any digits or semicolons\n ([ -/]? # an intermediate modifier\n [@-~]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \x1B[ # CSI\n [ -~]* # anything legal\n ([\0-:]) # anything illegal\n )\n "], ["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \\x1b\\[ # CSI\n ([\\x3c-\\x3f]?) # private-mode char\n ([\\d;]*) # any digits or semicolons\n ([\\x20-\\x2f]? # an intermediate modifier\n [\\x40-\\x7e]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \\x1b\\[ # CSI\n [\\x20-\\x7e]* # anything legal\n ([\\x00-\\x1f:]) # anything illegal\n )\n "]));
1335
+ let t = this._buffer.match(this._csi_regex);
1336
+ if (t === null) return e.kind = U.Incomplete, e;
1337
+ if (t[4]) return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1338
+ e.kind = t[1] != "" || t[3] != "m" ? U.Unknown : U.SGR, e.text = t[2];
1339
+ var i = t[0].length;
1340
+ return this._buffer = this._buffer.slice(i), e;
1341
+ }
1342
+ if (r == "]") {
1343
+ if (t < 4) return e.kind = U.Incomplete, e;
1344
+ if (this._buffer.charAt(2) != "8" || this._buffer.charAt(3) != ";") return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1345
+ this._osc_st ||= Dn(kn ||= wn(["\n (?: # legal sequence\n (\x1B\\) # ESC | # alternate\n (\x07) # BEL (what xterm did)\n )\n | # alternate (second attempt)\n ( # illegal sequence\n [\0-] # anything illegal\n | # alternate\n [\b-] # anything illegal\n | # alternate\n [-] # anything illegal\n )\n "], ["\n (?: # legal sequence\n (\\x1b\\\\) # ESC \\\n | # alternate\n (\\x07) # BEL (what xterm did)\n )\n | # alternate (second attempt)\n ( # illegal sequence\n [\\x00-\\x06] # anything illegal\n | # alternate\n [\\x08-\\x1a] # anything illegal\n | # alternate\n [\\x1c-\\x1f] # anything illegal\n )\n "])), this._osc_st.lastIndex = 0;
1346
+ {
1347
+ let t = this._osc_st.exec(this._buffer);
1348
+ if (t === null) return e.kind = U.Incomplete, e;
1349
+ if (t[3]) return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1350
+ }
1351
+ {
1352
+ let t = this._osc_st.exec(this._buffer);
1353
+ if (t === null) return e.kind = U.Incomplete, e;
1354
+ if (t[3]) return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1355
+ }
1356
+ this._osc_regex ||= En(An ||= wn(["\n ^ # beginning of line\n #\n \x1B]8; # OSC Hyperlink\n [ -:<-~]* # params (excluding ;)\n ; # end of params\n ([!-~]{0,512}) # URL capture\n (?: # ST\n (?:\x1B\\) # ESC | # alternate\n (?:\x07) # BEL (what xterm did)\n )\n ([ -~]+) # TEXT capture\n \x1B]8;; # OSC Hyperlink End\n (?: # ST\n (?:\x1B\\) # ESC | # alternate\n (?:\x07) # BEL (what xterm did)\n )\n "], ["\n ^ # beginning of line\n #\n \\x1b\\]8; # OSC Hyperlink\n [\\x20-\\x3a\\x3c-\\x7e]* # params (excluding ;)\n ; # end of params\n ([\\x21-\\x7e]{0,512}) # URL capture\n (?: # ST\n (?:\\x1b\\\\) # ESC \\\n | # alternate\n (?:\\x07) # BEL (what xterm did)\n )\n ([\\x20-\\x7e]+) # TEXT capture\n \\x1b\\]8;; # OSC Hyperlink End\n (?: # ST\n (?:\\x1b\\\\) # ESC \\\n | # alternate\n (?:\\x07) # BEL (what xterm did)\n )\n "]));
1357
+ let n = this._buffer.match(this._osc_regex);
1358
+ if (n === null) return e.kind = U.ESC, e.text = this._buffer.slice(0, 1), this._buffer = this._buffer.slice(1), e;
1359
+ e.kind = U.OSCURL, e.url = n[1], e.text = n[2];
1360
+ var i = n[0].length;
1361
+ return this._buffer = this._buffer.slice(i), e;
1362
+ }
1363
+ if (r == "(") return e.kind = U.Unknown, this._buffer = this._buffer.slice(3), e;
1364
+ }
1365
+ }
1366
+ ansi_to_html(e) {
1367
+ this.append_buffer(e);
1368
+ for (var t = [];;) {
1369
+ var n = this.get_next_packet();
1370
+ if (n.kind == U.EOS || n.kind == U.Incomplete) break;
1371
+ n.kind != U.ESC && n.kind != U.Unknown && (n.kind == U.Text ? t.push(this.transform_to_html(this.with_state(n))) : n.kind == U.SGR ? this.process_ansi(n) : n.kind == U.OSCURL && t.push(this.process_hyperlink(n)));
1372
+ }
1373
+ return t.join("");
1374
+ }
1375
+ with_state(e) {
1376
+ return {
1377
+ bold: this.bold,
1378
+ faint: this.faint,
1379
+ italic: this.italic,
1380
+ underline: this.underline,
1381
+ fg: this.fg,
1382
+ bg: this.bg,
1383
+ text: e.text
1384
+ };
1385
+ }
1386
+ process_ansi(e) {
1387
+ let t = e.text.split(";");
1388
+ for (; t.length > 0;) {
1389
+ let e = t.shift(), n = parseInt(e, 10);
1390
+ if (isNaN(n) || n === 0) this.fg = null, this.bg = null, this.bold = !1, this.faint = !1, this.italic = !1, this.underline = !1;
1391
+ else if (n === 1) this.bold = !0;
1392
+ else if (n === 2) this.faint = !0;
1393
+ else if (n === 3) this.italic = !0;
1394
+ else if (n === 4) this.underline = !0;
1395
+ else if (n === 21) this.bold = !1;
1396
+ else if (n === 22) this.faint = !1, this.bold = !1;
1397
+ else if (n === 23) this.italic = !1;
1398
+ else if (n === 24) this.underline = !1;
1399
+ else if (n === 39) this.fg = null;
1400
+ else if (n === 49) this.bg = null;
1401
+ else if (n >= 30 && n < 38) this.fg = this.ansi_colors[0][n - 30];
1402
+ else if (n >= 40 && n < 48) this.bg = this.ansi_colors[0][n - 40];
1403
+ else if (n >= 90 && n < 98) this.fg = this.ansi_colors[1][n - 90];
1404
+ else if (n >= 100 && n < 108) this.bg = this.ansi_colors[1][n - 100];
1405
+ else if ((n === 38 || n === 48) && t.length > 0) {
1406
+ let e = n === 38, r = t.shift();
1407
+ if (r === "5" && t.length > 0) {
1408
+ let n = parseInt(t.shift(), 10);
1409
+ n >= 0 && n <= 255 && (e ? this.fg = this.palette_256[n] : this.bg = this.palette_256[n]);
1410
+ }
1411
+ if (r === "2" && t.length > 2) {
1412
+ let n = parseInt(t.shift(), 10), r = parseInt(t.shift(), 10), i = parseInt(t.shift(), 10);
1413
+ if (n >= 0 && n <= 255 && r >= 0 && r <= 255 && i >= 0 && i <= 255) {
1414
+ let t = {
1415
+ rgb: [
1416
+ n,
1417
+ r,
1418
+ i
1419
+ ],
1420
+ class_name: "truecolor"
1421
+ };
1422
+ e ? this.fg = t : this.bg = t;
1423
+ }
1424
+ }
1425
+ }
1426
+ }
1427
+ }
1428
+ transform_to_html(e) {
1429
+ let t = e.text;
1430
+ if (t.length === 0 || (t = this.escape_txt_for_html(t), !e.bold && !e.italic && !e.faint && !e.underline && e.fg === null && e.bg === null)) return t;
1431
+ let n = [], r = [], i = e.fg, a = e.bg;
1432
+ e.bold && n.push(this._boldStyle), e.faint && n.push(this._faintStyle), e.italic && n.push(this._italicStyle), e.underline && n.push(this._underlineStyle), this._use_classes ? (i && (i.class_name === "truecolor" ? n.push(`color:rgb(${i.rgb.join(",")})`) : r.push(`${i.class_name}-fg`)), a && (a.class_name === "truecolor" ? n.push(`background-color:rgb(${a.rgb.join(",")})`) : r.push(`${a.class_name}-bg`))) : (i && n.push(`color:rgb(${i.rgb.join(",")})`), a && n.push(`background-color:rgb(${a.rgb})`));
1433
+ let o = "", s = "";
1434
+ return r.length && (o = ` class="${r.join(" ")}"`), n.length && (s = ` style="${n.join(";")}"`), `<span${s}${o}>${t}</span>`;
1435
+ }
1436
+ process_hyperlink(e) {
1437
+ let t = e.url.split(":");
1438
+ return t.length < 1 || !this._url_allowlist[t[0]] ? "" : `<a href="${this.escape_txt_for_html(e.url)}">${this.escape_txt_for_html(e.text)}</a>`;
1439
+ }
1440
+ };
1441
+ function En(e, ...t) {
1442
+ let n = e.raw[0].replace(/^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm, "");
1443
+ return new RegExp(n);
1444
+ }
1445
+ function Dn(e, ...t) {
1446
+ let n = e.raw[0].replace(/^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm, "");
1447
+ return new RegExp(n, "g");
1448
+ }
1449
+ var On, kn, An, jn = new Tn();
1450
+ function W(e) {
1451
+ try {
1452
+ let t = document.createElement("div");
1453
+ return t.innerHTML = e, (t.textContent || t.innerText || "").split("\n").map((e) => e.trimEnd()).join("\n");
1454
+ } catch (n) {
1455
+ return t.error("Error parsing HTML content:", n), e;
1456
+ }
1457
+ }
1458
+ function Mn(e) {
1459
+ if (!e) return "";
1460
+ try {
1461
+ return W(jn.ansi_to_html(e));
1462
+ } catch (n) {
1463
+ return t.error("Error converting ANSI to plain text:", n), e;
1464
+ }
1465
+ }
1466
+ //#endregion
1467
+ //#region src/core/errors/traceback-atom.ts
1468
+ var Nn = T(null);
1469
+ //#endregion
1470
+ //#region src/core/cells/logs.ts
1471
+ function Pn(e) {
1472
+ return e.type === "cell" ? e.cellId : `lsp:${e.name}`;
1473
+ }
1474
+ var Fn = !1;
1475
+ function In(e) {
1476
+ let t = [], n = [e.console].filter(Boolean).flat();
1477
+ for (let r of n) {
1478
+ let n = r.mimetype === "text/plain", i = r.mimetype === "text/html" || r.mimetype === "application/vnd.marimo+traceback";
1479
+ if (n || i) {
1480
+ let n = r.channel === "stderr" || r.channel === "marimo-error";
1481
+ switch (r.channel) {
1482
+ case "stdout":
1483
+ case "stderr":
1484
+ case "marimo-error": {
1485
+ let a = d.asString(r.data), o = i ? W(a) : a;
1486
+ t.push({
1487
+ timestamp: r.timestamp || Date.now(),
1488
+ level: n ? "stderr" : "stdout",
1489
+ message: o,
1490
+ source: {
1491
+ type: "cell",
1492
+ cellId: e.cell_id
1493
+ }
1494
+ });
1495
+ break;
1496
+ }
1497
+ }
1498
+ }
1499
+ }
1500
+ if (t.forEach(Ln.log), n.length === 0 && F(e.output?.mimetype) && Array.isArray(e.output.data)) {
1501
+ e.output.data.forEach((t) => {
1502
+ Ln.log({
1503
+ level: "stderr",
1504
+ source: {
1505
+ type: "cell",
1506
+ cellId: e.cell_id
1507
+ },
1508
+ timestamp: e.timestamp ?? 0,
1509
+ message: JSON.stringify(t)
1510
+ });
1511
+ });
1512
+ let t = e.output.data.filter((e) => "type" in e && e.type === "exception" || e.type === "internal"), n = w.get(fe) === "read";
1513
+ if (t.length > 0 && !Fn && n) {
1514
+ Fn = !0;
1515
+ let e = t.find((e) => e.traceback);
1516
+ o(e ? {
1517
+ title: "An internal error occurred",
1518
+ description: e.msg || "Click 'View' to see traceback",
1519
+ variant: "danger",
1520
+ action: k.createElement(_, {
1521
+ altText: "View traceback",
1522
+ onClick: () => {
1523
+ w.set(Nn, {
1524
+ traceback: e.traceback,
1525
+ errorMessage: e.msg || "An internal error occurred"
1526
+ });
1527
+ }
1528
+ }, "View")
1529
+ } : {
1530
+ title: "An internal error occurred",
1531
+ description: "See console for details.",
1532
+ variant: "danger"
1533
+ });
1534
+ }
1535
+ }
1536
+ return t;
1537
+ }
1538
+ var Ln = { log: (e) => {
1539
+ let t = e.level === "stdout" ? "gray" : e.level === "stderr" ? "red" : "orange", n = e.level.toUpperCase();
1540
+ console.log(`%c[${n}]`, `color:${t}; padding:2px 0; border-radius:2px; font-weight:bold`, `[${Rn(e.timestamp)}]`, `(${Pn(e.source)}) ${e.message}`);
1541
+ } };
1542
+ function Rn(e) {
1543
+ try {
1544
+ return Cn(e).toLocaleTimeString(void 0, {
1545
+ hour12: !0,
1546
+ hour: "numeric",
1547
+ minute: "numeric",
1548
+ second: "numeric"
1549
+ });
1550
+ } catch {
1551
+ return "";
1552
+ }
1553
+ }
1554
+ //#endregion
1555
+ //#region src/components/editor/navigation/focus-utils.ts
1556
+ function zn(e, n) {
1557
+ let r = document.getElementById(R.create(e));
1558
+ r ? Vn(r, n) : t.warn(`[CellFocusManager] focusCell: element not found: ${e}`);
1559
+ }
1560
+ function Bn() {
1561
+ return document.activeElement instanceof HTMLElement && document.activeElement.classList.contains("marimo-cell");
1562
+ }
1563
+ function Vn(e, n) {
1564
+ try {
1565
+ e.focus(n);
1566
+ } catch {
1567
+ t.warn("[CellFocusManager] element may not be focusable", e);
1568
+ }
1569
+ }
1570
+ //#endregion
1571
+ //#region src/utils/timeout.ts
1572
+ function Hn(e, n) {
1573
+ let { retries: r, delay: i, initialDelay: a = 0 } = n, o = 0, s = () => {
1574
+ if (o < r) {
1575
+ try {
1576
+ if (e()) return;
1577
+ } catch (e) {
1578
+ t.error(`Error executing function on attempt ${o + 1}, retrying`, { error: e });
1579
+ }
1580
+ o++, setTimeout(s, i);
1581
+ }
1582
+ };
1583
+ a > 0 ? setTimeout(s, a) : s();
1584
+ }
1585
+ //#endregion
1586
+ //#region src/core/cells/utils.ts
1587
+ function Un(e, t) {
1588
+ return Yn(e, t).length > 0;
1589
+ }
1590
+ function Wn(e) {
1591
+ return e.cellIds.map((t) => e.cellData[t]);
1592
+ }
1593
+ function Gn(e) {
1594
+ let { cellIds: t, cellData: n } = e, r = [];
1595
+ for (let e of t) n[e].config.disabled && r.push(e);
1596
+ return r;
1597
+ }
1598
+ function Kn(e) {
1599
+ let { cellIds: t, cellData: n } = e, r = [];
1600
+ for (let e of t) n[e].config.disabled || r.push(e);
1601
+ return r;
1602
+ }
1603
+ function qn(e) {
1604
+ return e.history.length > 0;
1605
+ }
1606
+ function Jn(e) {
1607
+ let t = e.history[e.history.length - 1];
1608
+ return t && t.type === "move" ? "Undo move" : "Undo cell deletion";
1609
+ }
1610
+ function Yn(e, t) {
1611
+ let { cellIds: n, cellData: r, cellRuntime: i } = e;
1612
+ return n.filter((e) => {
1613
+ let n = Be(t, e);
1614
+ return Xn(n) || r[e].edited || n.outcome === "interrupted" || i[e].staleInputs && !(n.blocked || r[e].config.disabled);
1615
+ });
1616
+ }
1617
+ function Xn({ status: e, outcome: t }) {
1618
+ return t === null && e !== "queued" && e !== "running";
1619
+ }
1620
+ function Zn({ errored: e, stopped: t }) {
1621
+ return {
1622
+ published: !0,
1623
+ "has-error": e,
1624
+ stopped: t
1625
+ };
1626
+ }
1627
+ function Qn({ errored: e, interrupted: t, stopped: n, output: r, showErrorTracebacks: i }) {
1628
+ let a = F(r?.mimetype), o = i && a && Array.isArray(r?.data) && r.data.some((e) => e.type === "exception" && "traceback" in e && e.traceback);
1629
+ return (e || t || n || a) && !o;
1630
+ }
1631
+ //#endregion
1632
+ //#region src/core/network/requests.ts
1633
+ var $n = T(null);
1634
+ function er() {
1635
+ let e = E($n);
1636
+ return D(e, "useRequestClient() requires setting requestClientAtom."), e;
1637
+ }
1638
+ function tr() {
1639
+ let e = w.get($n);
1640
+ return D(e, "getRequestClient() requires requestClientAtom to be set."), e;
1641
+ }
1642
+ //#endregion
1643
+ //#region src/utils/storage/storage.ts
1644
+ var nr = class {
1645
+ store = /* @__PURE__ */ new Map();
1646
+ get length() {
1647
+ return this.store.size;
1648
+ }
1649
+ clear() {
1650
+ this.store.clear();
1651
+ }
1652
+ getItem(e) {
1653
+ return this.store.get(e) || null;
1654
+ }
1655
+ key(e) {
1656
+ return [...this.store.keys()][e] || null;
1657
+ }
1658
+ removeItem(e) {
1659
+ this.store.delete(e);
1660
+ }
1661
+ setItem(e, t) {
1662
+ this.store.set(e, t);
1663
+ }
1664
+ };
1665
+ function rr() {
1666
+ let { hasLocalStorage: e, hasSessionStorage: t } = ge();
1667
+ return e ? window.localStorage : t ? window.sessionStorage : new nr();
1668
+ }
1669
+ var ir = rr(), ar = /(https?:\/\/[^\s"<>`{}|\\^]+)/, or = /\.(png|jpe?g|gif|webp|svg|ico)(\?.*)?$/i, sr = /^data:image\//i, cr = ["avatars.githubusercontent.com"];
1670
+ function lr(e) {
1671
+ return sr.test(e) ? [{
1672
+ type: "image",
1673
+ url: e
1674
+ }] : e.split(ar).filter((e) => e !== "").map((e) => ar.test(e) ? or.test(e) || sr.test(e) || cr.some((t) => e.includes(t)) ? {
1675
+ type: "image",
1676
+ url: e
1677
+ } : {
1678
+ type: "url",
1679
+ url: e
1680
+ } : {
1681
+ type: "text",
1682
+ value: e
1683
+ });
1684
+ }
1685
+ //#endregion
1686
+ //#region src/utils/json/json-parser.ts
1687
+ var ur = new RegExp(ar.source, "g");
1688
+ BigInt.prototype.toJSON = function() {
1689
+ return JSON.rawJSON(this.toString());
1690
+ };
1691
+ function dr(e) {
1692
+ try {
1693
+ return JSON.parse(e, (e, t) => hr(t));
1694
+ } catch {}
1695
+ if (e == null || e === "") return {};
1696
+ try {
1697
+ return e ??= "", e = e.replaceAll(/(?<=\s|^|\[|,|:)(NaN|-Infinity|Infinity)(?=(?:[^"'\\]*(\\.|'([^'\\]*\\.)*[^'\\]*'|"([^"\\]*\\.)*[^"\\]*"))*[^"']*$)/g, "\"◐$1◐\""), JSON.parse(e, (e, t) => typeof t == "string" ? t === "◐NaN◐" ? NaN : t === "◐Infinity◐" ? Infinity : t === "◐-Infinity◐" ? -Infinity : hr(t) : hr(t));
1698
+ } catch {
1699
+ return {};
1700
+ }
1701
+ }
1702
+ function fr(e) {
1703
+ if (e.length === 0) return "";
1704
+ let t = Object.keys(e[0]);
1705
+ return [
1706
+ `| ${t.join(" | ")} |`,
1707
+ `|${t.map(() => "---").join("|")}|`,
1708
+ ...e.map((e) => `| ${t.map((t) => pr(e[t])).join(" | ")} |`)
1709
+ ].join("\n");
1710
+ }
1711
+ function pr(e) {
1712
+ if (e == null) return "";
1713
+ if (Array.isArray(e) || typeof e == "object") return mr(JSON.stringify(e));
1714
+ let t = String(e), n = /\[([^\]]+)]\((https?:\/\/[^)]+)\)/g, r = /* @__PURE__ */ new Map(), i = 0;
1715
+ t = t.replaceAll(n, (e) => {
1716
+ let t = `__MDLINK_${i++}__`;
1717
+ return r.set(t, e), t;
1718
+ }), t = t.replaceAll(ur, "[$1]($1)");
1719
+ for (let [e, n] of r) t = t.replace(e, n);
1720
+ return mr(t);
1721
+ }
1722
+ function mr(e) {
1723
+ return e.replaceAll("\\", "\\\\").replaceAll("|", "\\|").replaceAll("\n", " ").replaceAll("\r", "");
1724
+ }
1725
+ function hr(e) {
1726
+ return typeof e == "object" && e && "$bigint" in e && typeof e.$bigint == "string" ? BigInt(e.$bigint) : e;
1727
+ }
1728
+ var gr = new class {
1729
+ getFilename() {
1730
+ return this.getSearchParam("filename");
1731
+ }
1732
+ setFilename(e) {
1733
+ this.setSearchParam("filename", e);
1734
+ }
1735
+ getCodeFromSearchParam() {
1736
+ return this.getSearchParam("code");
1737
+ }
1738
+ getCodeFromHash() {
1739
+ let e = window.location.hash;
1740
+ return e.startsWith("#code/") ? e.slice(6) : null;
1741
+ }
1742
+ setCodeForHash(e) {
1743
+ window.location.hash = `#code/${e}`;
1744
+ }
1745
+ setSearchParam(e, t) {
1746
+ let n = new URL(window.location.href);
1747
+ n.searchParams.set(e, t), window.history.replaceState({}, "", n.toString());
1748
+ }
1749
+ getSearchParam(e) {
1750
+ return new URL(window.location.href).searchParams.get(e);
1751
+ }
1752
+ }();
1753
+ //#endregion
1754
+ //#region src/core/dom/htmlUtils.ts
1755
+ function _r(e) {
1756
+ return dr(e ?? "");
1757
+ }
1758
+ function vr(e) {
1759
+ return O.mapValues(e.dataset, (e) => typeof e == "string" ? _r(e) : e);
1760
+ }
1761
+ function yr(e, t) {
1762
+ let n = e.parentElement ? Kt.parse(e.parentElement) : void 0;
1763
+ return n && t.has(n) ? t.lookupValue(n) : _r(e.dataset.initialValue);
1764
+ }
1765
+ function br() {
1766
+ if (ne()) return document.title || null;
1767
+ if (me()) {
1768
+ let e = gr.getFilename();
1769
+ if (e) return e;
1770
+ }
1771
+ let e = document.querySelector("marimo-filename");
1772
+ pe(e, "marimo-filename tag not found");
1773
+ let t = e.innerHTML;
1774
+ return t.length === 0 ? null : t;
1775
+ }
1776
+ //#endregion
1777
+ //#region src/core/saving/file-state.ts
1778
+ var G = T(br());
1779
+ T(null);
1780
+ var xr = T(null);
1781
+ T(void 0);
1782
+ //#endregion
1783
+ //#region src/utils/storage/typed.ts
1784
+ var Sr = class {
1785
+ defaultValue;
1786
+ storage;
1787
+ constructor(e, t = ir) {
1788
+ this.defaultValue = e, this.storage = t;
1789
+ }
1790
+ get(e) {
1791
+ try {
1792
+ let t = this.storage.getItem(e);
1793
+ return t ? JSON.parse(t) : this.defaultValue;
1794
+ } catch {
1795
+ return this.defaultValue;
1796
+ }
1797
+ }
1798
+ set(e, t) {
1799
+ this.storage.setItem(e, JSON.stringify(t));
1800
+ }
1801
+ remove(e) {
1802
+ this.storage.removeItem(e);
1803
+ }
1804
+ }, Cr = class {
1805
+ schema;
1806
+ getDefaultValue;
1807
+ storage;
1808
+ constructor(e, t, n = ir) {
1809
+ this.schema = e, this.getDefaultValue = t, this.storage = n;
1810
+ }
1811
+ get(e) {
1812
+ try {
1813
+ let n = this.storage.getItem(e);
1814
+ if (n == null) return this.getDefaultValue();
1815
+ let r = this.schema.safeParse(JSON.parse(n));
1816
+ return r.success ? r.data : (t.warn("Error parsing zod local storage", r.error), this.getDefaultValue());
1817
+ } catch (e) {
1818
+ return t.warn("Error getting zod local storage", e), this.getDefaultValue();
1819
+ }
1820
+ }
1821
+ set(e, t) {
1822
+ this.storage.setItem(e, JSON.stringify(t));
1823
+ }
1824
+ remove(e) {
1825
+ this.storage.removeItem(e);
1826
+ }
1827
+ }, wr = class extends Cr {
1828
+ filename;
1829
+ unsubscribeFromFilename;
1830
+ constructor(e, t, n) {
1831
+ let r = w.get(G);
1832
+ super(t, n), this.filename = r;
1833
+ try {
1834
+ this.unsubscribeFromFilename = w.sub(G, () => {
1835
+ let t = w.get(G);
1836
+ this.handleFilenameChange(e, t);
1837
+ });
1838
+ } catch {
1839
+ this.unsubscribeFromFilename = null;
1840
+ }
1841
+ }
1842
+ get(e) {
1843
+ return super.get(this.createScopedKey(e, this.filename));
1844
+ }
1845
+ set(e, t) {
1846
+ super.set(this.createScopedKey(e, this.filename), t);
1847
+ }
1848
+ remove(e) {
1849
+ super.remove(this.createScopedKey(e, this.filename));
1850
+ }
1851
+ createScopedKey(e, t) {
1852
+ return t ? `${e}:${t}` : e;
1853
+ }
1854
+ handleFilenameChange(e, t) {
1855
+ if (t && t !== this.filename) {
1856
+ let n = this.get(e);
1857
+ this.remove(e), this.filename = t, this.set(e, n);
1858
+ }
1859
+ }
1860
+ dispose() {
1861
+ this.unsubscribeFromFilename &&= (this.unsubscribeFromFilename(), null);
1862
+ }
1863
+ }, K = {
1864
+ VariableName: "VariableName",
1865
+ FunctionDefinition: "FunctionDefinition",
1866
+ ClassDefinition: "ClassDefinition",
1867
+ LambdaExpression: "LambdaExpression",
1868
+ ParamList: "ParamList",
1869
+ Decorator: "Decorator",
1870
+ AssignStatement: "AssignStatement",
1871
+ ForStatement: "ForStatement",
1872
+ ImportStatement: "ImportStatement",
1873
+ TryStatement: "TryStatement",
1874
+ WithStatement: "WithStatement",
1875
+ TupleExpression: "TupleExpression",
1876
+ ArrayExpression: "ArrayExpression",
1877
+ ParenthesizedExpression: "ParenthesizedExpression",
1878
+ CallExpression: "CallExpression",
1879
+ ArgList: "ArgList",
1880
+ AssignOp: "AssignOp",
1881
+ ArrayComprehensionExpression: "ArrayComprehensionExpression",
1882
+ SetComprehensionExpression: "SetComprehensionExpression",
1883
+ DictionaryComprehensionExpression: "DictionaryComprehensionExpression",
1884
+ ComprehensionExpression: "ComprehensionExpression",
1885
+ Comment: "Comment",
1886
+ String: "String",
1887
+ FormatString: "FormatString"
1888
+ }, q = {
1889
+ For: "for",
1890
+ In: "in",
1891
+ As: "as",
1892
+ Import: "import"
1893
+ }, Tr = /* @__PURE__ */ new Set([
1894
+ K.FunctionDefinition,
1895
+ K.LambdaExpression,
1896
+ K.ArrayComprehensionExpression,
1897
+ K.SetComprehensionExpression,
1898
+ K.DictionaryComprehensionExpression,
1899
+ K.ComprehensionExpression,
1900
+ K.ClassDefinition
1901
+ ]);
1902
+ K.Comment, K.String, K.FormatString;
1903
+ //#endregion
1904
+ //#region src/core/codemirror/utils.ts
1905
+ function Er(e) {
1906
+ e && e.dispatch({ selection: {
1907
+ anchor: e.state.doc.length,
1908
+ head: e.state.doc.length
1909
+ } });
1910
+ }
1911
+ function Dr(e) {
1912
+ let t = e.dom.closest(".marimo-cell");
1913
+ t && requestAnimationFrame(() => {
1914
+ t.scrollIntoView({
1915
+ behavior: "instant",
1916
+ block: "nearest",
1917
+ inline: "nearest"
1918
+ });
1919
+ });
1920
+ }
1921
+ //#endregion
1922
+ //#region src/core/codemirror/go-to-definition/commands.ts
1923
+ var Or = /* @__PURE__ */ new Set([K.ClassDefinition]);
1924
+ function kr(e, t) {
1925
+ requestAnimationFrame(() => {
1926
+ e.focus(), e.dispatch({
1927
+ selection: {
1928
+ anchor: t,
1929
+ head: t
1930
+ },
1931
+ effects: ce.scrollIntoView(t, { y: "center" })
1932
+ });
1933
+ }), Dr(e);
1934
+ }
1935
+ function Ar(e, t) {
1936
+ let n = oe(e), r = null;
1937
+ return n.iterate({ enter: (n) => {
1938
+ if (r !== null) return !1;
1939
+ if (n.name === K.VariableName && e.doc.sliceString(n.from, n.to) === t) return r = n.from, !1;
1940
+ if (n.name === K.Comment || n.name === K.String) return !1;
1941
+ } }), r;
1942
+ }
1943
+ function jr(e, t) {
1944
+ let n = [], r = e.resolveInner(t, 0);
1945
+ for (; r;) Tr.has(r.name) && (n.some((e) => e.type === K.FunctionDefinition || e.type === K.LambdaExpression) && r.name === K.ClassDefinition || n.push({
1946
+ id: r.from,
1947
+ type: r.name
1948
+ })), r = r.parent;
1949
+ return n.push({
1950
+ id: -1,
1951
+ type: "global"
1952
+ }), n;
1953
+ }
1954
+ function J(e, t, n) {
1955
+ e.push({
1956
+ scopeId: t,
1957
+ from: n
1958
+ });
1959
+ }
1960
+ function Mr(e, t) {
1961
+ if (e.firstChild()) do
1962
+ t(e.node);
1963
+ while (e.nextSibling());
1964
+ }
1965
+ function Nr(e, t) {
1966
+ let { state: n, variableName: r, scopeId: i, declarations: a } = t;
1967
+ switch (e.name) {
1968
+ case K.VariableName:
1969
+ n.doc.sliceString(e.from, e.to) === r && J(a, i, e.from);
1970
+ break;
1971
+ case K.TupleExpression:
1972
+ case K.ArrayExpression: {
1973
+ let n = e.node.cursor();
1974
+ n.firstChild();
1975
+ do
1976
+ Nr(n, t);
1977
+ while (n.nextSibling());
1978
+ break;
1979
+ }
1980
+ }
1981
+ }
1982
+ function Pr(e, t) {
1983
+ let { state: n, variableName: r, scopeId: i, declarations: a } = t, o = e.cursor();
1984
+ o.firstChild();
1985
+ do {
1986
+ if (o.name !== K.ParamList) continue;
1987
+ let e = o.node.cursor();
1988
+ e.firstChild();
1989
+ do
1990
+ e.name === K.VariableName && n.doc.sliceString(e.from, e.to) === r && J(a, i, e.from);
1991
+ while (e.nextSibling());
1992
+ } while (o.nextSibling());
1993
+ }
1994
+ function Fr(e, t) {
1995
+ let n = e.cursor();
1996
+ n.firstChild();
1997
+ let r = !1;
1998
+ do
1999
+ if (n.name === q.For) r = !0;
2000
+ else if (r && n.name === q.In) break;
2001
+ else r && Nr(n, t);
2002
+ while (n.nextSibling());
2003
+ }
2004
+ function Ir(e, t) {
2005
+ let { state: n, variableName: r, scopeStack: i, declarations: a } = t, o = e.cursor(), s = o.name, c = o.from, l = Tr.has(s) ? [...i, c] : i, u = l[l.length - 1] ?? -1;
2006
+ switch (s) {
2007
+ case K.FunctionDefinition:
2008
+ case K.ClassDefinition: {
2009
+ let t = e.cursor();
2010
+ t.firstChild();
2011
+ do
2012
+ if (t.name === K.VariableName && n.doc.sliceString(t.from, t.to) === r) {
2013
+ J(a, i[i.length - 1] ?? -1, t.from);
2014
+ break;
2015
+ }
2016
+ while (t.nextSibling());
2017
+ s === K.FunctionDefinition && Pr(e, {
2018
+ state: n,
2019
+ variableName: r,
2020
+ scopeId: c,
2021
+ declarations: a
2022
+ });
2023
+ break;
2024
+ }
2025
+ case K.LambdaExpression:
2026
+ Pr(e, {
2027
+ state: n,
2028
+ variableName: r,
2029
+ scopeId: c,
2030
+ declarations: a
2031
+ });
2032
+ break;
2033
+ case K.ArrayComprehensionExpression:
2034
+ case K.DictionaryComprehensionExpression:
2035
+ case K.SetComprehensionExpression:
2036
+ case K.ComprehensionExpression:
2037
+ case K.ForStatement:
2038
+ Fr(e, {
2039
+ state: n,
2040
+ variableName: r,
2041
+ scopeId: u,
2042
+ declarations: a
2043
+ });
2044
+ break;
2045
+ case K.AssignStatement: {
2046
+ let t = [], i = e.cursor();
2047
+ i.firstChild();
2048
+ do
2049
+ i.name === K.AssignOp && t.push(i.from);
2050
+ while (i.nextSibling());
2051
+ let o = t[t.length - 1];
2052
+ if (o === void 0) break;
2053
+ let s = e.cursor();
2054
+ s.firstChild();
2055
+ do
2056
+ s.from < o && Nr(s, {
2057
+ state: n,
2058
+ variableName: r,
2059
+ scopeId: u,
2060
+ declarations: a
2061
+ });
2062
+ while (s.nextSibling());
2063
+ break;
2064
+ }
2065
+ case K.ImportStatement: {
2066
+ let t = e.cursor();
2067
+ t.firstChild();
2068
+ let i = !1, o = null, s = () => {
2069
+ o?.matches && J(a, u, o.from), o = null;
2070
+ };
2071
+ do {
2072
+ if (t.name === q.Import) {
2073
+ i = !0;
2074
+ continue;
2075
+ }
2076
+ if (i) {
2077
+ if (t.name === q.As) {
2078
+ o = null;
2079
+ continue;
2080
+ }
2081
+ t.name === K.VariableName ? (s(), o = {
2082
+ from: t.from,
2083
+ matches: n.doc.sliceString(t.from, t.to) === r
2084
+ }) : t.name === "," && s();
2085
+ }
2086
+ } while (t.nextSibling());
2087
+ s();
2088
+ break;
2089
+ }
2090
+ case K.TryStatement:
2091
+ case K.WithStatement: {
2092
+ let t = e.cursor();
2093
+ t.firstChild();
2094
+ let i = !1;
2095
+ do
2096
+ t.name === q.As ? i = !0 : i && t.name === K.VariableName && n.doc.sliceString(t.from, t.to) === r && (J(a, u, t.from), i = !1);
2097
+ while (t.nextSibling());
2098
+ break;
2099
+ }
2100
+ }
2101
+ Mr(o, (e) => {
2102
+ Ir(e, {
2103
+ state: n,
2104
+ variableName: r,
2105
+ scopeStack: l,
2106
+ declarations: a
2107
+ });
2108
+ });
2109
+ }
2110
+ function Lr(e, t, n) {
2111
+ let r = oe(e), i = [];
2112
+ Ir(r, {
2113
+ state: e,
2114
+ variableName: t,
2115
+ scopeStack: [],
2116
+ declarations: i
2117
+ });
2118
+ let a = Math.max(0, Math.min(n, e.doc.length));
2119
+ for (let e of jr(r, a)) {
2120
+ let t = i.filter((t) => t.scopeId === e.id).filter((t) => !Or.has(e.type) || t.from <= a).toSorted((e, t) => e.from - t.from)[0];
2121
+ if (t) return t.from;
2122
+ }
2123
+ return null;
2124
+ }
2125
+ function Rr(e, t, n) {
2126
+ let { state: r } = e, i = n === void 0 ? Ar(r, t) : Lr(r, t, n);
2127
+ return i !== null && (kr(e, i), !0);
2128
+ }
2129
+ function zr(e, t) {
2130
+ return kr(e, e.state.doc.line(t).from), !0;
2131
+ }
2132
+ //#endregion
2133
+ //#region src/core/notebook/replica/connection.ts
2134
+ var Y = {
2135
+ NOT_STARTED: "NOT_STARTED",
2136
+ CONNECTING: "CONNECTING",
2137
+ OPEN: "OPEN",
2138
+ CLOSING: "CLOSING",
2139
+ CLOSED: "CLOSED"
2140
+ }, Br = {
2141
+ KERNEL_DISCONNECTED: "KERNEL_DISCONNECTED",
2142
+ KERNEL_STARTUP_ERROR: "KERNEL_STARTUP_ERROR"
2143
+ }, X = T({ state: Y.NOT_STARTED });
2144
+ C(null, (e, t) => t === null ? null : {
2145
+ phase: t.phase,
2146
+ logs: t.log_mode === "append" && e?.phase === t.phase ? e.logs + t.logs : t.logs
2147
+ });
2148
+ function Vr() {
2149
+ return b(X, (e) => e.state === Y.OPEN);
2150
+ }
2151
+ function Hr() {
2152
+ return de() ? Vr() : Promise.resolve();
2153
+ }
2154
+ T((e) => e(X).state === Y.CONNECTING), T((e) => e(X).state === Y.OPEN), T((e) => {
2155
+ let t = e(X);
2156
+ return t.state === Y.OPEN || t.state === Y.NOT_STARTED;
2157
+ }), T((e) => e(X).state === Y.CLOSED), T((e) => e(X).state === Y.NOT_STARTED);
2158
+ //#endregion
2159
+ //#region src/components/ui/checkbox.tsx
2160
+ var Ur = k.forwardRef((e, t) => {
2161
+ let r = (0, rt.c)(13), i, a;
2162
+ r[0] === e ? (i = r[1], a = r[2]) : ({className: i, ...a} = e, r[0] = e, r[1] = i, r[2] = a);
2163
+ let o;
2164
+ r[3] === i ? o = r[4] : (o = n("flex items-center justify-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground", i), r[3] = i, r[4] = o);
2165
+ let s;
2166
+ r[5] === Symbol.for("react.memo_cache_sentinel") ? (s = n("flex items-center justify-center text-current max-h-[14px] overflow-hidden"), r[5] = s) : s = r[5];
2167
+ let c;
2168
+ r[6] === a.checked ? c = r[7] : (c = /* @__PURE__ */ (0, A.jsx)(Ae, {
2169
+ className: s,
2170
+ children: a.checked === "indeterminate" ? /* @__PURE__ */ (0, A.jsx)(ve, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, A.jsx)(l, { className: "h-4 w-4" })
2171
+ }), r[6] = a.checked, r[7] = c);
2172
+ let u;
2173
+ return r[8] !== a || r[9] !== t || r[10] !== o || r[11] !== c ? (u = /* @__PURE__ */ (0, A.jsx)(Oe, {
2174
+ ref: t,
2175
+ className: o,
2176
+ ...a,
2177
+ children: c
2178
+ }), r[8] = a, r[9] = t, r[10] = o, r[11] = c, r[12] = u) : u = r[12], u;
2179
+ });
2180
+ Ur.displayName = Oe.displayName;
2181
+ //#endregion
2182
+ //#region src/core/cells/scrollCellIntoView.ts
2183
+ function Wr({ cellId: e, cell: n, isCodeHidden: r, codeFocus: i, variableName: a }) {
2184
+ if (!n) return;
2185
+ let o = document.getElementById(R.create(e));
2186
+ if (!o) {
2187
+ t.warn("scrollCellIntoView: element not found");
2188
+ return;
2189
+ }
2190
+ if (Bn()) {
2191
+ Vn(o);
2192
+ return;
2193
+ }
2194
+ if (r) Vn(o);
2195
+ else {
2196
+ ut.promote(e);
2197
+ let r = n.current?.editorView;
2198
+ if (!r) {
2199
+ t.warn("scrollCellIntoView: editor not found", e);
2200
+ return;
2201
+ }
2202
+ if (r.hasFocus || !document.hasFocus()) return;
2203
+ if (Hn(() => (r.focus(), r.hasFocus), {
2204
+ retries: 5,
2205
+ delay: 20
2206
+ }), i === "top") r.dispatch({ selection: {
2207
+ anchor: 0,
2208
+ head: 0
2209
+ } });
2210
+ else if (i === "bottom") {
2211
+ let e = r.state.doc.line(r.state.doc.lines);
2212
+ r.dispatch({ selection: {
2213
+ anchor: e.from,
2214
+ head: e.from
2215
+ } });
2216
+ } else a && Rr(r, a);
2217
+ }
2218
+ o.scrollIntoView({
2219
+ behavior: "smooth",
2220
+ block: "nearest"
2221
+ });
2222
+ }
2223
+ function Gr() {
2224
+ let e = document.getElementById("App");
2225
+ e?.scrollTo({
2226
+ top: e.scrollHeight,
2227
+ behavior: "smooth"
2228
+ });
2229
+ }
2230
+ function Kr() {
2231
+ document.getElementById("App")?.scrollTo({
2232
+ top: 0,
2233
+ behavior: "smooth"
2234
+ });
2235
+ }
2236
+ function qr(e) {
2237
+ let t = document.getElementById(R.create(e));
2238
+ return t?.scrollIntoView({
2239
+ behavior: "smooth",
2240
+ block: "center"
2241
+ }), t;
2242
+ }
2243
+ //#endregion
2244
+ //#region src/core/cells/cells.ts
2245
+ function Jr(e) {
2246
+ let t = {
2247
+ column: 0,
2248
+ hide_code: !1,
2249
+ disabled: !1,
2250
+ expand_output: !1
2251
+ };
2252
+ return {
2253
+ ...e,
2254
+ cellData: {
2255
+ [L]: mn({
2256
+ id: L,
2257
+ config: t
2258
+ }),
2259
+ ...e.cellData
2260
+ },
2261
+ cellRuntime: {
2262
+ [L]: gn(),
2263
+ ...e.cellRuntime
2264
+ },
2265
+ cellHandles: {
2266
+ [L]: (0, k.createRef)(),
2267
+ ...e.cellHandles
2268
+ }
2269
+ };
2270
+ }
2271
+ function Yr() {
2272
+ return Jr({
2273
+ cellIds: [],
2274
+ cellData: {},
2275
+ cellRuntime: {},
2276
+ cellHandles: {},
2277
+ history: [],
2278
+ scrollKey: null,
2279
+ cellLogs: []
2280
+ });
2281
+ }
2282
+ var { reducer: Xr, createActions: Zr, useActions: Qr, valueAtom: Z } = ae(Yr, {
2283
+ codeFormatted: (e, t) => {
2284
+ let { cellId: n, before: r, after: i } = t;
2285
+ return e.cellData[n] ? $r({
2286
+ state: e,
2287
+ cellId: n,
2288
+ cellReducer: (e) => {
2289
+ let t = V(e.lastCodeRun, r) ? e.lastCodeRun : i;
2290
+ return {
2291
+ ...e,
2292
+ lastCodeRun: t,
2293
+ edited: V(t, e.code)
2294
+ };
2295
+ }
2296
+ }) : e;
2297
+ },
2298
+ prepareForRun: (e, t) => $r({
2299
+ state: Q({
2300
+ state: e,
2301
+ cellId: t.cellId,
2302
+ cellReducer: (e) => ({
2303
+ ...e,
2304
+ debuggerActive: !1
2305
+ })
2306
+ }),
2307
+ cellId: t.cellId,
2308
+ cellReducer: (e) => ({
2309
+ ...e,
2310
+ edited: !1,
2311
+ lastCodeRun: e.code.trim()
2312
+ })
2313
+ }),
2314
+ handleCellMessage: (e, t) => {
2315
+ let n = t.cell_id, r = Q({
2316
+ state: e,
2317
+ cellId: n,
2318
+ cellReducer: (e) => Nt(e, t)
2319
+ });
2320
+ return t.status === "queued" && (r = $r({
2321
+ state: r,
2322
+ cellId: n,
2323
+ cellReducer: (e) => ({
2324
+ ...e,
2325
+ lastCodeRun: e.code.trim(),
2326
+ edited: !1
2327
+ })
2328
+ })), {
2329
+ ...r,
2330
+ cellLogs: [...r.cellLogs, ...In(t)]
2331
+ };
2332
+ },
2333
+ addLogs: (e, t) => ({
2334
+ ...e,
2335
+ cellLogs: [...e.cellLogs, ...t.logs]
2336
+ }),
2337
+ reconcileDocument: (e, t) => {
2338
+ let n = vn(e, t);
2339
+ for (let t of e.cellIds) t in n.cellData || mi(t);
2340
+ return n;
2341
+ },
2342
+ setStdinResponse: (e, n) => {
2343
+ let { cellId: r, response: i, outputIndex: a } = n;
2344
+ return Q({
2345
+ state: e,
2346
+ cellId: r,
2347
+ cellReducer: (e) => {
2348
+ let n = [...e.consoleOutputs], r = n[a];
2349
+ return r == null || r.channel !== "stdin" ? (t.warn("Expected stdin output"), e) : (n[a] = {
2350
+ channel: "stdin",
2351
+ mimetype: r.mimetype,
2352
+ data: r.data,
2353
+ timestamp: r.timestamp,
2354
+ id: r.id,
2355
+ response: r.mimetype === "text/password" ? "" : i
2356
+ }, {
2357
+ ...e,
2358
+ interrupted: !1,
2359
+ consoleOutputs: n
2360
+ });
2361
+ }
2362
+ });
2363
+ },
2364
+ setLastRun: (e, t) => {
2365
+ let n = { ...e.cellData };
2366
+ for (let r of e.cellIds) {
2367
+ let i = e.cellData[r], a = t.lastCodeRun[r] ?? null;
2368
+ n[r] = {
2369
+ ...i,
2370
+ lastCodeRun: a,
2371
+ edited: a !== null && V(a, i.code)
2372
+ };
2373
+ }
2374
+ return {
2375
+ ...e,
2376
+ cellData: n
2377
+ };
2378
+ },
2379
+ resetCellRuntimes: (e) => {
2380
+ let t = me(), n = { ...e.cellRuntime };
2381
+ for (let r of [...e.cellIds, L]) {
2382
+ let i = e.cellRuntime[r];
2383
+ n[r] = t && i !== void 0 && (i.output != null || i.consoleOutputs.length > 0) ? i : gn();
2384
+ }
2385
+ return {
2386
+ ...e,
2387
+ cellRuntime: n
2388
+ };
2389
+ },
2390
+ scrollToTarget: (e) => {
2391
+ let t = e.scrollKey;
2392
+ if (t === null) return e;
2393
+ let n = t;
2394
+ return Wr({
2395
+ cellId: n,
2396
+ cell: e.cellHandles[n],
2397
+ isCodeHidden: xn(e.cellData[n]?.config.hide_code, w.get(H), n),
2398
+ codeFocus: void 0,
2399
+ variableName: void 0
2400
+ }), {
2401
+ ...e,
2402
+ scrollKey: null
2403
+ };
2404
+ },
2405
+ foldAll: (e) => (at(Object.values(e.cellHandles).map((e) => e.current?.editorView)), e),
2406
+ unfoldAll: (e) => (ot(Object.values(e.cellHandles).map((e) => e.current?.editorView)), e),
2407
+ clearLogs: (e) => ({
2408
+ ...e,
2409
+ cellLogs: []
2410
+ }),
2411
+ clearCellOutput: (e, t) => {
2412
+ let { cellId: n } = t;
2413
+ return Q({
2414
+ state: e,
2415
+ cellId: n,
2416
+ cellReducer: (e) => ({
2417
+ ...e,
2418
+ output: null,
2419
+ consoleOutputs: []
2420
+ })
2421
+ });
2422
+ },
2423
+ clearCellConsoleOutput: (e, t) => {
2424
+ let { cellId: n } = t;
2425
+ return Q({
2426
+ state: e,
2427
+ cellId: n,
2428
+ cellReducer: (e) => ({
2429
+ ...e,
2430
+ consoleOutputs: e.consoleOutputs.filter((e) => e.channel === "stdin" && e.response == null)
2431
+ })
2432
+ });
2433
+ },
2434
+ clearAllCellOutputs: (e) => {
2435
+ let t = { ...e.cellRuntime };
2436
+ for (let n of e.cellIds) t[n] = {
2437
+ ...t[n],
2438
+ output: null,
2439
+ consoleOutputs: []
2440
+ };
2441
+ return {
2442
+ ...e,
2443
+ cellRuntime: t
2444
+ };
2445
+ }
2446
+ });
2447
+ function Q({ state: e, cellId: n, cellReducer: r }) {
2448
+ return n in e.cellRuntime ? {
2449
+ ...e,
2450
+ cellRuntime: {
2451
+ ...e.cellRuntime,
2452
+ [n]: r(e.cellRuntime[n])
2453
+ }
2454
+ } : (t.warn(`Cell ${n} not found in state`), e);
2455
+ }
2456
+ function $r({ state: e, cellId: n, cellReducer: r }) {
2457
+ return n in e.cellData ? {
2458
+ ...e,
2459
+ cellData: {
2460
+ ...e.cellData,
2461
+ [n]: r(e.cellData[n])
2462
+ }
2463
+ } : (t.warn(`Cell ${n} not found in state`), e);
2464
+ }
2465
+ var ei = Zr((e) => {
2466
+ w.set(Z, (t) => Xr(t, e));
2467
+ }).addLogs, $ = T((e) => e(Z).cellIds);
2468
+ T((e) => e($).length === 1), T((e) => Gn(e(Z)).length > 0), T((e) => Kn(e(Z)).length > 0), T((e) => qn(e(Z))), T((e) => Jn(e(Z))), T((e) => Un(e(Z), e(N)));
2469
+ var ti = T((e) => {
2470
+ let { cellIds: t, cellRuntime: n, cellData: r } = e(Z);
2471
+ return t.map((e) => {
2472
+ let t = n[e], { name: i } = r[e];
2473
+ if (F(t.output?.mimetype)) {
2474
+ D(Array.isArray(t.output.data), "Expected array data");
2475
+ let n = t.output.data.filter((e) => !e.type.includes("ancestor"));
2476
+ if (n.length > 0) return {
2477
+ output: {
2478
+ ...t.output,
2479
+ data: n
2480
+ },
2481
+ cellId: e,
2482
+ cellName: i
2483
+ };
2484
+ }
2485
+ return null;
2486
+ }).filter(Boolean);
2487
+ }), ni = y(T((e) => {
2488
+ let t = {};
2489
+ for (let [n, r] of O.entries(e(Z).cellRuntime)) r.outline !== null && r.outline.items.length > 0 && (t[n] = r.outline);
2490
+ return t;
2491
+ })), ri = T((e) => {
2492
+ let t = e($), n = e(ui);
2493
+ return _t(t.map((e) => n[e].outline));
2494
+ });
2495
+ T((e) => e(ti).length);
2496
+ var ii = y(T((e) => {
2497
+ let { cellIds: t, cellData: n } = e(Z);
2498
+ return O.fromEntries(t.map((e) => [e, n[e]?.name]));
2499
+ }));
2500
+ T((e) => e(Z).scrollKey);
2501
+ var ai = () => E($), oi = () => E(ii), si = () => w.get(Z), ci = () => w.get(Z).cellIds, li = () => {
2502
+ let { cellIds: e, cellData: t } = w.get(Z);
2503
+ return e.map((e) => t[e]?.name).filter(Boolean);
2504
+ };
2505
+ ie(v(Z, (e) => e.cellIds.map((t) => e.cellData[t])));
2506
+ var ui = T((e) => e(Z).cellRuntime);
2507
+ T((e) => e(Z).cellIds.length > 0);
2508
+ var di = te((e) => T((t) => t(Z).cellData[e])), fi = te((e) => T((t) => t(Z).cellRuntime[e])), pi = te((e) => T((t) => t(Z).cellHandles[e]));
2509
+ function mi(e) {
2510
+ di.remove(e), fi.remove(e), pi.remove(e), et(w, [e]);
2511
+ }
2512
+ var hi = (e) => {
2513
+ let { cellHandles: t } = w.get(Z);
2514
+ return t[e].current?.editorView;
2515
+ }, gi = (e) => (ut.promote(e), hi(e));
2516
+ function _i() {
2517
+ return Qr();
2518
+ }
2519
+ //#endregion
2520
+ //#region src/core/errors/error-entries.ts
2521
+ function vi(e) {
2522
+ if (xt(e.mimetype)) {
2523
+ if (!Array.isArray(e.data)) return null;
2524
+ let t = e.data.filter((e) => !e.type.includes("ancestor"));
2525
+ return t.length === 0 ? null : { errorData: t };
2526
+ }
2527
+ return P(e.mimetype) ? typeof e.data != "string" || e.data.length === 0 ? null : {
2528
+ errorData: [],
2529
+ tracebackHtml: e.data
2530
+ } : null;
2531
+ }
2532
+ function yi(e) {
2533
+ return e.some((e) => "traceback" in e && e.traceback);
2534
+ }
2535
+ function bi(e) {
2536
+ let t = e?.find((e) => P(e.mimetype));
2537
+ if (!(!t || typeof t.data != "string" || t.data.length === 0)) return t.data;
2538
+ }
2539
+ function xi(e, t) {
2540
+ if (e.tracebackHtml) return e.tracebackHtml;
2541
+ if (!yi(e.errorData)) return bi(t);
2542
+ }
2543
+ function Si(e) {
2544
+ let { cellIds: t, cellRuntime: n, cellData: r } = e.get(Z), i = [];
2545
+ for (let [e, a] of t.entries()) {
2546
+ let t = n[a], o = t.output;
2547
+ if (!o || !F(o.mimetype)) continue;
2548
+ let s = vi(o);
2549
+ if (!s) continue;
2550
+ let c = fn(r[a].name, e), l = r[a].lastCodeRun ?? r[a].code;
2551
+ i.push({
2552
+ cellId: a,
2553
+ cellName: c,
2554
+ cellCode: l,
2555
+ errorData: s.errorData,
2556
+ tracebackHtml: xi(s, t.consoleOutputs)
2557
+ });
2558
+ }
2559
+ return i;
2560
+ }
2561
+ function Ci(e) {
2562
+ return e.type === "setup-refs" ? "The setup cell cannot have references" : e.type === "cycle" ? "This cell is in a cycle" : e.type === "multiple-defs" ? `The variable '${e.name}' was defined by another cell` : e.type === "import-star" || e.type === "lazy-import" || e.type === "ancestor-stopped" || e.type === "ancestor-prevented" || e.type === "exception" || e.type === "strict-exception" ? e.msg : e.type === "interruption" ? "This cell was interrupted and needs to be re-run" : e.type === "syntax" || e.type === "unknown" || e.type === "sql-error" ? e.msg : e.type === "internal" ? e.msg || "An internal error occurred" : (u(e), "Unknown error");
2563
+ }
2564
+ function wi(e) {
2565
+ let t = Ci(e);
2566
+ return "traceback" in e && e.traceback && (t += `\n\nTraceback:\n${W(e.traceback)}`), t;
2567
+ }
2568
+ function Ti(e) {
2569
+ let t = [e.cellName];
2570
+ return e.tracebackHtml && t.push(W(e.tracebackHtml)), e.errorData.length > 0 && t.push(e.errorData.map(wi).join("\n\n")), t.join("\n\n");
2571
+ }
2572
+ //#endregion
2573
+ export { zn as $, Br as A, Gt as At, vr as B, nt as Bt, Gr as C, tn as Ct, X as D, L as Dt, Ur as E, R as Et, Sr as F, Ft, ir as G, dr as H, Be as Ht, Cr as I, yt as It, er as J, tr as K, G as L, gt as Lt, zr as M, zt as Mt, Er as N, It as Nt, Vr as O, Ut as Ot, wr as P, Pt, Qn as Q, xr as R, dt as Rt, Wr as S, nn as St, Kr as T, qt as Tt, fr as U, ve as Ut, yr as V, Qe as Vt, lr as W, _e as Wt, Wn as X, Xn as Y, Zn as Z, Xr as _, on as _t, ei as a, H as at, oi as b, en as bt, Zr as c, fn as ct, li as d, un as dt, Mn as et, ci as f, Jt as ft, ri as g, rn as gt, Z as h, B as ht, Si as i, Sn as it, Y as j, Rt as jt, Hr as k, Kt as kt, gi as l, dn as lt, Yr as m, an as mt, Ti as n, Tn as nt, di as o, bn as ot, si as p, z as pt, $n as q, wi as r, xn as rt, $ as s, yn as st, Ci as t, W as tt, hi as u, pn as ut, mi as v, cn as vt, qr as w, Wt as wt, _i as x, Yt as xt, ai as y, sn as yt, _r as z, N as zt };