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

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 (461) 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__/lifecycle-scenarios.test.ts +61 -0
  275. package/src/core/document/__tests__/model.test.ts +158 -0
  276. package/src/core/document/__tests__/protocol-fixtures.ts +38 -0
  277. package/src/core/document/__tests__/recovery-scenarios.test.ts +230 -0
  278. package/src/core/document/__tests__/scenario-fixture.ts +42 -0
  279. package/src/core/document/__tests__/scenarios.test.ts +205 -0
  280. package/src/core/document/__tests__/state.test.ts +446 -0
  281. package/src/core/document/__tests__/submission.test.ts +201 -0
  282. package/src/core/document/__tests__/test-host.test.ts +92 -0
  283. package/src/core/document/__tests__/test-host.ts +247 -0
  284. package/src/core/document/__tests__/test-notebook.ts +139 -0
  285. package/src/core/document/__tests__/user.ts +61 -0
  286. package/src/core/document/draft.ts +472 -0
  287. package/src/core/document/index.ts +10 -0
  288. package/src/core/document/model.ts +53 -0
  289. package/src/core/document/state.ts +401 -0
  290. package/src/core/document/sync.ts +359 -0
  291. package/src/core/edit-app.tsx +2 -2
  292. package/src/core/host/AGENTS.md +12 -2
  293. package/src/core/host/__tests__/attachments.test.ts +56 -0
  294. package/src/core/host/__tests__/document.test.ts +126 -0
  295. package/src/core/host/__tests__/fixtures.ts +41 -0
  296. package/src/core/host/__tests__/notebook-client.test.ts +570 -0
  297. package/src/core/host/connection.ts +42 -0
  298. package/src/core/host/notebook-client.ts +297 -0
  299. package/src/core/host/resources/attachments.ts +22 -0
  300. package/src/core/host/resources/document.ts +101 -0
  301. package/src/core/hotkeys/actions.ts +2 -4
  302. package/src/core/islands/__tests__/bootstrap.test.ts +0 -26
  303. package/src/core/islands/bootstrap.ts +0 -1
  304. package/src/core/kernel/__tests__/RuntimeState.test.ts +1 -1
  305. package/src/core/network/connection.ts +4 -2
  306. package/src/core/network/useConnectionNotice.ts +8 -2
  307. package/src/core/run-app.tsx +2 -2
  308. package/src/core/runtime/__tests__/createWsUrl.test.ts +77 -7
  309. package/src/core/runtime/__tests__/runtime.test.ts +18 -17
  310. package/src/core/runtime/runtime.ts +26 -30
  311. package/src/core/state/__tests__/jotai.test.tsx +108 -0
  312. package/src/core/state/jotai.ts +1 -1
  313. package/src/core/static/files.ts +2 -0
  314. package/src/core/wasm/bridge.ts +2 -10
  315. package/src/core/wasm/store.ts +3 -3
  316. package/src/core/wasm/worker/bootstrap.ts +1 -1
  317. package/src/core/wasm/worker/getMarimoWheel.ts +1 -1
  318. package/src/core/websocket/__tests__/{useMarimoKernelConnection.test.ts → connection-state.test.ts} +15 -29
  319. package/src/core/websocket/__tests__/useNotebookClient.hook.test.tsx +223 -0
  320. package/src/core/websocket/__tests__/useNotebookSession.hook.test.tsx +606 -0
  321. package/src/core/websocket/connection-state.ts +60 -0
  322. package/src/core/websocket/state.ts +7 -0
  323. package/src/core/websocket/transports/__tests__/notebook.test.ts +502 -0
  324. package/src/core/websocket/transports/notebook.ts +213 -0
  325. package/src/core/websocket/types.ts +9 -39
  326. package/src/core/websocket/useNotebookClient.ts +89 -0
  327. package/src/core/websocket/{useMarimoKernelConnection.tsx → useNotebookSession.tsx} +53 -233
  328. package/src/css/globals.css +5 -0
  329. package/src/hooks/__tests__/useAsyncData.test.tsx +148 -0
  330. package/src/hooks/__tests__/useDebounce.test.tsx +51 -0
  331. package/src/hooks/__tests__/useDeepCompareMemoize.test.tsx +39 -0
  332. package/src/hooks/__tests__/useDelayElapsed.test.tsx +28 -0
  333. package/src/hooks/__tests__/useInternalStateWithSync.test.tsx +20 -0
  334. package/src/hooks/__tests__/useScript.test.tsx +77 -0
  335. package/src/hooks/__tests__/useStateForKey.test.tsx +257 -0
  336. package/src/hooks/useAsyncData.ts +3 -3
  337. package/src/hooks/useDataSourceDiscovery.ts +6 -4
  338. package/src/hooks/useDebounce.ts +5 -8
  339. package/src/hooks/useDeepCompareMemoize.ts +1 -1
  340. package/src/hooks/useDelayElapsed.ts +14 -10
  341. package/src/hooks/useElapsedTime.ts +3 -3
  342. package/src/hooks/useInputHistory.ts +4 -7
  343. package/src/hooks/useInternalStateWithSync.ts +6 -6
  344. package/src/hooks/useResizeObserver.ts +4 -7
  345. package/src/hooks/useScript.ts +67 -70
  346. package/src/hooks/useStateForKey.ts +93 -0
  347. package/src/plugins/core/registerReactComponent.tsx +1 -1
  348. package/src/plugins/impl/CodeEditorPlugin.tsx +1 -1
  349. package/src/plugins/impl/DataTablePlugin.tsx +14 -15
  350. package/src/plugins/impl/DropdownPlugin.tsx +2 -6
  351. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -16
  352. package/src/plugins/impl/FormPlugin.tsx +1 -1
  353. package/src/plugins/impl/RangeSliderPlugin.tsx +0 -1
  354. package/src/plugins/impl/RefreshPlugin.tsx +1 -0
  355. package/src/plugins/impl/SliderPlugin.tsx +6 -8
  356. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +117 -1
  357. package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +45 -0
  358. package/src/plugins/impl/__tests__/SliderPlugin.test.tsx +24 -3
  359. package/src/plugins/impl/anywidget/__tests__/registry.test.ts +2 -0
  360. package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +241 -2
  361. package/src/plugins/impl/anywidget/runtime.ts +21 -9
  362. package/src/plugins/impl/anywidget/widget-binding.ts +160 -82
  363. package/src/plugins/impl/chat/__tests__/chat-prompts.test.tsx +93 -0
  364. package/src/plugins/impl/chat/chat-ui.tsx +12 -10
  365. package/src/plugins/impl/code/any-language-editor.tsx +2 -2
  366. package/src/plugins/impl/data-editor/glide-data-editor.tsx +8 -5
  367. package/src/plugins/impl/data-editor/glide-utils.ts +3 -1
  368. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +1 -1
  369. package/src/plugins/impl/data-explorer/state/reducer.ts +1 -1
  370. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +0 -1
  371. package/src/plugins/impl/mpl-interactive/MplInteractivePlugin.tsx +5 -3
  372. package/src/plugins/impl/panel/PanelPlugin.tsx +16 -17
  373. package/src/plugins/impl/panel/__tests__/utils.test.ts +39 -1
  374. package/src/plugins/impl/panel/utils.ts +17 -0
  375. package/src/plugins/impl/vega/make-selectable.ts +4 -7
  376. package/src/plugins/layout/RoutesPlugin.tsx +1 -1
  377. package/src/stories/__tests__/editor-story.test.tsx +33 -0
  378. package/src/stories/button.stories.tsx +1 -0
  379. package/src/stories/editor.stories.tsx +24 -17
  380. package/src/stories/form-wrapper.stories.tsx +2 -2
  381. package/src/stories/select.stories.tsx +2 -2
  382. package/src/stories/switchable-multi-select.stories.tsx +1 -1
  383. package/src/utils/__tests__/arrays.test.ts +35 -0
  384. package/src/utils/__tests__/batch-requests.test.ts +3 -3
  385. package/src/utils/__tests__/numbers.test.ts +48 -1
  386. package/src/utils/__tests__/objects.test.ts +21 -0
  387. package/src/utils/arrays.ts +10 -0
  388. package/src/utils/blob.ts +1 -1
  389. package/src/utils/numbers.ts +28 -17
  390. package/src/utils/objects.ts +3 -7
  391. package/src/utils/once.ts +19 -19
  392. package/src/utils/zod-utils.ts +1 -3
  393. package/dist/assets/CellStatus-nZpuDkm7.js +0 -1
  394. package/dist/assets/JsonOutput-BxB0NL8w.js +0 -11
  395. package/dist/assets/MarimoErrorOutput-BTy4MOzX.js +0 -10
  396. package/dist/assets/RunButton-CFQUNN5c.js +0 -1
  397. package/dist/assets/__vite-browser-external-CYO_P3S8.js +0 -1
  398. package/dist/assets/__vite-browser-external-FeDVGZU8.js +0 -1
  399. package/dist/assets/ai-model-dropdown-zm-2fXzf.js +0 -13
  400. package/dist/assets/any-language-editor-BLCAD3yx.js +0 -1
  401. package/dist/assets/arrays-BqUx5USx.js +0 -1
  402. package/dist/assets/cell-editor-CAj1UKxx.js +0 -21
  403. package/dist/assets/cell-link-1CynTVGQ.js +0 -1
  404. package/dist/assets/chat-panel-Ce2Xh7dM.js +0 -4
  405. package/dist/assets/chat-ui-DTy98rP3.js +0 -4
  406. package/dist/assets/circle-play-CYIb0qT6.js +0 -1
  407. package/dist/assets/code-visibility-B-_GvwR5.js +0 -1
  408. package/dist/assets/coerce-CpE6kUdX.js +0 -1
  409. package/dist/assets/column-preview-DU6dT80y.js +0 -1
  410. package/dist/assets/command-palette-BMqFKXVr.js +0 -1
  411. package/dist/assets/components-CXfO-F47.js +0 -1
  412. package/dist/assets/config-DX8Y2WbJ.js +0 -1
  413. package/dist/assets/config-VPSq73n8.js +0 -1
  414. package/dist/assets/edit-page-DlfCLUaq.js +0 -9
  415. package/dist/assets/feedback-button-DlqZkJwz.js +0 -1
  416. package/dist/assets/file-explorer-panel-Bo9eN3rW.js +0 -1
  417. package/dist/assets/home-page-KrhQ55Vg.js +0 -4
  418. package/dist/assets/index-6b4mf8Ai.css +0 -2
  419. package/dist/assets/index-B3fcrmuf.js +0 -30
  420. package/dist/assets/kiosk-mode-BZECfg9k.js +0 -1
  421. package/dist/assets/layout-DOpdUwym.js +0 -9
  422. package/dist/assets/linear-0eij_aAG.js +0 -1
  423. package/dist/assets/link-NuFVR7G9.js +0 -1
  424. package/dist/assets/links-DkkL9DVa.js +0 -1
  425. package/dist/assets/numbers-Mk3-CcoU.js +0 -1
  426. package/dist/assets/packages-panel-ClxOAEGy.js +0 -1
  427. package/dist/assets/panels-DfCmzLtT.js +0 -4
  428. package/dist/assets/precisionRound-Bq_nmf5u.js +0 -1
  429. package/dist/assets/process-output-DNFKMODr.js +0 -1
  430. package/dist/assets/react-vega-C3rYGtP6.js +0 -189
  431. package/dist/assets/requests-CgSY1X4a.js +0 -1
  432. package/dist/assets/run-page-Cxu1yV8Q.js +0 -1
  433. package/dist/assets/scratchpad-panel-By-ybhjg.js +0 -1
  434. package/dist/assets/session-panel-BmW6PH4z.js +0 -1
  435. package/dist/assets/state-BAJYRhmO.js +0 -1
  436. package/dist/assets/state-z3dlofZB.js +0 -3
  437. package/dist/assets/tooltip-mT3CGest.js +0 -61
  438. package/dist/assets/tracing-BARlJ_Dk.js +0 -1
  439. package/dist/assets/tracing-panel-dgnr2fIN.js +0 -2
  440. package/dist/assets/useAsyncData-C7aJJz0Y.js +0 -1
  441. package/dist/assets/useBoolean-BDD6_xQQ.js +0 -1
  442. package/dist/assets/useCellActionButton-DY9RlJTb.js +0 -1
  443. package/dist/assets/useDebounce-B_ccBZTp.js +0 -1
  444. package/dist/assets/useNotebookActions-DfvB7RD_.js +0 -1
  445. package/dist/assets/vega-component-CnadTgoE.js +0 -1
  446. package/dist/assets/vega-loader.browser-CLRkNgm7.js +0 -6
  447. package/dist/assets/ws-BXWY541V.js +0 -22
  448. package/src/core/host/__tests__/protocol.test.ts +0 -214
  449. package/src/core/host/protocol.ts +0 -1943
  450. package/src/core/state/__tests__/jotai.test.ts +0 -25
  451. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +0 -789
  452. package/src/core/websocket/__tests__/useWebSocket.test.ts +0 -49
  453. package/src/core/websocket/transports/__tests__/basic.test.ts +0 -275
  454. package/src/core/websocket/transports/__tests__/sse.test.ts +0 -338
  455. package/src/core/websocket/transports/__tests__/transport.test.ts +0 -308
  456. package/src/core/websocket/transports/__tests__/ws.test.ts +0 -125
  457. package/src/core/websocket/transports/basic.ts +0 -102
  458. package/src/core/websocket/transports/sse.ts +0 -308
  459. package/src/core/websocket/transports/transport.ts +0 -61
  460. package/src/core/websocket/transports/ws.ts +0 -98
  461. package/src/core/websocket/useWebSocket.tsx +0 -88
