@marimo-team/frontend 0.25.3-dev5 → 0.25.3-dev55

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 (343) hide show
  1. package/dist/assets/CellStatus-cD3S0wEA.js +1 -0
  2. package/dist/assets/{ConnectedDataExplorerComponent-t8fH_TNc.js → ConnectedDataExplorerComponent-D9UK8o9A.js} +1 -1
  3. package/dist/assets/{ErrorBoundary-B4n9EnHB.js → ErrorBoundary-DJhsFCsX.js} +2 -2
  4. package/dist/assets/JsonOutput-Pm6OCP3J.js +11 -0
  5. package/dist/assets/{LazyAnyLanguageCodeMirror-CKcCbG2G.js → LazyAnyLanguageCodeMirror-BPYE76jR.js} +2 -2
  6. package/dist/assets/MarimoErrorOutput-DlEjLCZ-.js +10 -0
  7. package/dist/assets/{RenderHTML-9bMgbYmo.js → RenderHTML-CfQ6i3QV.js} +1 -1
  8. package/dist/assets/RunButton-DvuvkgrG.js +1 -0
  9. package/dist/assets/{add-cell-with-ai-C_SruRWS.js → add-cell-with-ai-BhmuohAY.js} +7 -7
  10. package/dist/assets/{add-connection-dialog-CoE_PhuD.js → add-connection-dialog-D7EYSraq.js} +2 -2
  11. package/dist/assets/{agent-panel-0b3k4QzJ.js → agent-panel-GFhlWVub.js} +3 -3
  12. package/dist/assets/ai-model-dropdown-YT1HiXiK.js +13 -0
  13. package/dist/assets/{alert-dialog-BaPGzeOK.js → alert-dialog-C-sWmKva.js} +1 -1
  14. package/dist/assets/any-language-editor-DUMe1UCk.js +1 -0
  15. package/dist/assets/{app-config-button-iXdCWvfC.js → app-config-button-C_whRVO8.js} +1 -1
  16. package/dist/assets/arrays-0R2reF2y.js +1 -0
  17. package/dist/assets/{blob-iOBwGaP9.js → blob-e6VlOmQP.js} +1 -1
  18. package/dist/assets/{button-COI-NGrx.js → button-D8gVKwe-.js} +1 -1
  19. package/dist/assets/{cache-panel-DTY1dqvi.js → cache-panel-Byolv2ht.js} +1 -1
  20. package/dist/assets/{capabilities-BJvf-MD4.js → capabilities-Pq1YNPlK.js} +1 -1
  21. package/dist/assets/{cell-editor-CR-tZNnc.js → cell-editor-3cVIcyHK.js} +6 -6
  22. package/dist/assets/cell-link-DFqfW-Ym.js +1 -0
  23. package/dist/assets/{cells-rA_jsZCj.js → cells-T9_Y4Jlv.js} +56 -56
  24. package/dist/assets/{chat-display-luF7psRA.js → chat-display-BtaARI-N.js} +1 -1
  25. package/dist/assets/chat-panel-eT2lfQrB.js +4 -0
  26. package/dist/assets/chat-ui-nNFa2LdU.js +4 -0
  27. package/dist/assets/{circle-DXf-VWZG.js → circle-B6D_6D8w.js} +1 -1
  28. package/dist/assets/code-visibility-CV3S4xuf.js +1 -0
  29. package/dist/assets/coerce-DWjFeXOY.js +1 -0
  30. package/dist/assets/{column-preview-uosAAL4X.js → column-preview-C6uXRJry.js} +1 -1
  31. package/dist/assets/command-palette-OZPTmtR-.js +1 -0
  32. package/dist/assets/{common-lisZ0l6a.js → common-DeeLgjWQ.js} +1 -1
  33. package/dist/assets/{components-CP_UoFtT.js → components-DrU8dOzy.js} +1 -1
  34. package/dist/assets/{components-S7ZwOrvO.js → components-DyAF3_Nf.js} +1 -1
  35. package/dist/assets/{components-CXfO-F47.js → components-lDm0qi2t.js} +1 -1
  36. package/dist/assets/config-CjQ4WJnJ.js +1 -0
  37. package/dist/assets/config-DGX7JYor.js +1 -0
  38. package/dist/assets/config-DzdxZb17.js +1 -0
  39. package/dist/assets/{copy-D8O_CYCG.js → copy-KlhazlhB.js} +1 -1
  40. package/dist/assets/{copy-icon-BIiRXh_3.js → copy-icon-8-a5vovc.js} +1 -1
  41. package/dist/assets/{createReducer-DgRODTW6.js → createReducer-HKXUbqyz.js} +1 -1
  42. package/dist/assets/{datasource-V0-52XOh.js → datasource-gqFgG9Qd.js} +1 -1
  43. package/dist/assets/{dates-CfmdTL6B.js → dates-CQMwFko2.js} +1 -1
  44. package/dist/assets/{dependency-graph-panel-B0uP-_id.js → dependency-graph-panel-BFFxLgR6.js} +1 -1
  45. package/dist/assets/{dist-iaThVDkA.js → dist-jlhMTKo_.js} +1 -1
  46. package/dist/assets/{documentation-panel-DVl_ebWy.js → documentation-panel-BBpGbT-f.js} +1 -1
  47. package/dist/assets/{download-Bx55LMki.js → download-C8Gw-D0Y.js} +1 -1
  48. package/dist/assets/{dropdown-menu-C1rnl-0o.js → dropdown-menu-DS6umAnH.js} +1 -1
  49. package/dist/assets/{edit-page-CGyjT-CQ.js → edit-page-B0lN_Rib.js} +6 -6
  50. package/dist/assets/{error-banner-Cd69vvyX.js → error-banner-B5kzVf_0.js} +1 -1
  51. package/dist/assets/{error-entries-DOWpdGvI.js → error-entries-uyqOG5tg.js} +1 -1
  52. package/dist/assets/{error-panel-C-uxLOHF.js → error-panel-Cli5zPWi.js} +1 -1
  53. package/dist/assets/{errors-DCrsa1nH.js → errors-CNsgAw6m.js} +1 -1
  54. package/dist/assets/{es-Cqst59WX.js → es-N9SHpmG7.js} +1 -1
  55. package/dist/assets/{feedback-button-B99ThNJW.js → feedback-button-CvrwBGr7.js} +2 -2
  56. package/dist/assets/feedback-button-DknbRCN_.js +1 -0
  57. package/dist/assets/file-explorer-panel-BSU5ultY.js +1 -0
  58. package/dist/assets/{file-name-input-ChnBsDE_.js → file-name-input-CDrRlIiX.js} +1 -1
  59. package/dist/assets/{floating-outline-MYqQW4Vp.js → floating-outline-GQD9km0W.js} +1 -1
  60. package/dist/assets/{formats-yZ06h1Pl.js → formats-zylfwejq.js} +1 -1
  61. package/dist/assets/{formatting-BqrP-n49.js → formatting-uom1es4b.js} +1 -1
  62. package/dist/assets/{fullscreen-B9tHcfpV.js → fullscreen-BWTs8pYZ.js} +1 -1
  63. package/dist/assets/{gallery-page-DSL0J4md.js → gallery-page-CxmV1JLF.js} +1 -1
  64. package/dist/assets/{ganttDiagram-EL5Y4UJY-2n7Ig5Jm.js → ganttDiagram-EL5Y4UJY-CYqkCfFG.js} +1 -1
  65. package/dist/assets/{glide-data-editor-B1MWlKeM.js → glide-data-editor-B1kpoetH.js} +2 -2
  66. package/dist/assets/{glide-utils-CIrAxdjv.js → glide-utils-HFqhvWHI.js} +2 -2
  67. package/dist/assets/{home-page-B1M3X9Yf.js → home-page-KnJyha6O.js} +3 -3
  68. package/dist/assets/{hooks-Bj0C0zrZ.js → hooks-w6zKs3CJ.js} +1 -1
  69. package/dist/assets/{html-to-image-DK9Zl1lU.js → html-to-image-D_0rd3_B.js} +1 -1
  70. package/dist/assets/index-Bu8_lPMx.js +30 -0
  71. package/dist/assets/index-evFWHKmM.css +2 -0
  72. package/dist/assets/{input-BoBxR50a.js → input-BZdRe7pb.js} +1 -1
  73. package/dist/assets/{kiosk-mode-BZECfg9k.js → kiosk-mode-BGmMSc7A.js} +1 -1
  74. package/dist/assets/layout-sYdHI-lW.js +9 -0
  75. package/dist/assets/linear-Bma8J3iM.js +1 -0
  76. package/dist/assets/links-CXcpNIM0.js +1 -0
  77. package/dist/assets/{logs-panel-y0XnfulJ.js → logs-panel-CdUc5vtA.js} +1 -1
  78. package/dist/assets/{markdown-renderer-Q5AhbRU3.js → markdown-renderer-pKc_bFac.js} +1 -1
  79. package/dist/assets/{menu-items-BrwnTgyK.js → menu-items-BgUyNUpu.js} +1 -1
  80. package/dist/assets/{mermaid-a3xYymTy.js → mermaid-B6mqMm5_.js} +2 -2
  81. package/dist/assets/{name-cell-input-BNOnF6-0.js → name-cell-input-csH3Cy54.js} +1 -1
  82. package/dist/assets/numbers-CsZVw3Dc.js +1 -0
  83. package/dist/assets/{objects-snlMn4yk.js → objects-rLPlQ3X_.js} +1 -1
  84. package/dist/assets/{once-Haz_uxEL.js → once-6KNTRW0u.js} +1 -1
  85. package/dist/assets/{outline-panel-Be7stWwv.js → outline-panel-DhsHYTuo.js} +1 -1
  86. package/dist/assets/packages-panel-lkNX6Oov.js +1 -0
  87. package/dist/assets/{panel-accordion-state-GeMEdCPw.js → panel-accordion-state-Bco6nsUI.js} +1 -1
  88. package/dist/assets/panels-B2UqDbHy.js +107 -0
  89. package/dist/assets/precisionRound-BxlUs8G4.js +1 -0
  90. package/dist/assets/process-output-B2-bT4cq.js +1 -0
  91. package/dist/assets/{quadrantDiagram-AXDQQJYC-yBhCDI7E.js → quadrantDiagram-AXDQQJYC-D9KH5Zge.js} +1 -1
  92. package/dist/assets/react-vega-BTNeboR2.js +189 -0
  93. package/dist/assets/{readonly-code-display-YULOXf4h.js → readonly-code-display-Dsp6vWPh.js} +1 -1
  94. package/dist/assets/{readonly-python-code-CadgXgRu.js → readonly-python-code-B81AjzXM.js} +1 -1
  95. package/dist/assets/{renderShortcut-BkVJQ_Zh.js → renderShortcut-H60uiHBp.js} +1 -1
  96. package/dist/assets/{reveal-component-B9FLjTg_.js → reveal-component-CrQRQhW4.js} +37 -37
  97. package/dist/assets/run-page-BGzpa3D9.js +1 -0
  98. package/dist/assets/{runs-BLp5jezv.js → runs-6lJxKV1w.js} +1 -1
  99. package/dist/assets/{runtime-details-state-DuChzsA6.js → runtime-details-state-CznIe40L.js} +1 -1
  100. package/dist/assets/{schemas-Dv42wLFq.js → schemas-ChRqMOTL.js} +1 -1
  101. package/dist/assets/{scratchpad-panel-DtB0A8xj.js → scratchpad-panel-ClLxdqdK.js} +1 -1
  102. package/dist/assets/{scroll-to-bottom-button-1FyowpWV.js → scroll-to-bottom-button-CIkON2WJ.js} +1 -1
  103. package/dist/assets/{secrets-panel-Bctbtkrp.js → secrets-panel-Dh3v7XPE.js} +1 -1
  104. package/dist/assets/{select-DTBn5eTb.js → select-3CVGlYrC.js} +1 -1
  105. package/dist/assets/{session-DqoWmb7X.js → session-B8Y-GJnS.js} +1 -1
  106. package/dist/assets/{session-panel-B6tA28BD.js → session-panel-C7-wmZhc.js} +1 -1
  107. package/dist/assets/{snippets-panel-CQ1dn3lA.js → snippets-panel-BARpOPyS.js} +1 -1
  108. package/dist/assets/{spec-BfSBcO5B.js → spec-uCpVvaAR.js} +1 -1
  109. package/dist/assets/{state-BUsmcyaT.js → state-BRYi026f.js} +3 -3
  110. package/dist/assets/{state-uwRvJLb8.js → state-BY4_P6ko.js} +1 -1
  111. package/dist/assets/{state-Bfh_2SLl.js → state-Bye6rCo4.js} +1 -1
  112. package/dist/assets/{state-BAJYRhmO.js → state-C0irhlOZ.js} +1 -1
  113. package/dist/assets/{state-DxQnC_1I.js → state-Ck7FMD5A.js} +1 -1
  114. package/dist/assets/{state-C3oDoyFe.js → state-DaWgt-rn.js} +1 -1
  115. package/dist/assets/{strings-B2vv-ENv.js → strings-C25fhMR_.js} +1 -1
  116. package/dist/assets/{swiper-component-a07domrZ.js → swiper-component-CRGRy5_O.js} +1 -1
  117. package/dist/assets/{switch-CTaiAjrz.js → switch-IoWE8PbW.js} +1 -1
  118. package/dist/assets/{tabs-BuQlZFbt.js → tabs-CY8E4r9U.js} +1 -1
  119. package/dist/assets/{terminal-Ck_vK-34.js → terminal-Bhcn_y1N.js} +1 -1
  120. package/dist/assets/{time-MgToa8VM.js → time-DswSXBDk.js} +1 -1
  121. package/dist/assets/{toast-BGzLGnvw.js → toast-Gzxi-le_.js} +1 -1
  122. package/dist/assets/tooltip-Brya4Ghn.js +61 -0
  123. package/dist/assets/{tooltip-C9TuY18o.js → tooltip-CkGm8X7m.js} +1 -1
  124. package/dist/assets/tracing-BW2ZVnXs.js +1 -0
  125. package/dist/assets/{tracing-panel-dgnr2fIN.js → tracing-panel-UKdh_YXC.js} +2 -2
  126. package/dist/assets/{tree-actions-DAd80MbP.js → tree-actions-Cb-nUK1F.js} +1 -1
  127. package/dist/assets/{use-restore-focus-BxEGwIbk.js → use-restore-focus-DdS7Tl0F.js} +1 -1
  128. package/dist/assets/{useAddCell-DGstJK0S.js → useAddCell-Bielffe0.js} +1 -1
  129. package/dist/assets/useAsyncData-DhhdOGGd.js +1 -0
  130. package/dist/assets/useBoolean-CMgj9hnq.js +1 -0
  131. package/dist/assets/{useCellActionButton-DY9RlJTb.js → useCellActionButton-Cu34Zs6x.js} +1 -1
  132. package/dist/assets/useDebounce-k9QTpQ9-.js +1 -0
  133. package/dist/assets/useDelayElapsed-BlsDT4TV.js +1 -0
  134. package/dist/assets/{useDeleteCell-DFBGlSQk.js → useDeleteCell-BV4VemCv.js} +1 -1
  135. package/dist/assets/{useDependencyPanelTab-DydxsE5d.js → useDependencyPanelTab-BEGqRiWi.js} +1 -1
  136. package/dist/assets/{useEventListener-D9cftcHj.js → useEventListener-CjDeLqFC.js} +1 -1
  137. package/dist/assets/{useIframeCapabilities-CwTkczVN.js → useIframeCapabilities-Czr9e4uG.js} +1 -1
  138. package/dist/assets/{useInstallPackage-iX1eufdl.js → useInstallPackage-C7neMPwh.js} +1 -1
  139. package/dist/assets/{useInterval--x3s1VpI.js → useInterval-DJdQmXnq.js} +1 -1
  140. package/dist/assets/{useNotebookActions-CupIPSlg.js → useNotebookActions-OLol05t9.js} +1 -1
  141. package/dist/assets/{useRunCells-BFjFX3hz.js → useRunCells-BFeZMi7f.js} +1 -1
  142. package/dist/assets/{useSplitCell-Tqv5pPtL.js → useSplitCell-DllkNFke.js} +1 -1
  143. package/dist/assets/useStateForKey-CGMJQT8x.js +1 -0
  144. package/dist/assets/{useTheme-COhSHkCj.js → useTheme-DLtPc-39.js} +1 -1
  145. package/dist/assets/{utils-CaQYvazl.js → utils-DfElfBpz.js} +1 -1
  146. package/dist/assets/vega-component-D7JFthDD.js +1 -0
  147. package/dist/assets/{vega-embed-container-DJPNkHPb.js → vega-embed-container-DtArSJz1.js} +1 -1
  148. package/dist/assets/vega-loader.browser-Bu25TKax.js +6 -0
  149. package/dist/assets/{write-secret-modal-DzKAInL2.js → write-secret-modal-7DzehGyr.js} +1 -1
  150. package/dist/assets/{xychartDiagram-S5SC5T6Z-KbGzG6-u.js → xychartDiagram-S5SC5T6Z-CeRnBS5e.js} +1 -1
  151. package/dist/index.html +76 -74
  152. package/package.json +4 -4
  153. package/src/__tests__/fixtures/{pair-preview.ts → pair-config.ts} +3 -2
  154. package/src/__tests__/host-imports.test.ts +1 -0
  155. package/src/__tests__/mount.test.ts +8 -8
  156. package/src/components/app-config/ai-config.tsx +6 -2
  157. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  158. package/src/components/chat/chat-panel.tsx +3 -7
  159. package/src/components/chat/chat-utils.ts +4 -8
  160. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  161. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  162. package/src/components/data-table/__tests__/export-actions.test.tsx +434 -6
  163. package/src/components/data-table/charts/charts.tsx +14 -19
  164. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  165. package/src/components/data-table/columns.tsx +2 -1
  166. package/src/components/data-table/context-menu.tsx +36 -20
  167. package/src/components/data-table/date-popover.tsx +6 -4
  168. package/src/components/data-table/export-actions.tsx +267 -163
  169. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +2 -2
  170. package/src/components/data-table/schemas.ts +14 -36
  171. package/src/components/editor/Output.tsx +5 -1
  172. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +111 -18
  173. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +80 -252
  174. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +210 -34
  175. package/src/components/editor/actions/pair-with-agent-commands.ts +42 -51
  176. package/src/components/editor/actions/pair-with-agent-modal.tsx +100 -37
  177. package/src/components/editor/ai/add-cell-with-ai.tsx +3 -3
  178. package/src/components/editor/cell/CreateCellButton.tsx +8 -10
  179. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  180. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +54 -0
  181. package/src/components/editor/cell/code/cell-editor.tsx +1 -1
  182. package/src/components/editor/cell/code/language-toggle.tsx +8 -7
  183. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  184. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +30 -1
  185. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  186. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +277 -78
  187. package/src/components/editor/chrome/wrapper/footer-items/attachment-status.tsx +196 -41
  188. package/src/components/editor/connections/components.tsx +1 -1
  189. package/src/components/editor/controls/__tests__/command-palette.test.tsx +53 -0
  190. package/src/components/editor/controls/command-palette.tsx +22 -10
  191. package/src/components/editor/dynamic-favicon.tsx +21 -40
  192. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +139 -36
  193. package/src/components/editor/errors/send-error-report-button.tsx +10 -7
  194. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  195. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  196. package/src/components/editor/file-tree/file-explorer.tsx +10 -5
  197. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  198. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  199. package/src/components/editor/output/MarimoTracebackOutput.tsx +28 -22
  200. package/src/components/editor/output/console/ConsoleOutput.tsx +8 -18
  201. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  202. package/src/components/icons/large-spinner.tsx +3 -14
  203. package/src/components/pages/home-page.tsx +4 -4
  204. package/src/components/slides/slide-cell-view.tsx +1 -1
  205. package/src/components/tracing/tracing.tsx +2 -2
  206. package/src/core/attachments/__tests__/toast.test.tsx +58 -0
  207. package/src/core/attachments/state.ts +5 -8
  208. package/src/core/attachments/toast.ts +15 -0
  209. package/src/core/cells/__tests__/error-report.test.ts +53 -3
  210. package/src/core/cells/__tests__/notebook-outline.test.ts +113 -0
  211. package/src/core/cells/__tests__/session.test.ts +18 -3
  212. package/src/core/cells/cells.ts +2 -1
  213. package/src/core/cells/error-report.ts +14 -6
  214. package/src/core/cells/pending-delete-service.ts +2 -6
  215. package/src/core/cells/session.ts +19 -1
  216. package/src/core/config/pair.ts +5 -3
  217. package/src/core/datasets/__tests__/data-source-discovery.test.ts +4 -4
  218. package/src/core/datasets/data-source-discovery.ts +4 -6
  219. package/src/core/edit-app.tsx +2 -2
  220. package/src/core/host/AGENTS.md +11 -2
  221. package/src/core/host/__tests__/attachments.test.ts +56 -0
  222. package/src/core/host/__tests__/document.test.ts +126 -0
  223. package/src/core/host/__tests__/events.test.ts +49 -0
  224. package/src/core/host/__tests__/fixtures.ts +41 -0
  225. package/src/core/host/__tests__/notebook-client.test.ts +496 -0
  226. package/src/core/host/connection.ts +81 -0
  227. package/src/core/host/events.ts +68 -0
  228. package/src/core/host/notebook-client.ts +316 -0
  229. package/src/core/host/resources/attachments.ts +19 -0
  230. package/src/core/host/resources/document.ts +101 -0
  231. package/src/core/hotkeys/actions.ts +2 -4
  232. package/src/core/islands/__tests__/bootstrap.test.ts +0 -26
  233. package/src/core/islands/bootstrap.ts +0 -1
  234. package/src/core/network/connection.ts +4 -2
  235. package/src/core/network/useConnectionNotice.ts +8 -2
  236. package/src/core/run-app.tsx +2 -2
  237. package/src/core/runtime/__tests__/runtime.test.ts +5 -12
  238. package/src/core/runtime/runtime.ts +5 -5
  239. package/src/core/static/files.ts +2 -0
  240. package/src/core/websocket/__tests__/{useMarimoKernelConnection.test.ts → connection-state.test.ts} +15 -17
  241. package/src/core/websocket/__tests__/{useWebSocket.test.ts → createConnectionTransport.test.ts} +1 -1
  242. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +149 -0
  243. package/src/core/websocket/__tests__/{useMarimoKernelConnection.hook.test.tsx → useNotebookSession.hook.test.tsx} +168 -253
  244. package/src/core/websocket/connection-state.ts +70 -0
  245. package/src/core/websocket/state.ts +7 -0
  246. package/src/core/websocket/transports/__tests__/sse.test.ts +18 -4
  247. package/src/core/websocket/transports/create.ts +31 -0
  248. package/src/core/websocket/transports/sse.ts +14 -2
  249. package/src/core/websocket/transports/transport.ts +12 -23
  250. package/src/core/websocket/types.ts +9 -39
  251. package/src/core/websocket/useNotebookClient.ts +78 -0
  252. package/src/core/websocket/{useMarimoKernelConnection.tsx → useNotebookSession.tsx} +53 -233
  253. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  254. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  255. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  256. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  257. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  258. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  259. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  260. package/src/hooks/useAsyncData.ts +3 -3
  261. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  262. package/src/hooks/useDebounce.ts +5 -8
  263. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  264. package/src/hooks/useDelayElapsed.ts +14 -10
  265. package/src/hooks/useElapsedTime.ts +3 -3
  266. package/src/hooks/useInputHistory.ts +4 -7
  267. package/src/hooks/useInternalStateWithSync.ts +6 -6
  268. package/src/hooks/useResizeObserver.ts +4 -7
  269. package/src/hooks/useScript.ts +67 -70
  270. package/src/hooks/useStateForKey.ts +93 -0
  271. package/src/mount.tsx +3 -3
  272. package/src/plugins/core/registerReactComponent.tsx +1 -1
  273. package/src/plugins/impl/DataTablePlugin.tsx +14 -15
  274. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  275. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  276. package/src/plugins/impl/FormPlugin.tsx +1 -1
  277. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  278. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +201 -1
  279. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  280. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  281. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +2 -0
  282. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  283. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  284. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  285. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  286. package/src/plugins/impl/chat/chat-ui.tsx +10 -9
  287. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  288. package/src/plugins/impl/data-editor/glide-data-editor.tsx +8 -5
  289. package/src/plugins/impl/data-editor/glide-utils.ts +3 -1
  290. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  291. package/src/plugins/impl/panel/PanelPlugin.tsx +15 -16
  292. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  293. package/src/plugins/impl/panel/utils.ts +17 -0
  294. package/src/plugins/impl/vega/make-selectable.ts +3 -6
  295. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  296. package/src/stories/editor.stories.tsx +24 -17
  297. package/src/utils/__tests__/arrays.test.ts +35 -0
  298. package/src/utils/__tests__/numbers.test.ts +48 -1
  299. package/src/utils/__tests__/objects.test.ts +21 -0
  300. package/src/utils/arrays.ts +10 -0
  301. package/src/utils/numbers.ts +28 -17
  302. package/src/utils/objects.ts +3 -7
  303. package/src/utils/once.ts +19 -19
  304. package/dist/assets/CellStatus-nZpuDkm7.js +0 -1
  305. package/dist/assets/JsonOutput-d-k8v_17.js +0 -11
  306. package/dist/assets/MarimoErrorOutput-CLYUxiKW.js +0 -10
  307. package/dist/assets/RunButton-CFQUNN5c.js +0 -1
  308. package/dist/assets/ai-model-dropdown-C6GHHEdR.js +0 -5
  309. package/dist/assets/any-language-editor-BLCAD3yx.js +0 -1
  310. package/dist/assets/arrays-BqUx5USx.js +0 -1
  311. package/dist/assets/cell-link-1CynTVGQ.js +0 -1
  312. package/dist/assets/chat-panel-DDDTnLvB.js +0 -4
  313. package/dist/assets/chat-ui-nV_m4Btr.js +0 -4
  314. package/dist/assets/code-visibility-B-_GvwR5.js +0 -1
  315. package/dist/assets/coerce-CpE6kUdX.js +0 -1
  316. package/dist/assets/command-palette-BZ13RKDJ.js +0 -1
  317. package/dist/assets/config-DX8Y2WbJ.js +0 -1
  318. package/dist/assets/config-FzDtjF1-.js +0 -1
  319. package/dist/assets/config-VPSq73n8.js +0 -1
  320. package/dist/assets/feedback-button-DlqZkJwz.js +0 -1
  321. package/dist/assets/file-explorer-panel-D3CphidS.js +0 -1
  322. package/dist/assets/index-CXIE-QEG.css +0 -2
  323. package/dist/assets/index-DnIgeCyQ.js +0 -29
  324. package/dist/assets/layout-DBuMeWh0.js +0 -9
  325. package/dist/assets/linear-0eij_aAG.js +0 -1
  326. package/dist/assets/links-DkkL9DVa.js +0 -1
  327. package/dist/assets/numbers-Mk3-CcoU.js +0 -1
  328. package/dist/assets/packages-panel-9Qs1npCZ.js +0 -1
  329. package/dist/assets/panels-B9x935By.js +0 -4
  330. package/dist/assets/precisionRound-Bq_nmf5u.js +0 -1
  331. package/dist/assets/process-output-DNFKMODr.js +0 -1
  332. package/dist/assets/react-vega-C3rYGtP6.js +0 -189
  333. package/dist/assets/run-page-CjdGaic3.js +0 -1
  334. package/dist/assets/tooltip-mT3CGest.js +0 -61
  335. package/dist/assets/tracing-BARlJ_Dk.js +0 -1
  336. package/dist/assets/useAsyncData-C7aJJz0Y.js +0 -1
  337. package/dist/assets/useBoolean-BDD6_xQQ.js +0 -1
  338. package/dist/assets/useDebounce-B_ccBZTp.js +0 -1
  339. package/dist/assets/vega-component-CnadTgoE.js +0 -1
  340. package/dist/assets/vega-loader.browser-CLRkNgm7.js +0 -6
  341. package/src/core/host/__tests__/protocol.test.ts +0 -214
  342. package/src/core/host/protocol.ts +0 -1943
  343. package/src/core/websocket/useWebSocket.tsx +0 -88
