@marimo-team/frontend 0.25.3-dev10 → 0.25.3-dev100

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 (452) hide show
  1. package/dist/assets/CellStatus-fK4n2NPc.js +1 -0
  2. package/dist/assets/{ConnectedDataExplorerComponent-t8fH_TNc.js → ConnectedDataExplorerComponent-Dft8R6l5.js} +1 -1
  3. package/dist/assets/{ErrorBoundary-B4n9EnHB.js → ErrorBoundary-CAEGdoFW.js} +2 -2
  4. package/dist/assets/JsonOutput-CyAKmZDD.js +11 -0
  5. package/dist/assets/{LazyAnyLanguageCodeMirror-CKcCbG2G.js → LazyAnyLanguageCodeMirror-BPYE76jR.js} +2 -2
  6. package/dist/assets/MarimoErrorOutput-CgZvP0p0.js +10 -0
  7. package/dist/assets/{RenderHTML-9bMgbYmo.js → RenderHTML-DQvxDDNS.js} +1 -1
  8. package/dist/assets/RunButton-BBDnDL6G.js +1 -0
  9. package/dist/assets/__vite-browser-external-8vDMR0Kk.js +1 -0
  10. package/dist/assets/__vite-browser-external-mKcnhO20.js +1 -0
  11. package/dist/assets/{add-cell-with-ai-f_MnLCwI.js → add-cell-with-ai-Clg5FELx.js} +7 -7
  12. package/dist/assets/{add-connection-dialog-CoE_PhuD.js → add-connection-dialog-BqdWmD-7.js} +2 -2
  13. package/dist/assets/{agent-panel-BWZz24jK.js → agent-panel-5RxG5Y82.js} +3 -3
  14. package/dist/assets/ai-model-dropdown-Bvl1ktQq.js +13 -0
  15. package/dist/assets/{alert-dialog-BaPGzeOK.js → alert-dialog-C-sWmKva.js} +1 -1
  16. package/dist/assets/any-language-editor-DUMe1UCk.js +1 -0
  17. package/dist/assets/{app-config-button-BhU0ulYs.js → app-config-button-0QTeQ2Mv.js} +1 -1
  18. package/dist/assets/arrays-0R2reF2y.js +1 -0
  19. package/dist/assets/{blob-iOBwGaP9.js → blob-5VcB8K_t.js} +1 -1
  20. package/dist/assets/{button-COI-NGrx.js → button-D8gVKwe-.js} +1 -1
  21. package/dist/assets/{cache-panel-DTY1dqvi.js → cache-panel-BV-c7ed0.js} +1 -1
  22. package/dist/assets/{capabilities-BJvf-MD4.js → capabilities-Pq1YNPlK.js} +1 -1
  23. package/dist/assets/cell-editor-Byw5y-oI.js +42 -0
  24. package/dist/assets/cell-link-C5yYyzuF.js +1 -0
  25. package/dist/assets/{cells-rA_jsZCj.js → cells-D_11MjVB.js} +60 -60
  26. package/dist/assets/{chat-display-BmEPmhDP.js → chat-display-BCR_ySiV.js} +1 -1
  27. package/dist/assets/chat-panel-RPRvBsaU.js +4 -0
  28. package/dist/assets/chat-ui-CGviVaRA.js +4 -0
  29. package/dist/assets/{circle-DXf-VWZG.js → circle-B6D_6D8w.js} +1 -1
  30. package/dist/assets/code-visibility-DYDagVy7.js +1 -0
  31. package/dist/assets/coerce-DWjFeXOY.js +1 -0
  32. package/dist/assets/column-preview-xe533-Cn.js +1 -0
  33. package/dist/assets/command-palette-BB9bWdWp.js +1 -0
  34. package/dist/assets/{common-lisZ0l6a.js → common-CaeItbcI.js} +1 -1
  35. package/dist/assets/components-CBE8cOLK.js +1 -0
  36. package/dist/assets/{components-CP_UoFtT.js → components-DCo7mAWO.js} +1 -1
  37. package/dist/assets/{components-Dvd1GnD6.js → components-G6frbw0c.js} +1 -1
  38. package/dist/assets/config-CD1IuZFJ.js +1 -0
  39. package/dist/assets/{config-DJLAC21v.js → config-DMz7oN0r.js} +1 -1
  40. package/dist/assets/config-DpY86_Yq.js +1 -0
  41. package/dist/assets/{copy-D8O_CYCG.js → copy-KlhazlhB.js} +1 -1
  42. package/dist/assets/{copy-icon-BIiRXh_3.js → copy-icon-8-a5vovc.js} +1 -1
  43. package/dist/assets/{createReducer-DgRODTW6.js → createReducer-CaI_Oa0v.js} +1 -1
  44. package/dist/assets/{datasource-Dr1xNKUn.js → datasource-deuXnlU-.js} +1 -1
  45. package/dist/assets/{dates-CfmdTL6B.js → dates-CQMwFko2.js} +1 -1
  46. package/dist/assets/{dependency-graph-panel-B0uP-_id.js → dependency-graph-panel-CIykLnJe.js} +2 -2
  47. package/dist/assets/{dist-iaThVDkA.js → dist-jlhMTKo_.js} +1 -1
  48. package/dist/assets/{documentation-panel-DVl_ebWy.js → documentation-panel-2PQ8kQLa.js} +1 -1
  49. package/dist/assets/{download-Bx55LMki.js → download-dK52bLxZ.js} +1 -1
  50. package/dist/assets/{dropdown-menu-C1rnl-0o.js → dropdown-menu-DS6umAnH.js} +1 -1
  51. package/dist/assets/edit-page-DrElzw10.js +9 -0
  52. package/dist/assets/{error-banner-Cd69vvyX.js → error-banner-B5kzVf_0.js} +1 -1
  53. package/dist/assets/{error-entries-DOWpdGvI.js → error-entries-3GVk2KjS.js} +1 -1
  54. package/dist/assets/{error-panel-DpbNKSLs.js → error-panel-CzDRGPeC.js} +1 -1
  55. package/dist/assets/{errors-DCrsa1nH.js → errors-CNsgAw6m.js} +1 -1
  56. package/dist/assets/{es-Cqst59WX.js → es-N9SHpmG7.js} +1 -1
  57. package/dist/assets/{feedback-button-B99ThNJW.js → feedback-button-C5NgWpFg.js} +2 -2
  58. package/dist/assets/feedback-button-CONwLFpw.js +1 -0
  59. package/dist/assets/file-explorer-panel-B50xDnTZ.js +1 -0
  60. package/dist/assets/{file-name-input-ChnBsDE_.js → file-name-input-DqwMSgGU.js} +1 -1
  61. package/dist/assets/{floating-outline-MYqQW4Vp.js → floating-outline-ChmAuvxz.js} +1 -1
  62. package/dist/assets/{formats-yZ06h1Pl.js → formats-zylfwejq.js} +1 -1
  63. package/dist/assets/{formatting-BqrP-n49.js → formatting-uom1es4b.js} +1 -1
  64. package/dist/assets/{fullscreen-B9tHcfpV.js → fullscreen-BWTs8pYZ.js} +1 -1
  65. package/dist/assets/{gallery-page-DSL0J4md.js → gallery-page-CiL8aMS1.js} +1 -1
  66. package/dist/assets/{ganttDiagram-EL5Y4UJY-2n7Ig5Jm.js → ganttDiagram-EL5Y4UJY-CYqkCfFG.js} +1 -1
  67. package/dist/assets/{glide-data-editor-B1MWlKeM.js → glide-data-editor-CqRclBkp.js} +2 -2
  68. package/dist/assets/{glide-utils-CIrAxdjv.js → glide-utils-HFqhvWHI.js} +2 -2
  69. package/dist/assets/home-page-BgZVl4dP.js +1 -0
  70. package/dist/assets/{hooks-BIogTGCr.js → hooks-DM5n7Osw.js} +1 -1
  71. package/dist/assets/{html-to-image-DK9Zl1lU.js → html-to-image-D_0rd3_B.js} +1 -1
  72. package/dist/assets/index-BnhSnwvB.css +2 -0
  73. package/dist/assets/index-EG2n8Oht.js +30 -0
  74. package/dist/assets/{input-BoBxR50a.js → input-DmHMEZGh.js} +1 -1
  75. package/dist/assets/kiosk-mode-DFS6HopF.js +1 -0
  76. package/dist/assets/layout-BpP8nTjb.js +9 -0
  77. package/dist/assets/linear-Bma8J3iM.js +1 -0
  78. package/dist/assets/links-DX2w97N9.js +1 -0
  79. package/dist/assets/{logs-panel-y0XnfulJ.js → logs-panel-B5eVAZtH.js} +1 -1
  80. package/dist/assets/{markdown-renderer-Q5AhbRU3.js → markdown-renderer-BWUzqkJM.js} +1 -1
  81. package/dist/assets/{menu-items-BrwnTgyK.js → menu-items-BgUyNUpu.js} +1 -1
  82. package/dist/assets/{mermaid-a3xYymTy.js → mermaid-BKXlWk4F.js} +2 -2
  83. package/dist/assets/{name-cell-input-BNOnF6-0.js → name-cell-input-DXW68gRW.js} +1 -1
  84. package/dist/assets/numbers-CsZVw3Dc.js +1 -0
  85. package/dist/assets/{objects-snlMn4yk.js → objects-rLPlQ3X_.js} +1 -1
  86. package/dist/assets/{once-Haz_uxEL.js → once-6KNTRW0u.js} +1 -1
  87. package/dist/assets/{outline-panel-Be7stWwv.js → outline-panel-DPxJhJ_A.js} +1 -1
  88. package/dist/assets/{package-data-dv4FBHxR.js → package-data-CKPmBDtg.js} +1 -1
  89. package/dist/assets/packages-panel-gBE2FWQr.js +1 -0
  90. package/dist/assets/{panel-accordion-state-GeMEdCPw.js → panel-accordion-state-CCF5Gxnc.js} +1 -1
  91. package/dist/assets/panels-Dr6qMCvU.js +105 -0
  92. package/dist/assets/precisionRound-BxlUs8G4.js +1 -0
  93. package/dist/assets/process-output-Cw9IDcKQ.js +1 -0
  94. package/dist/assets/{quadrantDiagram-AXDQQJYC-yBhCDI7E.js → quadrantDiagram-AXDQQJYC-D9KH5Zge.js} +1 -1
  95. package/dist/assets/react-vega-BTNeboR2.js +189 -0
  96. package/dist/assets/{readonly-code-display-YULOXf4h.js → readonly-code-display-DYcZQ28T.js} +1 -1
  97. package/dist/assets/{readonly-python-code-CadgXgRu.js → readonly-python-code-RFuQP50v.js} +1 -1
  98. package/dist/assets/{renderShortcut-BkVJQ_Zh.js → renderShortcut-rUwGqKgC.js} +1 -1
  99. package/dist/assets/{requests-lt0JK8Jt.js → requests-BIFR-h4M.js} +1 -1
  100. package/dist/assets/requests-DuLJN9Tf.js +1 -0
  101. package/dist/assets/{reveal-component-BVAR7ayZ.js → reveal-component-yRrDmCQz.js} +37 -37
  102. package/dist/assets/run-page-B69M4-zE.js +1 -0
  103. package/dist/assets/{runs-BLp5jezv.js → runs-C49hleBy.js} +1 -1
  104. package/dist/assets/{runtime-details-state-DuChzsA6.js → runtime-details-state-pobtu6TO.js} +1 -1
  105. package/dist/assets/{save-worker-BbUSwZRG.js → save-worker-pCkSHhuz.js} +1 -1
  106. package/dist/assets/{schemas-Dv42wLFq.js → schemas-ChRqMOTL.js} +1 -1
  107. package/dist/assets/scratchpad-panel-H44_pvb_.js +1 -0
  108. package/dist/assets/{scroll-to-bottom-button-1FyowpWV.js → scroll-to-bottom-button-CIkON2WJ.js} +1 -1
  109. package/dist/assets/{secrets-panel-Bctbtkrp.js → secrets-panel-bcfEKxRx.js} +1 -1
  110. package/dist/assets/{select-DTBn5eTb.js → select-3CVGlYrC.js} +1 -1
  111. package/dist/assets/{session-DqoWmb7X.js → session-CMLIzZKw.js} +1 -1
  112. package/dist/assets/session-panel-Bnd1iXkO.js +1 -0
  113. package/dist/assets/{snippets-panel-CQ1dn3lA.js → snippets-panel-DKApxKx9.js} +1 -1
  114. package/dist/assets/{spec-BfSBcO5B.js → spec-uCpVvaAR.js} +1 -1
  115. package/dist/assets/{state-uwRvJLb8.js → state-3mcyTS9q.js} +1 -1
  116. package/dist/assets/state-B_MCKzBL.js +1 -0
  117. package/dist/assets/state-Bl9BiY_s.js +3 -0
  118. package/dist/assets/{state-C3oDoyFe.js → state-C5WAeuTu.js} +1 -1
  119. package/dist/assets/{state-DxQnC_1I.js → state-Cv2JW3l9.js} +1 -1
  120. package/dist/assets/{state-Bfh_2SLl.js → state-Dv059B3A.js} +1 -1
  121. package/dist/assets/{strings-B2vv-ENv.js → strings-C25fhMR_.js} +1 -1
  122. package/dist/assets/{swiper-component-a07domrZ.js → swiper-component-CRGRy5_O.js} +1 -1
  123. package/dist/assets/{switch-CTaiAjrz.js → switch-DYjBfpNJ.js} +1 -1
  124. package/dist/assets/{tabs-BuQlZFbt.js → tabs-CY8E4r9U.js} +1 -1
  125. package/dist/assets/{terminal-Ck_vK-34.js → terminal-Ca-kubKb.js} +1 -1
  126. package/dist/assets/{time-MgToa8VM.js → time-DswSXBDk.js} +1 -1
  127. package/dist/assets/{toast-BGzLGnvw.js → toast-Gzxi-le_.js} +1 -1
  128. package/dist/assets/tooltip-Brya4Ghn.js +61 -0
  129. package/dist/assets/{tooltip-C9TuY18o.js → tooltip-CkGm8X7m.js} +1 -1
  130. package/dist/assets/tracing-Clwy4SlW.js +1 -0
  131. package/dist/assets/tracing-panel-BwjLG_aC.js +2 -0
  132. package/dist/assets/{tree-actions-DAd80MbP.js → tree-actions-BZNTQ12N.js} +1 -1
  133. package/dist/assets/{use-restore-focus-BxEGwIbk.js → use-restore-focus-DdS7Tl0F.js} +1 -1
  134. package/dist/assets/{useAddCell-DGstJK0S.js → useAddCell-Cjuqk2YR.js} +1 -1
  135. package/dist/assets/useAsyncData-qvoPYHtx.js +1 -0
  136. package/dist/assets/useBoolean-Dd2nWXFJ.js +1 -0
  137. package/dist/assets/useCellActionButton-MoWLvuGe.js +1 -0
  138. package/dist/assets/useDebounce-DwTQ_1Pu.js +1 -0
  139. package/dist/assets/{useDeepCompareMemoize-DFIVN9dn.js → useDeepCompareMemoize-B2DVK2De.js} +1 -1
  140. package/dist/assets/useDelayElapsed-BlsDT4TV.js +1 -0
  141. package/dist/assets/{useDeleteCell-DFBGlSQk.js → useDeleteCell-BC-MW7d1.js} +1 -1
  142. package/dist/assets/{useDependencyPanelTab-DydxsE5d.js → useDependencyPanelTab-CZU7i-B3.js} +1 -1
  143. package/dist/assets/{useEvent-Dfcbgjhg.js → useEvent-BDjgaBtz.js} +1 -1
  144. package/dist/assets/{useEventListener-D9cftcHj.js → useEventListener-CjDeLqFC.js} +1 -1
  145. package/dist/assets/{useIframeCapabilities-CwTkczVN.js → useIframeCapabilities-Czr9e4uG.js} +1 -1
  146. package/dist/assets/{useInstallPackage-iX1eufdl.js → useInstallPackage-wcDq9hYT.js} +1 -1
  147. package/dist/assets/{useInterval--x3s1VpI.js → useInterval-DJdQmXnq.js} +1 -1
  148. package/dist/assets/useNotebookActions-wFxVdRXQ.js +1 -0
  149. package/dist/assets/{useRunCells-BFjFX3hz.js → useRunCells-ByaWxoIt.js} +1 -1
  150. package/dist/assets/{useSplitCell-Tqv5pPtL.js → useSplitCell-YJIystwv.js} +1 -1
  151. package/dist/assets/useStateForKey-CGMJQT8x.js +1 -0
  152. package/dist/assets/{useTheme-COhSHkCj.js → useTheme-BAA27lh7.js} +1 -1
  153. package/dist/assets/{utils-CaQYvazl.js → utils-DfElfBpz.js} +1 -1
  154. package/dist/assets/vega-component-BeyxAJad.js +1 -0
  155. package/dist/assets/{vega-embed-container-DJPNkHPb.js → vega-embed-container-DtArSJz1.js} +1 -1
  156. package/dist/assets/vega-loader.browser-Bu25TKax.js +6 -0
  157. package/dist/assets/{worker-DTQ7oH2A.js → worker-bSCjCvwz.js} +1 -1
  158. package/dist/assets/{write-secret-modal-DzKAInL2.js → write-secret-modal-BEx-EUlh.js} +1 -1
  159. package/dist/assets/{xychartDiagram-S5SC5T6Z-KbGzG6-u.js → xychartDiagram-S5SC5T6Z-CeRnBS5e.js} +1 -1
  160. package/dist/index.html +80 -78
  161. package/package.json +7 -7
  162. package/src/__tests__/host-imports.test.ts +1 -0
  163. package/src/components/app-config/ai-config.tsx +7 -2
  164. package/src/components/chat/__tests__/message-queue.test.tsx +17 -0
  165. package/src/components/chat/acp/__tests__/state.test.ts +2 -2
  166. package/src/components/chat/acp/blocks.tsx +2 -2
  167. package/src/components/chat/chat-components.tsx +2 -0
  168. package/src/components/chat/chat-panel.tsx +9 -8
  169. package/src/components/chat/chat-utils.ts +4 -8
  170. package/src/components/data-table/__tests__/column-explorer.test.tsx +27 -1
  171. package/src/components/data-table/__tests__/columns.test.tsx +105 -0
  172. package/src/components/data-table/__tests__/context-menu-interaction.test.tsx +130 -0
  173. package/src/components/data-table/__tests__/date-popover.test.tsx +72 -0
  174. package/src/components/data-table/__tests__/export-actions.test.tsx +105 -0
  175. package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
  176. package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
  177. package/src/components/data-table/cell-selection/feature.ts +2 -2
  178. package/src/components/data-table/cell-selection/types.ts +2 -2
  179. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +74 -1
  180. package/src/components/data-table/charts/__tests__/storage.test.ts +4 -1
  181. package/src/components/data-table/charts/charts.tsx +35 -25
  182. package/src/components/data-table/charts/storage.ts +16 -5
  183. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  184. package/src/components/data-table/column-summary/column-summary.tsx +2 -4
  185. package/src/components/data-table/column-visibility-dropdown.tsx +8 -13
  186. package/src/components/data-table/columns.tsx +45 -46
  187. package/src/components/data-table/context-menu.tsx +36 -20
  188. package/src/components/data-table/data-table.tsx +7 -1
  189. package/src/components/data-table/date-popover.tsx +6 -4
  190. package/src/components/data-table/export-actions.tsx +76 -48
  191. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +2 -2
  192. package/src/components/data-table/search-highlight.tsx +79 -0
  193. package/src/components/data-table/types.ts +1 -0
  194. package/src/components/data-table/url-detector.tsx +49 -9
  195. package/src/components/datasources/__tests__/column-actions.test.tsx +97 -0
  196. package/src/components/datasources/__tests__/column-preview.test.tsx +63 -2
  197. package/src/components/datasources/__tests__/table-list.test.tsx +118 -0
  198. package/src/components/datasources/column-preview.tsx +8 -2
  199. package/src/components/datasources/datasources.tsx +47 -35
  200. package/src/components/debugger/debugger-code.tsx +5 -0
  201. package/src/components/dependency-graph/panels.tsx +2 -1
  202. package/src/components/editor/SortableCell.tsx +1 -3
  203. package/src/components/editor/__tests__/dynamic-favicon.test.tsx +111 -18
  204. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +24 -0
  205. package/src/components/editor/actions/pair-with-agent-modal.tsx +18 -15
  206. package/src/components/editor/ai/add-cell-with-ai.tsx +3 -3
  207. package/src/components/editor/ai/ai-completion-editor.tsx +1 -0
  208. package/src/components/editor/alerts/startup-logs-alert.tsx +1 -0
  209. package/src/components/editor/cell/CreateCellButton.tsx +8 -10
  210. package/src/components/editor/cell/DeleteButton.tsx +1 -0
  211. package/src/components/editor/cell/__tests__/useShouldShowInterrupt.test.ts +39 -0
  212. package/src/components/editor/cell/code/__tests__/language-toggle.test.tsx +54 -0
  213. package/src/components/editor/cell/code/cell-editor.tsx +1 -1
  214. package/src/components/editor/cell/code/language-toggle.tsx +8 -7
  215. package/src/components/editor/cell/useShouldShowInterrupt.ts +2 -12
  216. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +30 -1
  217. package/src/components/editor/chrome/panels/cache-panel.tsx +1 -0
  218. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -7
  219. package/src/components/editor/chrome/wrapper/__tests__/attachment-status.test.tsx +12 -18
  220. package/src/components/editor/chrome/wrapper/__tests__/pending-ai-cells.test.tsx +58 -1
  221. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +1 -7
  222. package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +12 -2
  223. package/src/components/editor/chrome/wrapper/storage.ts +1 -1
  224. package/src/components/editor/connections/components.tsx +1 -1
  225. package/src/components/editor/controls/__tests__/command-palette.test.tsx +53 -0
  226. package/src/components/editor/controls/command-palette.tsx +22 -10
  227. package/src/components/editor/dynamic-favicon.tsx +21 -40
  228. package/src/components/editor/errors/__tests__/send-error-report-button.test.tsx +12 -23
  229. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +6 -0
  230. package/src/components/editor/file-tree/__tests__/use-file-search.test.tsx +91 -0
  231. package/src/components/editor/file-tree/file-explorer.tsx +10 -5
  232. package/src/components/editor/file-tree/file-viewer.tsx +4 -2
  233. package/src/components/editor/file-tree/use-file-search.ts +35 -21
  234. package/src/components/editor/notebook-banner.tsx +1 -0
  235. package/src/components/editor/output/MarimoTracebackOutput.tsx +2 -2
  236. package/src/components/editor/output/ansi-reduce.ts +6 -0
  237. package/src/components/editor/output/console/ConsoleOutput.tsx +19 -25
  238. package/src/components/editor/package-alert.tsx +6 -4
  239. package/src/components/editor/renderers/vertical-layout/sidebar/toggle.tsx +7 -1
  240. package/src/components/home/components.tsx +17 -31
  241. package/src/components/icons/__tests__/large-spinner.test.tsx +39 -0
  242. package/src/components/icons/large-spinner.tsx +3 -14
  243. package/src/components/icons/spinner.tsx +1 -1
  244. package/src/components/mcp/mcp-status-indicator.tsx +1 -1
  245. package/src/components/pages/__tests__/home-page.test.tsx +116 -0
  246. package/src/components/pages/home-page.tsx +164 -91
  247. package/src/components/scratchpad/scratchpad.tsx +2 -2
  248. package/src/components/slides/reveal-component.tsx +4 -2
  249. package/src/components/slides/slide-cell-view.tsx +1 -1
  250. package/src/components/slides/slide-form.tsx +1 -0
  251. package/src/components/tracing/tracing.tsx +2 -2
  252. package/src/components/ui/alert-dialog.tsx +1 -1
  253. package/src/core/ai/context/providers/datasource.ts +6 -2
  254. package/src/core/attachments/state.ts +5 -8
  255. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +4 -0
  256. package/src/core/cells/__tests__/cell.test.ts +39 -0
  257. package/src/core/cells/__tests__/cells.test.ts +3 -1
  258. package/src/core/cells/__tests__/collapseConsoleOutputs.test.ts +54 -0
  259. package/src/core/cells/__tests__/notebook-outline.test.ts +113 -0
  260. package/src/core/cells/cell.ts +14 -3
  261. package/src/core/cells/cells.ts +3 -1
  262. package/src/core/cells/pending-delete-service.ts +2 -6
  263. package/src/core/cells/session.ts +1 -1
  264. package/src/core/cells/types.ts +10 -1
  265. package/src/core/codemirror/__tests__/setup.test.ts +1 -1
  266. package/src/core/codemirror/keymaps/vim.ts +2 -6
  267. package/src/core/codemirror/language/languages/markdown.ts +1 -1
  268. package/src/core/codemirror/language/languages/python.ts +3 -3
  269. package/src/core/codemirror/language/panel/panel.tsx +1 -0
  270. package/src/core/datasets/__tests__/data-source-discovery.test.ts +4 -4
  271. package/src/core/datasets/data-source-discovery.ts +4 -6
  272. package/src/core/document/__tests__/draft.test.ts +322 -0
  273. package/src/core/document/__tests__/fixtures.ts +92 -0
  274. package/src/core/document/__tests__/model.test.ts +483 -0
  275. package/src/core/document/__tests__/state.test.ts +446 -0
  276. package/src/core/document/__tests__/submission.test.ts +346 -0
  277. package/src/core/document/draft.ts +472 -0
  278. package/src/core/document/index.ts +10 -0
  279. package/src/core/document/model.ts +53 -0
  280. package/src/core/document/state.ts +401 -0
  281. package/src/core/document/sync.ts +359 -0
  282. package/src/core/edit-app.tsx +2 -2
  283. package/src/core/host/AGENTS.md +12 -2
  284. package/src/core/host/__tests__/attachments.test.ts +56 -0
  285. package/src/core/host/__tests__/document.test.ts +126 -0
  286. package/src/core/host/__tests__/fixtures.ts +41 -0
  287. package/src/core/host/__tests__/notebook-client.test.ts +570 -0
  288. package/src/core/host/connection.ts +42 -0
  289. package/src/core/host/notebook-client.ts +297 -0
  290. package/src/core/host/resources/attachments.ts +22 -0
  291. package/src/core/host/resources/document.ts +101 -0
  292. package/src/core/hotkeys/actions.ts +2 -4
  293. package/src/core/islands/__tests__/bootstrap.test.ts +0 -26
  294. package/src/core/islands/bootstrap.ts +0 -1
  295. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  296. package/src/core/network/connection.ts +4 -2
  297. package/src/core/network/useConnectionNotice.ts +8 -2
  298. package/src/core/run-app.tsx +2 -2
  299. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  300. package/src/core/runtime/__tests__/runtime.test.ts +18 -17
  301. package/src/core/runtime/runtime.ts +26 -30
  302. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  303. package/src/core/state/jotai.ts +1 -1
  304. package/src/core/static/files.ts +2 -0
  305. package/src/core/wasm/bridge.ts +2 -10
  306. package/src/core/wasm/store.ts +3 -3
  307. package/src/core/wasm/worker/bootstrap.ts +1 -1
  308. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  309. package/src/core/websocket/__tests__/{useMarimoKernelConnection.test.ts → connection-state.test.ts} +15 -29
  310. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +223 -0
  311. package/src/core/websocket/__tests__/useNotebookSession.hook.test.tsx +606 -0
  312. package/src/core/websocket/connection-state.ts +60 -0
  313. package/src/core/websocket/state.ts +7 -0
  314. package/src/core/websocket/transports/__tests__/notebook.test.ts +502 -0
  315. package/src/core/websocket/transports/notebook.ts +213 -0
  316. package/src/core/websocket/types.ts +9 -39
  317. package/src/core/websocket/useNotebookClient.ts +89 -0
  318. package/src/core/websocket/{useMarimoKernelConnection.tsx → useNotebookSession.tsx} +53 -233
  319. package/src/css/globals.css +5 -0
  320. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  321. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  322. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  323. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  324. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  325. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  326. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  327. package/src/hooks/useAsyncData.ts +3 -3
  328. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  329. package/src/hooks/useDebounce.ts +5 -8
  330. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  331. package/src/hooks/useDelayElapsed.ts +14 -10
  332. package/src/hooks/useElapsedTime.ts +3 -3
  333. package/src/hooks/useInputHistory.ts +4 -7
  334. package/src/hooks/useInternalStateWithSync.ts +6 -6
  335. package/src/hooks/useResizeObserver.ts +4 -7
  336. package/src/hooks/useScript.ts +67 -70
  337. package/src/hooks/useStateForKey.ts +93 -0
  338. package/src/plugins/core/registerReactComponent.tsx +1 -1
  339. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  340. package/src/plugins/impl/DataTablePlugin.tsx +14 -15
  341. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  342. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  343. package/src/plugins/impl/FormPlugin.tsx +1 -1
  344. package/src/plugins/impl/RangeSliderPlugin.tsx +0 -1
  345. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  346. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  347. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +117 -1
  348. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  349. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  350. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +2 -0
  351. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  352. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  353. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  354. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  355. package/src/plugins/impl/chat/chat-ui.tsx +12 -10
  356. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  357. package/src/plugins/impl/data-editor/glide-data-editor.tsx +8 -5
  358. package/src/plugins/impl/data-editor/glide-utils.ts +3 -1
  359. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  360. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  361. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +0 -1
  362. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  363. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  364. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  365. package/src/plugins/impl/panel/utils.ts +17 -0
  366. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  367. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  368. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  369. package/src/stories/button.stories.tsx +1 -0
  370. package/src/stories/editor.stories.tsx +24 -17
  371. package/src/stories/form-wrapper.stories.tsx +2 -2
  372. package/src/stories/select.stories.tsx +2 -2
  373. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  374. package/src/utils/__tests__/arrays.test.ts +35 -0
  375. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  376. package/src/utils/__tests__/numbers.test.ts +48 -1
  377. package/src/utils/__tests__/objects.test.ts +21 -0
  378. package/src/utils/arrays.ts +10 -0
  379. package/src/utils/blob.ts +1 -1
  380. package/src/utils/numbers.ts +28 -17
  381. package/src/utils/objects.ts +3 -7
  382. package/src/utils/once.ts +19 -19
  383. package/src/utils/zod-utils.ts +1 -3
  384. package/dist/assets/CellStatus-nZpuDkm7.js +0 -1
  385. package/dist/assets/JsonOutput-BxB0NL8w.js +0 -11
  386. package/dist/assets/MarimoErrorOutput-BTy4MOzX.js +0 -10
  387. package/dist/assets/RunButton-CFQUNN5c.js +0 -1
  388. package/dist/assets/__vite-browser-external-CYO_P3S8.js +0 -1
  389. package/dist/assets/__vite-browser-external-FeDVGZU8.js +0 -1
  390. package/dist/assets/ai-model-dropdown-zm-2fXzf.js +0 -13
  391. package/dist/assets/any-language-editor-BLCAD3yx.js +0 -1
  392. package/dist/assets/arrays-BqUx5USx.js +0 -1
  393. package/dist/assets/cell-editor-CAj1UKxx.js +0 -21
  394. package/dist/assets/cell-link-1CynTVGQ.js +0 -1
  395. package/dist/assets/chat-panel-Ce2Xh7dM.js +0 -4
  396. package/dist/assets/chat-ui-DTy98rP3.js +0 -4
  397. package/dist/assets/circle-play-CYIb0qT6.js +0 -1
  398. package/dist/assets/code-visibility-B-_GvwR5.js +0 -1
  399. package/dist/assets/coerce-CpE6kUdX.js +0 -1
  400. package/dist/assets/column-preview-DU6dT80y.js +0 -1
  401. package/dist/assets/command-palette-BMqFKXVr.js +0 -1
  402. package/dist/assets/components-CXfO-F47.js +0 -1
  403. package/dist/assets/config-DX8Y2WbJ.js +0 -1
  404. package/dist/assets/config-VPSq73n8.js +0 -1
  405. package/dist/assets/edit-page-DlfCLUaq.js +0 -9
  406. package/dist/assets/feedback-button-DlqZkJwz.js +0 -1
  407. package/dist/assets/file-explorer-panel-Bo9eN3rW.js +0 -1
  408. package/dist/assets/home-page-KrhQ55Vg.js +0 -4
  409. package/dist/assets/index-6b4mf8Ai.css +0 -2
  410. package/dist/assets/index-B3fcrmuf.js +0 -30
  411. package/dist/assets/kiosk-mode-BZECfg9k.js +0 -1
  412. package/dist/assets/layout-DOpdUwym.js +0 -9
  413. package/dist/assets/linear-0eij_aAG.js +0 -1
  414. package/dist/assets/link-NuFVR7G9.js +0 -1
  415. package/dist/assets/links-DkkL9DVa.js +0 -1
  416. package/dist/assets/numbers-Mk3-CcoU.js +0 -1
  417. package/dist/assets/packages-panel-ClxOAEGy.js +0 -1
  418. package/dist/assets/panels-DfCmzLtT.js +0 -4
  419. package/dist/assets/precisionRound-Bq_nmf5u.js +0 -1
  420. package/dist/assets/process-output-DNFKMODr.js +0 -1
  421. package/dist/assets/react-vega-C3rYGtP6.js +0 -189
  422. package/dist/assets/requests-CgSY1X4a.js +0 -1
  423. package/dist/assets/run-page-Cxu1yV8Q.js +0 -1
  424. package/dist/assets/scratchpad-panel-By-ybhjg.js +0 -1
  425. package/dist/assets/session-panel-BmW6PH4z.js +0 -1
  426. package/dist/assets/state-BAJYRhmO.js +0 -1
  427. package/dist/assets/state-z3dlofZB.js +0 -3
  428. package/dist/assets/tooltip-mT3CGest.js +0 -61
  429. package/dist/assets/tracing-BARlJ_Dk.js +0 -1
  430. package/dist/assets/tracing-panel-dgnr2fIN.js +0 -2
  431. package/dist/assets/useAsyncData-C7aJJz0Y.js +0 -1
  432. package/dist/assets/useBoolean-BDD6_xQQ.js +0 -1
  433. package/dist/assets/useCellActionButton-DY9RlJTb.js +0 -1
  434. package/dist/assets/useDebounce-B_ccBZTp.js +0 -1
  435. package/dist/assets/useNotebookActions-DfvB7RD_.js +0 -1
  436. package/dist/assets/vega-component-CnadTgoE.js +0 -1
  437. package/dist/assets/vega-loader.browser-CLRkNgm7.js +0 -6
  438. package/dist/assets/ws-BXWY541V.js +0 -22
  439. package/src/core/host/__tests__/protocol.test.ts +0 -214
  440. package/src/core/host/protocol.ts +0 -1943
  441. package/src/core/state/__tests__/jotai.test.ts +0 -25
  442. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +0 -789
  443. package/src/core/websocket/__tests__/useWebSocket.test.ts +0 -49
  444. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  445. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -338
  446. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  447. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  448. package/src/core/websocket/transports/basic.ts +0 -102
  449. package/src/core/websocket/transports/sse.ts +0 -308
  450. package/src/core/websocket/transports/transport.ts +0 -61
  451. package/src/core/websocket/transports/ws.ts +0 -98
  452. package/src/core/websocket/useWebSocket.tsx +0 -88