@@ -1,4 +1,4 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./react-DVplv7_D.js";import{At as n,Mt as r,gi as i,jn as a,jt as o,kt as s,qa as c,wn as l,yt as u}from"./cells-rA_jsZCj.js";import{E as d,P as f,S as p,j as m,w as h}from"./schemas-Dv42wLFq.js";import{r as g}from"./coerce-CpE6kUdX.js";import{t as _}from"./compiler-runtime-BrajqUja.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{i as ee,n as te,r as ne,t as re}from"./tabs-BuQlZFbt.js";import{i as b,t as ie}from"./tooltip-C9TuY18o.js";import{t as ae}from"./components-CP_UoFtT.js";import{a as x,l as oe,p as S,r as C,s as w}from"./write-secret-modal-DzKAInL2.js";import{t as se}from"./plus-C5silF6g.js";import{Jt as ce,Qt as le,Xt as ue,Yt as de,nn as fe,tn as pe}from"./input-BoBxR50a.js";import{r as T}from"./strings-B2vv-ENv.js";import{t as me}from"./useIframeCapabilities-CwTkczVN.js";var E=e(t(),1),D=_();function O(){return f().optional().describe(l.of({label:`Password`,inputType:`password`,optionRegex:`(password|passwd|pgpassword|db.?pass(word)?)`}))}function k(e,t){let n=f();return n=t?n.nonempty():n.optional(),n=n.describe(l.of({label:e||`Token`,inputType:`password`,optionRegex:`(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))`})),n}function A(){return f().optional().describe(l.of({label:`Warehouse Name`,optionRegex:`(warehouse|snowflake.?warehouse)`}))}function j(e,t){let n=f();return n=t?n.nonempty():n.optional(),n.describe(l.of({label:e||`URI`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}function M(e){return f().nonempty().describe(l.of({label:e||`Host`,optionRegex:`^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)`}))}function N(){return f().describe(l.of({label:`Database`,optionRegex:`(database|db.?name|pgdatabase|^DB$|^DATABASE$)`}))}function he(){return f().describe(l.of({label:`Schema`,optionRegex:`(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)`}))}function P(){return f().nonempty().describe(l.of({label:`Username`,optionRegex:`(username|pguser|db.?user|^USER$|_USER$)`}))}function F(e){let t=g().describe(l.of({label:`Port`,inputType:`number`,placeholder:e?.toString()})).transform(Number).refine(e=>e>=0&&e<=65535,{message:`Port must be between 0 and 65535`});return e===void 0?t:t.default(e)}function ge(){return p().default(!1).describe(l.of({label:`Read Only`}))}var _e=m({type:d(`postgres`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),ssl:p().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ve=m({type:d(`mysql`),host:M(),port:F(3306),database:N(),username:P(),password:O(),ssl:p().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ye=m({type:d(`sqlite`),database:N().describe(l.of({label:`Database Path`}))}).describe(l.of({direction:`two-columns`})),be=m({type:d(`duckdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),I=m({type:d(`motherduck`),database:N().default(`my_db`).describe(l.of({label:`Database Name`})),token:k()}).describe(l.of({direction:`two-columns`})),L=m({type:d(`snowflake`),account:f().nonempty().describe(l.of({label:`Account`,optionRegex:`(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)`})),warehouse:f().optional().describe(l.of({label:`Warehouse`,optionRegex:`(snowflake.?warehouse|warehouse)`})),database:N(),schema:f().optional().describe(l.of({label:`Schema`,optionRegex:`(snowflake.?schema|^SCHEMA$|_SCHEMA$)`})),role:f().optional().describe(l.of({label:`Role`})),authType:h(`type`,[m({type:d(`Password`),username:P(),password:O(),enable_mfa:p().default(!1).describe(l.of({label:`Enable MFA (Duo Push)`}))}),m({type:d(`SSO (Browser)`),username:P()}),m({type:d(`Key Pair`),username:P(),private_key_path:f().nonempty().describe(l.of({label:`Private Key Path`,placeholder:`/path/to/rsa_key.p8`})),private_key_passphrase:f().optional().describe(l.of({label:`Private Key Passphrase`,inputType:`password`,optionRegex:`(passphrase|private.?key.?passphrase|key.?passphrase)`}))}),m({type:d(`OAuth / PAT`),token:k(`Token`,!0)})]).default({type:`Password`,username:`username`,enable_mfa:!1}).describe(l.of({special:`tabs`}))}).describe(l.of({direction:`two-columns`})),R=m({type:d(`bigquery`),project:f().nonempty().describe(l.of({label:`Project ID`,optionRegex:`(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)`})),dataset:f().nonempty().describe(l.of({label:`Dataset`,optionRegex:`(bigquery.?dataset|dataset)`})),credentials_json:f().describe(l.of({label:`Credentials JSON`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),z=m({type:d(`clickhouse_connect`),host:M(),port:F(8123).optional(),username:P(),password:O(),secure:p().default(!1).describe(l.of({label:`Use HTTPs`})),proxy_path:f().optional().describe(l.of({label:`Proxy Path`,placeholder:`/clickhouse`}))}).describe(l.of({direction:`two-columns`})),B=m({type:d(`timeplus`),host:M().default(`localhost`),port:F(8123).optional(),username:P().default(`default`),password:O().default(``)}).describe(l.of({direction:`two-columns`})),V=m({type:d(`chdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),H=m({type:d(`trino`),host:M(),port:F(8080),database:N(),schema:he().optional(),username:P(),password:O(),async_support:p().default(!1).describe(l.of({label:`Async Support`}))}).describe(l.of({direction:`two-columns`})),U=m({type:d(`iceberg`),name:f().describe(l.of({label:`Catalog Name`})),catalog:h(`type`,[m({type:d(`REST`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`https://`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`})),token:k()}),m({type:d(`SQL`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`jdbc:iceberg://host:port/database`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}),m({type:d(`Hive`),warehouse:A(),uri:j()}),m({type:d(`Glue`),warehouse:A(),uri:j()}),m({type:d(`DynamoDB`),"dynamodb.profile-name":f().optional().describe(l.of({label:`Profile Name`})),"dynamodb.region":f().optional().describe(l.of({label:`Region`})),"dynamodb.access-key-id":f().optional().describe(l.of({label:`Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),"dynamodb.secret-access-key":f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),"dynamodb.session-token":f().optional().describe(l.of({label:`Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))})]).default({type:`REST`,token:void 0}).describe(l.of({special:`tabs`}))}),W=m({type:d(`datafusion`),sessionContext:p().optional().describe(l.of({label:`Use Session Context`}))}),G=m({type:d(`pyspark`),host:M().optional(),port:F().optional()}),K=m({type:d(`redshift`),host:M(),port:F(5439),connectionType:h(`type`,[m({type:d(`IAM credentials`),region:f().describe(l.of({label:`Region`})),aws_access_key_id:f().nonempty().describe(l.of({label:`AWS Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),aws_secret_access_key:f().nonempty().describe(l.of({label:`AWS Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),aws_session_token:f().optional().describe(l.of({label:`AWS Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))}),m({type:d(`DB credentials`),user:P(),password:O()})]).default({type:`IAM credentials`,aws_access_key_id:``,aws_secret_access_key:``,region:``}),database:N()}).describe(l.of({direction:`two-columns`})),q=m({type:d(`databricks`),access_token:k(`Access Token`,!0),server_hostname:M(`Server Hostname`),http_path:j(`HTTP Path`,!0),catalog:f().optional().describe(l.of({label:`Catalog`})),schema:f().optional().describe(l.of({label:`Schema`}))}).describe(l.of({direction:`two-columns`})),xe=m({type:d(`supabase`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),disable_client_pooling:p().default(!1).describe(l.of({label:`Disable Client-Side Pooling`}))}).describe(l.of({direction:`two-columns`})),Se=h(`type`,[_e,ve,ye,be,I,L,R,z,B,V,H,U,W,G,K,q,xe]),Ce={sqlmodel:`SQLModel`,sqlalchemy:`SQLAlchemy`,duckdb:`DuckDB`,clickhouse_connect:`ClickHouse Connect`,chdb:`chDB`,pyiceberg:`PyIceberg`,ibis:`Ibis`,motherduck:`MotherDuck`,redshift:`Redshift`,databricks:`Databricks`},J=class{connection;orm;secrets;constructor(e,t,n){this.connection=e,this.orm=t,this.secrets=n}get imports(){let e=new Set(this.generateImports());switch(this.orm){case`sqlalchemy`:e.add(`import sqlalchemy`);break;case`sqlmodel`:e.add(`import sqlmodel`);break;case`duckdb`:e.add(`import duckdb`);break;case`ibis`:e.add(`import ibis`)}return e}},we=e=>`_${e}`,Te=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t,n){if(e=we(e),w(t)){let r=oe(t),i=n?`os.environ.get("${r}", "${n}")`:`os.environ.get("${r}")`;return this.secrets[e]=i,e}if(n!=null){let r=`os.environ.get("${t}", "${n}")`;return this.secrets[e]=r,e}return typeof t==`number`||typeof t==`number`?`${t}`:typeof t==`boolean`?Y(t):t?`"${t}"`:``}printInFString(e,t,n){if(t===void 0)return``;if(typeof t==`number`)return`${t}`;if(typeof t==`boolean`)return Y(t);let r=this.print(e,t,n);return r.startsWith(`"`)&&r.endsWith(`"`)?r.slice(1,-1):`{${r}}`}printPassword(e,t,n,r){let i=n?this.printInFString.bind(this):this.print.bind(this);return w(e)?i(r||`password`,e):i(r||`password`,t,e)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./react-DVplv7_D.js";import{At as n,Mt as r,gi as i,jn as a,jt as o,kt as s,qa as c,wn as l,yt as u}from"./cells-D_11MjVB.js";import{C as d,I as f,N as p,O as m,T as h}from"./schemas-ChRqMOTL.js";import{r as g}from"./coerce-DWjFeXOY.js";import{t as _}from"./compiler-runtime-BrajqUja.js";import{t as v}from"./cn-ldLVeaqm.js";import{t as y}from"./jsx-runtime-B74pBk57.js";import{i as ee,n as te,r as ne,t as re}from"./tabs-CY8E4r9U.js";import{i as b,t as ie}from"./tooltip-CkGm8X7m.js";import{t as ae}from"./components-DCo7mAWO.js";import{a as x,l as oe,p as S,r as C,s as w}from"./write-secret-modal-BEx-EUlh.js";import{t as se}from"./plus-C5silF6g.js";import{Jt as ce,Qt as le,Xt as ue,Yt as de,nn as fe,tn as pe}from"./input-DmHMEZGh.js";import{r as T}from"./strings-C25fhMR_.js";import{t as me}from"./useIframeCapabilities-Czr9e4uG.js";var E=e(t(),1),D=_();function O(){return f().optional().describe(l.of({label:`Password`,inputType:`password`,optionRegex:`(password|passwd|pgpassword|db.?pass(word)?)`}))}function k(e,t){let n=f();return n=t?n.nonempty():n.optional(),n=n.describe(l.of({label:e||`Token`,inputType:`password`,optionRegex:`(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))`})),n}function A(){return f().optional().describe(l.of({label:`Warehouse Name`,optionRegex:`(warehouse|snowflake.?warehouse)`}))}function j(e,t){let n=f();return n=t?n.nonempty():n.optional(),n.describe(l.of({label:e||`URI`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}function M(e){return f().nonempty().describe(l.of({label:e||`Host`,optionRegex:`^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)`}))}function N(){return f().describe(l.of({label:`Database`,optionRegex:`(database|db.?name|pgdatabase|^DB$|^DATABASE$)`}))}function he(){return f().describe(l.of({label:`Schema`,optionRegex:`(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)`}))}function P(){return f().nonempty().describe(l.of({label:`Username`,optionRegex:`(username|pguser|db.?user|^USER$|_USER$)`}))}function F(e){let t=g().describe(l.of({label:`Port`,inputType:`number`,placeholder:e?.toString()})).transform(Number).refine(e=>e>=0&&e<=65535,{message:`Port must be between 0 and 65535`});return e===void 0?t:t.default(e)}function ge(){return d().default(!1).describe(l.of({label:`Read Only`}))}var _e=p({type:m(`postgres`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ve=p({type:m(`mysql`),host:M(),port:F(3306),database:N(),username:P(),password:O(),ssl:d().default(!1).describe(l.of({label:`Use SSL`}))}).describe(l.of({direction:`two-columns`})),ye=p({type:m(`sqlite`),database:N().describe(l.of({label:`Database Path`}))}).describe(l.of({direction:`two-columns`})),be=p({type:m(`duckdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),I=p({type:m(`motherduck`),database:N().default(`my_db`).describe(l.of({label:`Database Name`})),token:k()}).describe(l.of({direction:`two-columns`})),L=p({type:m(`snowflake`),account:f().nonempty().describe(l.of({label:`Account`,optionRegex:`(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)`})),warehouse:f().optional().describe(l.of({label:`Warehouse`,optionRegex:`(snowflake.?warehouse|warehouse)`})),database:N(),schema:f().optional().describe(l.of({label:`Schema`,optionRegex:`(snowflake.?schema|^SCHEMA$|_SCHEMA$)`})),role:f().optional().describe(l.of({label:`Role`})),authType:h(`type`,[p({type:m(`Password`),username:P(),password:O(),enable_mfa:d().default(!1).describe(l.of({label:`Enable MFA (Duo Push)`}))}),p({type:m(`SSO (Browser)`),username:P()}),p({type:m(`Key Pair`),username:P(),private_key_path:f().nonempty().describe(l.of({label:`Private Key Path`,placeholder:`/path/to/rsa_key.p8`})),private_key_passphrase:f().optional().describe(l.of({label:`Private Key Passphrase`,inputType:`password`,optionRegex:`(passphrase|private.?key.?passphrase|key.?passphrase)`}))}),p({type:m(`OAuth / PAT`),token:k(`Token`,!0)})]).default({type:`Password`,username:`username`,enable_mfa:!1}).describe(l.of({special:`tabs`}))}).describe(l.of({direction:`two-columns`})),R=p({type:m(`bigquery`),project:f().nonempty().describe(l.of({label:`Project ID`,optionRegex:`(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)`})),dataset:f().nonempty().describe(l.of({label:`Dataset`,optionRegex:`(bigquery.?dataset|dataset)`})),credentials_json:f().describe(l.of({label:`Credentials JSON`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),z=p({type:m(`clickhouse_connect`),host:M(),port:F(8123).optional(),username:P(),password:O(),secure:d().default(!1).describe(l.of({label:`Use HTTPs`})),proxy_path:f().optional().describe(l.of({label:`Proxy Path`,placeholder:`/clickhouse`}))}).describe(l.of({direction:`two-columns`})),B=p({type:m(`timeplus`),host:M().default(`localhost`),port:F(8123).optional(),username:P().default(`default`),password:O().default(``)}).describe(l.of({direction:`two-columns`})),V=p({type:m(`chdb`),database:N().describe(l.of({label:`Database Path`})),read_only:ge()}).describe(l.of({direction:`two-columns`})),H=p({type:m(`trino`),host:M(),port:F(8080),database:N(),schema:he().optional(),username:P(),password:O(),async_support:d().default(!1).describe(l.of({label:`Async Support`}))}).describe(l.of({direction:`two-columns`})),U=p({type:m(`iceberg`),name:f().describe(l.of({label:`Catalog Name`})),catalog:h(`type`,[p({type:m(`REST`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`https://`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`})),token:k()}),p({type:m(`SQL`),warehouse:A(),uri:f().optional().describe(l.of({label:`URI`,placeholder:`jdbc:iceberg://host:port/database`,optionRegex:`(uri|url|connection.?string|database.?url|jdbc)`}))}),p({type:m(`Hive`),warehouse:A(),uri:j()}),p({type:m(`Glue`),warehouse:A(),uri:j()}),p({type:m(`DynamoDB`),"dynamodb.profile-name":f().optional().describe(l.of({label:`Profile Name`})),"dynamodb.region":f().optional().describe(l.of({label:`Region`})),"dynamodb.access-key-id":f().optional().describe(l.of({label:`Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),"dynamodb.secret-access-key":f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),"dynamodb.session-token":f().optional().describe(l.of({label:`Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))})]).default({type:`REST`,token:void 0}).describe(l.of({special:`tabs`}))}),W=p({type:m(`datafusion`),sessionContext:d().optional().describe(l.of({label:`Use Session Context`}))}),G=p({type:m(`pyspark`),host:M().optional(),port:F().optional()}),K=p({type:m(`redshift`),host:M(),port:F(5439),connectionType:h(`type`,[p({type:m(`IAM credentials`),region:f().describe(l.of({label:`Region`})),aws_access_key_id:f().nonempty().describe(l.of({label:`AWS Access Key ID`,inputType:`password`,optionRegex:`(access.?key.?id|aws.?access.?key)`})),aws_secret_access_key:f().nonempty().describe(l.of({label:`AWS Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|aws.?secret)`})),aws_session_token:f().optional().describe(l.of({label:`AWS Session Token`,inputType:`password`,optionRegex:`(session.?token|aws.?session)`}))}),p({type:m(`DB credentials`),user:P(),password:O()})]).default({type:`IAM credentials`,aws_access_key_id:``,aws_secret_access_key:``,region:``}),database:N()}).describe(l.of({direction:`two-columns`})),q=p({type:m(`databricks`),access_token:k(`Access Token`,!0),server_hostname:M(`Server Hostname`),http_path:j(`HTTP Path`,!0),catalog:f().optional().describe(l.of({label:`Catalog`})),schema:f().optional().describe(l.of({label:`Schema`}))}).describe(l.of({direction:`two-columns`})),xe=p({type:m(`supabase`),host:M(),port:F(5432).optional(),database:N(),username:P(),password:O(),disable_client_pooling:d().default(!1).describe(l.of({label:`Disable Client-Side Pooling`}))}).describe(l.of({direction:`two-columns`})),Se=h(`type`,[_e,ve,ye,be,I,L,R,z,B,V,H,U,W,G,K,q,xe]),Ce={sqlmodel:`SQLModel`,sqlalchemy:`SQLAlchemy`,duckdb:`DuckDB`,clickhouse_connect:`ClickHouse Connect`,chdb:`chDB`,pyiceberg:`PyIceberg`,ibis:`Ibis`,motherduck:`MotherDuck`,redshift:`Redshift`,databricks:`Databricks`},J=class{connection;orm;secrets;constructor(e,t,n){this.connection=e,this.orm=t,this.secrets=n}get imports(){let e=new Set(this.generateImports());switch(this.orm){case`sqlalchemy`:e.add(`import sqlalchemy`);break;case`sqlmodel`:e.add(`import sqlmodel`);break;case`duckdb`:e.add(`import duckdb`);break;case`ibis`:e.add(`import ibis`)}return e}},we=e=>`_${e}`,Te=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t,n){if(e=we(e),w(t)){let r=oe(t),i=n?`os.environ.get("${r}", "${n}")`:`os.environ.get("${r}")`;return this.secrets[e]=i,e}if(n!=null){let r=`os.environ.get("${t}", "${n}")`;return this.secrets[e]=r,e}return typeof t==`number`||typeof t==`number`?`${t}`:typeof t==`boolean`?Y(t):t?`"${t}"`:``}printInFString(e,t,n){if(t===void 0)return``;if(typeof t==`number`)return`${t}`;if(typeof t==`boolean`)return Y(t);let r=this.print(e,t,n);return r.startsWith(`"`)&&r.endsWith(`"`)?r.slice(1,-1):`{${r}}`}printPassword(e,t,n,r){let i=n?this.printInFString.bind(this):this.print.bind(this);return w(e)?i(r||`password`,e):i(r||`password`,t,e)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
2
2
  `)}},Ee=class extends J{generateImports(){return[]}generateConnectionCode(){let e=this.connection.ssl?`, connect_args={'sslmode': 'require'}`:``,t=this.secrets.printPassword(this.connection.password,`POSTGRES_PASSWORD`,!0),n=this.secrets.printInFString(`username`,this.connection.username),r=this.secrets.printInFString(`host`,this.connection.host),a=this.secrets.printInFString(`port`,this.connection.port),o=this.secrets.printInFString(`database`,this.connection.database);return i(`
3
3
  DATABASE_URL = f"postgresql://${n}:${t}@${r}:${a}/${o}"
4
4
  engine = ${this.orm}.create_engine(DATABASE_URL${e})
@@ -132,7 +132,7 @@ ${X(o,e=>` ${e}`)},
132
132
  `)}},Ue=class{secrets=new Te;createGenerator(e,t){switch(e.type){case`postgres`:return new Ee(e,t,this.secrets);case`mysql`:return new De(e,t,this.secrets);case`sqlite`:return new Oe(e,t,this.secrets);case`snowflake`:return new ke(e,t,this.secrets);case`bigquery`:return new Ae(e,t,this.secrets);case`duckdb`:return new je(e,t,this.secrets);case`motherduck`:return new Me(e,t,this.secrets);case`clickhouse_connect`:return new Ne(e,t,this.secrets);case`timeplus`:return new Pe(e,t,this.secrets);case`chdb`:return new Fe(e,t,this.secrets);case`trino`:return new Ie(e,t,this.secrets);case`iceberg`:return new Le(e,t,this.secrets);case`datafusion`:return new Re(e,t,this.secrets);case`pyspark`:return new ze(e,t,this.secrets);case`redshift`:return new Be(e,t,this.secrets);case`databricks`:return new Ve(e,t,this.secrets);case`supabase`:return new He(e,t,this.secrets);default:T(e)}}};function We(e,t){if(!(t in Ce))throw Error(`Unsupported library: ${t}`);Se.parse(e);let n=new Ue,r=n.createGenerator(e,t),i=r.generateConnectionCode(),a=n.secrets,o=[...new Set([...a.imports,...r.imports])].toSorted();o.push(``);let s=a.formatSecrets();return s&&o.push(s),o.push(i.trim()),o.join(`
133
133
  `)}function Y(e){return e.toString().charAt(0).toUpperCase()+e.toString().slice(1)}function X(e,t){return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,n])=>t(typeof n==`boolean`?`${e}=${Y(n)}`:`${e}=${n}`)).join(`,
134
134
  `)}function Ge(e,t){return Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,n])=>{let r=`"${e}"`;return t(typeof n==`boolean`?`${r}: ${Y(n)}`:`${r}: ${n}`)}).join(`,
135
- `)}var Z=y(),Ke=[{name:`PostgreSQL`,schema:_e,color:`#336791`,logo:`postgres`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`MySQL`,schema:ve,color:`#00758F`,logo:`mysql`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`SQLite`,schema:ye,color:`#003B57`,logo:`sqlite`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`DuckDB`,schema:be,color:`#FFD700`,logo:`duckdb`,connectionLibraries:{libraries:[`duckdb`],preferred:`duckdb`}},{name:`MotherDuck`,schema:I,color:`#ff9538`,logo:`motherduck`,connectionLibraries:{libraries:[`duckdb`],preferred:`duckdb`}},{name:`Snowflake`,schema:L,color:`#29B5E8`,logo:`snowflake`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`ClickHouse`,schema:z,color:`#2C2C1D`,logo:`clickhouse`,connectionLibraries:{libraries:[`clickhouse_connect`],preferred:`clickhouse_connect`}},{name:`Timeplus`,schema:B,color:`#B83280`,logo:`timeplus`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`BigQuery`,schema:R,color:`#4285F4`,logo:`bigquery`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`ClickHouse Embedded`,schema:V,color:`#f2b611`,logo:`clickhouse`,connectionLibraries:{libraries:[`chdb`],preferred:`chdb`}},{name:`Trino`,schema:H,color:`#d466b6`,logo:`trino`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`DataFusion`,schema:W,color:`#202A37`,logo:`datafusion`,connectionLibraries:{libraries:[`ibis`],preferred:`ibis`}},{name:`PySpark`,schema:G,color:`#1C5162`,logo:`pyspark`,connectionLibraries:{libraries:[`ibis`],preferred:`ibis`}},{name:`Redshift`,schema:K,color:`#522BAE`,logo:`redshift`,connectionLibraries:{libraries:[`redshift`],preferred:`redshift`}},{name:`Databricks`,schema:q,color:`#c41e0c`,logo:`databricks`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`,`ibis`],preferred:`sqlalchemy`}},{name:`Supabase`,schema:xe,color:`#238F5F`,logo:`supabase`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}}],qe=[{name:`Iceberg`,schema:U,color:`#000000`,logo:`iceberg`,connectionLibraries:{libraries:[`pyiceberg`],preferred:`pyiceberg`}}],Je=[...Ke,...qe],Ye=[...new Set(Je.flatMap(({name:e,logo:t})=>[e,t]))],Xe=e=>{let t=(0,D.c)(12),{onSelect:r}=e,i;t[0]===r?i=t[1]:(i=Ke.map(e=>{let{name:t,schema:i,color:o,logo:s}=e;return(0,Z.jsx)(n,{name:t,color:o,icon:(0,Z.jsx)(a,{name:s,className:`w-8 h-8 text-white brightness-0 invert dark:invert`}),onSelect:()=>r(i)},t)}),t[0]=r,t[1]=i);let s;t[2]===i?s=t[3]:(s=(0,Z.jsx)(o,{children:i}),t[2]=i,t[3]=s);let c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`h4`,{className:`font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2`,children:[`Data Catalogs`,(0,Z.jsx)(`hr`,{className:`flex-1`})]}),t[4]=c):c=t[4];let l;t[5]===r?l=t[6]:(l=qe.map(e=>{let{name:t,schema:i,color:o,logo:s}=e;return(0,Z.jsx)(n,{name:t,color:o,icon:(0,Z.jsx)(a,{name:s,className:`w-8 h-8 text-white brightness-0 invert dark:invert`}),onSelect:()=>r(i)},t)}),t[5]=r,t[6]=l);let u;t[7]===l?u=t[8]:(u=(0,Z.jsx)(o,{children:l}),t[7]=l,t[8]=u);let d;return t[9]!==s||t[10]!==u?(d=(0,Z.jsxs)(Z.Fragment,{children:[s,c,u]}),t[9]=s,t[10]=u,t[11]=d):d=t[11],d},Ze=e=>{let t=(0,D.c)(13),{onSubmit:n,header:r}=e,[i,a]=(0,E.useState)(null);if(!i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`div`,{children:(0,Z.jsx)(Xe,{onSelect:a})}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,Z.jsxs)(Z.Fragment,{children:[r,e]}),t[1]=r,t[2]=n),n}let o;t[3]===i?o=t[4]:(o=Je.find(e=>e.schema===i),t[3]=i,t[4]=o);let c=o?.connectionLibraries,l;t[5]===c?.libraries?l=t[6]:(l=c?.libraries??[],t[5]=c?.libraries,t[6]=l);let u=c?.preferred??`sqlalchemy`,d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(null),t[7]=d):d=t[7];let f;return t[8]!==n||t[9]!==i||t[10]!==l||t[11]!==u?(f=(0,Z.jsx)(s,{schema:i,libraries:l,preferredLibrary:u,displayNames:Ce,libraryLabel:`Preferred connection library`,generateCode:Qe,onSubmit:n,onBack:d}),t[8]=n,t[9]=i,t[10]=l,t[11]=u,t[12]=f):f=t[12],f};function Qe(e,t){return We(e,t)}var $e=e=>{let t=(0,D.c)(19),{className:n,sources:r,onAdd:i}=e,a=(0,E.useId)();if(r.length===0)return null;let o;t[0]===n?o=t[1]:(o=v(`rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2 dark:bg-[linear-gradient(135deg,var(--blue-2),var(--purple-2))]`,n),t[0]=n,t[1]=o);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(c,{className:`h-3.5 w-3.5 text-(--blue-9) dark:text-(--blue-10)`}),t[2]=s):s=t[2];let l;t[3]===a?l=t[4]:(l=(0,Z.jsxs)(`div`,{className:`mr-1 flex items-center gap-1.5`,children:[s,(0,Z.jsx)(`h3`,{id:a,className:`text-sm`,children:`Quick add`})]}),t[3]=a,t[4]=l);let u;if(t[5]!==i||t[6]!==r){let e;t[8]===i?e=t[9]:(e=e=>(0,Z.jsx)(ie,{side:`bottom`,content:(0,Z.jsx)(et,{source:e}),children:(0,Z.jsxs)(`button`,{type:`button`,"aria-label":`Add ${e.displayName} connection`,className:`inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 dark:border-border dark:bg-background/60 dark:hover:bg-accent/80`,onClick:()=>i(e),children:[(0,Z.jsx)(se,{className:`h-3 w-3 text-muted-foreground`}),e.displayName]})},e.id),t[8]=i,t[9]=e),u=r.map(e),t[5]=i,t[6]=r,t[7]=u}else u=t[7];let d;t[10]===u?d=t[11]:(d=(0,Z.jsx)(b,{delayDuration:200,children:u}),t[10]=u,t[11]=d);let f;t[12]!==l||t[13]!==d?(f=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[l,d]}),t[12]=l,t[13]=d,t[14]=f):f=t[14];let p;return t[15]!==o||t[16]!==f||t[17]!==a?(p=(0,Z.jsx)(`section`,{"aria-labelledby":a,className:o,children:f}),t[15]=o,t[16]=f,t[17]=a,t[18]=p):p=t[18],p},et=e=>{let t=(0,D.c)(17),{source:n}=e,r;t[0]===n.displayName?r=t[1]:(r=(0,Z.jsx)(`div`,{className:`font-medium`,children:n.displayName}),t[0]=n.displayName,t[1]=r);let i;t[2]===n.origins?i=t[3]:(i=n.origins.map(nt).join(` and `),t[2]=n.origins,t[3]=i);let a;t[4]===i?a=t[5]:(a=(0,Z.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Detected from`,` `,i]}),t[4]=i,t[5]=a);let o;t[6]!==r||t[7]!==a?(o=(0,Z.jsxs)(`div`,{children:[r,a]}),t[6]=r,t[7]=a,t[8]=o):o=t[8];let s;t[9]===n.configuration?s=t[10]:(s=n.configuration.map(rt),t[9]=n.configuration,t[10]=s);let c;t[11]===s?c=t[12]:(c=(0,Z.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:s}),t[11]=s,t[12]=c);let l;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Click to add a configured cell.`}),t[13]=l):l=t[13];let u;return t[14]!==o||t[15]!==c?(u=(0,Z.jsxs)(`div`,{className:`min-w-64 space-y-2 py-1`,children:[o,c,l]}),t[14]=o,t[15]=c,t[16]=u):u=t[16],u},tt=e=>{let t=(0,D.c)(4),{onSubmit:n,className:i,group:a}=e,o=r(n),s=u(a),c;return t[0]!==o||t[1]!==i||t[2]!==s?(c=(0,Z.jsx)($e,{className:i,sources:s,onAdd:o}),t[0]=o,t[1]=i,t[2]=s,t[3]=c):c=t[3],c};function nt(e){return e.label}function rt(e){return(0,Z.jsxs)(`div`,{className:`contents`,children:[(0,Z.jsx)(`dt`,{className:`text-muted-foreground`,children:e.field}),(0,Z.jsx)(`dd`,{children:(0,Z.jsx)(`code`,{children:e.value.kind===`environment-variable`?`os.environ["${e.value.name}"]`:e.value.value})})]},e.value.kind===`environment-variable`?e.value.name:`${e.field}:${e.value.value}`)}var it=()=>h(`type`,[m({type:d(`Access keys`),access_key_id:f().optional().describe(l.of({label:`Access Key ID`,description:`Leave empty to use the default credential chain`,inputType:`password`,optionRegex:`(access.?key.?id|object.?storage.?key|aws.?access.?key)`})),secret_access_key:f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|object.?storage.?secret|aws.?secret)`}))}),m({type:d(`Container credentials`),container_credentials_full_uri:f().nonempty().describe(l.of({label:`Credentials URI`,description:`Endpoint that vends credentials to the container`,placeholder:`http://169.254.170.23/v1/credentials`,optionRegex:`container.?credentials`})),container_authorization_token_file:f().nonempty().describe(l.of({label:`Authorization Token File`,description:`File holding the token sent to the credentials URI`,placeholder:`/var/run/secrets/token`,optionRegex:`(container.?authorization.?token.?file|container.?auth.?token)`}))})]).default({type:`Access keys`}).describe(l.of({label:`Credentials`,special:`tabs`})),at=m({type:d(`s3`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`my-bucket`,optionRegex:`(bucket|s3.?bucket)`})),region:f().optional().describe(l.of({label:`Region`,placeholder:`us-east-1`,optionRegex:`(region|aws.?region)`})),endpoint_url:f().optional().describe(l.of({label:`Endpoint URL`,description:`Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set`,placeholder:`https://s3.amazonaws.com`,optionRegex:`(endpoint|s3.?url|s3.?endpoint)`})),allow_http:p().default(!1).describe(l.of({label:`Allow HTTP`,description:`Required for plain-http (non-TLS) endpoints`})),auth:it()}).describe(l.of({direction:`two-columns`})),ot=m({type:d(`gcs`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`my-bucket`,optionRegex:`(bucket|gcs.?bucket|google.?bucket)`})),service_account_key:f().optional().describe(l.of({label:`Service Account Key (JSON)`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),Q=m({type:d(`azure`),container:f().nonempty().describe(l.of({label:`Container`,placeholder:`my-container`})),account_name:f().nonempty().describe(l.of({label:`Account Name`,placeholder:`storageaccount`,optionRegex:`(azure.?account|account.?name|storage.?account)`})),account_key:f().optional().describe(l.of({label:`Account Key`,inputType:`password`,optionRegex:`(azure.?key|account.?key|storage.?key)`}))}).describe(l.of({direction:`two-columns`})),st=m({type:d(`coreweave`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`bucket-name`})),region:f().nonempty().describe(l.of({label:`Region`,placeholder:`US-EAST-04A`})),auth:it()}).describe(l.of({direction:`two-columns`})),ct=m({type:d(`gdrive`),credentials_json:f().optional().describe(l.of({label:`Service Account JSON`,description:`Leave empty to use browser-based authentication`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),lt=m({type:d(`huggingface`),token:f().optional().describe(l.of({label:`Access Token`,description:`Leave empty to use the HF_TOKEN environment variable or cached login`,inputType:`password`,optionRegex:`(hf.?token|hugging.?face.?token|hub.?token)`}))}).describe(l.of({direction:`two-columns`}));function ut(e){return e!=null&&e!==``}var dt=m({type:d(`github`),org:f().nonempty().describe(l.of({label:`Organization or user`})),repo:f().nonempty().describe(l.of({label:`Repository`})),sha:f().optional().describe(l.of({label:`Branch, tag, or commit`,placeholder:`main`,description:`Leave empty to use the default branch`})),username:f().optional().describe(l.of({label:`Username`,description:`Set this together with access token`,optionRegex:`(github.?username|github.?user)`})),token:f().optional().describe(l.of({label:`Access Token`,description:`Set this together with username. Required for private repos and to avoid GitHub's rate limits.`,inputType:`password`,optionRegex:`(github.?token|gh.?token|github.?pat)`}))}).refine(e=>ut(e.username)===ut(e.token),{message:`Username and access token are required together`,path:[`token`]}).describe(l.of({direction:`two-columns`})),ft=h(`type`,[at,ot,Q,st,ct,lt,dt]),pt={obstore:`obstore`,fsspec:`fsspec`,huggingface_hub:`huggingface_hub`},mt=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t){if(t===void 0||t===``)return``;let n=`_${e}`;if(w(t)){let e=oe(t);return this.secrets[n]=`os.environ.get("${e}")`,n}return`"${C(t)}"`}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
135
+ `)}var Z=y(),Ke=[{name:`PostgreSQL`,schema:_e,color:`#336791`,logo:`postgres`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`MySQL`,schema:ve,color:`#00758F`,logo:`mysql`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`SQLite`,schema:ye,color:`#003B57`,logo:`sqlite`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`DuckDB`,schema:be,color:`#FFD700`,logo:`duckdb`,connectionLibraries:{libraries:[`duckdb`],preferred:`duckdb`}},{name:`MotherDuck`,schema:I,color:`#ff9538`,logo:`motherduck`,connectionLibraries:{libraries:[`duckdb`],preferred:`duckdb`}},{name:`Snowflake`,schema:L,color:`#29B5E8`,logo:`snowflake`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`ClickHouse`,schema:z,color:`#2C2C1D`,logo:`clickhouse`,connectionLibraries:{libraries:[`clickhouse_connect`],preferred:`clickhouse_connect`}},{name:`Timeplus`,schema:B,color:`#B83280`,logo:`timeplus`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`BigQuery`,schema:R,color:`#4285F4`,logo:`bigquery`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`ClickHouse Embedded`,schema:V,color:`#f2b611`,logo:`clickhouse`,connectionLibraries:{libraries:[`chdb`],preferred:`chdb`}},{name:`Trino`,schema:H,color:`#d466b6`,logo:`trino`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}},{name:`DataFusion`,schema:W,color:`#202A37`,logo:`datafusion`,connectionLibraries:{libraries:[`ibis`],preferred:`ibis`}},{name:`PySpark`,schema:G,color:`#1C5162`,logo:`pyspark`,connectionLibraries:{libraries:[`ibis`],preferred:`ibis`}},{name:`Redshift`,schema:K,color:`#522BAE`,logo:`redshift`,connectionLibraries:{libraries:[`redshift`],preferred:`redshift`}},{name:`Databricks`,schema:q,color:`#c41e0c`,logo:`databricks`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`,`ibis`],preferred:`sqlalchemy`}},{name:`Supabase`,schema:xe,color:`#238F5F`,logo:`supabase`,connectionLibraries:{libraries:[`sqlalchemy`,`sqlmodel`],preferred:`sqlalchemy`}}],qe=[{name:`Iceberg`,schema:U,color:`#000000`,logo:`iceberg`,connectionLibraries:{libraries:[`pyiceberg`],preferred:`pyiceberg`}}],Je=[...Ke,...qe],Ye=[...new Set(Je.flatMap(({name:e,logo:t})=>[e,t]))],Xe=e=>{let t=(0,D.c)(12),{onSelect:r}=e,i;t[0]===r?i=t[1]:(i=Ke.map(e=>{let{name:t,schema:i,color:o,logo:s}=e;return(0,Z.jsx)(n,{name:t,color:o,icon:(0,Z.jsx)(a,{name:s,className:`w-8 h-8 text-white brightness-0 invert dark:invert`}),onSelect:()=>r(i)},t)}),t[0]=r,t[1]=i);let s;t[2]===i?s=t[3]:(s=(0,Z.jsx)(o,{children:i}),t[2]=i,t[3]=s);let c;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`h4`,{className:`font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2`,children:[`Data Catalogs`,(0,Z.jsx)(`hr`,{className:`flex-1`})]}),t[4]=c):c=t[4];let l;t[5]===r?l=t[6]:(l=qe.map(e=>{let{name:t,schema:i,color:o,logo:s}=e;return(0,Z.jsx)(n,{name:t,color:o,icon:(0,Z.jsx)(a,{name:s,className:`w-8 h-8 text-white brightness-0 invert dark:invert`}),onSelect:()=>r(i)},t)}),t[5]=r,t[6]=l);let u;t[7]===l?u=t[8]:(u=(0,Z.jsx)(o,{children:l}),t[7]=l,t[8]=u);let d;return t[9]!==s||t[10]!==u?(d=(0,Z.jsxs)(Z.Fragment,{children:[s,c,u]}),t[9]=s,t[10]=u,t[11]=d):d=t[11],d},Ze=e=>{let t=(0,D.c)(13),{onSubmit:n,header:r}=e,[i,a]=(0,E.useState)(null);if(!i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`div`,{children:(0,Z.jsx)(Xe,{onSelect:a})}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,Z.jsxs)(Z.Fragment,{children:[r,e]}),t[1]=r,t[2]=n),n}let o;t[3]===i?o=t[4]:(o=Je.find(e=>e.schema===i),t[3]=i,t[4]=o);let c=o?.connectionLibraries,l;t[5]===c?.libraries?l=t[6]:(l=c?.libraries??[],t[5]=c?.libraries,t[6]=l);let u=c?.preferred??`sqlalchemy`,d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(null),t[7]=d):d=t[7];let f;return t[8]!==n||t[9]!==i||t[10]!==l||t[11]!==u?(f=(0,Z.jsx)(s,{schema:i,libraries:l,preferredLibrary:u,displayNames:Ce,libraryLabel:`Preferred connection library`,generateCode:Qe,onSubmit:n,onBack:d}),t[8]=n,t[9]=i,t[10]=l,t[11]=u,t[12]=f):f=t[12],f};function Qe(e,t){return We(e,t)}var $e=e=>{let t=(0,D.c)(19),{className:n,sources:r,onAdd:i}=e,a=(0,E.useId)();if(r.length===0)return null;let o;t[0]===n?o=t[1]:(o=v(`rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2 dark:bg-[linear-gradient(135deg,var(--blue-2),var(--purple-2))]`,n),t[0]=n,t[1]=o);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(c,{className:`h-3.5 w-3.5 text-(--blue-9) dark:text-(--blue-10)`}),t[2]=s):s=t[2];let l;t[3]===a?l=t[4]:(l=(0,Z.jsxs)(`div`,{className:`mr-1 flex items-center gap-1.5`,children:[s,(0,Z.jsx)(`h3`,{id:a,className:`text-sm`,children:`Quick add`})]}),t[3]=a,t[4]=l);let u;if(t[5]!==i||t[6]!==r){let e;t[8]===i?e=t[9]:(e=e=>(0,Z.jsx)(ie,{side:`bottom`,content:(0,Z.jsx)(et,{source:e}),children:(0,Z.jsxs)(`button`,{type:`button`,"aria-label":`Add ${e.displayName} connection`,className:`inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 dark:border-border dark:bg-background/60 dark:hover:bg-accent/80`,onClick:()=>i(e),children:[(0,Z.jsx)(se,{className:`h-3 w-3 text-muted-foreground`}),e.displayName]})},e.id),t[8]=i,t[9]=e),u=r.map(e),t[5]=i,t[6]=r,t[7]=u}else u=t[7];let d;t[10]===u?d=t[11]:(d=(0,Z.jsx)(b,{delayDuration:200,children:u}),t[10]=u,t[11]=d);let f;t[12]!==l||t[13]!==d?(f=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[l,d]}),t[12]=l,t[13]=d,t[14]=f):f=t[14];let p;return t[15]!==o||t[16]!==f||t[17]!==a?(p=(0,Z.jsx)(`section`,{"aria-labelledby":a,className:o,children:f}),t[15]=o,t[16]=f,t[17]=a,t[18]=p):p=t[18],p},et=e=>{let t=(0,D.c)(17),{source:n}=e,r;t[0]===n.displayName?r=t[1]:(r=(0,Z.jsx)(`div`,{className:`font-medium`,children:n.displayName}),t[0]=n.displayName,t[1]=r);let i;t[2]===n.origins?i=t[3]:(i=n.origins.map(nt).join(` and `),t[2]=n.origins,t[3]=i);let a;t[4]===i?a=t[5]:(a=(0,Z.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Detected from`,` `,i]}),t[4]=i,t[5]=a);let o;t[6]!==r||t[7]!==a?(o=(0,Z.jsxs)(`div`,{children:[r,a]}),t[6]=r,t[7]=a,t[8]=o):o=t[8];let s;t[9]===n.configuration?s=t[10]:(s=n.configuration.map(rt),t[9]=n.configuration,t[10]=s);let c;t[11]===s?c=t[12]:(c=(0,Z.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:s}),t[11]=s,t[12]=c);let l;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Click to add a configured cell.`}),t[13]=l):l=t[13];let u;return t[14]!==o||t[15]!==c?(u=(0,Z.jsxs)(`div`,{className:`min-w-64 space-y-2 py-1`,children:[o,c,l]}),t[14]=o,t[15]=c,t[16]=u):u=t[16],u},tt=e=>{let t=(0,D.c)(4),{onSubmit:n,className:i,group:a}=e,o=r(n),s=u(a),c;return t[0]!==o||t[1]!==i||t[2]!==s?(c=(0,Z.jsx)($e,{className:i,sources:s,onAdd:o}),t[0]=o,t[1]=i,t[2]=s,t[3]=c):c=t[3],c};function nt(e){return e.label}function rt(e){return(0,Z.jsxs)(`div`,{className:`contents`,children:[(0,Z.jsx)(`dt`,{className:`text-muted-foreground`,children:e.field}),(0,Z.jsx)(`dd`,{children:(0,Z.jsx)(`code`,{children:e.value.kind===`environment-variable`?`os.environ["${e.value.name}"]`:e.value.value})})]},e.value.kind===`environment-variable`?e.value.name:`${e.field}:${e.value.value}`)}var it=()=>h(`type`,[p({type:m(`Access keys`),access_key_id:f().optional().describe(l.of({label:`Access Key ID`,description:`Leave empty to use the default credential chain`,inputType:`password`,optionRegex:`(access.?key.?id|object.?storage.?key|aws.?access.?key)`})),secret_access_key:f().optional().describe(l.of({label:`Secret Access Key`,inputType:`password`,optionRegex:`(secret.?access.?key|object.?storage.?secret|aws.?secret)`}))}),p({type:m(`Container credentials`),container_credentials_full_uri:f().nonempty().describe(l.of({label:`Credentials URI`,description:`Endpoint that vends credentials to the container`,placeholder:`http://169.254.170.23/v1/credentials`,optionRegex:`container.?credentials`})),container_authorization_token_file:f().nonempty().describe(l.of({label:`Authorization Token File`,description:`File holding the token sent to the credentials URI`,placeholder:`/var/run/secrets/token`,optionRegex:`(container.?authorization.?token.?file|container.?auth.?token)`}))})]).default({type:`Access keys`}).describe(l.of({label:`Credentials`,special:`tabs`})),at=p({type:m(`s3`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`my-bucket`,optionRegex:`(bucket|s3.?bucket)`})),region:f().optional().describe(l.of({label:`Region`,placeholder:`us-east-1`,optionRegex:`(region|aws.?region)`})),endpoint_url:f().optional().describe(l.of({label:`Endpoint URL`,description:`Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set`,placeholder:`https://s3.amazonaws.com`,optionRegex:`(endpoint|s3.?url|s3.?endpoint)`})),allow_http:d().default(!1).describe(l.of({label:`Allow HTTP`,description:`Required for plain-http (non-TLS) endpoints`})),auth:it()}).describe(l.of({direction:`two-columns`})),ot=p({type:m(`gcs`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`my-bucket`,optionRegex:`(bucket|gcs.?bucket|google.?bucket)`})),service_account_key:f().optional().describe(l.of({label:`Service Account Key (JSON)`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),Q=p({type:m(`azure`),container:f().nonempty().describe(l.of({label:`Container`,placeholder:`my-container`})),account_name:f().nonempty().describe(l.of({label:`Account Name`,placeholder:`storageaccount`,optionRegex:`(azure.?account|account.?name|storage.?account)`})),account_key:f().optional().describe(l.of({label:`Account Key`,inputType:`password`,optionRegex:`(azure.?key|account.?key|storage.?key)`}))}).describe(l.of({direction:`two-columns`})),st=p({type:m(`coreweave`),bucket:f().nonempty().describe(l.of({label:`Bucket`,placeholder:`bucket-name`})),region:f().nonempty().describe(l.of({label:`Region`,placeholder:`US-EAST-04A`})),auth:it()}).describe(l.of({direction:`two-columns`})),ct=p({type:m(`gdrive`),credentials_json:f().optional().describe(l.of({label:`Service Account JSON`,description:`Leave empty to use browser-based authentication`,special:`secret_textarea`}))}).describe(l.of({direction:`two-columns`})),lt=p({type:m(`huggingface`),token:f().optional().describe(l.of({label:`Access Token`,description:`Leave empty to use the HF_TOKEN environment variable or cached login`,inputType:`password`,optionRegex:`(hf.?token|hugging.?face.?token|hub.?token)`}))}).describe(l.of({direction:`two-columns`}));function ut(e){return e!=null&&e!==``}var dt=p({type:m(`github`),org:f().nonempty().describe(l.of({label:`Organization or user`})),repo:f().nonempty().describe(l.of({label:`Repository`})),sha:f().optional().describe(l.of({label:`Branch, tag, or commit`,placeholder:`main`,description:`Leave empty to use the default branch`})),username:f().optional().describe(l.of({label:`Username`,description:`Set this together with access token`,optionRegex:`(github.?username|github.?user)`})),token:f().optional().describe(l.of({label:`Access Token`,description:`Set this together with username. Required for private repos and to avoid GitHub's rate limits.`,inputType:`password`,optionRegex:`(github.?token|gh.?token|github.?pat)`}))}).refine(e=>ut(e.username)===ut(e.token),{message:`Username and access token are required together`,path:[`token`]}).describe(l.of({direction:`two-columns`})),ft=h(`type`,[at,ot,Q,st,ct,lt,dt]),pt={obstore:`obstore`,fsspec:`fsspec`,huggingface_hub:`huggingface_hub`},mt=class{secrets={};get imports(){return Object.keys(this.secrets).length===0?new Set:new Set([`import os`])}print(e,t){if(t===void 0||t===``)return``;let n=`_${e}`;if(w(t)){let e=oe(t);return this.secrets[n]=`os.environ.get("${e}")`,n}return`"${C(t)}"`}formatSecrets(){return Object.keys(this.secrets).length===0?``:Object.entries(this.secrets).map(([e,t])=>`${e} = ${t}`).join(`
136
136
  `)}};function ht(e,t){if(e?.type===`Container credentials`)return[` container_credentials_full_uri=${t.print(`container_credentials_full_uri`,e.container_credentials_full_uri)},`,` container_authorization_token_file=${t.print(`container_authorization_token_file`,e.container_authorization_token_file)},`];let n=[];return e?.access_key_id&&n.push(` access_key_id=${t.print(`access_key_id`,e.access_key_id)},`),e?.secret_access_key&&n.push(` secret_access_key=${t.print(`secret_access_key`,e.secret_access_key)},`),n}function gt(e,t){let n=t.print(`bucket`,e.bucket),r=new Set([`from obstore.store import S3Store`]),a=[];e.region&&a.push(` region=${t.print(`region`,e.region)},`),a.push(...ht(e.auth,t)),e.endpoint_url&&a.push(` endpoint_url=${t.print(`endpoint_url`,e.endpoint_url)},`),e.allow_http&&a.push(` allow_http=True,`);let o=a.length>0?`\n${a.join(`
137
137
  `)}\n`:``;return{imports:r,code:i(`
138
138
  store = S3Store(${n},${o})