@@ -1,4 +1,4 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,t as n,u as r}from"./useEvent-Dfcbgjhg.js";import{t as i}from"./react-DVplv7_D.js";import{Bn as a,Qr as o,Ya as s,ao as c}from"./cells-rA_jsZCj.js";import{t as l}from"./compiler-runtime-BrajqUja.js";import{_ as u}from"./useEventListener-D9cftcHj.js";import{l as d,n as f,s as p,t as m,y as h}from"./session-DqoWmb7X.js";import{O as g}from"./config-DX8Y2WbJ.js";import{t as _}from"./ErrorBoundary-B4n9EnHB.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{o as b}from"./alert-dialog-BaPGzeOK.js";import{c as x}from"./dropdown-menu-C1rnl-0o.js";import{d as S}from"./select-DTBn5eTb.js";import{t as C}from"./tooltip-C9TuY18o.js";import{t as w}from"./button-COI-NGrx.js";import{t as T}from"./createLucideIcon-DfJ2oMlA.js";import{n as E}from"./paths-bkIFVj8h.js";import{i as D,n as O,r as k,t as A}from"./components-CXfO-F47.js";import{a as j}from"./useNumberFormatter-D7O_26UI.js";import{t as M}from"./chevron-right-eAtVhbNZ.js";import{o as N,s as P}from"./tree-actions-DAd80MbP.js";import{t as F}from"./circle-play-CYIb0qT6.js";import{t as I}from"./external-link-UrX9KO36.js";import{r as L,t as R}from"./file-icons-CdJgUy-I.js";import{b as z}from"./write-secret-modal-DzKAInL2.js";import{t as B}from"./spinner-DyNE-o8o.js";import{a as V,i as H,n as U,o as W,r as G,s as ee,t as te,u as ne}from"./file-name-input-ChnBsDE_.js";import{n as re,r as ie,t as ae}from"./app-config-button-iXdCWvfC.js";import{r as oe,rn as se}from"./input-BoBxR50a.js";import{t as K}from"./use-toast-Wu434mLr.js";import{r as q}from"./requests-lt0JK8Jt.js";import{t as ce}from"./I18nProvider-Cg2I_s1_.js";import{n as J,t as le}from"./useAsyncData-C7aJJz0Y.js";import{l as ue}from"./dates-CfmdTL6B.js";import{a as de}from"./errors-DCrsa1nH.js";import{t as fe}from"./error-banner-Cd69vvyX.js";import{t as pe}from"./icons-CiZ_8zS-.js";import{t as me}from"./useInterval--x3s1VpI.js";var he=T(`book-text`,[[`path`,{d:`M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20`,key:`k3hazp`}],[`path`,{d:`M8 11h8`,key:`vwpz6n`}],[`path`,{d:`M8 7h6`,key:`1f0q6e`}]]),Y=l(),X=e(i(),1),Z=X.createContext({runningNotebooks:new Map,setRunningNotebooks:u.NOOP}),Q=X.createContext({root:``,refreshWorkspace:u.NOOP}),ge=g(`marimo:home:include-markdown`,!1,o,{getOnInit:!0}),_e=g(`marimo:home:expanded-folders`,{},o,{getOnInit:!0}),$=y();function ve(e){return`${m()}-${encodeURIComponent(e)}`}var ye=()=>{let e=(0,Y.c)(58),[t,n]=(0,X.useState)(0),{getRecentFiles:r,getRunningNotebooks:i}=q(),a;e[0]===r?a=e[1]:(a=()=>r(),e[0]=r,e[1]=a);let o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],e[2]=o):o=e[2];let s=J(a,o),l,u;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>{n(Ae)},u={delayMs:1e4,whenVisible:!0},e[3]=l,e[4]=u):(l=e[3],u=e[4]),me(l,u);let d;e[5]===i?d=e[6]:(d=async()=>{let e=await i();return N.keyBy(e.files,je)},e[5]=i,e[6]=d);let f;e[7]===t?f=e[8]:(f=[t],e[7]=t,e[8]=f);let p=J(d,f),m,h,g,v,y,b,x,S,C,w,T,E,D;if(e[9]!==s||e[10]!==p){C=Symbol.for(`react.early_return_sentinel`);bb0:{let t=le(s,p);if(t.error)throw t.error;let n=t.data;if(!n){let t;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(B,{centered:!0,size:`xlarge`}),e[24]=t):t=e[24],C=t;break bb0}let[r,i]=n;v=r,g=X.Suspense,h=Z,x={runningNotebooks:i,setRunningNotebooks:p.setData};let a,o;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(O,{}),o=(0,$.jsx)(ae,{showAppConfig:!1}),e[25]=a,e[26]=o):(a=e[25],o=e[26]);let c=`This will shutdown the notebook server and terminate all running notebooks (${i.size}). You'll lose all data that's in memory.`;e[27]===c?S=e[28]:(S=(0,$.jsxs)(`div`,{className:`absolute top-3 right-5 flex gap-3 z-50`,children:[a,o,(0,$.jsx)(re,{description:c})]}),e[27]=c,e[28]=S),E=`flex flex-col gap-6 max-w-6xl container pt-5 pb-20 z-10`,e[29]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsx)(`img`,{src:`logo.png`,alt:`marimo logo`,className:`w-48 mb-2`}),y=(0,$.jsx)(ke,{}),b=(0,$.jsx)(k,{}),e[29]=y,e[30]=b,e[31]=D):(y=e[29],b=e[30],D=e[31]),m=Ee,e[32]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsx)(A,{Icon:F,children:`Running notebooks`}),e[32]=w):w=e[32],T=[...i.values()]}e[9]=s,e[10]=p,e[11]=m,e[12]=h,e[13]=g,e[14]=v,e[15]=y,e[16]=b,e[17]=x,e[18]=S,e[19]=C,e[20]=w,e[21]=T,e[22]=E,e[23]=D}else m=e[11],h=e[12],g=e[13],v=e[14],y=e[15],b=e[16],x=e[17],S=e[18],C=e[19],w=e[20],T=e[21],E=e[22],D=e[23];if(C!==Symbol.for(`react.early_return_sentinel`))return C;let j;e[33]!==m||e[34]!==w||e[35]!==T?(j=(0,$.jsx)(m,{header:w,files:T}),e[33]=m,e[34]=w,e[35]=T,e[36]=j):j=e[36];let M;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsx)(A,{Icon:c,children:`Recent notebooks`}),e[37]=M):M=e[37];let P;e[38]===v.files?P=e[39]:(P=(0,$.jsx)(Ee,{header:M,files:v.files}),e[38]=v.files,e[39]=P);let I;e[40]===s.refetch?I=e[41]:(I=(0,$.jsx)(_,{children:(0,$.jsx)(be,{onRefreshRecents:s.refetch})}),e[40]=s.refetch,e[41]=I);let L;e[42]!==y||e[43]!==b||e[44]!==j||e[45]!==P||e[46]!==I||e[47]!==E||e[48]!==D?(L=(0,$.jsxs)(`div`,{className:E,children:[D,y,b,j,P,I]}),e[42]=y,e[43]=b,e[44]=j,e[45]=P,e[46]=I,e[47]=E,e[48]=D,e[49]=L):L=e[49];let R;e[50]!==h||e[51]!==x||e[52]!==S||e[53]!==L?(R=(0,$.jsxs)(h,{value:x,children:[S,L]}),e[50]=h,e[51]=x,e[52]=S,e[53]=L,e[54]=R):R=e[54];let z;return e[55]!==g||e[56]!==R?(z=(0,$.jsx)(g,{children:R}),e[55]=g,e[56]=R,e[57]=z):z=e[57],z},be=e=>{let r=(0,Y.c)(54),{onRefreshRecents:i}=e,{getWorkspaceFiles:o}=q(),[c,l]=t(ge),[u,d]=(0,X.useState)(``),f;r[0]!==o||r[1]!==c?(f=()=>o({includeMarkdown:c}),r[0]=o,r[1]=c,r[2]=f):f=r[2];let p;r[3]===c?p=r[4]:(p=[c],r[3]=c,r[4]=p);let{isPending:m,data:h,error:g,isFetching:_,refetch:v}=J(f,p),y;r[5]!==i||r[6]!==v?(y=()=>{v(),i()},r[5]=i,r[6]=v,r[7]=y):y=r[7];let b=n(y);h?.root;let x=h?.root??``,C;r[8]!==b||r[9]!==x?(C={root:x,refreshWorkspace:b},r[8]=b,r[9]=x,r[10]=C):C=r[10];let T=C;if(m){let e;return r[11]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(B,{centered:!0,size:`xlarge`,className:`mt-6`}),r[11]=e):e=r[11],e}if(g){let e;r[12]===g?e=r[13]:(e=de(g),r[12]=g,r[13]=e);let t;return r[14]===e?t=r[15]:(t=(0,$.jsx)(fe,{kind:`danger`,className:`rounded p-4`,children:e}),r[14]=e,r[15]=t),t}let E;r[16]!==h.fileCount||r[17]!==h.hasMore?(E=h.hasMore&&(0,$.jsx)(D,{fileCount:h.fileCount}),r[16]=h.fileCount,r[17]=h.hasMore,r[18]=E):E=r[18];let O,k;r[19]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,$.jsx)(se,{size:13}),k=e=>d(e.target.value),r[19]=O,r[20]=k):(O=r[19],k=r[20]);let j;r[21]===u?j=r[22]:(j=(0,$.jsx)(oe,{id:`search`,value:u,icon:O,onChange:k,placeholder:`Search`,className:`mb-0 border-border`}),r[21]=u,r[22]=j);let M;r[23]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsx)(xe,{}),r[23]=M):M=r[23];let N;r[24]===l?N=r[25]:(N=e=>l(!!e),r[24]=l,r[25]=N);let P;r[26]!==c||r[27]!==N?(P=(0,$.jsx)(a,{"data-testid":`include-markdown-checkbox`,id:`include-markdown`,checked:c,onCheckedChange:N}),r[26]=c,r[27]=N,r[28]=P):P=r[28];let F;r[29]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,$.jsx)(S,{htmlFor:`include-markdown`,children:`Include markdown`}),r[29]=F):F=r[29];let I;r[30]!==P||r[31]!==j?(I=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[j,M,P,F]}),r[30]=P,r[31]=j,r[32]=I):I=r[32];let L;r[33]===v?L=r[34]:(L=()=>v(),r[33]=v,r[34]=L);let R;r[35]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,$.jsx)(s,{className:`w-4 h-4`}),r[35]=R):R=r[35];let z;r[36]===L?z=r[37]:(z=(0,$.jsx)(w,{variant:`text`,size:`icon`,className:`w-4 h-4 ml-1 p-0 opacity-70 hover:opacity-100`,onClick:L,"aria-label":`Refresh workspace`,children:R}),r[36]=L,r[37]=z);let V;r[38]===_?V=r[39]:(V=_&&(0,$.jsx)(B,{size:`small`}),r[38]=_,r[39]=V);let H;r[40]!==I||r[41]!==z||r[42]!==V?(H=(0,$.jsxs)(A,{Icon:he,control:I,children:[`Workspace`,z,V]}),r[40]=I,r[41]=z,r[42]=V,r[43]=H):H=r[43];let U;r[44]!==u||r[45]!==h.files?(U=(0,$.jsx)(`div`,{className:`flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background`,children:(0,$.jsx)(Se,{searchText:u,files:h.files})}),r[44]=u,r[45]=h.files,r[46]=U):U=r[46];let W;r[47]!==H||r[48]!==U||r[49]!==E?(W=(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[E,H,U]}),r[47]=H,r[48]=U,r[49]=E,r[50]=W):W=r[50];let G;return r[51]!==W||r[52]!==T?(G=(0,$.jsx)(Q,{value:T,children:W}),r[51]=W,r[52]=T,r[53]=G):G=r[53],G},xe=()=>{let e=(0,Y.c)(5),t=r(_e),n;e[0]===t?n=e[1]:(n=()=>{t({})},e[0]=t,e[1]=n);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(P,{className:`w-4 h-4 mr-1`}),e[2]=i):i=e[2];let a;return e[3]===n?a=e[4]:(a=(0,$.jsxs)(w,{variant:`text`,size:`sm`,className:`h-fit hidden sm:flex`,onClick:n,children:[i,`Collapse all`]}),e[3]=n,e[4]=a),a},Se=e=>{let r=(0,Y.c)(22),{files:i,searchText:a}=e,[o,s]=t(_e),c;r[0]===o?c=r[1]:(c=Object.keys(o),r[0]=o,r[1]=c);let l=c.length===0,u=(0,X.useRef)(void 0),{root:d,refreshWorkspace:f}=(0,X.use)(Q),p;r[2]===d?p=r[3]:(p={root:d},r[2]=d,r[3]=p);let{renameFile:m}=W(p),h,g;r[4]===l?(h=r[5],g=r[6]):(h=()=>{l&&u.current?.closeAll()},g=[l],r[4]=l,r[5]=h,r[6]=g),(0,X.useEffect)(h,g);let _;r[7]!==f||r[8]!==m?(_=async(e,t)=>{let n=u.current?.get(e);if(!n){K({title:`Failed`,description:`Node with id ${e} not found in the tree`});return}await m(n.data,t)&&f()},r[7]=f,r[8]=m,r[9]=_):_=r[9];let v=n(_);if(i.length===0){let e;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`div`,{className:`flex flex-col px-5 py-10 items-center justify-center`,children:(0,$.jsx)(`p`,{className:`text-center text-muted-foreground`,children:`No files in this workspace`})}),r[10]=e):e=r[10],e}let y;r[11]!==o||r[12]!==s?(y=async e=>{let t=o[e]??!1;s({...o,[e]:!t})},r[11]=o,r[12]=s,r[13]=y):y=r[13];let b;r[14]===v?b=r[15]:(b=async e=>{let{id:t,name:n}=e;await v(t,n)},r[14]=v,r[15]=b);let x;return r[16]!==i||r[17]!==o||r[18]!==a||r[19]!==y||r[20]!==b?(x=(0,$.jsx)(ne,{ref:u,width:`100%`,height:500,searchTerm:a,className:`h-full`,idAccessor:Me,data:i,openByDefault:!1,initialOpenState:o,onToggle:y,onRename:b,padding:5,rowHeight:35,indent:15,overscanCount:1e3,renderCursor:Ne,disableDrop:!0,disableDrag:!0,disableMultiSelection:!0,children:Ce}),r[16]=i,r[17]=o,r[18]=a,r[19]=y,r[20]=b,r[21]=x):x=r[21],x},Ce=e=>{let t=(0,Y.c)(18),{node:n,style:r}=e,i=n.data.isDirectory?`directory`:L(n.data.name),a=R[i],o;t[0]===a?o=t[1]:(o=(0,$.jsx)(a,{className:`w-5 h-5 shrink-0`,strokeWidth:1.5}),t[0]=a,t[1]=o);let s=o,{root:c}=(0,X.use)(Q),{runningNotebooks:l}=(0,X.use)(Z),u;t[2]!==s||t[3]!==n||t[4]!==c||t[5]!==l?(u=()=>{if(n.isEditing)return(0,$.jsxs)(`div`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,children:[s,(0,$.jsx)(te,{node:n})]});if(n.data.isDirectory)return(0,$.jsxs)(`span`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,children:[s,n.data.name]});let e=n.data.path.startsWith(c)&&E.isAbsolute(n.data.path)?E.rest(n.data.path,c):n.data.path,t=e.endsWith(`.md`)||e.endsWith(`.qmd`),r=l.has(e);return(0,$.jsxs)(`a`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,href:d(`?file=${encodeURIComponent(e)}`).toString(),target:ve(e),children:[s,(0,$.jsxs)(`span`,{className:`flex-1 overflow-hidden text-ellipsis`,children:[n.data.name,t&&(0,$.jsx)(pe,{className:`ml-2 inline opacity-80`})]}),(0,$.jsx)(we,{node:n,isRunning:r}),(0,$.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center shrink-0`,children:(0,$.jsx)(Oe,{filePath:e})}),(0,$.jsx)(I,{size:20,className:`group-hover:opacity-100 opacity-0 text-primary shrink-0`})]})},t[2]=s,t[3]=n,t[4]=c,t[5]=l,t[6]=u):u=t[6];let f=u,p;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(p=v(`flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group h-full`),t[7]=p):p=t[7];let m,h;t[8]===n?(m=t[9],h=t[10]):(m=e=>{e.stopPropagation(),n.data.isDirectory&&n.toggle()},h=(0,$.jsx)(Te,{node:n}),t[8]=n,t[9]=m,t[10]=h);let g;t[11]===f?g=t[12]:(g=f(),t[11]=f,t[12]=g);let _;return t[13]!==r||t[14]!==m||t[15]!==h||t[16]!==g?(_=(0,$.jsxs)(`div`,{style:r,className:p,onClick:m,children:[h,g]}),t[13]=r,t[14]=m,t[15]=h,t[16]=g,t[17]=_):_=t[17],_},we=e=>{let t=(0,Y.c)(19),{node:n,isRunning:r}=e,{root:i,refreshWorkspace:a}=(0,X.use)(Q),o;t[0]!==n||t[1]!==a||t[2]!==i?(o={node:n,root:i,onAfterChange:a},t[0]=n,t[1]=a,t[2]=i,t[3]=o):o=t[3];let{handleRename:s,handleDuplicate:c,handleDelete:l}=ee(o),u=r?`Stop the notebook's kernel before renaming or deleting.`:void 0,d;t[4]!==s||t[5]!==r||t[6]!==u?(d=(0,$.jsx)(V,{onSelect:s,disabled:r,title:u}),t[4]=s,t[5]=r,t[6]=u,t[7]=d):d=t[7];let f;t[8]===c?f=t[9]:(f=(0,$.jsx)(G,{onSelect:c}),t[8]=c,t[9]=f);let p;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(x,{}),t[10]=p):p=t[10];let m;t[11]!==l||t[12]!==r||t[13]!==u?(m=(0,$.jsx)(U,{onSelect:l,disabled:r,title:u}),t[11]=l,t[12]=r,t[13]=u,t[14]=m):m=t[14];let h;return t[15]!==d||t[16]!==f||t[17]!==m?(h=(0,$.jsxs)(H,{testId:`workspace-more-button`,buttonClassName:`w-8 h-8 p-0 shrink-0`,contentClassName:`print:hidden w-fit min-w-[140px]`,preventDefaultOnTrigger:!0,children:[d,f,p,m]}),t[15]=d,t[16]=f,t[17]=m,t[18]=h):h=t[18],h},Te=e=>{let t=(0,Y.c)(3),{node:n}=e;if(!n.data.isDirectory){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{className:`w-5 h-5 shrink-0`}),t[0]=e):e=t[0],e}let r;return t[1]===n.isOpen?r=t[2]:(r=n.isOpen?(0,$.jsx)(j,{className:`w-5 h-5 shrink-0`}):(0,$.jsx)(M,{className:`w-5 h-5 shrink-0`}),t[1]=n.isOpen,t[2]=r),r},Ee=e=>{let t=(0,Y.c)(7),{header:n,files:r}=e;if(r.length===0)return null;let i;t[0]===r?i=t[1]:(i=r.map(Pe),t[0]=r,t[1]=i);let a;t[2]===i?a=t[3]:(a=(0,$.jsx)(`div`,{className:`flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background`,children:i}),t[2]=i,t[3]=a);let o;return t[4]!==n||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[n,a]}),t[4]=n,t[5]=a,t[6]=o):o=t[6],o},De=e=>{let t=(0,Y.c)(41),{file:n}=e,{locale:r}=ce(),i;t[0]===n.path?i=t[1]:(i=f(n.path),t[0]=n.path,t[1]=i);let a=i,o,s,c,l;if(t[2]!==n.initializationId||t[3]!==n.path||t[4]!==a){let e=d(a?`?file=${encodeURIComponent(n.initializationId??n.path)}&session_id=${n.path}`:`?file=${encodeURIComponent(n.path)}`),r;t[9]===n.path?r=t[10]:(r=n.path.endsWith(`.md`),t[9]=n.path,t[10]=r),o=r,s=`py-1.5 px-4 hover:bg-(--blue-2) hover:text-primary transition-all duration-300 cursor-pointer group relative flex gap-4 items-center`,c=n.path,l=e.toString(),t[2]=n.initializationId,t[3]=n.path,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l}else o=t[5],s=t[6],c=t[7],l=t[8];let u=n.initializationId||n.path,p;t[11]===u?p=t[12]:(p=ve(u),t[11]=u,t[12]=p);let m;t[13]===o?m=t[14]:(m=o&&(0,$.jsx)(`span`,{className:`opacity-80`,children:(0,$.jsx)(pe,{})}),t[13]=o,t[14]=m);let h;t[15]!==n.name||t[16]!==m?(h=(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n.name,m]}),t[15]=n.name,t[16]=m,t[17]=h):h=t[17];let g;t[18]===n.path?g=t[19]:(g=(0,$.jsx)(`p`,{title:n.path,className:`text-sm text-muted-foreground overflow-hidden whitespace-nowrap text-ellipsis`,children:n.path}),t[18]=n.path,t[19]=g);let _;t[20]!==h||t[21]!==g?(_=(0,$.jsxs)(`div`,{className:`flex flex-col justify-between flex-1`,children:[h,g]}),t[20]=h,t[21]=g,t[22]=_):_=t[22];let v;t[23]===n.path?v=t[24]:(v=(0,$.jsx)(`div`,{children:(0,$.jsx)(Oe,{filePath:n.path})}),t[23]=n.path,t[24]=v);let y;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(I,{size:20,className:`group-hover:opacity-100 opacity-0 transition-all duration-300 text-primary`}),t[25]=y):y=t[25];let b;t[26]===v?b=t[27]:(b=(0,$.jsxs)(`div`,{className:`flex gap-3 items-center`,children:[v,y]}),t[26]=v,t[27]=b);let x;t[28]!==n.lastModified||t[29]!==r?(x=!!n.lastModified&&(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground opacity-80`,children:ue(n.lastModified*1e3,r)}),t[28]=n.lastModified,t[29]=r,t[30]=x):x=t[30];let S;t[31]!==b||t[32]!==x?(S=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 items-end`,children:[b,x]}),t[31]=b,t[32]=x,t[33]=S):S=t[33];let C;return t[34]!==_||t[35]!==S||t[36]!==s||t[37]!==c||t[38]!==l||t[39]!==p?(C=(0,$.jsxs)(`a`,{className:s,href:l,target:p,children:[_,S]},c),t[34]=_,t[35]=S,t[36]=s,t[37]=c,t[38]=l,t[39]=p,t[40]=C):C=t[40],C},Oe=e=>{let t=(0,Y.c)(10),{filePath:n}=e,{openConfirm:r,closeModal:i}=z(),{shutdownSession:a}=q(),{runningNotebooks:o,setRunningNotebooks:s}=(0,X.use)(Z);if(!o.has(n))return null;let c;t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==o||t[4]!==s||t[5]!==a?(c=e=>{e.stopPropagation(),e.preventDefault(),r({title:`Shutdown`,description:`This will terminate the Python kernel. You'll lose all data that's in memory.`,variant:`destructive`,confirmAction:(0,$.jsx)(b,{onClick:()=>{let e=o.get(n);h(e?.sessionId),a({sessionId:e.sessionId}).then(e=>{s(N.keyBy(e.files,Fe))}),i(),K({description:`Notebook has been shutdown.`})},"aria-label":`Confirm Shutdown`,children:`Shutdown`})})},t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=s,t[5]=a,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(ie,{size:14}),t[7]=l):l=t[7];let u;return t[8]===c?u=t[9]:(u=(0,$.jsx)(C,{content:`Shutdown`,children:(0,$.jsx)(w,{size:`icon`,variant:`outline`,className:`opacity-80 hover:opacity-100 hover:bg-accent text-destructive border-destructive hover:border-destructive hover:text-destructive bg-background hover:bg-(--red-1)`,onClick:c,children:l})}),t[8]=c,t[9]=u),u},ke=()=>{let e=(0,Y.c)(3),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=p(),e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Create a new notebook`}),e[1]=r):r=e[1];let i;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsxs)(`a`,{className:`relative rounded-lg p-6 group
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,t as n,u as r}from"./useEvent-Dfcbgjhg.js";import{t as i}from"./react-DVplv7_D.js";import{Bn as a,Qr as o,Ya as s,ao as c}from"./cells-T9_Y4Jlv.js";import{t as l}from"./compiler-runtime-BrajqUja.js";import{_ as u}from"./useEventListener-CjDeLqFC.js";import{l as d,n as f,s as p,t as m,y as h}from"./session-B8Y-GJnS.js";import{k as g}from"./config-DzdxZb17.js";import{t as _}from"./ErrorBoundary-DJhsFCsX.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{o as b}from"./alert-dialog-C-sWmKva.js";import{c as x}from"./dropdown-menu-DS6umAnH.js";import{d as S}from"./select-3CVGlYrC.js";import{t as C}from"./tooltip-CkGm8X7m.js";import{t as w}from"./button-D8gVKwe-.js";import{t as T}from"./createLucideIcon-DfJ2oMlA.js";import{n as E}from"./paths-bkIFVj8h.js";import{i as D,n as O,r as k,t as A}from"./components-lDm0qi2t.js";import{a as j}from"./useNumberFormatter-D7O_26UI.js";import{t as M}from"./chevron-right-eAtVhbNZ.js";import{o as N,s as P}from"./tree-actions-Cb-nUK1F.js";import{t as F}from"./circle-play-CYIb0qT6.js";import{t as I}from"./external-link-UrX9KO36.js";import{r as L,t as R}from"./file-icons-CdJgUy-I.js";import{b as z}from"./write-secret-modal-7DzehGyr.js";import{t as B}from"./spinner-DyNE-o8o.js";import{a as V,i as H,n as U,o as W,r as G,s as ee,t as te,u as ne}from"./file-name-input-CDrRlIiX.js";import{n as re,r as ie,t as ae}from"./app-config-button-C_whRVO8.js";import{r as oe,rn as se}from"./input-BZdRe7pb.js";import{t as K}from"./use-toast-Wu434mLr.js";import{r as q}from"./requests-lt0JK8Jt.js";import{t as ce}from"./I18nProvider-Cg2I_s1_.js";import{n as J,t as le}from"./useAsyncData-DhhdOGGd.js";import{l as ue}from"./dates-CQMwFko2.js";import{a as de}from"./errors-CNsgAw6m.js";import{t as fe}from"./error-banner-B5kzVf_0.js";import{t as pe}from"./icons-CiZ_8zS-.js";import{t as me}from"./useInterval-DJdQmXnq.js";var he=T(`book-text`,[[`path`,{d:`M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20`,key:`k3hazp`}],[`path`,{d:`M8 11h8`,key:`vwpz6n`}],[`path`,{d:`M8 7h6`,key:`1f0q6e`}]]),Y=l(),X=e(i(),1),Z=X.createContext({runningNotebooks:new Map,setRunningNotebooks:u.NOOP}),Q=X.createContext({root:``,refreshWorkspace:u.NOOP}),ge=g(`marimo:home:include-markdown`,!1,o,{getOnInit:!0}),_e=g(`marimo:home:expanded-folders`,{},o,{getOnInit:!0}),$=y();function ve(e){return`${m()}-${encodeURIComponent(e)}`}var ye=()=>{let e=(0,Y.c)(58),[t,n]=(0,X.useState)(0),{getRecentFiles:r,getRunningNotebooks:i}=q(),a;e[0]===r?a=e[1]:(a=()=>r(),e[0]=r,e[1]=a);let o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],e[2]=o):o=e[2];let s=J(a,o),l,u;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>{n(Ae)},u={delayMs:1e4,whenVisible:!0},e[3]=l,e[4]=u):(l=e[3],u=e[4]),me(l,u);let d;e[5]===i?d=e[6]:(d=async()=>{let e=await i();return N.keyBy(e.files,je)},e[5]=i,e[6]=d);let f;e[7]===t?f=e[8]:(f=[t],e[7]=t,e[8]=f);let p=J(d,f),m,h,g,v,y,b,x,S,C,w,T,E,D;if(e[9]!==s||e[10]!==p){C=Symbol.for(`react.early_return_sentinel`);bb0:{let t=le(s,p);if(t.error)throw t.error;let n=t.data;if(!n){let t;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(B,{centered:!0,size:`xlarge`}),e[24]=t):t=e[24],C=t;break bb0}let[r,i]=n;v=r,g=X.Suspense,h=Z,x={runningNotebooks:i,setRunningNotebooks:p.setData};let a,o;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(O,{}),o=(0,$.jsx)(ae,{showAppConfig:!1}),e[25]=a,e[26]=o):(a=e[25],o=e[26]);let c=`This will shutdown the notebook server and terminate all running notebooks (${i.size}). You'll lose all data that's in memory.`;e[27]===c?S=e[28]:(S=(0,$.jsxs)(`div`,{className:`absolute top-3 right-5 flex gap-3 z-50`,children:[a,o,(0,$.jsx)(re,{description:c})]}),e[27]=c,e[28]=S),E=`flex flex-col gap-6 max-w-6xl container pt-5 pb-20 z-10`,e[29]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsx)(`img`,{src:`logo.png`,alt:`marimo logo`,className:`w-48 mb-2`}),y=(0,$.jsx)(ke,{}),b=(0,$.jsx)(k,{}),e[29]=y,e[30]=b,e[31]=D):(y=e[29],b=e[30],D=e[31]),m=Ee,e[32]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsx)(A,{Icon:F,children:`Running notebooks`}),e[32]=w):w=e[32],T=[...i.values()]}e[9]=s,e[10]=p,e[11]=m,e[12]=h,e[13]=g,e[14]=v,e[15]=y,e[16]=b,e[17]=x,e[18]=S,e[19]=C,e[20]=w,e[21]=T,e[22]=E,e[23]=D}else m=e[11],h=e[12],g=e[13],v=e[14],y=e[15],b=e[16],x=e[17],S=e[18],C=e[19],w=e[20],T=e[21],E=e[22],D=e[23];if(C!==Symbol.for(`react.early_return_sentinel`))return C;let j;e[33]!==m||e[34]!==w||e[35]!==T?(j=(0,$.jsx)(m,{header:w,files:T}),e[33]=m,e[34]=w,e[35]=T,e[36]=j):j=e[36];let M;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsx)(A,{Icon:c,children:`Recent notebooks`}),e[37]=M):M=e[37];let P;e[38]===v.files?P=e[39]:(P=(0,$.jsx)(Ee,{header:M,files:v.files}),e[38]=v.files,e[39]=P);let I;e[40]===s.refetch?I=e[41]:(I=(0,$.jsx)(_,{children:(0,$.jsx)(be,{onRefreshRecents:s.refetch})}),e[40]=s.refetch,e[41]=I);let L;e[42]!==y||e[43]!==b||e[44]!==j||e[45]!==P||e[46]!==I||e[47]!==E||e[48]!==D?(L=(0,$.jsxs)(`div`,{className:E,children:[D,y,b,j,P,I]}),e[42]=y,e[43]=b,e[44]=j,e[45]=P,e[46]=I,e[47]=E,e[48]=D,e[49]=L):L=e[49];let R;e[50]!==h||e[51]!==x||e[52]!==S||e[53]!==L?(R=(0,$.jsxs)(h,{value:x,children:[S,L]}),e[50]=h,e[51]=x,e[52]=S,e[53]=L,e[54]=R):R=e[54];let z;return e[55]!==g||e[56]!==R?(z=(0,$.jsx)(g,{children:R}),e[55]=g,e[56]=R,e[57]=z):z=e[57],z},be=e=>{let r=(0,Y.c)(54),{onRefreshRecents:i}=e,{getWorkspaceFiles:o}=q(),[c,l]=t(ge),[u,d]=(0,X.useState)(``),f;r[0]!==o||r[1]!==c?(f=()=>o({includeMarkdown:c}),r[0]=o,r[1]=c,r[2]=f):f=r[2];let p;r[3]===c?p=r[4]:(p=[c],r[3]=c,r[4]=p);let{isPending:m,data:h,error:g,isFetching:_,refetch:v}=J(f,p),y;r[5]!==i||r[6]!==v?(y=()=>{v(),i()},r[5]=i,r[6]=v,r[7]=y):y=r[7];let b=n(y);h?.root;let x=h?.root??``,C;r[8]!==b||r[9]!==x?(C={root:x,refreshWorkspace:b},r[8]=b,r[9]=x,r[10]=C):C=r[10];let T=C;if(m){let e;return r[11]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(B,{centered:!0,size:`xlarge`,className:`mt-6`}),r[11]=e):e=r[11],e}if(g){let e;r[12]===g?e=r[13]:(e=de(g),r[12]=g,r[13]=e);let t;return r[14]===e?t=r[15]:(t=(0,$.jsx)(fe,{kind:`danger`,className:`rounded p-4`,children:e}),r[14]=e,r[15]=t),t}let E;r[16]!==h.fileCount||r[17]!==h.hasMore?(E=h.hasMore&&(0,$.jsx)(D,{fileCount:h.fileCount}),r[16]=h.fileCount,r[17]=h.hasMore,r[18]=E):E=r[18];let O,k;r[19]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,$.jsx)(se,{size:13}),k=e=>d(e.target.value),r[19]=O,r[20]=k):(O=r[19],k=r[20]);let j;r[21]===u?j=r[22]:(j=(0,$.jsx)(oe,{id:`search`,value:u,icon:O,onChange:k,placeholder:`Search`,className:`mb-0 border-border`}),r[21]=u,r[22]=j);let M;r[23]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsx)(xe,{}),r[23]=M):M=r[23];let N;r[24]===l?N=r[25]:(N=e=>l(!!e),r[24]=l,r[25]=N);let P;r[26]!==c||r[27]!==N?(P=(0,$.jsx)(a,{"data-testid":`include-markdown-checkbox`,id:`include-markdown`,checked:c,onCheckedChange:N}),r[26]=c,r[27]=N,r[28]=P):P=r[28];let F;r[29]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,$.jsx)(S,{htmlFor:`include-markdown`,children:`Include markdown`}),r[29]=F):F=r[29];let I;r[30]!==P||r[31]!==j?(I=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[j,M,P,F]}),r[30]=P,r[31]=j,r[32]=I):I=r[32];let L;r[33]===v?L=r[34]:(L=()=>v(),r[33]=v,r[34]=L);let R;r[35]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,$.jsx)(s,{className:`w-4 h-4`}),r[35]=R):R=r[35];let z;r[36]===L?z=r[37]:(z=(0,$.jsx)(w,{variant:`text`,size:`icon`,className:`w-4 h-4 ml-1 p-0 opacity-70 hover:opacity-100`,onClick:L,"aria-label":`Refresh workspace`,children:R}),r[36]=L,r[37]=z);let V;r[38]===_?V=r[39]:(V=_&&(0,$.jsx)(B,{size:`small`}),r[38]=_,r[39]=V);let H;r[40]!==I||r[41]!==z||r[42]!==V?(H=(0,$.jsxs)(A,{Icon:he,control:I,children:[`Workspace`,z,V]}),r[40]=I,r[41]=z,r[42]=V,r[43]=H):H=r[43];let U;r[44]!==u||r[45]!==h.files?(U=(0,$.jsx)(`div`,{className:`flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background`,children:(0,$.jsx)(Se,{searchText:u,files:h.files})}),r[44]=u,r[45]=h.files,r[46]=U):U=r[46];let W;r[47]!==H||r[48]!==U||r[49]!==E?(W=(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[E,H,U]}),r[47]=H,r[48]=U,r[49]=E,r[50]=W):W=r[50];let G;return r[51]!==W||r[52]!==T?(G=(0,$.jsx)(Q,{value:T,children:W}),r[51]=W,r[52]=T,r[53]=G):G=r[53],G},xe=()=>{let e=(0,Y.c)(5),t=r(_e),n;e[0]===t?n=e[1]:(n=()=>{t({})},e[0]=t,e[1]=n);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(P,{className:`w-4 h-4 mr-1`}),e[2]=i):i=e[2];let a;return e[3]===n?a=e[4]:(a=(0,$.jsxs)(w,{variant:`text`,size:`sm`,className:`h-fit hidden sm:flex`,onClick:n,children:[i,`Collapse all`]}),e[3]=n,e[4]=a),a},Se=e=>{let r=(0,Y.c)(22),{files:i,searchText:a}=e,[o,s]=t(_e),c;r[0]===o?c=r[1]:(c=Object.keys(o),r[0]=o,r[1]=c);let l=c.length===0,u=(0,X.useRef)(void 0),{root:d,refreshWorkspace:f}=(0,X.use)(Q),p;r[2]===d?p=r[3]:(p={root:d},r[2]=d,r[3]=p);let{renameFile:m}=W(p),h,g;r[4]===l?(h=r[5],g=r[6]):(h=()=>{l&&u.current?.closeAll()},g=[l],r[4]=l,r[5]=h,r[6]=g),(0,X.useEffect)(h,g);let _;r[7]!==f||r[8]!==m?(_=async(e,t)=>{let n=u.current?.get(e);if(!n){K({title:`Failed`,description:`Node with id ${e} not found in the tree`});return}await m(n.data,t)&&f()},r[7]=f,r[8]=m,r[9]=_):_=r[9];let v=n(_);if(i.length===0){let e;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`div`,{className:`flex flex-col px-5 py-10 items-center justify-center`,children:(0,$.jsx)(`p`,{className:`text-center text-muted-foreground`,children:`No files in this workspace`})}),r[10]=e):e=r[10],e}let y;r[11]!==o||r[12]!==s?(y=async e=>{let t=o[e]??!1;s({...o,[e]:!t})},r[11]=o,r[12]=s,r[13]=y):y=r[13];let b;r[14]===v?b=r[15]:(b=async e=>{let{id:t,name:n}=e;await v(t,n)},r[14]=v,r[15]=b);let x;return r[16]!==i||r[17]!==o||r[18]!==a||r[19]!==y||r[20]!==b?(x=(0,$.jsx)(ne,{ref:u,width:`100%`,height:500,searchTerm:a,className:`h-full`,idAccessor:Me,data:i,openByDefault:!1,initialOpenState:o,onToggle:y,onRename:b,padding:5,rowHeight:35,indent:15,overscanCount:1e3,renderCursor:Ne,disableDrop:!0,disableDrag:!0,disableMultiSelection:!0,children:Ce}),r[16]=i,r[17]=o,r[18]=a,r[19]=y,r[20]=b,r[21]=x):x=r[21],x},Ce=e=>{let t=(0,Y.c)(18),{node:n,style:r}=e,i=n.data.isDirectory?`directory`:L(n.data.name),a=R[i],o;t[0]===a?o=t[1]:(o=(0,$.jsx)(a,{className:`w-5 h-5 shrink-0`,strokeWidth:1.5}),t[0]=a,t[1]=o);let s=o,{root:c}=(0,X.use)(Q),{runningNotebooks:l}=(0,X.use)(Z),u;t[2]!==s||t[3]!==n||t[4]!==c||t[5]!==l?(u=()=>{if(n.isEditing)return(0,$.jsxs)(`div`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,children:[s,(0,$.jsx)(te,{node:n})]});if(n.data.isDirectory)return(0,$.jsxs)(`span`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,children:[s,n.data.name]});let e=n.data.path.startsWith(c)&&E.isAbsolute(n.data.path)?E.rest(n.data.path,c):n.data.path,t=e.endsWith(`.md`)||e.endsWith(`.qmd`),r=l.has(e);return(0,$.jsxs)(`a`,{className:`flex items-center pl-1 cursor-pointer hover:bg-accent/50 hover:text-accent-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,href:d(`?file=${encodeURIComponent(e)}`).toString(),target:ve(e),children:[s,(0,$.jsxs)(`span`,{className:`flex-1 overflow-hidden text-ellipsis`,children:[n.data.name,t&&(0,$.jsx)(pe,{className:`ml-2 inline opacity-80`})]}),(0,$.jsx)(we,{node:n,isRunning:r}),(0,$.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center shrink-0`,children:(0,$.jsx)(Oe,{filePath:e})}),(0,$.jsx)(I,{size:20,className:`group-hover:opacity-100 opacity-0 text-primary shrink-0`})]})},t[2]=s,t[3]=n,t[4]=c,t[5]=l,t[6]=u):u=t[6];let f=u,p;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(p=v(`flex items-center cursor-pointer ml-1 text-muted-foreground whitespace-nowrap group h-full`),t[7]=p):p=t[7];let m,h;t[8]===n?(m=t[9],h=t[10]):(m=e=>{e.stopPropagation(),n.data.isDirectory&&n.toggle()},h=(0,$.jsx)(Te,{node:n}),t[8]=n,t[9]=m,t[10]=h);let g;t[11]===f?g=t[12]:(g=f(),t[11]=f,t[12]=g);let _;return t[13]!==r||t[14]!==m||t[15]!==h||t[16]!==g?(_=(0,$.jsxs)(`div`,{style:r,className:p,onClick:m,children:[h,g]}),t[13]=r,t[14]=m,t[15]=h,t[16]=g,t[17]=_):_=t[17],_},we=e=>{let t=(0,Y.c)(19),{node:n,isRunning:r}=e,{root:i,refreshWorkspace:a}=(0,X.use)(Q),o;t[0]!==n||t[1]!==a||t[2]!==i?(o={node:n,root:i,onAfterChange:a},t[0]=n,t[1]=a,t[2]=i,t[3]=o):o=t[3];let{handleRename:s,handleDuplicate:c,handleDelete:l}=ee(o),u=r?`Stop the notebook's kernel before renaming or deleting.`:void 0,d;t[4]!==s||t[5]!==r||t[6]!==u?(d=(0,$.jsx)(V,{onSelect:s,disabled:r,title:u}),t[4]=s,t[5]=r,t[6]=u,t[7]=d):d=t[7];let f;t[8]===c?f=t[9]:(f=(0,$.jsx)(G,{onSelect:c}),t[8]=c,t[9]=f);let p;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(x,{}),t[10]=p):p=t[10];let m;t[11]!==l||t[12]!==r||t[13]!==u?(m=(0,$.jsx)(U,{onSelect:l,disabled:r,title:u}),t[11]=l,t[12]=r,t[13]=u,t[14]=m):m=t[14];let h;return t[15]!==d||t[16]!==f||t[17]!==m?(h=(0,$.jsxs)(H,{testId:`workspace-more-button`,buttonClassName:`w-8 h-8 p-0 shrink-0`,contentClassName:`print:hidden w-fit min-w-[140px]`,preventDefaultOnTrigger:!0,children:[d,f,p,m]}),t[15]=d,t[16]=f,t[17]=m,t[18]=h):h=t[18],h},Te=e=>{let t=(0,Y.c)(3),{node:n}=e;if(!n.data.isDirectory){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{className:`w-5 h-5 shrink-0`}),t[0]=e):e=t[0],e}let r;return t[1]===n.isOpen?r=t[2]:(r=n.isOpen?(0,$.jsx)(j,{className:`w-5 h-5 shrink-0`}):(0,$.jsx)(M,{className:`w-5 h-5 shrink-0`}),t[1]=n.isOpen,t[2]=r),r},Ee=e=>{let t=(0,Y.c)(7),{header:n,files:r}=e;if(r.length===0)return null;let i;t[0]===r?i=t[1]:(i=r.map(Pe),t[0]=r,t[1]=i);let a;t[2]===i?a=t[3]:(a=(0,$.jsx)(`div`,{className:`flex flex-col divide-y divide-(--slate-3) border rounded overflow-hidden max-h-192 overflow-y-auto shadow-sm bg-background`,children:i}),t[2]=i,t[3]=a);let o;return t[4]!==n||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[n,a]}),t[4]=n,t[5]=a,t[6]=o):o=t[6],o},De=e=>{let t=(0,Y.c)(41),{file:n}=e,{locale:r}=ce(),i;t[0]===n.path?i=t[1]:(i=f(n.path),t[0]=n.path,t[1]=i);let a=i,o,s,c,l;if(t[2]!==n.initializationId||t[3]!==n.path||t[4]!==a){let e=d(a?`?file=${encodeURIComponent(n.initializationId??n.path)}&session_id=${n.path}`:`?file=${encodeURIComponent(n.path)}`),r;t[9]===n.path?r=t[10]:(r=n.path.endsWith(`.md`),t[9]=n.path,t[10]=r),o=r,s=`py-1.5 px-4 hover:bg-(--blue-2) hover:text-primary transition-colors duration-300 cursor-pointer group relative flex gap-4 items-center`,c=n.path,l=e.toString(),t[2]=n.initializationId,t[3]=n.path,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l}else o=t[5],s=t[6],c=t[7],l=t[8];let u=n.initializationId||n.path,p;t[11]===u?p=t[12]:(p=ve(u),t[11]=u,t[12]=p);let m;t[13]===o?m=t[14]:(m=o&&(0,$.jsx)(`span`,{className:`opacity-80`,children:(0,$.jsx)(pe,{})}),t[13]=o,t[14]=m);let h;t[15]!==n.name||t[16]!==m?(h=(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n.name,m]}),t[15]=n.name,t[16]=m,t[17]=h):h=t[17];let g;t[18]===n.path?g=t[19]:(g=(0,$.jsx)(`p`,{title:n.path,className:`text-sm text-muted-foreground overflow-hidden whitespace-nowrap text-ellipsis`,children:n.path}),t[18]=n.path,t[19]=g);let _;t[20]!==h||t[21]!==g?(_=(0,$.jsxs)(`div`,{className:`flex flex-col justify-between flex-1`,children:[h,g]}),t[20]=h,t[21]=g,t[22]=_):_=t[22];let v;t[23]===n.path?v=t[24]:(v=(0,$.jsx)(`div`,{children:(0,$.jsx)(Oe,{filePath:n.path})}),t[23]=n.path,t[24]=v);let y;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(I,{size:20,className:`group-hover:opacity-100 opacity-0 transition-opacity duration-300 text-primary`}),t[25]=y):y=t[25];let b;t[26]===v?b=t[27]:(b=(0,$.jsxs)(`div`,{className:`flex gap-3 items-center`,children:[v,y]}),t[26]=v,t[27]=b);let x;t[28]!==n.lastModified||t[29]!==r?(x=!!n.lastModified&&(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground opacity-80`,children:ue(n.lastModified*1e3,r)}),t[28]=n.lastModified,t[29]=r,t[30]=x):x=t[30];let S;t[31]!==b||t[32]!==x?(S=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 items-end`,children:[b,x]}),t[31]=b,t[32]=x,t[33]=S):S=t[33];let C;return t[34]!==_||t[35]!==S||t[36]!==s||t[37]!==c||t[38]!==l||t[39]!==p?(C=(0,$.jsxs)(`a`,{className:s,href:l,target:p,children:[_,S]},c),t[34]=_,t[35]=S,t[36]=s,t[37]=c,t[38]=l,t[39]=p,t[40]=C):C=t[40],C},Oe=e=>{let t=(0,Y.c)(10),{filePath:n}=e,{openConfirm:r,closeModal:i}=z(),{shutdownSession:a}=q(),{runningNotebooks:o,setRunningNotebooks:s}=(0,X.use)(Z);if(!o.has(n))return null;let c;t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==o||t[4]!==s||t[5]!==a?(c=e=>{e.stopPropagation(),e.preventDefault(),r({title:`Shutdown`,description:`This will terminate the Python kernel. You'll lose all data that's in memory.`,variant:`destructive`,confirmAction:(0,$.jsx)(b,{onClick:()=>{let e=o.get(n);h(e?.sessionId),a({sessionId:e.sessionId}).then(e=>{s(N.keyBy(e.files,Fe))}),i(),K({description:`Notebook has been shutdown.`})},"aria-label":`Confirm Shutdown`,children:`Shutdown`})})},t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=s,t[5]=a,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(ie,{size:14}),t[7]=l):l=t[7];let u;return t[8]===c?u=t[9]:(u=(0,$.jsx)(C,{content:`Shutdown`,children:(0,$.jsx)(w,{size:`icon`,variant:`outline`,className:`opacity-80 hover:opacity-100 hover:bg-accent text-destructive border-destructive hover:border-destructive hover:text-destructive bg-background hover:bg-(--red-1)`,onClick:c,children:l})}),t[8]=c,t[9]=u),u},ke=()=>{let e=(0,Y.c)(3),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=p(),e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Create a new notebook`}),e[1]=r):r=e[1];let i;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsxs)(`a`,{className:`relative rounded-lg p-6 group
2
2
  text-primary hover:bg-(--blue-2) shadow-md-solid shadow-accent border bg-(--blue-1)