@@ -0,0 +1 @@
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,t as n,u as r}from"./useEvent-BDjgaBtz.js";import{t as i}from"./react-DVplv7_D.js";import{Bn as a,Qr as o,Ya as s}from"./cells-D_11MjVB.js";import{t as c}from"./compiler-runtime-BrajqUja.js";import{_ as l}from"./useEventListener-CjDeLqFC.js";import{l as u,n as d,s as f,t as p,y as m}from"./session-CMLIzZKw.js";import{O as h}from"./config-CD1IuZFJ.js";import{t as g}from"./ErrorBoundary-CAEGdoFW.js";import{t as _}from"./cn-ldLVeaqm.js";import{t as v}from"./jsx-runtime-B74pBk57.js";import{o as y}from"./alert-dialog-C-sWmKva.js";import{c as b}from"./dropdown-menu-DS6umAnH.js";import{d as x}from"./select-3CVGlYrC.js";import{i as S,n as C,r as w,t as T}from"./tabs-CY8E4r9U.js";import{t as E}from"./tooltip-CkGm8X7m.js";import{t as D}from"./button-D8gVKwe-.js";import{n as O}from"./paths-bkIFVj8h.js";import{n as k,r as A,t as j}from"./components-CBE8cOLK.js";import{a as M}from"./useNumberFormatter-D7O_26UI.js";import{t as N}from"./chevron-right-eAtVhbNZ.js";import{o as P,s as F}from"./tree-actions-BZNTQ12N.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-BEx-EUlh.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 K,t as q,u as ee}from"./file-name-input-DqwMSgGU.js";import{t as te}from"./plus-C5silF6g.js";import{n as ne,r as re,t as ie}from"./app-config-button-0QTeQ2Mv.js";import{r as ae,rn as oe}from"./input-DmHMEZGh.js";import{t as se}from"./use-toast-Wu434mLr.js";import{r as J}from"./requests-BIFR-h4M.js";import{t as ce}from"./I18nProvider-Cg2I_s1_.js";import{n as Y,t as le}from"./useAsyncData-qvoPYHtx.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 X=c(),Z=e(i(),1),he=Z.createContext({runningNotebooks:new Map,setRunningNotebooks:l.NOOP}),Q=Z.createContext({root:``,refreshWorkspace:l.NOOP}),ge=h(`marimo:home:include-markdown`,!1,o,{getOnInit:!0}),_e=h(`marimo:home:expanded-folders`,{},o,{getOnInit:!0}),$=v();function ve(e){return`${p()}-${encodeURIComponent(e)}`}var ye=`-mb-px rounded-none border-b-2 border-transparent px-1 py-3 text-(--gray-11) transition-colors hover:text-foreground focus-visible:ring-inset focus-visible:ring-offset-0 data-[state=active]:border-(--green-11) data-[state=active]:bg-transparent data-[state=active]:text-(--green-11) data-[state=active]:shadow-none`,be=()=>{let e=(0,X.c)(74),[t,n]=(0,Z.useState)(0),{getRecentFiles:r,getRunningNotebooks:i}=J(),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=Y(a,o),c,l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{n(je)},l={delayMs:1e4,whenVisible:!0},e[3]=c,e[4]=l):(c=e[3],l=e[4]),me(c,l);let u;e[5]===i?u=e[6]:(u=async()=>{let e=await i();return P.keyBy(e.files,Me)},e[5]=i,e[6]=u);let d;e[7]===t?d=e[8]:(d=[t],e[7]=t,e[8]=d);let f=Y(u,d),p,m,h,_,v,y,b,x,E,D,O,A,M,N,F,I,L,R;if(e[9]!==s||e[10]!==f){N=Symbol.for(`react.early_return_sentinel`);bb0:{let t=le(s,f);if(t.error)throw t.error;let n=t.data;if(!n){let t;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(B,{centered:!0,size:`xlarge`}),e[29]=t):t=e[29],N=t;break bb0}let[r,i]=n;v=Z.Suspense,_=he,M={runningNotebooks:i,setRunningNotebooks:f.setData},O=`min-h-screen bg-background`;let a;e[30]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(`img`,{src:`logo.png`,alt:`marimo`,className:`w-28`}),e[30]=a):a=e[30];let o;e[31]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(ie,{showAppConfig:!1}),e[31]=o):o=e[31];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[32]===c?A=e[33]:(A=(0,$.jsx)(`header`,{className:`border-b border-border/60`,children:(0,$.jsxs)(`div`,{className:`mx-auto flex max-w-7xl items-center justify-between gap-4 px-5 py-5 sm:px-10`,children:[a,(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[o,(0,$.jsx)(ne,{description:c})]})]})}),e[32]=c,e[33]=A),E=`mx-auto max-w-7xl px-5 py-8 sm:px-10 sm:py-10`;let l,u;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Your notebooks`}),u=(0,$.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Pick up where you left off, or start something new.`}),e[34]=l,e[35]=u):(l=e[34],u=e[35]),e[36]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsxs)(`div`,{className:`mb-8`,children:[l,u,(0,$.jsxs)(`div`,{className:`mt-5 flex items-center gap-3`,children:[(0,$.jsx)(Ae,{}),(0,$.jsx)(j,{})]})]}),e[36]=D):D=e[36],h=T,R=`workspace`;let d,k;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(S,{value:`workspace`,className:ye,children:`Workspace`}),k=(0,$.jsx)(S,{value:`recent`,className:ye,children:`Recent`}),e[37]=d,e[38]=k):(d=e[37],k=e[38]);let P=(0,$.jsxs)(S,{value:`running`,className:ye,children:[`Running`,(0,$.jsx)(`span`,{className:`ml-1.5 text-xs font-normal tabular-nums text-(--gray-11)`,children:i.size})]});e[39]===P?y=e[40]:(y=(0,$.jsxs)(w,{"aria-label":`Notebooks`,className:`mb-5 flex h-auto w-full justify-start gap-6 rounded-none border-b border-border/70 bg-transparent p-0`,children:[d,k,P]}),e[39]=P,e[40]=y),e[41]===s.refetch?b=e[42]:(b=(0,$.jsx)(C,{value:`workspace`,forceMount:!0,className:`mt-0 data-[state=inactive]:hidden`,children:(0,$.jsx)(g,{children:(0,$.jsx)(xe,{onRefreshRecents:s.refetch})})}),e[41]=s.refetch,e[42]=b),x=(0,$.jsx)(C,{value:`recent`,className:`mt-0`,children:(0,$.jsx)(De,{files:r.files,emptyMessage:`Notebooks you open will appear here.`})}),m=C,I=`running`,L=`mt-0`,p=De,F=[...i.values()]}e[9]=s,e[10]=f,e[11]=p,e[12]=m,e[13]=h,e[14]=_,e[15]=v,e[16]=y,e[17]=b,e[18]=x,e[19]=E,e[20]=D,e[21]=O,e[22]=A,e[23]=M,e[24]=N,e[25]=F,e[26]=I,e[27]=L,e[28]=R}else p=e[11],m=e[12],h=e[13],_=e[14],v=e[15],y=e[16],b=e[17],x=e[18],E=e[19],D=e[20],O=e[21],A=e[22],M=e[23],N=e[24],F=e[25],I=e[26],L=e[27],R=e[28];if(N!==Symbol.for(`react.early_return_sentinel`))return N;let z;e[43]!==p||e[44]!==F?(z=(0,$.jsx)(p,{files:F,emptyMessage:`No notebooks are running.`}),e[43]=p,e[44]=F,e[45]=z):z=e[45];let V;e[46]!==m||e[47]!==z||e[48]!==I||e[49]!==L?(V=(0,$.jsx)(m,{value:I,className:L,children:z}),e[46]=m,e[47]=z,e[48]=I,e[49]=L,e[50]=V):V=e[50];let H;e[51]!==h||e[52]!==y||e[53]!==b||e[54]!==x||e[55]!==V||e[56]!==R?(H=(0,$.jsxs)(h,{defaultValue:R,children:[y,b,x,V]}),e[51]=h,e[52]=y,e[53]=b,e[54]=x,e[55]=V,e[56]=R,e[57]=H):H=e[57];let U;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,$.jsx)(k,{}),e[58]=U):U=e[58];let W;e[59]!==E||e[60]!==D||e[61]!==H?(W=(0,$.jsxs)(`main`,{className:E,children:[D,H,U]}),e[59]=E,e[60]=D,e[61]=H,e[62]=W):W=e[62];let G;e[63]!==O||e[64]!==A||e[65]!==W?(G=(0,$.jsxs)(`div`,{className:O,children:[A,W]}),e[63]=O,e[64]=A,e[65]=W,e[66]=G):G=e[66];let K;e[67]!==_||e[68]!==M||e[69]!==G?(K=(0,$.jsx)(_,{value:M,children:G}),e[67]=_,e[68]=M,e[69]=G,e[70]=K):K=e[70];let q;return e[71]!==v||e[72]!==K?(q=(0,$.jsx)(v,{children:K}),e[71]=v,e[72]=K,e[73]=q):q=e[73],q},xe=e=>{let r=(0,X.c)(55),{onRefreshRecents:i}=e,{getWorkspaceFiles:o}=J(),[c,l]=t(ge),[u,d]=(0,Z.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}=Y(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 S=h?.root??``,C;r[8]!==b||r[9]!==S?(C={root:S,refreshWorkspace:b},r[8]=b,r[9]=S,r[10]=C):C=r[10];let w=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 T;r[16]!==h.fileCount||r[17]!==h.hasMore?(T=h.hasMore&&(0,$.jsx)(A,{fileCount:h.fileCount}),r[16]=h.fileCount,r[17]=h.hasMore,r[18]=T):T=r[18];let E,O;r[19]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(oe,{size:15}),O=e=>d(e.target.value),r[19]=E,r[20]=O):(E=r[19],O=r[20]);let k;r[21]===u?k=r[22]:(k=(0,$.jsx)(`div`,{className:`min-w-40 flex-1`,children:(0,$.jsx)(ae,{id:`search`,"aria-label":`Search workspace`,value:u,icon:E,onChange:O,placeholder:`Find a notebook…`,className:`mb-0 h-9 rounded-md border-border/60 bg-background font-sans shadow-none hover:shadow-none focus-visible:shadow-none`})}),r[21]=u,r[22]=k);let j;r[23]===v?j=r[24]:(j=()=>v(),r[23]=v,r[24]=j);let M;r[25]===_?M=r[26]:(M=_?(0,$.jsx)(B,{size:`small`}):(0,$.jsx)(s,{className:`w-4 h-4`}),r[25]=_,r[26]=M);let N;r[27]!==j||r[28]!==M?(N=(0,$.jsx)(D,{variant:`ghost`,size:`icon`,onClick:j,"aria-label":`Refresh workspace`,children:M}),r[27]=j,r[28]=M,r[29]=N):N=r[29];let P;r[30]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,$.jsx)(Se,{}),r[30]=P):P=r[30];let F;r[31]===l?F=r[32]:(F=e=>l(!!e),r[31]=l,r[32]=F);let I;r[33]!==c||r[34]!==F?(I=(0,$.jsx)(a,{"data-testid":`include-markdown-checkbox`,id:`include-markdown`,checked:c,onCheckedChange:F}),r[33]=c,r[34]=F,r[35]=I):I=r[35];let L;r[36]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,$.jsx)(x,{htmlFor:`include-markdown`,className:`text-xs text-muted-foreground`,children:`Include markdown`}),r[36]=L):L=r[36];let R;r[37]===I?R=r[38]:(R=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[I,L]}),r[37]=I,r[38]=R);let z;r[39]!==N||r[40]!==R||r[41]!==k?(z=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 border-b border-border/60 bg-muted/20 p-3`,children:[k,N,P,R]}),r[39]=N,r[40]=R,r[41]=k,r[42]=z):z=r[42];let V;r[43]!==u||r[44]!==h.files?(V=(0,$.jsx)(Ce,{searchText:u,files:h.files}),r[43]=u,r[44]=h.files,r[45]=V):V=r[45];let H;r[46]!==z||r[47]!==V?(H=(0,$.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/70 bg-background`,children:[z,V]}),r[46]=z,r[47]=V,r[48]=H):H=r[48];let U;r[49]!==H||r[50]!==T?(U=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[T,H]}),r[49]=H,r[50]=T,r[51]=U):U=r[51];let W;return r[52]!==U||r[53]!==w?(W=(0,$.jsx)(Q,{value:w,children:U}),r[52]=U,r[53]=w,r[54]=W):W=r[54],W},Se=()=>{let e=(0,X.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)(F,{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)(D,{variant:`text`,size:`sm`,className:`h-fit hidden sm:flex`,onClick:n,children:[i,`Collapse all`]}),e[3]=n,e[4]=a),a},Ce=e=>{let r=(0,X.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,Z.useRef)(void 0),{root:d,refreshWorkspace:f}=(0,Z.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,Z.useEffect)(h,g);let _;r[7]!==f||r[8]!==m?(_=async(e,t)=>{let n=u.current?.get(e);if(!n){se({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)(ee,{ref:u,width:`100%`,height:500,searchTerm:a,className:`h-full`,idAccessor:Ne,data:i,openByDefault:!1,initialOpenState:o,onToggle:y,onRename:b,padding:5,rowHeight:44,indent:15,overscanCount:1e3,renderCursor:Pe,disableDrop:!0,disableDrag:!0,disableMultiSelection:!0,children:we}),r[16]=i,r[17]=o,r[18]=a,r[19]=y,r[20]=b,r[21]=x):x=r[21],x},we=e=>{let t=(0,X.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-4 h-4 shrink-0 text-(--gray-11)`,strokeWidth:1.5}),t[0]=a,t[1]=o);let s=o,{root:c}=(0,Z.use)(Q),{runningNotebooks:l}=(0,Z.use)(he),d;t[2]!==s||t[3]!==n||t[4]!==c||t[5]!==l?(d=()=>{if(n.isEditing)return(0,$.jsxs)(`div`,{className:`flex items-center pl-1 cursor-pointer hover:bg-(--sage-3) hover:text-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,children:[s,(0,$.jsx)(q,{node:n})]});if(n.data.isDirectory)return(0,$.jsxs)(`span`,{className:`flex items-center pl-1 cursor-pointer hover:bg-(--sage-3) hover:text-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)&&O.isAbsolute(n.data.path)?O.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-(--sage-3) hover:text-foreground rounded-l flex-1 overflow-hidden h-full pr-3 gap-2`,href:u(`?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)(Te,{node:n,isRunning:r}),(0,$.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center shrink-0`,children:(0,$.jsx)(ke,{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]=d):d=t[6];let f=d,p;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(p=_(`flex items-center cursor-pointer ml-1 text-sm text-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)(Ee,{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 v;return t[13]!==r||t[14]!==m||t[15]!==h||t[16]!==g?(v=(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]=v):v=t[17],v},Te=e=>{let t=(0,X.c)(19),{node:n,isRunning:r}=e,{root:i,refreshWorkspace:a}=(0,Z.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}=K(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)(b,{}),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},Ee=e=>{let t=(0,X.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)(M,{className:`w-5 h-5 shrink-0`}):(0,$.jsx)(N,{className:`w-5 h-5 shrink-0`}),t[1]=n.isOpen,t[2]=r),r},De=e=>{let t=(0,X.c)(8),{files:n,emptyMessage:r}=e,i;t[0]!==r||t[1]!==n.length?(i=n.length===0&&(0,$.jsx)(`p`,{className:`px-4 py-6 text-sm text-muted-foreground`,children:r}),t[0]=r,t[1]=n.length,t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=n.map(Fe),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,$.jsxs)(`div`,{className:`flex max-h-[500px] min-h-40 min-w-0 flex-col divide-y divide-border/50 overflow-y-auto rounded-lg border border-border/60`,children:[i,a]}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o},Oe=e=>{let t=(0,X.c)(48),{file:n}=e,{locale:r}=ce(),i;t[0]===n.path?i=t[1]:(i=d(n.path),t[0]=n.path,t[1]=i);let a=i,o,s,c,l,f;if(t[2]!==n.initializationId||t[3]!==n.name||t[4]!==n.path||t[5]!==a){let e=u(a?`?file=${encodeURIComponent(n.initializationId??n.path)}&session_id=${n.path}`:`?file=${encodeURIComponent(n.path)}`),r;t[11]===n.path?r=t[12]:(r=n.path.endsWith(`.md`),t[11]=n.path,t[12]=r),s=r,o=R[L(n.name)],c=`py-3 px-4 hover:bg-(--sage-3) transition-colors cursor-pointer group relative flex gap-3 items-center focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring`,l=n.path,f=e.toString(),t[2]=n.initializationId,t[3]=n.name,t[4]=n.path,t[5]=a,t[6]=o,t[7]=s,t[8]=c,t[9]=l,t[10]=f}else o=t[6],s=t[7],c=t[8],l=t[9],f=t[10];let p=n.initializationId||n.path,m;t[13]===p?m=t[14]:(m=ve(p),t[13]=p,t[14]=m);let h;t[15]===o?h=t[16]:(h=(0,$.jsx)(o,{className:`h-4 w-4 shrink-0 text-(--gray-11)`,strokeWidth:1.5}),t[15]=o,t[16]=h);let g;t[17]===n.name?g=t[18]:(g=(0,$.jsx)(`span`,{className:`truncate`,children:n.name}),t[17]=n.name,t[18]=g);let _;t[19]===s?_=t[20]:(_=s&&(0,$.jsx)(`span`,{className:`opacity-80`,children:(0,$.jsx)(pe,{})}),t[19]=s,t[20]=_);let v;t[21]!==g||t[22]!==_?(v=(0,$.jsxs)(`span`,{className:`flex items-center gap-2 text-sm font-medium`,children:[g,_]}),t[21]=g,t[22]=_,t[23]=v):v=t[23];let y;t[24]===n.path?y=t[25]:(y=(0,$.jsx)(`p`,{title:n.path,className:`text-xs text-muted-foreground overflow-hidden whitespace-nowrap text-ellipsis`,children:n.path}),t[24]=n.path,t[25]=y);let b;t[26]!==v||t[27]!==y?(b=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 flex-1`,children:[v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28];let x;t[29]===n.path?x=t[30]:(x=(0,$.jsx)(`div`,{children:(0,$.jsx)(ke,{filePath:n.path})}),t[29]=n.path,t[30]=x);let S;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(I,{size:14,className:`opacity-40 group-hover:opacity-100`}),t[31]=S):S=t[31];let C;t[32]===x?C=t[33]:(C=(0,$.jsxs)(`div`,{className:`flex gap-3 items-center`,children:[x,S]}),t[32]=x,t[33]=C);let w;t[34]!==n.lastModified||t[35]!==r?(w=!!n.lastModified&&(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground opacity-80`,children:ue(n.lastModified*1e3,r)}),t[34]=n.lastModified,t[35]=r,t[36]=w):w=t[36];let T;t[37]!==C||t[38]!==w?(T=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1 items-end`,children:[C,w]}),t[37]=C,t[38]=w,t[39]=T):T=t[39];let E;return t[40]!==b||t[41]!==T||t[42]!==c||t[43]!==l||t[44]!==f||t[45]!==m||t[46]!==h?(E=(0,$.jsxs)(`a`,{className:c,href:f,target:m,children:[h,b,T]},l),t[40]=b,t[41]=T,t[42]=c,t[43]=l,t[44]=f,t[45]=m,t[46]=h,t[47]=E):E=t[47],E},ke=e=>{let t=(0,X.c)(10),{filePath:n}=e,{openConfirm:r,closeModal:i}=z(),{shutdownSession:a}=J(),{runningNotebooks:o,setRunningNotebooks:s}=(0,Z.use)(he);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)(y,{onClick:()=>{let e=o.get(n);m(e?.sessionId),a({sessionId:e.sessionId}).then(e=>{s(P.keyBy(e.files,Ie))}),i(),se({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)(re,{size:14}),t[7]=l):l=t[7];let u;return t[8]===c?u=t[9]:(u=(0,$.jsx)(E,{content:`Shutdown`,children:(0,$.jsx)(D,{size:`icon`,variant:`outline`,"aria-label":`Shutdown notebook`,className:`border-transparent text-muted-foreground shadow-none hover:border-destructive hover:bg-(--red-1) hover:text-destructive`,onClick:c,children:l})}),t[8]=c,t[9]=u),u},Ae=()=>{let e=(0,X.c)(5),[t,n]=(0,Z.useState)(f),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=f();return n(e),e},e[0]=r):r=e[0];let i=r,a;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=e=>{let t=i();e.dataTransfer.setData(`text/uri-list`,t),e.dataTransfer.setData(`text/plain`,t)},e[1]=a):a=e[1];let o=a,s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(te,{className:`h-4 w-4`}),e[2]=s):s=e[2];let c;return e[3]===t?c=e[4]:(c=(0,$.jsx)(D,{asChild:!0,size:`sm`,className:`gap-2 rounded-md border-(--brand) bg-(--brand) text-(--brand-foreground) shadow-none hover:bg-(--brand-hover)`,children:(0,$.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,onClick:i,onAuxClick:i,onContextMenu:i,onDragStart:o,children:[s,`New notebook`]})}),e[3]=t,e[4]=c),c};function je(e){return e+1}function Me(e){return e.path}function Ne(e){return e.path}function Pe(){return null}function Fe(e){return(0,$.jsx)(Oe,{file:e},e.path)}function Ie(e){return e.path}export{Ae as CreateNewNotebook,be 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-DOpdUwym.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-BDjgaBtz.js";import{a as t}from"./cells-D_11MjVB.js";import{t as n}from"./compiler-runtime-BrajqUja.js";import{a as r}from"./config-DpY86_Yq.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-CD1IuZFJ.js";import{s as c,u as l}from"./download-dK52bLxZ.js";import{c as u,t as d}from"./layout-BpP8nTjb.js";import{t as f}from"./use-toast-Wu434mLr.js";import{r as p}from"./requests-BIFR-h4M.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};