3
- transition-all duration-300 cursor-pointer
4
- `,href:n,target:`_blank`,rel:`noreferrer`,children:[r,(0,$.jsx)(`div`,{className:`group-hover:opacity-100 opacity-0 absolute right-5 top-0 bottom-0 rounded-lg flex items-center justify-center transition-all duration-300`,children:(0,$.jsx)(I,{size:24})})]}),e[2]=i):i=e[2],i};function Ae(e){return e+1}function je(e){return e.path}function Me(e){return e.path}function Ne(){return null}function Pe(e){return(0,$.jsx)(De,{file:e},e.path)}function Fe(e){return e.path}export{ye as default};
3
+ transition-colors duration-300 cursor-pointer
4
+ `,href:n,target:`_blank`,rel:`noreferrer`,children:[r,(0,$.jsx)(`div`,{className:`group-hover:opacity-100 opacity-0 absolute right-5 top-0 bottom-0 rounded-lg flex items-center justify-center transition-opacity duration-300`,children:(0,$.jsx)(I,{size:24})})]}),e[2]=i):i=e[2],i};function Ae(e){return e+1}function je(e){return e.path}function Me(e){return e.path}function Ne(){return null}function Pe(e){return(0,$.jsx)(De,{file:e},e.path)}function Fe(e){return e.path}export{ye as default};
@@ -1 +1 @@
1
- import{l as e}from"./useEvent-Dfcbgjhg.js";import{a as t}from"./cells-rA_jsZCj.js";import{t as n}from"./compiler-runtime-BrajqUja.js";import{a as r}from"./config-VPSq73n8.js";import{g as i}from"./useEventListener-D9cftcHj.js";import{t as a}from"./objects-snlMn4yk.js";import{_ as o,w as s}from"./config-DX8Y2WbJ.js";import{s as c,u as l}from"./download-Bx55LMki.js";import{c as u,t as d}from"./layout-DBuMeWh0.js";import{t as f}from"./use-toast-Wu434mLr.js";import{r as p}from"./requests-lt0JK8Jt.js";import{t as m}from"./Deferred-CrTnjj37.js";import{t as h}from"./useInterval--x3s1VpI.js";var g=n(),_=class{capturedInputs=new Map;inFlight=new Map;cancelEntry(e){e.controller.abort(),e.deferred.status===`pending`&&e.deferred.resolve(void 0)}needsCapture(e,t){if(this.capturedInputs.get(e)===t)return!1;let n=this.inFlight.get(e);return!(n&&n.inputValue===t)}waitForInFlight(e,t){let n=this.inFlight.get(e);return n&&n.inputValue===t?n.deferred.promise:null}startCapture(e,t){let n=this.inFlight.get(e);n&&this.cancelEntry(n);let r=new AbortController,i=new m,a={controller:r,inputValue:t,deferred:i};return this.inFlight.set(e,a),{signal:r.signal,markCaptured:n=>{this.inFlight.get(e)===a&&(i.resolve(n),this.capturedInputs.set(e,t),this.inFlight.delete(e))},markFailed:()=>{this.inFlight.get(e)===a&&(i.resolve(void 0),this.inFlight.delete(e))}}}prune(e){for(let t of this.capturedInputs.keys())e.has(t)||this.capturedInputs.delete(t);for(let[t,n]of this.inFlight)e.has(t)||(this.cancelEntry(n),this.inFlight.delete(t))}get isCapturing(){return this.inFlight.size>0}abort(){for(let e of this.inFlight.values())this.cancelEntry(e);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},v=5e3;function y(){let t=(0,g.c)(20),n=e(r),{state:i}=e(o),a;t[0]===n.auto_download?a=t[1]:(a=n.auto_download.includes(`markdown`),t[0]=n.auto_download,t[1]=a);let c=a,f;t[2]===n.auto_download?f=t[3]:(f=n.auto_download.includes(`html`),t[2]=n.auto_download,t[3]=f);let m=f,_;t[4]===n.auto_download?_=t[5]:(_=n.auto_download.includes(`ipynb`),t[4]=n.auto_download,t[5]=_);let y=_,b=i===s.OPEN,x=!c||!b,w=!m||!b,T=!y||!b,{autoExportAsHTML:E,autoExportAsIPYNB:D,autoExportAsMarkdown:O,updateCellOutputs:k}=p(),A=S(),j;t[6]===O?j=t[7]:(j=async()=>{await O({download:!1})},t[6]=O,t[7]=j);let M;t[8]===x?M=t[9]:(M={delayMs:v,whenVisible:!0,disabled:x},t[8]=x,t[9]=M),h(j,M);let N;t[10]===E?N=t[11]:(N=async()=>{await E({download:!1,includeCode:!0,files:u.INSTANCE.filenames(),layout:await d()})},t[10]=E,t[11]=N);let P;t[12]===w?P=t[13]:(P={delayMs:v,whenVisible:!0,disabled:w},t[12]=w,t[13]=P),h(N,P);let F;t[14]!==D||t[15]!==A||t[16]!==k?(F=async()=>{await C({takeScreenshots:()=>A({progress:l.indeterminate()}),updateCellOutputs:k}),await D({download:!1})},t[14]=D,t[15]=A,t[16]=k,t[17]=F):F=t[17];let I;t[18]===T?I=t[19]:(I={delayMs:v,whenVisible:!0,disabled:T,skipIfRunning:!0},t[18]=T,t[19]=I),h(F,I)}var b=new Set([`text/html`,`application/vnd.vegalite.v5+json`,`application/vnd.vega.v5+json`,`application/vnd.vegalite.v6+json`,`application/vnd.vega.v6+json`]),x=new _;function S(){let n=e(t);return async e=>{let{progress:t}=e,r=new Set(a.keys(n));x.prune(r);let o=[],s=[];for(let[e,t]of a.entries(n)){let n=t.output?.data;if(t.output?.mimetype&&b.has(t.output.mimetype)&&n){if(x.needsCapture(e,n))o.push([e,n]);else{let t=x.waitForInFlight(e,n);t&&s.push({cellId:e,promise:t})}}}if(o.length===0&&s.length===0)return{};o.length>0&&t.addTotal(o.length);let l={};for(let[e,n]of o){let r=x.startCapture(e,n);try{let t=await c(e);if(r.signal.aborted)continue;if(!t){i.error(`Failed to capture screenshot for cell ${e}`),r.markFailed();continue}let n=[`image/png`,t];l[e]=n,r.markCaptured(n)}catch(t){i.error(`Error screenshotting cell ${e}:`,t),r.markFailed()}finally{t.increment(1)}}let u=await Promise.allSettled(s.map(({promise:e})=>e));for(let[e,{cellId:t}]of s.entries()){let n=u[e];n.status===`fulfilled`&&n.value&&(l[t]=n.value)}return l}}async function C(e){let{takeScreenshots:t,updateCellOutputs:n}=e;try{let e=await t();a.size(e)>0&&await n({cellIdsToOutput:e})}catch(e){i.error(`Error updating cell outputs with screenshots:`,e),f({title:`Failed to capture cell outputs`,description:`Some outputs may be missing from the export. Continuing.`,variant:`danger`})}}export{y as n,S as r,C as t};
1
+ import{l as e}from"./useEvent-Dfcbgjhg.js";import{a as t}from"./cells-T9_Y4Jlv.js";import{t as n}from"./compiler-runtime-BrajqUja.js";import{a as r}from"./config-DGX7JYor.js";import{g as i}from"./useEventListener-CjDeLqFC.js";import{t as a}from"./objects-rLPlQ3X_.js";import{T as o,_ as s}from"./config-DzdxZb17.js";import{s as c,u as l}from"./download-C8Gw-D0Y.js";import{c as u,t as d}from"./layout-sYdHI-lW.js";import{t as f}from"./use-toast-Wu434mLr.js";import{r as p}from"./requests-lt0JK8Jt.js";import{t as m}from"./Deferred-CrTnjj37.js";import{t as h}from"./useInterval-DJdQmXnq.js";var g=n(),_=class{capturedInputs=new Map;inFlight=new Map;cancelEntry(e){e.controller.abort(),e.deferred.status===`pending`&&e.deferred.resolve(void 0)}needsCapture(e,t){if(this.capturedInputs.get(e)===t)return!1;let n=this.inFlight.get(e);return!(n&&n.inputValue===t)}waitForInFlight(e,t){let n=this.inFlight.get(e);return n&&n.inputValue===t?n.deferred.promise:null}startCapture(e,t){let n=this.inFlight.get(e);n&&this.cancelEntry(n);let r=new AbortController,i=new m,a={controller:r,inputValue:t,deferred:i};return this.inFlight.set(e,a),{signal:r.signal,markCaptured:n=>{this.inFlight.get(e)===a&&(i.resolve(n),this.capturedInputs.set(e,t),this.inFlight.delete(e))},markFailed:()=>{this.inFlight.get(e)===a&&(i.resolve(void 0),this.inFlight.delete(e))}}}prune(e){for(let t of this.capturedInputs.keys())e.has(t)||this.capturedInputs.delete(t);for(let[t,n]of this.inFlight)e.has(t)||(this.cancelEntry(n),this.inFlight.delete(t))}get isCapturing(){return this.inFlight.size>0}abort(){for(let e of this.inFlight.values())this.cancelEntry(e);this.inFlight.clear()}reset(){this.abort(),this.capturedInputs.clear()}},v=5e3;function y(){let t=(0,g.c)(20),n=e(r),{state:i}=e(s),a;t[0]===n.auto_download?a=t[1]:(a=n.auto_download.includes(`markdown`),t[0]=n.auto_download,t[1]=a);let c=a,f;t[2]===n.auto_download?f=t[3]:(f=n.auto_download.includes(`html`),t[2]=n.auto_download,t[3]=f);let m=f,_;t[4]===n.auto_download?_=t[5]:(_=n.auto_download.includes(`ipynb`),t[4]=n.auto_download,t[5]=_);let y=_,b=i===o.OPEN,x=!c||!b,w=!m||!b,T=!y||!b,{autoExportAsHTML:E,autoExportAsIPYNB:D,autoExportAsMarkdown:O,updateCellOutputs:k}=p(),A=S(),j;t[6]===O?j=t[7]:(j=async()=>{await O({download:!1})},t[6]=O,t[7]=j);let M;t[8]===x?M=t[9]:(M={delayMs:v,whenVisible:!0,disabled:x},t[8]=x,t[9]=M),h(j,M);let N;t[10]===E?N=t[11]:(N=async()=>{await E({download:!1,includeCode:!0,files:u.INSTANCE.filenames(),layout:await d()})},t[10]=E,t[11]=N);let P;t[12]===w?P=t[13]:(P={delayMs:v,whenVisible:!0,disabled:w},t[12]=w,t[13]=P),h(N,P);let F;t[14]!==D||t[15]!==A||t[16]!==k?(F=async()=>{await C({takeScreenshots:()=>A({progress:l.indeterminate()}),updateCellOutputs:k}),await D({download:!1})},t[14]=D,t[15]=A,t[16]=k,t[17]=F):F=t[17];let I;t[18]===T?I=t[19]:(I={delayMs:v,whenVisible:!0,disabled:T,skipIfRunning:!0},t[18]=T,t[19]=I),h(F,I)}var b=new Set([`text/html`,`application/vnd.vegalite.v5+json`,`application/vnd.vega.v5+json`,`application/vnd.vegalite.v6+json`,`application/vnd.vega.v6+json`]),x=new _;function S(){let n=e(t);return async e=>{let{progress:t}=e,r=new Set(a.keys(n));x.prune(r);let o=[],s=[];for(let[e,t]of a.entries(n)){let n=t.output?.data;if(t.output?.mimetype&&b.has(t.output.mimetype)&&n){if(x.needsCapture(e,n))o.push([e,n]);else{let t=x.waitForInFlight(e,n);t&&s.push({cellId:e,promise:t})}}}if(o.length===0&&s.length===0)return{};o.length>0&&t.addTotal(o.length);let l={};for(let[e,n]of o){let r=x.startCapture(e,n);try{let t=await c(e);if(r.signal.aborted)continue;if(!t){i.error(`Failed to capture screenshot for cell ${e}`),r.markFailed();continue}let n=[`image/png`,t];l[e]=n,r.markCaptured(n)}catch(t){i.error(`Error screenshotting cell ${e}:`,t),r.markFailed()}finally{t.increment(1)}}let u=await Promise.allSettled(s.map(({promise:e})=>e));for(let[e,{cellId:t}]of s.entries()){let n=u[e];n.status===`fulfilled`&&n.value&&(l[t]=n.value)}return l}}async function C(e){let{takeScreenshots:t,updateCellOutputs:n}=e;try{let e=await t();a.size(e)>0&&await n({cellIdsToOutput:e})}catch(e){i.error(`Error updating cell outputs with screenshots:`,e),f({title:`Failed to capture cell outputs`,description:`Some outputs may be missing from the export. Continuing.`,variant:`danger`})}}export{y as n,S as r,C as t};
@@ -1,2 +1,2 @@
1
- import{g as e}from"./useEventListener-D9cftcHj.js";function t(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;let n=document.implementation.createHTMLDocument(),r=n.createElement(`base`),i=n.createElement(`a`);return n.head.appendChild(r),n.body.appendChild(i),t&&(r.href=t),i.href=e,i.href}var n=(()=>{let e=0,t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function r(e){let t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}var i=null;function a(e={}){return i||(e.includeStyleProperties?(i=e.includeStyleProperties,i):(i=r(window.getComputedStyle(document.documentElement)),i))}function o(e,t){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace(`px`,``)):0}function s(e){let t=o(e,`border-left-width`),n=o(e,`border-right-width`);return e.clientWidth+t+n}function c(e){let t=o(e,`border-top-width`),n=o(e,`border-bottom-width`);return e.clientHeight+t+n}function l(e,t={}){return{width:t.width||s(e),height:t.height||c(e)}}function ee(){let e,t;try{t=process}catch{}let n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}var u=16384;function te(e){(e.width>u||e.height>u)&&(e.width>u&&e.height>u?e.width>e.height?(e.height*=u/e.width,e.width=u):(e.width*=u/e.height,e.height=u):e.width>u?(e.height*=u/e.width,e.width=u):(e.width*=u/e.height,e.height=u))}function d(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin=`anonymous`,r.decoding=`async`,r.src=e})}async function f(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}async function p(e,t,n){let r=`http://www.w3.org/2000/svg`,i=document.createElementNS(r,`svg`),a=document.createElementNS(r,`foreignObject`);return i.setAttribute(`width`,`${t}`),i.setAttribute(`height`,`${n}`),i.setAttribute(`viewBox`,`0 0 ${t} ${n}`),a.setAttribute(`width`,`100%`),a.setAttribute(`height`,`100%`),a.setAttribute(`x`,`0`),a.setAttribute(`y`,`0`),a.setAttribute(`externalResourcesRequired`,`true`),i.appendChild(a),a.appendChild(e),f(i)}var m=(e,t)=>{if(e instanceof t)return!0;let n=Object.getPrototypeOf(e);return n===null?!1:n.constructor.name===t.name||m(n,t)};function ne(e){let t=e.getPropertyValue(`content`);return`${e.cssText} content: '${t.replace(/'|"/g,``)}';`}function re(e,t){return a(t).map(t=>`${t}: ${e.getPropertyValue(t)}${e.getPropertyPriority(t)?` !important`:``};`).join(` `)}function ie(e,t,n,r){let i=`.${e}:${t}`,a=n.cssText?ne(n):re(n,r);return document.createTextNode(`${i}{${a}}`)}function h(e,t,r,i){let a=window.getComputedStyle(e,r),o=a.getPropertyValue(`content`);if(o===``||o===`none`)return;let s=n();try{t.className=`${t.className} ${s}`}catch{return}let c=document.createElement(`style`);c.appendChild(ie(s,r,a,i)),t.appendChild(c)}function ae(e,t,n){h(e,t,`:before`,n),h(e,t,`:after`,n)}var g=`application/font-woff`,_=`image/jpeg`,v={woff:g,woff2:g,ttf:`application/font-truetype`,eot:`application/vnd.ms-fontobject`,png:`image/png`,jpg:_,jpeg:_,gif:`image/gif`,tiff:`image/tiff`,svg:`image/svg+xml`,webp:`image/webp`};function y(e){let t=/\.([^./]*?)$/g.exec(e);return t?t[1]:``}function b(e){return v[y(e).toLowerCase()]||``}function oe(e){return e.split(/,/)[1]}function x(e){return e.search(/^(data:)/)!==-1}function S(e,t){return`data:${t};base64,${e}`}async function C(e,t,n){let r=await fetch(e,t);if(r.status===404)throw Error(`Resource "${r.url}" not found`);let i=await r.blob();return new Promise((e,t)=>{let a=new FileReader;a.onerror=t,a.onloadend=()=>{try{e(n({res:r,result:a.result}))}catch(e){t(e)}},a.readAsDataURL(i)})}var w={};function se(e,t,n){let r=e.replace(/\?.*/,``);return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,``)),t?`[${t}]${r}`:r}async function T(e,t,n){let r=se(e,t,n.includeQueryParams);if(w[r]!=null)return w[r];n.cacheBust&&(e+=(/\?/.test(e)?`&`:`?`)+new Date().getTime());let i;try{i=S(await C(e,n.fetchRequestInit,({res:e,result:n})=>(t||=e.headers.get(`Content-Type`)||``,oe(n))),t)}catch(t){i=n.imagePlaceholder||``;let r=`Failed to fetch resource: ${e}`;t&&(r=typeof t==`string`?t:t.message),r&&console.warn(r)}return w[r]=i,i}async function ce(e){let t=e.toDataURL();return t===`data:,`?e.cloneNode(!1):d(t)}async function le(e,t){if(e.currentSrc){let t=document.createElement(`canvas`),n=t.getContext(`2d`);return t.width=e.clientWidth,t.height=e.clientHeight,n?.drawImage(e,0,0,t.width,t.height),d(t.toDataURL())}let n=e.poster;return d(await T(n,b(n),t))}async function E(e,t){try{if(e?.contentDocument?.body)return await I(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function D(e,t){return m(e,HTMLCanvasElement)?ce(e):m(e,HTMLVideoElement)?le(e,t):m(e,HTMLIFrameElement)?E(e,t):e.cloneNode(k(e))}var O=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SLOT`,k=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SVG`;async function A(e,t,n){if(k(t))return t;let i=[];if(O(e)&&e.assignedNodes)i=r(e.assignedNodes());else if(m(e,HTMLIFrameElement))try{e.contentDocument?.body&&(i=r(e.contentDocument.body.childNodes))}catch{}else i=r((e.shadowRoot??e).childNodes);return i.length===0||m(e,HTMLVideoElement)||await i.reduce((e,r)=>e.then(()=>I(r,n)).then(e=>{e&&t.appendChild(e)}),Promise.resolve()),t}function j(e,t,n){let r=t.style;if(!r)return;let i=window.getComputedStyle(e);i.cssText?(r.cssText=i.cssText,r.transformOrigin=i.transformOrigin):a(n).forEach(n=>{let a=i.getPropertyValue(n);n===`font-size`&&a.endsWith(`px`)&&(a=`${Math.floor(parseFloat(a.substring(0,a.length-2)))-.1}px`),m(e,HTMLIFrameElement)&&n===`display`&&a===`inline`&&(a=`block`),n===`d`&&t.getAttribute(`d`)&&(a=`path(${t.getAttribute(`d`)})`),r.setProperty(n,a,i.getPropertyPriority(n))})}function M(e,t){m(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),m(e,HTMLInputElement)&&t.setAttribute(`value`,e.value)}function N(e,t){if(m(e,HTMLSelectElement)){let n=t,r=Array.from(n.children).find(t=>e.value===t.getAttribute(`value`));r&&r.setAttribute(`selected`,``)}}function P(e,t,n){return m(t,Element)&&(j(e,t,n),ae(e,t,n),M(e,t),N(e,t)),t}async function F(e,t){let n=e.querySelectorAll?e.querySelectorAll(`use`):[];if(n.length===0)return e;let r={};for(let i=0;i<n.length;i++){let a=n[i].getAttribute(`xlink:href`);if(a){let n=e.querySelector(a),i=document.querySelector(a);!n&&i&&!r[a]&&(r[a]=await I(i,t,!0))}}let i=Object.values(r);if(i.length){let t=`http://www.w3.org/1999/xhtml`,n=document.createElementNS(t,`svg`);n.setAttribute(`xmlns`,t),n.style.position=`absolute`,n.style.width=`0`,n.style.height=`0`,n.style.overflow=`hidden`,n.style.display=`none`;let r=document.createElementNS(t,`defs`);n.appendChild(r);for(let e=0;e<i.length;e++)r.appendChild(i[e]);e.appendChild(n)}return e}async function I(e,t,n){return!n&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(e=>D(e,t)).then(n=>A(e,n,t)).then(n=>P(e,n,t)).then(e=>F(e,t))}var L=/url\((['"]?)([^'"]+?)\1\)/g,R=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,z=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function B(e){let t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,`\\$1`);return RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,`g`)}function V(e){let t=[];return e.replace(L,(e,n,r)=>(t.push(r),e)),t.filter(e=>!x(e))}async function H(e,n,r,i,a){try{let o=r?t(n,r):n,s=b(n),c;return c=a?S(await a(o),s):await T(o,s,i),e.replace(B(n),`$1${c}$3`)}catch{}return e}function U(e,{preferredFontFormat:t}){return t?e.replace(z,e=>{for(;;){let[n,,r]=R.exec(e)||[];if(!r)return``;if(r===t)return`src: ${n};`}}):e}function W(e){return e.search(L)!==-1}async function G(e,t,n){if(!W(e))return e;let r=U(e,n);return V(r).reduce((e,r)=>e.then(e=>H(e,r,t,n)),Promise.resolve(r))}async function K(e,t,n){let r=t.style?.getPropertyValue(e);if(r){let i=await G(r,null,n);return t.style.setProperty(e,i,t.style.getPropertyPriority(e)),!0}return!1}async function ue(e,t){await K(`background`,e,t)||await K(`background-image`,e,t),await K(`mask`,e,t)||await K(`-webkit-mask`,e,t)||await K(`mask-image`,e,t)||await K(`-webkit-mask-image`,e,t)}async function de(e,t){let n=m(e,HTMLImageElement);if(!(n&&!x(e.src))&&!(m(e,SVGImageElement)&&!x(e.href.baseVal)))return;let r=n?e.src:e.href.baseVal,i=await T(r,b(r),t);await new Promise((r,a)=>{e.onload=r,e.onerror=t.onImageErrorHandler?(...e)=>{try{r(t.onImageErrorHandler(...e))}catch(e){a(e)}}:a;let o=e;o.decode&&=r,o.loading===`lazy`&&(o.loading=`eager`),n?(e.srcset=``,e.src=i):e.href.baseVal=i})}async function fe(e,t){let n=r(e.childNodes).map(e=>q(e,t));await Promise.all(n).then(()=>e)}async function q(e,t){m(e,Element)&&(await ue(e,t),await de(e,t),await fe(e,t))}function pe(e,t){let{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);let r=t.style;return r!=null&&Object.keys(r).forEach(e=>{n[e]=r[e]}),e}var J={};async function Y(e){let t=J[e];return t??(t={url:e,cssText:await(await fetch(e)).text()},J[e]=t,t)}async function X(e,t){let n=e.cssText,r=/url\(["']?([^"')]+)["']?\)/g,i=(n.match(/url\([^)]+\)/g)||[]).map(async i=>{let a=i.replace(r,`$1`);return a.startsWith(`https://`)||(a=new URL(a,e.url).href),C(a,t.fetchRequestInit,({result:e})=>(n=n.replace(i,`url(${e})`),[i,e]))});return Promise.all(i).then(()=>n)}function Z(e){if(e==null)return[];let t=[],n=e.replace(/(\/\*[\s\S]*?\*\/)/gi,``),r=RegExp(`((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})`,`gi`);for(;;){let e=r.exec(n);if(e===null)break;t.push(e[0])}n=n.replace(r,``);let i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,a=RegExp(`((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})`,`gi`);for(;;){let e=i.exec(n);if(e===null){if(e=a.exec(n),e===null)break;i.lastIndex=a.lastIndex}else a.lastIndex=i.lastIndex;t.push(e[0])}return t}async function me(e,t){let n=[],i=[];return e.forEach(n=>{if(`cssRules`in n)try{r(n.cssRules||[]).forEach((e,r)=>{if(e.type===CSSRule.IMPORT_RULE){let a=r+1,o=e.href,s=Y(o).then(e=>X(e,t)).then(e=>Z(e).forEach(e=>{try{n.insertRule(e,e.startsWith(`@import`)?a+=1:n.cssRules.length)}catch(t){console.error(`Error inserting rule from remote css`,{rule:e,error:t})}})).catch(e=>{console.error(`Error loading remote css`,e.toString())});i.push(s)}})}catch(r){let a=e.find(e=>e.href==null)||document.styleSheets[0];n.href!=null&&i.push(Y(n.href).then(e=>X(e,t)).then(e=>Z(e).forEach(e=>{a.insertRule(e,a.cssRules.length)})).catch(e=>{console.error(`Error loading remote stylesheet`,e)})),console.error(`Error inlining remote css file`,r)}}),Promise.all(i).then(()=>(e.forEach(e=>{if(`cssRules`in e)try{r(e.cssRules||[]).forEach(e=>{n.push(e)})}catch(t){console.error(`Error while reading CSS rules from ${e.href}`,t)}}),n))}function he(e){return e.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>W(e.style.getPropertyValue(`src`)))}async function ge(e,t){if(e.ownerDocument==null)throw Error(`Provided element is not within a Document`);return he(await me(r(e.ownerDocument.styleSheets),t))}function Q(e){return(e||``).trim().replace(/["']/g,``)}function $(e){let t=new Set;function n(e){let r=e.style.fontFamily||getComputedStyle(e).fontFamily;r&&r.split(`,`).forEach(e=>{t.add(Q(e))}),Array.from(e.children).forEach(e=>{e instanceof HTMLElement&&n(e)})}return n(e),t}async function _e(e,t){let n=await ge(e,t),r=$(e);return(await Promise.all(n.filter(e=>r.has(Q(e.style.fontFamily))).map(e=>{let n=e.parentStyleSheet?e.parentStyleSheet.href:null;return G(e.cssText,n,t)}))).join(`
1
+ import{g as e}from"./useEventListener-CjDeLqFC.js";function t(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;let n=document.implementation.createHTMLDocument(),r=n.createElement(`base`),i=n.createElement(`a`);return n.head.appendChild(r),n.body.appendChild(i),t&&(r.href=t),i.href=e,i.href}var n=(()=>{let e=0,t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function r(e){let t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}var i=null;function a(e={}){return i||(e.includeStyleProperties?(i=e.includeStyleProperties,i):(i=r(window.getComputedStyle(document.documentElement)),i))}function o(e,t){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace(`px`,``)):0}function s(e){let t=o(e,`border-left-width`),n=o(e,`border-right-width`);return e.clientWidth+t+n}function c(e){let t=o(e,`border-top-width`),n=o(e,`border-bottom-width`);return e.clientHeight+t+n}function l(e,t={}){return{width:t.width||s(e),height:t.height||c(e)}}function ee(){let e,t;try{t=process}catch{}let n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}var u=16384;function te(e){(e.width>u||e.height>u)&&(e.width>u&&e.height>u?e.width>e.height?(e.height*=u/e.width,e.width=u):(e.width*=u/e.height,e.height=u):e.width>u?(e.height*=u/e.width,e.width=u):(e.width*=u/e.height,e.height=u))}function d(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin=`anonymous`,r.decoding=`async`,r.src=e})}async function f(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}async function p(e,t,n){let r=`http://www.w3.org/2000/svg`,i=document.createElementNS(r,`svg`),a=document.createElementNS(r,`foreignObject`);return i.setAttribute(`width`,`${t}`),i.setAttribute(`height`,`${n}`),i.setAttribute(`viewBox`,`0 0 ${t} ${n}`),a.setAttribute(`width`,`100%`),a.setAttribute(`height`,`100%`),a.setAttribute(`x`,`0`),a.setAttribute(`y`,`0`),a.setAttribute(`externalResourcesRequired`,`true`),i.appendChild(a),a.appendChild(e),f(i)}var m=(e,t)=>{if(e instanceof t)return!0;let n=Object.getPrototypeOf(e);return n===null?!1:n.constructor.name===t.name||m(n,t)};function ne(e){let t=e.getPropertyValue(`content`);return`${e.cssText} content: '${t.replace(/'|"/g,``)}';`}function re(e,t){return a(t).map(t=>`${t}: ${e.getPropertyValue(t)}${e.getPropertyPriority(t)?` !important`:``};`).join(` `)}function ie(e,t,n,r){let i=`.${e}:${t}`,a=n.cssText?ne(n):re(n,r);return document.createTextNode(`${i}{${a}}`)}function h(e,t,r,i){let a=window.getComputedStyle(e,r),o=a.getPropertyValue(`content`);if(o===``||o===`none`)return;let s=n();try{t.className=`${t.className} ${s}`}catch{return}let c=document.createElement(`style`);c.appendChild(ie(s,r,a,i)),t.appendChild(c)}function ae(e,t,n){h(e,t,`:before`,n),h(e,t,`:after`,n)}var g=`application/font-woff`,_=`image/jpeg`,v={woff:g,woff2:g,ttf:`application/font-truetype`,eot:`application/vnd.ms-fontobject`,png:`image/png`,jpg:_,jpeg:_,gif:`image/gif`,tiff:`image/tiff`,svg:`image/svg+xml`,webp:`image/webp`};function y(e){let t=/\.([^./]*?)$/g.exec(e);return t?t[1]:``}function b(e){return v[y(e).toLowerCase()]||``}function oe(e){return e.split(/,/)[1]}function x(e){return e.search(/^(data:)/)!==-1}function S(e,t){return`data:${t};base64,${e}`}async function C(e,t,n){let r=await fetch(e,t);if(r.status===404)throw Error(`Resource "${r.url}" not found`);let i=await r.blob();return new Promise((e,t)=>{let a=new FileReader;a.onerror=t,a.onloadend=()=>{try{e(n({res:r,result:a.result}))}catch(e){t(e)}},a.readAsDataURL(i)})}var w={};function se(e,t,n){let r=e.replace(/\?.*/,``);return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,``)),t?`[${t}]${r}`:r}async function T(e,t,n){let r=se(e,t,n.includeQueryParams);if(w[r]!=null)return w[r];n.cacheBust&&(e+=(/\?/.test(e)?`&`:`?`)+new Date().getTime());let i;try{i=S(await C(e,n.fetchRequestInit,({res:e,result:n})=>(t||=e.headers.get(`Content-Type`)||``,oe(n))),t)}catch(t){i=n.imagePlaceholder||``;let r=`Failed to fetch resource: ${e}`;t&&(r=typeof t==`string`?t:t.message),r&&console.warn(r)}return w[r]=i,i}async function ce(e){let t=e.toDataURL();return t===`data:,`?e.cloneNode(!1):d(t)}async function le(e,t){if(e.currentSrc){let t=document.createElement(`canvas`),n=t.getContext(`2d`);return t.width=e.clientWidth,t.height=e.clientHeight,n?.drawImage(e,0,0,t.width,t.height),d(t.toDataURL())}let n=e.poster;return d(await T(n,b(n),t))}async function E(e,t){try{if(e?.contentDocument?.body)return await I(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function D(e,t){return m(e,HTMLCanvasElement)?ce(e):m(e,HTMLVideoElement)?le(e,t):m(e,HTMLIFrameElement)?E(e,t):e.cloneNode(k(e))}var O=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SLOT`,k=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SVG`;async function A(e,t,n){if(k(t))return t;let i=[];if(O(e)&&e.assignedNodes)i=r(e.assignedNodes());else if(m(e,HTMLIFrameElement))try{e.contentDocument?.body&&(i=r(e.contentDocument.body.childNodes))}catch{}else i=r((e.shadowRoot??e).childNodes);return i.length===0||m(e,HTMLVideoElement)||await i.reduce((e,r)=>e.then(()=>I(r,n)).then(e=>{e&&t.appendChild(e)}),Promise.resolve()),t}function j(e,t,n){let r=t.style;if(!r)return;let i=window.getComputedStyle(e);i.cssText?(r.cssText=i.cssText,r.transformOrigin=i.transformOrigin):a(n).forEach(n=>{let a=i.getPropertyValue(n);n===`font-size`&&a.endsWith(`px`)&&(a=`${Math.floor(parseFloat(a.substring(0,a.length-2)))-.1}px`),m(e,HTMLIFrameElement)&&n===`display`&&a===`inline`&&(a=`block`),n===`d`&&t.getAttribute(`d`)&&(a=`path(${t.getAttribute(`d`)})`),r.setProperty(n,a,i.getPropertyPriority(n))})}function M(e,t){m(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),m(e,HTMLInputElement)&&t.setAttribute(`value`,e.value)}function N(e,t){if(m(e,HTMLSelectElement)){let n=t,r=Array.from(n.children).find(t=>e.value===t.getAttribute(`value`));r&&r.setAttribute(`selected`,``)}}function P(e,t,n){return m(t,Element)&&(j(e,t,n),ae(e,t,n),M(e,t),N(e,t)),t}async function F(e,t){let n=e.querySelectorAll?e.querySelectorAll(`use`):[];if(n.length===0)return e;let r={};for(let i=0;i<n.length;i++){let a=n[i].getAttribute(`xlink:href`);if(a){let n=e.querySelector(a),i=document.querySelector(a);!n&&i&&!r[a]&&(r[a]=await I(i,t,!0))}}let i=Object.values(r);if(i.length){let t=`http://www.w3.org/1999/xhtml`,n=document.createElementNS(t,`svg`);n.setAttribute(`xmlns`,t),n.style.position=`absolute`,n.style.width=`0`,n.style.height=`0`,n.style.overflow=`hidden`,n.style.display=`none`;let r=document.createElementNS(t,`defs`);n.appendChild(r);for(let e=0;e<i.length;e++)r.appendChild(i[e]);e.appendChild(n)}return e}async function I(e,t,n){return!n&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(e=>D(e,t)).then(n=>A(e,n,t)).then(n=>P(e,n,t)).then(e=>F(e,t))}var L=/url\((['"]?)([^'"]+?)\1\)/g,R=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,z=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function B(e){let t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,`\\$1`);return RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,`g`)}function V(e){let t=[];return e.replace(L,(e,n,r)=>(t.push(r),e)),t.filter(e=>!x(e))}async function H(e,n,r,i,a){try{let o=r?t(n,r):n,s=b(n),c;return c=a?S(await a(o),s):await T(o,s,i),e.replace(B(n),`$1${c}$3`)}catch{}return e}function U(e,{preferredFontFormat:t}){return t?e.replace(z,e=>{for(;;){let[n,,r]=R.exec(e)||[];if(!r)return``;if(r===t)return`src: ${n};`}}):e}function W(e){return e.search(L)!==-1}async function G(e,t,n){if(!W(e))return e;let r=U(e,n);return V(r).reduce((e,r)=>e.then(e=>H(e,r,t,n)),Promise.resolve(r))}async function K(e,t,n){let r=t.style?.getPropertyValue(e);if(r){let i=await G(r,null,n);return t.style.setProperty(e,i,t.style.getPropertyPriority(e)),!0}return!1}async function ue(e,t){await K(`background`,e,t)||await K(`background-image`,e,t),await K(`mask`,e,t)||await K(`-webkit-mask`,e,t)||await K(`mask-image`,e,t)||await K(`-webkit-mask-image`,e,t)}async function de(e,t){let n=m(e,HTMLImageElement);if(!(n&&!x(e.src))&&!(m(e,SVGImageElement)&&!x(e.href.baseVal)))return;let r=n?e.src:e.href.baseVal,i=await T(r,b(r),t);await new Promise((r,a)=>{e.onload=r,e.onerror=t.onImageErrorHandler?(...e)=>{try{r(t.onImageErrorHandler(...e))}catch(e){a(e)}}:a;let o=e;o.decode&&=r,o.loading===`lazy`&&(o.loading=`eager`),n?(e.srcset=``,e.src=i):e.href.baseVal=i})}async function fe(e,t){let n=r(e.childNodes).map(e=>q(e,t));await Promise.all(n).then(()=>e)}async function q(e,t){m(e,Element)&&(await ue(e,t),await de(e,t),await fe(e,t))}function pe(e,t){let{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);let r=t.style;return r!=null&&Object.keys(r).forEach(e=>{n[e]=r[e]}),e}var J={};async function Y(e){let t=J[e];return t??(t={url:e,cssText:await(await fetch(e)).text()},J[e]=t,t)}async function X(e,t){let n=e.cssText,r=/url\(["']?([^"')]+)["']?\)/g,i=(n.match(/url\([^)]+\)/g)||[]).map(async i=>{let a=i.replace(r,`$1`);return a.startsWith(`https://`)||(a=new URL(a,e.url).href),C(a,t.fetchRequestInit,({result:e})=>(n=n.replace(i,`url(${e})`),[i,e]))});return Promise.all(i).then(()=>n)}function Z(e){if(e==null)return[];let t=[],n=e.replace(/(\/\*[\s\S]*?\*\/)/gi,``),r=RegExp(`((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})`,`gi`);for(;;){let e=r.exec(n);if(e===null)break;t.push(e[0])}n=n.replace(r,``);let i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,a=RegExp(`((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})`,`gi`);for(;;){let e=i.exec(n);if(e===null){if(e=a.exec(n),e===null)break;i.lastIndex=a.lastIndex}else a.lastIndex=i.lastIndex;t.push(e[0])}return t}async function me(e,t){let n=[],i=[];return e.forEach(n=>{if(`cssRules`in n)try{r(n.cssRules||[]).forEach((e,r)=>{if(e.type===CSSRule.IMPORT_RULE){let a=r+1,o=e.href,s=Y(o).then(e=>X(e,t)).then(e=>Z(e).forEach(e=>{try{n.insertRule(e,e.startsWith(`@import`)?a+=1:n.cssRules.length)}catch(t){console.error(`Error inserting rule from remote css`,{rule:e,error:t})}})).catch(e=>{console.error(`Error loading remote css`,e.toString())});i.push(s)}})}catch(r){let a=e.find(e=>e.href==null)||document.styleSheets[0];n.href!=null&&i.push(Y(n.href).then(e=>X(e,t)).then(e=>Z(e).forEach(e=>{a.insertRule(e,a.cssRules.length)})).catch(e=>{console.error(`Error loading remote stylesheet`,e)})),console.error(`Error inlining remote css file`,r)}}),Promise.all(i).then(()=>(e.forEach(e=>{if(`cssRules`in e)try{r(e.cssRules||[]).forEach(e=>{n.push(e)})}catch(t){console.error(`Error while reading CSS rules from ${e.href}`,t)}}),n))}function he(e){return e.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>W(e.style.getPropertyValue(`src`)))}async function ge(e,t){if(e.ownerDocument==null)throw Error(`Provided element is not within a Document`);return he(await me(r(e.ownerDocument.styleSheets),t))}function Q(e){return(e||``).trim().replace(/["']/g,``)}function $(e){let t=new Set;function n(e){let r=e.style.fontFamily||getComputedStyle(e).fontFamily;r&&r.split(`,`).forEach(e=>{t.add(Q(e))}),Array.from(e.children).forEach(e=>{e instanceof HTMLElement&&n(e)})}return n(e),t}async function _e(e,t){let n=await ge(e,t),r=$(e);return(await Promise.all(n.filter(e=>r.has(Q(e.style.fontFamily))).map(e=>{let n=e.parentStyleSheet?e.parentStyleSheet.href:null;return G(e.cssText,n,t)}))).join(`
2
2
  `)}async function ve(e,t){let n=t.fontEmbedCSS==null?t.skipFonts?null:await _e(e,t):t.fontEmbedCSS,r=t.extraStyleContent==null?n:(n||``).concat(t.extraStyleContent);if(r){let t=document.createElement(`style`),n=document.createTextNode(r);t.appendChild(n),e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t)}}async function ye(e,t={}){let{width:n,height:r}=l(e,t),i=await I(e,t,!0);return await ve(i,t),await q(i,t),pe(i,t),await p(i,n,r)}async function be(e,t={}){let{width:n,height:r}=l(e,t),i=await d(await ye(e,t)),a=document.createElement(`canvas`),o=a.getContext(`2d`),s=t.pixelRatio||ee(),c=t.canvasWidth||n,u=t.canvasHeight||r;return a.width=c*s,a.height=u*s,t.skipAutoScale||te(a),a.style.width=`${c}`,a.style.height=`${u}`,t.backgroundColor&&(o.fillStyle=t.backgroundColor,o.fillRect(0,0,a.width,a.height)),o.drawImage(i,0,0,a.width,a.height),a}async function xe(e,t={}){return(await be(e,t)).toDataURL()}var Se={filter:t=>{try{if(`classList`in t){let e=t.classList;if(e.contains(`mpl-toolbar`)||e.contains(`print:hidden`))return!1}return!0}catch(t){return e.error(`Error filtering node:`,t),!0}},imagePlaceholder:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQI12NgAAIABQABNjN9GQAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAA0lEQVQI12P4z8BQDwAEgAF/QualIQAAAABJRU5ErkJggg==`,onImageErrorHandler:t=>{e.error(`Error loading image:`,t)},includeStyleProperties:`width.height.min-width.min-height.max-width.max-height.box-sizing.aspect-ratio.display.position.top.left.bottom.right.z-index.float.clear.flex.flex-direction.flex-wrap.flex-grow.flex-shrink.flex-basis.align-items.align-self.justify-content.gap.order.grid-template-columns.grid-template-rows.grid-column.grid-row.row-gap.column-gap.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.font.font-family.font-size.font-weight.font-style.line-height.letter-spacing.word-spacing.text-align.text-decoration.text-transform.text-indent.text-shadow.white-space.text-wrap.word-break.text-overflow.vertical-align.color.background.background-color.background-image.background-size.background-position.background-repeat.background-clip.border.border-width.border-style.border-color.border-top.border-right.border-bottom.border-left.border-radius.outline.box-shadow.text-shadow.opacity.filter.backdrop-filter.mix-blend-mode.transform.clip-path.overflow.overflow-x.overflow-y.visibility.fill.stroke.stroke-width.object-fit.object-position.list-style.list-style-type.border-collapse.border-spacing.content.cursor`.split(`.`)};async function Ce(e,t){return xe(e,{...Se,...t})}export{Ce as t};