@marimo-team/frontend 0.19.3-dev8 → 0.19.4-dev0

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 (179) hide show
  1. package/dist/assets/{CellStatus-BwPGnX3z.js → CellStatus--kUu6N2K.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-KlUs_Sz3.js → ConnectedDataExplorerComponent-BKJwCHu7.js} +1 -1
  3. package/dist/assets/{ErrorBoundary-Drf1manw.js → ErrorBoundary-C7JBxSzd.js} +1 -1
  4. package/dist/assets/{ImperativeModal-q6QlC2aZ.js → ImperativeModal-DVhvP4lH.js} +1 -1
  5. package/dist/assets/{JsonOutput--AuyEErr.js → JsonOutput-BSGE-MRo.js} +5 -5
  6. package/dist/assets/{LazyAnyLanguageCodeMirror-jpEDlD0M.js → LazyAnyLanguageCodeMirror-Cp2punaU.js} +2 -2
  7. package/dist/assets/{MarimoErrorOutput-BZjY8e2w.js → MarimoErrorOutput-CX0SCJOZ.js} +2 -2
  8. package/dist/assets/{RenderHTML-BTLaM20B.js → RenderHTML-Do_PVqRy.js} +1 -1
  9. package/dist/assets/VisuallyHidden-B9t3FhTP.js +1 -0
  10. package/dist/assets/{add-cell-with-ai-BWWVs9qV.js → add-cell-with-ai-manh7kBT.js} +21 -21
  11. package/dist/assets/{add-database-form-Bw_YRH1r.js → add-database-form-CgkV0MRs.js} +2 -2
  12. package/dist/assets/agent-panel-D-OmT-rw.js +287 -0
  13. package/dist/assets/{ai-model-dropdown-BrUOgnWS.js → ai-model-dropdown-DzyBY5VA.js} +1 -1
  14. package/dist/assets/{alert-dialog-k5KxevGr.js → alert-dialog-jcHA5geR.js} +1 -1
  15. package/dist/assets/{any-language-editor-DQu1Tt2N.js → any-language-editor-Cm83E7D_.js} +1 -1
  16. package/dist/assets/{app-config-button-B8CXELx0.js → app-config-button-DC3alCuB.js} +1 -1
  17. package/dist/assets/button-B8cGZzP5.js +1 -0
  18. package/dist/assets/{cache-panel-C1So4Zu3.js → cache-panel-1FqnpB9y.js} +1 -1
  19. package/dist/assets/cell-editor-RHFZmO74.js +23 -0
  20. package/dist/assets/cell-link-Dqj_nfXA.js +1 -0
  21. package/dist/assets/{cells-DU3EySUd.js → cells-BNQUQiDS.js} +49 -49
  22. package/dist/assets/{chat-components-Bc9j9ls4.js → chat-components-CWiXtKu6.js} +1 -1
  23. package/dist/assets/{chat-display-BrTi6c8V.js → chat-display-CGnOamQG.js} +1 -1
  24. package/dist/assets/{chat-panel-8Dym5Gv3.js → chat-panel-Dh1M55c9.js} +2 -2
  25. package/dist/assets/client-CDjmJmVw.js +4 -0
  26. package/dist/assets/{column-preview-Ck6B_-sQ.js → column-preview-CKxT2s-S.js} +1 -1
  27. package/dist/assets/{command-B_minI8b.js → command-YPFTinLj.js} +1 -1
  28. package/dist/assets/{command-palette-BT3u6JBB.js → command-palette-7fVEhKGc.js} +1 -1
  29. package/dist/assets/common-DJkPpBxC.js +1 -0
  30. package/dist/assets/config-D6nhy4FA.js +1 -0
  31. package/dist/assets/context-DHfVoQfl.js +1 -0
  32. package/dist/assets/{copy-icon-B69c-352.js → copy-icon-jWsqdLn1.js} +1 -1
  33. package/dist/assets/{datasource-DCvPlnaJ.js → datasource-DerBLc6V.js} +2 -2
  34. package/dist/assets/{dependency-graph-panel-C9jYZ6pA.js → dependency-graph-panel-Vd-OsVLa.js} +4 -4
  35. package/dist/assets/{dialog-DUEuLcT2.js → dialog-CF5DtF1E.js} +1 -1
  36. package/dist/assets/{dist-DOFFh6Ii.js → dist-Dg7UO_Vw.js} +1 -1
  37. package/dist/assets/{documentation-panel-AsatrTfg.js → documentation-panel-xG2-zpwg.js} +1 -1
  38. package/dist/assets/{download-PR1bF3g_.js → download-B6EJS7Ar.js} +1 -1
  39. package/dist/assets/edit-page-7Hkti2j_.js +12 -0
  40. package/dist/assets/{error-banner-DU5Qb8a8.js → error-banner-DvT0IGDZ.js} +1 -1
  41. package/dist/assets/{error-panel-D_wVKV6I.js → error-panel-BxBpZYvt.js} +1 -1
  42. package/dist/assets/{es-CEE_7T0w.js → es-BoHEdemq.js} +1 -1
  43. package/dist/assets/{field-DDKGFzpC.js → field-Clr_fqUr.js} +1 -1
  44. package/dist/assets/{file-explorer-panel-DltK8JVp.js → file-explorer-panel-C9K0vIPl.js} +1 -1
  45. package/dist/assets/{floating-outline-BfdazXWm.js → floating-outline-DCrTuu2G.js} +1 -1
  46. package/dist/assets/{focus-CtlWIiQr.js → focus-DM53w5BH.js} +1 -1
  47. package/dist/assets/{form-Cy5TkLzh.js → form-BcKfhfZc.js} +2 -2
  48. package/dist/assets/{glide-data-editor-D_bRnWfy.js → glide-data-editor-CRb9AiCG.js} +1 -1
  49. package/dist/assets/{globals-BSLm1nlz.js → globals-Bf30kOQF.js} +1 -1
  50. package/dist/assets/{home-page-CEnaUutq.js → home-page-BRyNf7fl.js} +2 -2
  51. package/dist/assets/index-CBMqMxiq.js +43 -0
  52. package/dist/assets/index-DDc_1b-N.css +2 -0
  53. package/dist/assets/input-B80Yt1uu.js +1 -0
  54. package/dist/assets/{kiosk-mode-BnTZR6mM.js → kiosk-mode-P-NYHJID.js} +1 -1
  55. package/dist/assets/{label-qwandMoh.js → label-CNZLffHW.js} +1 -1
  56. package/dist/assets/{layout-BTiWDrbh.js → layout-DT91GUei.js} +4 -4
  57. package/dist/assets/links-D529u6GQ.js +1 -0
  58. package/dist/assets/{logs-panel-Cnp9tO_1.js → logs-panel-C2dfrRig.js} +1 -1
  59. package/dist/assets/{markdown-renderer-BSrbBHwX.js → markdown-renderer-BPnVa0ym.js} +2 -2
  60. package/dist/assets/{mermaid-BPkO79lo.js → mermaid--ZwxKP7u.js} +1 -1
  61. package/dist/assets/mode-Dq8MKjNR.js +1 -0
  62. package/dist/assets/{multi-map-fjX9ImVF.js → multi-map-CQd4MZr5.js} +1 -1
  63. package/dist/assets/name-cell-input-BaEPC7ON.js +1 -0
  64. package/dist/assets/{outline-panel-DCfj1bI-.js → outline-panel-Cca864H0.js} +1 -1
  65. package/dist/assets/{packages-panel-BiEckVdM.js → packages-panel-Cy_KAYmq.js} +1 -1
  66. package/dist/assets/{panels-BXRys72u.js → panels-BzlLZfye.js} +1 -1
  67. package/dist/assets/{process-output-wGlHkL-Q.js → process-output-Dn1rOp26.js} +1 -1
  68. package/dist/assets/{readonly-python-code-xbh7G2Y2.js → readonly-python-code-CXeF74Iq.js} +1 -1
  69. package/dist/assets/{renderShortcut-D0Pei-OA.js → renderShortcut-eU5Hsfml.js} +1 -1
  70. package/dist/assets/{run-page-BCwJRhCq.js → run-page-CM_n6pXD.js} +1 -1
  71. package/dist/assets/scratchpad-panel-XCkVY3Hp.js +1 -0
  72. package/dist/assets/{secrets-panel-CDWmmmBS.js → secrets-panel-BMY6PPth.js} +1 -1
  73. package/dist/assets/{select-D0g5GnIs.js → select-D9lTzMzP.js} +1 -1
  74. package/dist/assets/{session-panel-DuQl_oQp.js → session-panel-BDt6Y_mU.js} +1 -1
  75. package/dist/assets/{slides-component-MkPkpql1.js → slides-component-Dp0Yv5b0.js} +1 -1
  76. package/dist/assets/{snippets-panel-R_ql6HGu.js → snippets-panel-K-JKJQBf.js} +1 -1
  77. package/dist/assets/state-DWRZTH2y.js +1 -0
  78. package/dist/assets/state-JzO-Ni5T.js +1 -0
  79. package/dist/assets/{switch-CWzL-0WF.js → switch-RowEjq0T.js} +1 -1
  80. package/dist/assets/{terminal-BWM0fOMh.js → terminal-BhbNfCNw.js} +1 -1
  81. package/dist/assets/{textarea-CfvBt_Xm.js → textarea-Di1KKcL4.js} +1 -1
  82. package/dist/assets/{tracing-Kscqc1t3.js → tracing-nvbrZdpf.js} +1 -1
  83. package/dist/assets/{tracing-panel-BEzOflWc.js → tracing-panel-CTXJaO-A.js} +2 -2
  84. package/dist/assets/{types-DhuSHMNQ.js → types-CT2U5Ljy.js} +1 -1
  85. package/dist/assets/{useAddCell-C9lbOVO1.js → useAddCell-COb93CUl.js} +1 -1
  86. package/dist/assets/{useBoolean-B-A0dyIW.js → useBoolean-B_S7yTZz.js} +1 -1
  87. package/dist/assets/{useCellActionButton-fsh9MTAX.js → useCellActionButton-D5Zt1dDz.js} +1 -1
  88. package/dist/assets/{useDateFormatter-CV0QXb5P.js → useDateFormatter-DsANziQR.js} +1 -1
  89. package/dist/assets/useDeleteCell-DHF_xvAh.js +1 -0
  90. package/dist/assets/{useDependencyPanelTab-CngFbla0.js → useDependencyPanelTab-D59iW_MD.js} +1 -1
  91. package/dist/assets/useInterval-BGPIviJp.js +1 -0
  92. package/dist/assets/{useNotebookActions-D01w160c.js → useNotebookActions-DEl-rH-3.js} +1 -1
  93. package/dist/assets/{useNumberFormatter-D8ks3oPN.js → useNumberFormatter-FoXhpyAb.js} +1 -1
  94. package/dist/assets/usePress-DTwIUo40.js +7 -0
  95. package/dist/assets/useRunCells-CKEmgeKM.js +1 -0
  96. package/dist/assets/useSplitCell-D9YiO-z5.js +1 -0
  97. package/dist/assets/{useTheme-DfP1CWaW.js → useTheme-CNj0G_ol.js} +1 -1
  98. package/dist/assets/utilities.esm-DG4qccZc.js +3 -0
  99. package/dist/assets/utils-pfqq9IdB.js +1 -0
  100. package/dist/assets/{vega-component-B8ghmMYW.js → vega-component-C1voDf5W.js} +1 -1
  101. package/dist/assets/{write-secret-modal-CLm48gMe.js → write-secret-modal-hOetwavI.js} +1 -1
  102. package/dist/index.html +56 -56
  103. package/package.json +5 -5
  104. package/src/__mocks__/requests.ts +1 -0
  105. package/src/__tests__/mount.test.ts +128 -0
  106. package/src/components/app-config/__tests__/get-dirty-values.test.ts +1 -1
  107. package/src/components/app-config/ai-config.tsx +328 -28
  108. package/src/components/app-config/user-config-form.tsx +10 -3
  109. package/src/components/chat/acp/agent-panel.tsx +56 -43
  110. package/src/components/chat/chat-utils.ts +0 -19
  111. package/src/components/data-table/column-header.tsx +1 -1
  112. package/src/components/editor/KernelStartupErrorModal.tsx +2 -2
  113. package/src/components/editor/actions/name-cell-input.tsx +10 -4
  114. package/src/components/editor/ai/completion-handlers.tsx +1 -1
  115. package/src/components/editor/alerts/connecting-alert.tsx +33 -6
  116. package/src/components/editor/chrome/types.ts +2 -4
  117. package/src/components/editor/chrome/wrapper/app-chrome.tsx +55 -58
  118. package/src/components/editor/chrome/wrapper/footer-items/runtime-settings.tsx +150 -96
  119. package/src/components/editor/renderers/vertical-layout/__tests__/useFocusFirstEditor.test.ts +27 -0
  120. package/src/components/editor/renderers/vertical-layout/useFocusFirstEditor.ts +6 -0
  121. package/src/components/utils/lazy-mount.tsx +29 -8
  122. package/src/core/ai/ids/ids.ts +12 -4
  123. package/src/core/cells/cells.ts +2 -0
  124. package/src/core/cells/scrollCellIntoView.ts +3 -2
  125. package/src/core/codemirror/cm.ts +2 -0
  126. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +123 -0
  127. package/src/core/codemirror/lsp/notebook-lsp.ts +44 -4
  128. package/src/core/codemirror/misc/__tests__/string-braces.test.ts +200 -0
  129. package/src/core/codemirror/misc/string-braces.ts +37 -0
  130. package/src/core/config/__tests__/config-schema.test.ts +36 -0
  131. package/src/core/config/config-schema.ts +1 -0
  132. package/src/core/export/__tests__/hooks.test.ts +504 -0
  133. package/src/core/export/hooks.ts +93 -4
  134. package/src/core/islands/bridge.ts +1 -0
  135. package/src/core/kernel/__tests__/handlers.test.ts +2 -2
  136. package/src/core/kernel/state.ts +1 -0
  137. package/src/core/network/__tests__/requests-lazy.test.ts +1 -1
  138. package/src/core/network/__tests__/requests-network.test.ts +0 -18
  139. package/src/core/network/requests-lazy.ts +3 -2
  140. package/src/core/network/requests-network.ts +10 -7
  141. package/src/core/network/requests-static.ts +1 -0
  142. package/src/core/network/requests-toasting.tsx +1 -0
  143. package/src/core/network/types.ts +2 -0
  144. package/src/core/wasm/bridge.ts +1 -0
  145. package/src/css/globals.css +2 -0
  146. package/src/hooks/__tests__/useInterval.test.tsx +104 -0
  147. package/src/hooks/useInterval.ts +32 -6
  148. package/src/mount.tsx +6 -0
  149. package/src/plugins/impl/chat/ChatPlugin.tsx +2 -4
  150. package/src/plugins/impl/chat/chat-ui.tsx +62 -191
  151. package/src/plugins/impl/chat/types.ts +5 -12
  152. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +3 -1
  153. package/src/utils/events.ts +1 -0
  154. package/dist/assets/VisuallyHidden-BodIky8L.js +0 -1
  155. package/dist/assets/agent-panel-Bm-vW8YL.js +0 -287
  156. package/dist/assets/button-DuYGqRtX.js +0 -1
  157. package/dist/assets/cell-editor-Cdtc1m3g.js +0 -23
  158. package/dist/assets/cell-link-CFAPzUg5.js +0 -1
  159. package/dist/assets/client-DfkWorYM.js +0 -4
  160. package/dist/assets/common-jorbwXZC.js +0 -1
  161. package/dist/assets/config-Ba3eeYri.js +0 -1
  162. package/dist/assets/context-BAYdLMF_.js +0 -1
  163. package/dist/assets/edit-page-B1Ed6RKp.js +0 -12
  164. package/dist/assets/index-DNg7_e7t.js +0 -43
  165. package/dist/assets/index-__6MNWbe.css +0 -2
  166. package/dist/assets/input-CaEtLL8p.js +0 -1
  167. package/dist/assets/links-Bpd4gqTj.js +0 -1
  168. package/dist/assets/mode-yhfN-4ye.js +0 -1
  169. package/dist/assets/name-cell-input-CmuWqgFR.js +0 -1
  170. package/dist/assets/scratchpad-panel-C6PpCYtK.js +0 -1
  171. package/dist/assets/state-DEHWsmkM.js +0 -1
  172. package/dist/assets/state-DXAf-ejz.js +0 -1
  173. package/dist/assets/useDeleteCell-ByImoTpm.js +0 -1
  174. package/dist/assets/useInterval-DpipYmgs.js +0 -1
  175. package/dist/assets/usePress-C2LPFxyv.js +0 -7
  176. package/dist/assets/useRunCells-CmnSPQtM.js +0 -1
  177. package/dist/assets/useSplitCell-BTH64tve.js +0 -1
  178. package/dist/assets/utilities.esm-CMQs6YPp.js +0 -3
  179. package/dist/assets/utils-CJJIceVn.js +0 -1
@@ -1,4 +1,4 @@
1
- var Ue=Object.defineProperty;var Ke=(t,e,s)=>e in t?Ue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var ne=(t,e,s)=>Ke(t,typeof e!="symbol"?e+"":e,s);import{s as me}from"./chunk-LvLJmgfZ.js";import{t as We}from"./react-BGmjiNul.js";import{C as He,dt as Me,yn as h}from"./cells-DU3EySUd.js";import{D as oe,P as p,R as d,T as v,_ as ue,i as Qe,k as m,m as Ge}from"./zod-Cg4WLWh2.js";import{t as be}from"./compiler-runtime-DeeZ7FnK.js";import{S as Ve}from"./_Uint8Array-BGESiCQL.js";import{r as re}from"./useLifecycle-CmDXEyIC.js";import{r as ze,t as Je}from"./_baseEach-BH6a1vAB.js";import{f as Ye}from"./hotkeys-uKX61F1_.js";import{t as Xe}from"./jsx-runtime-DN_bIXfG.js";import{t as ie}from"./button-DuYGqRtX.js";import{t as fe}from"./cn-C1rgT0yh.js";import{c as Ze,i as et,n as tt,r as st,s as nt,t as ot}from"./select-D0g5GnIs.js";import{t as rt}from"./circle-plus-D1IRnTdM.js";import{a as ae,c as ge,o as it,p as at,r as ct,t as lt}from"./dropdown-menu-BP4_BZLr.js";import{n as dt}from"./DeferredRequestRegistry-B3BENoUa.js";import{o as ht,r as pt}from"./input-CaEtLL8p.js";import{a as mt,c as ut,d as bt,g as ft,l as gt,o as yt,p as St,s as _t,u as wt}from"./textarea-CfvBt_Xm.js";import{a as xt,c as $t,l as kt,n as Ct,r as At,t as jt}from"./dialog-DUEuLcT2.js";import{n as vt}from"./ImperativeModal-q6QlC2aZ.js";import{t as Rt}from"./links-DNmjkr65.js";import{n as It}from"./useAsyncData-BJJJOr9W.js";import{o as Tt}from"./focus-CtlWIiQr.js";import{o as Dt,t as qt,u as i}from"./form-Cy5TkLzh.js";import{t as Lt}from"./request-registry-CAqj3mAX.js";import{n as Pt,t as Nt}from"./write-secret-modal-CLm48gMe.js";function Ft(t,e,s,o){for(var n=-1,a=t==null?0:t.length;++n<a;){var c=t[n];e(o,c,s(c),t)}return o}var Et=Ft;function Bt(t,e,s,o){return Je(t,function(n,a,c){e(o,n,s(n),c)}),o}var Ot=Bt;function Ut(t,e){return function(s,o){var n=Ve(s)?Et:Ot,a=e?e():{};return n(s,t,ze(o,2),a)}}var Kt=Ut(function(t,e,s){t[s?0:1].push(e)},function(){return[[],[]]});function $(){return d().optional().describe(i.of({label:"Password",inputType:"password",placeholder:"password",optionRegex:".*password.*"}))}function ce(t,e){let s=d();return s=e?s.nonempty():s.optional(),s=s.describe(i.of({label:t||"Token",inputType:"password",placeholder:"token",optionRegex:".*token.*"})),s}function G(){return d().optional().describe(i.of({label:"Warehouse Name",placeholder:"warehouse",optionRegex:".*warehouse.*"}))}function le(t,e){let s=d();return s=e?s.nonempty():s.optional(),s.describe(i.of({label:t||"URI",optionRegex:".*uri.*"}))}function x(t){return d().nonempty().describe(i.of({label:t||"Host",placeholder:"localhost",optionRegex:".*host.*"}))}function w(){return d().describe(i.of({label:"Database",placeholder:"db name",optionRegex:".*database.*"}))}function Wt(){return d().describe(i.of({label:"Schema",placeholder:"schema name",optionRegex:".*schema.*"}))}function k(){return d().nonempty().describe(i.of({label:"Username",placeholder:"username",optionRegex:".*username.*"}))}function C(t){let e=Qe().describe(i.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function ye(){return v().default(!1).describe(i.of({label:"Read Only"}))}const Se=p({type:m("postgres"),host:x(),port:C(5432).optional(),database:w(),username:k(),password:$(),ssl:v().default(!1).describe(i.of({label:"Use SSL"}))}).describe(i.of({direction:"two-columns"})),_e=p({type:m("mysql"),host:x(),port:C(3306),database:w(),username:k(),password:$(),ssl:v().default(!1).describe(i.of({label:"Use SSL"}))}).describe(i.of({direction:"two-columns"})),we=p({type:m("sqlite"),database:w().describe(i.of({label:"Database Path"}))}).describe(i.of({direction:"two-columns"})),xe=p({type:m("duckdb"),database:w().describe(i.of({label:"Database Path"})),read_only:ye()}).describe(i.of({direction:"two-columns"})),$e=p({type:m("motherduck"),database:w().default("my_db").describe(i.of({label:"Database Name"})),token:ce()}).describe(i.of({direction:"two-columns"})),ke=p({type:m("snowflake"),account:d().nonempty().describe(i.of({label:"Account",optionRegex:".*snowflake.*"})),warehouse:d().optional().describe(i.of({label:"Warehouse",optionRegex:".*snowflake.*"})),database:w(),schema:d().optional().describe(i.of({label:"Schema",optionRegex:".*snowflake.*"})),username:k(),password:$(),role:d().optional().describe(i.of({label:"Role"}))}).describe(i.of({direction:"two-columns"})),Ce=p({type:m("bigquery"),project:d().nonempty().describe(i.of({label:"Project ID",optionRegex:".*bigquery.*"})),dataset:d().nonempty().describe(i.of({label:"Dataset",optionRegex:".*bigquery.*"})),credentials_json:d().describe(i.of({label:"Credentials JSON",inputType:"textarea"}))}).describe(i.of({direction:"two-columns"})),Ae=p({type:m("clickhouse_connect"),host:x(),port:C(8123).optional(),username:k(),password:$(),secure:v().default(!1).describe(i.of({label:"Use HTTPs"}))}).describe(i.of({direction:"two-columns"})),je=p({type:m("timeplus"),host:x().default("localhost"),port:C(8123).optional(),username:k().default("default"),password:$().default("")}).describe(i.of({direction:"two-columns"})),ve=p({type:m("chdb"),database:w().describe(i.of({label:"Database Path"})),read_only:ye()}).describe(i.of({direction:"two-columns"})),Re=p({type:m("trino"),host:x(),port:C(8080),database:w(),schema:Wt().optional(),username:k(),password:$(),async_support:v().default(!1).describe(i.of({label:"Async Support"}))}).describe(i.of({direction:"two-columns"})),Ie=p({type:m("iceberg"),name:d().describe(i.of({label:"Catalog Name"})),catalog:oe("type",[p({type:m("REST"),warehouse:G(),uri:d().optional().describe(i.of({label:"URI",placeholder:"https://",optionRegex:".*uri.*"})),token:ce()}),p({type:m("SQL"),warehouse:G(),uri:d().optional().describe(i.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:".*uri.*"}))}),p({type:m("Hive"),warehouse:G(),uri:le()}),p({type:m("Glue"),warehouse:G(),uri:le()}),p({type:m("DynamoDB"),"dynamodb.profile-name":d().optional().describe(i.of({label:"Profile Name"})),"dynamodb.region":d().optional().describe(i.of({label:"Region"})),"dynamodb.access-key-id":d().optional().describe(i.of({label:"Access Key ID"})),"dynamodb.secret-access-key":d().optional().describe(i.of({label:"Secret Access Key",inputType:"password"})),"dynamodb.session-token":d().optional().describe(i.of({label:"Session Token",inputType:"password"}))})]).default({type:"REST",token:void 0}).describe(i.of({special:"tabs"}))}),Te=p({type:m("datafusion"),sessionContext:v().optional().describe(i.of({label:"Use Session Context"}))}),De=p({type:m("pyspark"),host:x().optional(),port:C().optional()}),qe=p({type:m("redshift"),host:x(),port:C(5439),connectionType:oe("type",[p({type:m("IAM credentials"),region:d().describe(i.of({label:"Region"})),aws_access_key_id:d().nonempty().describe(i.of({label:"AWS Access Key ID",inputType:"password",optionRegex:".*aws_access_key_id.*"})),aws_secret_access_key:d().nonempty().describe(i.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:".*aws_secret_access_key.*"})),aws_session_token:d().optional().describe(i.of({label:"AWS Session Token",inputType:"password",optionRegex:".*aws_session_token.*"}))}),p({type:m("DB credentials"),user:k(),password:$()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:w()}).describe(i.of({direction:"two-columns"})),Le=p({type:m("databricks"),access_token:ce("Access Token",!0),server_hostname:x("Server Hostname"),http_path:le("HTTP Path",!0),catalog:d().optional().describe(i.of({label:"Catalog"})),schema:d().optional().describe(i.of({label:"Schema"}))}).describe(i.of({direction:"two-columns"})),Pe=p({type:m("supabase"),host:x(),port:C(5432).optional(),database:w(),username:k(),password:$(),disable_client_pooling:v().default(!1).describe(i.of({label:"Disable Client-Side Pooling"}))}).describe(i.of({direction:"two-columns"})),Ht=oe("type",[Se,_e,we,xe,$e,ke,Ce,Ae,je,ve,Re,Ie,Te,De,qe,Le,Pe]);var de="env:";function tn(t){return t}function V(t){return typeof t=="string"?t.startsWith(de):!1}function he(t){return`${de}${t}`}function Mt(t){return t.replace(de,"")}const Ne={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var y=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},Qt=t=>`_${t}`,Gt=class{constructor(){ne(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=Qt(t),V(e)){let o=Mt(e),n=s?`os.environ.get("${o}", "${s}")`:`os.environ.get("${o}")`;return this.secrets[t]=n,t}if(s!=null){let o=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=o,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?U(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return U(e);let o=this.print(t,e,s);return o.startsWith('"')&&o.endsWith('"')?o.slice(1,-1):`{${o}}`}printPassword(t,e,s,o){let n=s?this.printInFString.bind(this):this.print.bind(this);return V(t)?n(o||"password",t):n(o||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
1
+ var Ue=Object.defineProperty;var Ke=(t,e,s)=>e in t?Ue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var ne=(t,e,s)=>Ke(t,typeof e!="symbol"?e+"":e,s);import{s as me}from"./chunk-LvLJmgfZ.js";import{t as We}from"./react-BGmjiNul.js";import{bn as h,ft as He,w as Me}from"./cells-BNQUQiDS.js";import{D as oe,P as p,R as d,T as v,_ as ue,i as Qe,k as m,m as Ge}from"./zod-Cg4WLWh2.js";import{t as be}from"./compiler-runtime-DeeZ7FnK.js";import{S as Ve}from"./_Uint8Array-BGESiCQL.js";import{r as re}from"./useLifecycle-CmDXEyIC.js";import{r as ze,t as Je}from"./_baseEach-BH6a1vAB.js";import{f as Ye}from"./hotkeys-uKX61F1_.js";import{t as Xe}from"./jsx-runtime-DN_bIXfG.js";import{t as ie}from"./button-B8cGZzP5.js";import{t as fe}from"./cn-C1rgT0yh.js";import{c as Ze,i as et,n as tt,r as st,s as nt,t as ot}from"./select-D9lTzMzP.js";import{t as rt}from"./circle-plus-D1IRnTdM.js";import{a as ae,c as ge,o as it,p as at,r as ct,t as lt}from"./dropdown-menu-BP4_BZLr.js";import{n as dt}from"./DeferredRequestRegistry-B3BENoUa.js";import{o as ht,r as pt}from"./input-B80Yt1uu.js";import{a as mt,c as ut,d as bt,g as ft,l as gt,o as yt,p as St,s as _t,u as wt}from"./textarea-Di1KKcL4.js";import{a as xt,c as $t,l as kt,n as Ct,r as At,t as jt}from"./dialog-CF5DtF1E.js";import{n as vt}from"./ImperativeModal-DVhvP4lH.js";import{t as Rt}from"./links-DNmjkr65.js";import{n as It}from"./useAsyncData-BJJJOr9W.js";import{o as Tt}from"./focus-DM53w5BH.js";import{o as Dt,t as qt,u as i}from"./form-BcKfhfZc.js";import{t as Lt}from"./request-registry-CAqj3mAX.js";import{n as Pt,t as Nt}from"./write-secret-modal-hOetwavI.js";function Ft(t,e,s,o){for(var n=-1,a=t==null?0:t.length;++n<a;){var c=t[n];e(o,c,s(c),t)}return o}var Et=Ft;function Bt(t,e,s,o){return Je(t,function(n,a,c){e(o,n,s(n),c)}),o}var Ot=Bt;function Ut(t,e){return function(s,o){var n=Ve(s)?Et:Ot,a=e?e():{};return n(s,t,ze(o,2),a)}}var Kt=Ut(function(t,e,s){t[s?0:1].push(e)},function(){return[[],[]]});function $(){return d().optional().describe(i.of({label:"Password",inputType:"password",placeholder:"password",optionRegex:".*password.*"}))}function ce(t,e){let s=d();return s=e?s.nonempty():s.optional(),s=s.describe(i.of({label:t||"Token",inputType:"password",placeholder:"token",optionRegex:".*token.*"})),s}function G(){return d().optional().describe(i.of({label:"Warehouse Name",placeholder:"warehouse",optionRegex:".*warehouse.*"}))}function le(t,e){let s=d();return s=e?s.nonempty():s.optional(),s.describe(i.of({label:t||"URI",optionRegex:".*uri.*"}))}function x(t){return d().nonempty().describe(i.of({label:t||"Host",placeholder:"localhost",optionRegex:".*host.*"}))}function w(){return d().describe(i.of({label:"Database",placeholder:"db name",optionRegex:".*database.*"}))}function Wt(){return d().describe(i.of({label:"Schema",placeholder:"schema name",optionRegex:".*schema.*"}))}function k(){return d().nonempty().describe(i.of({label:"Username",placeholder:"username",optionRegex:".*username.*"}))}function C(t){let e=Qe().describe(i.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function ye(){return v().default(!1).describe(i.of({label:"Read Only"}))}const Se=p({type:m("postgres"),host:x(),port:C(5432).optional(),database:w(),username:k(),password:$(),ssl:v().default(!1).describe(i.of({label:"Use SSL"}))}).describe(i.of({direction:"two-columns"})),_e=p({type:m("mysql"),host:x(),port:C(3306),database:w(),username:k(),password:$(),ssl:v().default(!1).describe(i.of({label:"Use SSL"}))}).describe(i.of({direction:"two-columns"})),we=p({type:m("sqlite"),database:w().describe(i.of({label:"Database Path"}))}).describe(i.of({direction:"two-columns"})),xe=p({type:m("duckdb"),database:w().describe(i.of({label:"Database Path"})),read_only:ye()}).describe(i.of({direction:"two-columns"})),$e=p({type:m("motherduck"),database:w().default("my_db").describe(i.of({label:"Database Name"})),token:ce()}).describe(i.of({direction:"two-columns"})),ke=p({type:m("snowflake"),account:d().nonempty().describe(i.of({label:"Account",optionRegex:".*snowflake.*"})),warehouse:d().optional().describe(i.of({label:"Warehouse",optionRegex:".*snowflake.*"})),database:w(),schema:d().optional().describe(i.of({label:"Schema",optionRegex:".*snowflake.*"})),username:k(),password:$(),role:d().optional().describe(i.of({label:"Role"}))}).describe(i.of({direction:"two-columns"})),Ce=p({type:m("bigquery"),project:d().nonempty().describe(i.of({label:"Project ID",optionRegex:".*bigquery.*"})),dataset:d().nonempty().describe(i.of({label:"Dataset",optionRegex:".*bigquery.*"})),credentials_json:d().describe(i.of({label:"Credentials JSON",inputType:"textarea"}))}).describe(i.of({direction:"two-columns"})),Ae=p({type:m("clickhouse_connect"),host:x(),port:C(8123).optional(),username:k(),password:$(),secure:v().default(!1).describe(i.of({label:"Use HTTPs"}))}).describe(i.of({direction:"two-columns"})),je=p({type:m("timeplus"),host:x().default("localhost"),port:C(8123).optional(),username:k().default("default"),password:$().default("")}).describe(i.of({direction:"two-columns"})),ve=p({type:m("chdb"),database:w().describe(i.of({label:"Database Path"})),read_only:ye()}).describe(i.of({direction:"two-columns"})),Re=p({type:m("trino"),host:x(),port:C(8080),database:w(),schema:Wt().optional(),username:k(),password:$(),async_support:v().default(!1).describe(i.of({label:"Async Support"}))}).describe(i.of({direction:"two-columns"})),Ie=p({type:m("iceberg"),name:d().describe(i.of({label:"Catalog Name"})),catalog:oe("type",[p({type:m("REST"),warehouse:G(),uri:d().optional().describe(i.of({label:"URI",placeholder:"https://",optionRegex:".*uri.*"})),token:ce()}),p({type:m("SQL"),warehouse:G(),uri:d().optional().describe(i.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:".*uri.*"}))}),p({type:m("Hive"),warehouse:G(),uri:le()}),p({type:m("Glue"),warehouse:G(),uri:le()}),p({type:m("DynamoDB"),"dynamodb.profile-name":d().optional().describe(i.of({label:"Profile Name"})),"dynamodb.region":d().optional().describe(i.of({label:"Region"})),"dynamodb.access-key-id":d().optional().describe(i.of({label:"Access Key ID"})),"dynamodb.secret-access-key":d().optional().describe(i.of({label:"Secret Access Key",inputType:"password"})),"dynamodb.session-token":d().optional().describe(i.of({label:"Session Token",inputType:"password"}))})]).default({type:"REST",token:void 0}).describe(i.of({special:"tabs"}))}),Te=p({type:m("datafusion"),sessionContext:v().optional().describe(i.of({label:"Use Session Context"}))}),De=p({type:m("pyspark"),host:x().optional(),port:C().optional()}),qe=p({type:m("redshift"),host:x(),port:C(5439),connectionType:oe("type",[p({type:m("IAM credentials"),region:d().describe(i.of({label:"Region"})),aws_access_key_id:d().nonempty().describe(i.of({label:"AWS Access Key ID",inputType:"password",optionRegex:".*aws_access_key_id.*"})),aws_secret_access_key:d().nonempty().describe(i.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:".*aws_secret_access_key.*"})),aws_session_token:d().optional().describe(i.of({label:"AWS Session Token",inputType:"password",optionRegex:".*aws_session_token.*"}))}),p({type:m("DB credentials"),user:k(),password:$()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:w()}).describe(i.of({direction:"two-columns"})),Le=p({type:m("databricks"),access_token:ce("Access Token",!0),server_hostname:x("Server Hostname"),http_path:le("HTTP Path",!0),catalog:d().optional().describe(i.of({label:"Catalog"})),schema:d().optional().describe(i.of({label:"Schema"}))}).describe(i.of({direction:"two-columns"})),Pe=p({type:m("supabase"),host:x(),port:C(5432).optional(),database:w(),username:k(),password:$(),disable_client_pooling:v().default(!1).describe(i.of({label:"Disable Client-Side Pooling"}))}).describe(i.of({direction:"two-columns"})),Ht=oe("type",[Se,_e,we,xe,$e,ke,Ce,Ae,je,ve,Re,Ie,Te,De,qe,Le,Pe]);var de="env:";function tn(t){return t}function V(t){return typeof t=="string"?t.startsWith(de):!1}function he(t){return`${de}${t}`}function Mt(t){return t.replace(de,"")}const Ne={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var y=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},Qt=t=>`_${t}`,Gt=class{constructor(){ne(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=Qt(t),V(e)){let o=Mt(e),n=s?`os.environ.get("${o}", "${s}")`:`os.environ.get("${o}")`;return this.secrets[t]=n,t}if(s!=null){let o=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=o,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?U(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return U(e);let o=this.print(t,e,s);return o.startsWith('"')&&o.endsWith('"')?o.slice(1,-1):`{${o}}`}printPassword(t,e,s,o){let n=s?this.printInFString.bind(this):this.print.bind(this);return V(t)?n(o||"password",t):n(o||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
2
2
  `)}},Vt=class extends y{generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'sslmode': 'require'}":"",e=this.secrets.printPassword(this.connection.password,"POSTGRES_PASSWORD",!0);return h(`
3
3
  DATABASE_URL = f"postgresql://${this.secrets.printInFString("username",this.connection.username)}:${e}@${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}/${this.secrets.printInFString("database",this.connection.database)}"
4
4
  engine = ${this.orm}.create_engine(DATABASE_URL${t})
@@ -108,4 +108,4 @@ ${z({host:t,port:e,database:s,...o&&{user:o},...n&&{password:n}},a=>` $
108
108
  `)}},hs=class{constructor(){ne(this,"secrets",new Gt)}createGenerator(t,e){switch(t.type){case"postgres":return new Vt(t,e,this.secrets);case"mysql":return new zt(t,e,this.secrets);case"sqlite":return new Jt(t,e,this.secrets);case"snowflake":return new Yt(t,e,this.secrets);case"bigquery":return new Xt(t,e,this.secrets);case"duckdb":return new Zt(t,e,this.secrets);case"motherduck":return new es(t,e,this.secrets);case"clickhouse_connect":return new ts(t,e,this.secrets);case"timeplus":return new ss(t,e,this.secrets);case"chdb":return new ns(t,e,this.secrets);case"trino":return new os(t,e,this.secrets);case"iceberg":return new rs(t,e,this.secrets);case"datafusion":return new is(t,e,this.secrets);case"pyspark":return new as(t,e,this.secrets);case"redshift":return new cs(t,e,this.secrets);case"databricks":return new ls(t,e,this.secrets);case"supabase":return new ds(t,e,this.secrets);default:re(t)}}};function ps(t,e){if(!(e in Ne))throw Error(`Unsupported library: ${e}`);Ht.parse(t);let s=new hs,o=s.createGenerator(t,e),n=o.generateConnectionCode(),a=s.secrets,c=[...new Set([...a.imports,...o.imports])].sort();c.push("");let l=a.formatSecrets();return l&&c.push(l),c.push(n.trim()),c.join(`
109
109
  `)}function U(t){return t.toString().charAt(0).toUpperCase()+t.toString().slice(1)}function z(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,o])=>e(typeof o=="boolean"?`${s}=${U(o)}`:`${s}=${o}`)).join(`,
110
110
  `)}function ms(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,o])=>{let n=`"${s}"`;return e(typeof o=="boolean"?`${n}: ${U(o)}`:`${n}: ${o}`)}).join(`,
111
- `)}var us=be(),K=me(We(),1),r=me(Xe(),1),Fe=(0,K.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:Ye.NOOP});const bs=()=>(0,K.use)(Fe),fs=t=>{let e=(0,us.c)(14),{children:s}=t,o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=[],e[0]=o):o=e[0];let{data:n,isPending:a,error:c,refetch:l}=It(ws,o),b;e[1]===(n==null?void 0:n.secretKeys)?b=e[2]:(b=(n==null?void 0:n.secretKeys)||[],e[1]=n==null?void 0:n.secretKeys,e[2]=b);let u;e[3]===(n==null?void 0:n.providerNames)?u=e[4]:(u=(n==null?void 0:n.providerNames)||[],e[3]=n==null?void 0:n.providerNames,e[4]=u);let f;e[5]!==c||e[6]!==a||e[7]!==l||e[8]!==b||e[9]!==u?(f={secretKeys:b,providerNames:u,loading:a,error:c,refreshSecrets:l},e[5]=c,e[6]=a,e[7]=l,e[8]=b,e[9]=u,e[10]=f):f=e[10];let S;return e[11]!==s||e[12]!==f?(S=(0,r.jsx)(Fe,{value:f,children:s}),e[11]=s,e[12]=f,e[13]=S):S=e[13],S},gs={isMatch:t=>{if(t instanceof ue||t instanceof Ge){let{optionRegex:e}=i.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:o,providerNames:n,refreshSecrets:a}=bs(),{openModal:c,closeModal:l}=vt(),{label:b,description:u,optionRegex:f=""}=i.parse(t.description||""),[S,A]=Kt(o,g=>new RegExp(f,"i").test(g));return(0,r.jsx)(ut,{control:e.control,name:s,render:({field:g})=>(0,r.jsxs)(gt,{children:[(0,r.jsx)(wt,{children:b}),(0,r.jsx)(yt,{children:u}),(0,r.jsx)(mt,{children:(0,r.jsxs)("div",{className:"flex gap-2",children:[t instanceof ue?(0,r.jsx)(pt,{...g,value:g.value,onChange:g.onChange,className:fe("flex-1")}):(0,r.jsx)(ht,{...g,value:g.value,onChange:g.onChange,className:"flex-1"}),(0,r.jsxs)(lt,{children:[(0,r.jsx)(at,{asChild:!0,children:(0,r.jsx)(ie,{variant:"outline",size:"icon",className:fe(V(g.value)&&"bg-accent"),children:(0,r.jsx)(dt,{className:"h-3 w-3"})})}),(0,r.jsxs)(ct,{align:"end",className:"max-h-60 overflow-y-auto",children:[(0,r.jsxs)(ae,{onSelect:()=>{c((0,r.jsx)(Nt,{providerNames:n,onSuccess:_=>{a(),g.onChange(he(_)),l()},onClose:l}))},children:[(0,r.jsx)(rt,{className:"mr-2 h-3.5 w-3.5"}),"Create a new secret"]}),S.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ge,{}),(0,r.jsx)(it,{children:"Recommended"})]}),S.map(_=>(0,r.jsx)(ae,{onSelect:()=>g.onChange(he(_)),children:_},_)),A.length>0&&(0,r.jsx)(ge,{}),A.map(_=>(0,r.jsx)(ae,{onSelect:()=>g.onChange(he(_)),children:_},_))]})]})]})}),(0,r.jsx)(bt,{})]})})}};function ys(t){return t.provider!=="env"}function Ss(t){return t.name}function _s(t){return t.keys}async function ws(){let t=await Lt.request({}),e=Pt(t.secrets).filter(ys).map(Ss);return{secretKeys:t.secrets.flatMap(_s).sort(),providerNames:e}}var W=be(),Ee=[{name:"PostgreSQL",schema:Se,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:_e,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:we,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:xe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:$e,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:ke,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Ae,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:je,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Ce,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:ve,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:Re,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:Te,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:De,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:qe,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:Le,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Pe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Be=[{name:"Iceberg",schema:Ie,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],xs=t=>{let e=(0,W.c)(14),{onSelect:s}=t,o;e[0]===s?o=e[1]:(o=S=>{let{name:A,schema:g,color:_,logo:R}=S;return(0,r.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:{backgroundColor:_},onClick:()=>s(g),children:[(0,r.jsx)(Me,{name:R,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),(0,r.jsx)("span",{className:"text-white font-medium text-lg",children:A})]},A)},e[0]=s,e[1]=o);let n=o,a;e[2]===n?a=e[3]:(a=Ee.map(n),e[2]=n,e[3]=a);let c;e[4]===a?c=e[5]:(c=(0,r.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:a}),e[4]=a,e[5]=c);let l;e[6]===Symbol.for("react.memo_cache_sentinel")?(l=(0,r.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4",children:["Data Catalogs",(0,r.jsx)("hr",{className:"flex-1"})]}),e[6]=l):l=e[6];let b;e[7]===n?b=e[8]:(b=Be.map(n),e[7]=n,e[8]=b);let u;e[9]===b?u=e[10]:(u=(0,r.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:b}),e[9]=b,e[10]=u);let f;return e[11]!==c||e[12]!==u?(f=(0,r.jsxs)(r.Fragment,{children:[c,l,u]}),e[11]=c,e[12]=u,e[13]=f):f=e[13],f},$s=[gs],ks=t=>{var pe;let e=(0,W.c)(49),{schema:s,onSubmit:o,onBack:n}=t,a;e[0]===s?a=e[1]:(a=Dt(s),e[0]=s,e[1]=a);let c=s,l;e[2]===c?l=e[3]:(l=St(c),e[2]=c,e[3]=l);let b;e[4]!==a||e[5]!==l?(b={defaultValues:a,resolver:l,reValidateMode:"onChange"},e[4]=a,e[5]=l,e[6]=b):b=e[6];let u=ft(b),f=(pe=[...Ee,...Be].find(j=>j.schema===s))==null?void 0:pe.connectionLibraries,[S,A]=(0,K.useState)((f==null?void 0:f.preferred)??"sqlalchemy"),{createNewCell:g}=He(),_=Tt(),R;e[7]!==g||e[8]!==_?(R=j=>{g({code:j,before:!1,cellId:_??"__end__",skipIfCodeExists:!0})},e[7]=g,e[8]=_,e[9]=R):R=e[9];let J=R,H;e[10]!==J||e[11]!==o||e[12]!==S?(H=j=>{J(ps(j,S)),o()},e[10]=J,e[11]=o,e[12]=S,e[13]=H):H=e[13];let Y=H,I;e[14]!==u||e[15]!==Y?(I=u.handleSubmit(Y),e[14]=u,e[15]=Y,e[16]=I):I=e[16];let M;e[17]===Symbol.for("react.memo_cache_sentinel")?(M=(0,r.jsx)(_t,{}),e[17]=M):M=e[17];let T;e[18]!==u||e[19]!==s?(T=(0,r.jsx)(fs,{children:(0,r.jsx)(qt,{schema:s,form:u,renderers:$s,children:M})}),e[18]=u,e[19]=s,e[20]=T):T=e[20];let D;e[21]===n?D=e[22]:(D=(0,r.jsx)(ie,{type:"button",variant:"outline",onClick:n,children:"Back"}),e[21]=n,e[22]=D);let X=!u.formState.isValid,q;e[23]===X?q=e[24]:(q=(0,r.jsx)(ie,{type:"submit",disabled:X,children:"Add"}),e[23]=X,e[24]=q);let L;e[25]!==D||e[26]!==q?(L=(0,r.jsxs)("div",{className:"flex gap-2",children:[D,q]}),e[25]=D,e[26]=q,e[27]=L):L=e[27];let Z=ot,P;e[28]===Symbol.for("react.memo_cache_sentinel")?(P=j=>A(j),e[28]=P):P=e[28];let N;e[29]===Symbol.for("react.memo_cache_sentinel")?(N=(0,r.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[(0,r.jsx)(nt,{children:(0,r.jsx)(Ze,{placeholder:"Select a library"})}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"Preferred connection library"})]}),e[29]=N):N=e[29];let ee=tt,te=st,se=f==null?void 0:f.libraries.map(js),F;e[30]!==te||e[31]!==se?(F=(0,r.jsx)(te,{children:se}),e[30]=te,e[31]=se,e[32]=F):F=e[32];let E;e[33]!==ee||e[34]!==F?(E=(0,r.jsx)(ee,{children:F}),e[33]=ee,e[34]=F,e[35]=E):E=e[35];let B;e[36]!==Z||e[37]!==S||e[38]!==P||e[39]!==N||e[40]!==E?(B=(0,r.jsx)("div",{children:(0,r.jsxs)(Z,{value:S,onValueChange:P,children:[N,E]})}),e[36]=Z,e[37]=S,e[38]=P,e[39]=N,e[40]=E,e[41]=B):B=e[41];let O;e[42]!==L||e[43]!==B?(O=(0,r.jsxs)("div",{className:"flex gap-2 justify-between",children:[L,B]}),e[42]=L,e[43]=B,e[44]=O):O=e[44];let Q;return e[45]!==T||e[46]!==O||e[47]!==I?(Q=(0,r.jsxs)("form",{onSubmit:I,className:"space-y-4",children:[T,O]}),e[45]=T,e[46]=O,e[47]=I,e[48]=Q):Q=e[48],Q},Cs=t=>{let e=(0,W.c)(5),{onSubmit:s}=t,[o,n]=(0,K.useState)(null);if(!o){let l;return e[0]===Symbol.for("react.memo_cache_sentinel")?(l=(0,r.jsx)(xs,{onSelect:n}),e[0]=l):l=e[0],l}let a;e[1]===Symbol.for("react.memo_cache_sentinel")?(a=()=>n(null),e[1]=a):a=e[1];let c;return e[2]!==s||e[3]!==o?(c=(0,r.jsx)(ks,{schema:o,onSubmit:s,onBack:a}),e[2]=s,e[3]=o,e[4]=c):c=e[4],c};const As=t=>{let e=(0,W.c)(6),{children:s}=t,[o,n]=(0,K.useState)(!1),a;e[0]===s?a=e[1]:(a=(0,r.jsx)(kt,{asChild:!0,children:s}),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,r.jsx)(Oe,{onClose:()=>n(!1)}),e[2]=c):c=e[2];let l;return e[3]!==o||e[4]!==a?(l=(0,r.jsxs)(jt,{open:o,onOpenChange:n,children:[a,c]}),e[3]=o,e[4]=a,e[5]=l):l=e[5],l},Oe=t=>{let e=(0,W.c)(4),{onClose:s}=t,o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,r.jsx)($t,{children:"Add Connection"}),e[0]=o):o=e[0];let n;e[1]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsxs)(xt,{className:"mb-4",children:[o,(0,r.jsxs)(At,{children:["Connect to your database or data catalog to query data directly from your notebook. Learn more about how to connect to your database in our"," ",(0,r.jsx)(Rt,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"docs."})]})]}),e[1]=n):n=e[1];let a;return e[2]===s?a=e[3]:(a=(0,r.jsxs)(Ct,{className:"max-h-[75vh] overflow-y-auto",children:[n,(0,r.jsx)(Cs,{onSubmit:()=>s()})]}),e[2]=s,e[3]=a),a};function js(t){return(0,r.jsx)(et,{value:t,children:Ne[t]},t)}export{Oe as n,As as t};
111
+ `)}var us=be(),K=me(We(),1),r=me(Xe(),1),Fe=(0,K.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:Ye.NOOP});const bs=()=>(0,K.use)(Fe),fs=t=>{let e=(0,us.c)(14),{children:s}=t,o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=[],e[0]=o):o=e[0];let{data:n,isPending:a,error:c,refetch:l}=It(ws,o),b;e[1]===(n==null?void 0:n.secretKeys)?b=e[2]:(b=(n==null?void 0:n.secretKeys)||[],e[1]=n==null?void 0:n.secretKeys,e[2]=b);let u;e[3]===(n==null?void 0:n.providerNames)?u=e[4]:(u=(n==null?void 0:n.providerNames)||[],e[3]=n==null?void 0:n.providerNames,e[4]=u);let f;e[5]!==c||e[6]!==a||e[7]!==l||e[8]!==b||e[9]!==u?(f={secretKeys:b,providerNames:u,loading:a,error:c,refreshSecrets:l},e[5]=c,e[6]=a,e[7]=l,e[8]=b,e[9]=u,e[10]=f):f=e[10];let S;return e[11]!==s||e[12]!==f?(S=(0,r.jsx)(Fe,{value:f,children:s}),e[11]=s,e[12]=f,e[13]=S):S=e[13],S},gs={isMatch:t=>{if(t instanceof ue||t instanceof Ge){let{optionRegex:e}=i.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:o,providerNames:n,refreshSecrets:a}=bs(),{openModal:c,closeModal:l}=vt(),{label:b,description:u,optionRegex:f=""}=i.parse(t.description||""),[S,A]=Kt(o,g=>new RegExp(f,"i").test(g));return(0,r.jsx)(ut,{control:e.control,name:s,render:({field:g})=>(0,r.jsxs)(gt,{children:[(0,r.jsx)(wt,{children:b}),(0,r.jsx)(yt,{children:u}),(0,r.jsx)(mt,{children:(0,r.jsxs)("div",{className:"flex gap-2",children:[t instanceof ue?(0,r.jsx)(pt,{...g,value:g.value,onChange:g.onChange,className:fe("flex-1")}):(0,r.jsx)(ht,{...g,value:g.value,onChange:g.onChange,className:"flex-1"}),(0,r.jsxs)(lt,{children:[(0,r.jsx)(at,{asChild:!0,children:(0,r.jsx)(ie,{variant:"outline",size:"icon",className:fe(V(g.value)&&"bg-accent"),children:(0,r.jsx)(dt,{className:"h-3 w-3"})})}),(0,r.jsxs)(ct,{align:"end",className:"max-h-60 overflow-y-auto",children:[(0,r.jsxs)(ae,{onSelect:()=>{c((0,r.jsx)(Nt,{providerNames:n,onSuccess:_=>{a(),g.onChange(he(_)),l()},onClose:l}))},children:[(0,r.jsx)(rt,{className:"mr-2 h-3.5 w-3.5"}),"Create a new secret"]}),S.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ge,{}),(0,r.jsx)(it,{children:"Recommended"})]}),S.map(_=>(0,r.jsx)(ae,{onSelect:()=>g.onChange(he(_)),children:_},_)),A.length>0&&(0,r.jsx)(ge,{}),A.map(_=>(0,r.jsx)(ae,{onSelect:()=>g.onChange(he(_)),children:_},_))]})]})]})}),(0,r.jsx)(bt,{})]})})}};function ys(t){return t.provider!=="env"}function Ss(t){return t.name}function _s(t){return t.keys}async function ws(){let t=await Lt.request({}),e=Pt(t.secrets).filter(ys).map(Ss);return{secretKeys:t.secrets.flatMap(_s).sort(),providerNames:e}}var W=be(),Ee=[{name:"PostgreSQL",schema:Se,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:_e,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:we,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:xe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:$e,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:ke,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Ae,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:je,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Ce,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:ve,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:Re,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:Te,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:De,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:qe,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:Le,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Pe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Be=[{name:"Iceberg",schema:Ie,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],xs=t=>{let e=(0,W.c)(14),{onSelect:s}=t,o;e[0]===s?o=e[1]:(o=S=>{let{name:A,schema:g,color:_,logo:R}=S;return(0,r.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:{backgroundColor:_},onClick:()=>s(g),children:[(0,r.jsx)(He,{name:R,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),(0,r.jsx)("span",{className:"text-white font-medium text-lg",children:A})]},A)},e[0]=s,e[1]=o);let n=o,a;e[2]===n?a=e[3]:(a=Ee.map(n),e[2]=n,e[3]=a);let c;e[4]===a?c=e[5]:(c=(0,r.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:a}),e[4]=a,e[5]=c);let l;e[6]===Symbol.for("react.memo_cache_sentinel")?(l=(0,r.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4",children:["Data Catalogs",(0,r.jsx)("hr",{className:"flex-1"})]}),e[6]=l):l=e[6];let b;e[7]===n?b=e[8]:(b=Be.map(n),e[7]=n,e[8]=b);let u;e[9]===b?u=e[10]:(u=(0,r.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:b}),e[9]=b,e[10]=u);let f;return e[11]!==c||e[12]!==u?(f=(0,r.jsxs)(r.Fragment,{children:[c,l,u]}),e[11]=c,e[12]=u,e[13]=f):f=e[13],f},$s=[gs],ks=t=>{var pe;let e=(0,W.c)(49),{schema:s,onSubmit:o,onBack:n}=t,a;e[0]===s?a=e[1]:(a=Dt(s),e[0]=s,e[1]=a);let c=s,l;e[2]===c?l=e[3]:(l=St(c),e[2]=c,e[3]=l);let b;e[4]!==a||e[5]!==l?(b={defaultValues:a,resolver:l,reValidateMode:"onChange"},e[4]=a,e[5]=l,e[6]=b):b=e[6];let u=ft(b),f=(pe=[...Ee,...Be].find(j=>j.schema===s))==null?void 0:pe.connectionLibraries,[S,A]=(0,K.useState)((f==null?void 0:f.preferred)??"sqlalchemy"),{createNewCell:g}=Me(),_=Tt(),R;e[7]!==g||e[8]!==_?(R=j=>{g({code:j,before:!1,cellId:_??"__end__",skipIfCodeExists:!0})},e[7]=g,e[8]=_,e[9]=R):R=e[9];let J=R,H;e[10]!==J||e[11]!==o||e[12]!==S?(H=j=>{J(ps(j,S)),o()},e[10]=J,e[11]=o,e[12]=S,e[13]=H):H=e[13];let Y=H,I;e[14]!==u||e[15]!==Y?(I=u.handleSubmit(Y),e[14]=u,e[15]=Y,e[16]=I):I=e[16];let M;e[17]===Symbol.for("react.memo_cache_sentinel")?(M=(0,r.jsx)(_t,{}),e[17]=M):M=e[17];let T;e[18]!==u||e[19]!==s?(T=(0,r.jsx)(fs,{children:(0,r.jsx)(qt,{schema:s,form:u,renderers:$s,children:M})}),e[18]=u,e[19]=s,e[20]=T):T=e[20];let D;e[21]===n?D=e[22]:(D=(0,r.jsx)(ie,{type:"button",variant:"outline",onClick:n,children:"Back"}),e[21]=n,e[22]=D);let X=!u.formState.isValid,q;e[23]===X?q=e[24]:(q=(0,r.jsx)(ie,{type:"submit",disabled:X,children:"Add"}),e[23]=X,e[24]=q);let L;e[25]!==D||e[26]!==q?(L=(0,r.jsxs)("div",{className:"flex gap-2",children:[D,q]}),e[25]=D,e[26]=q,e[27]=L):L=e[27];let Z=ot,P;e[28]===Symbol.for("react.memo_cache_sentinel")?(P=j=>A(j),e[28]=P):P=e[28];let N;e[29]===Symbol.for("react.memo_cache_sentinel")?(N=(0,r.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[(0,r.jsx)(nt,{children:(0,r.jsx)(Ze,{placeholder:"Select a library"})}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"Preferred connection library"})]}),e[29]=N):N=e[29];let ee=tt,te=st,se=f==null?void 0:f.libraries.map(js),F;e[30]!==te||e[31]!==se?(F=(0,r.jsx)(te,{children:se}),e[30]=te,e[31]=se,e[32]=F):F=e[32];let E;e[33]!==ee||e[34]!==F?(E=(0,r.jsx)(ee,{children:F}),e[33]=ee,e[34]=F,e[35]=E):E=e[35];let B;e[36]!==Z||e[37]!==S||e[38]!==P||e[39]!==N||e[40]!==E?(B=(0,r.jsx)("div",{children:(0,r.jsxs)(Z,{value:S,onValueChange:P,children:[N,E]})}),e[36]=Z,e[37]=S,e[38]=P,e[39]=N,e[40]=E,e[41]=B):B=e[41];let O;e[42]!==L||e[43]!==B?(O=(0,r.jsxs)("div",{className:"flex gap-2 justify-between",children:[L,B]}),e[42]=L,e[43]=B,e[44]=O):O=e[44];let Q;return e[45]!==T||e[46]!==O||e[47]!==I?(Q=(0,r.jsxs)("form",{onSubmit:I,className:"space-y-4",children:[T,O]}),e[45]=T,e[46]=O,e[47]=I,e[48]=Q):Q=e[48],Q},Cs=t=>{let e=(0,W.c)(5),{onSubmit:s}=t,[o,n]=(0,K.useState)(null);if(!o){let l;return e[0]===Symbol.for("react.memo_cache_sentinel")?(l=(0,r.jsx)(xs,{onSelect:n}),e[0]=l):l=e[0],l}let a;e[1]===Symbol.for("react.memo_cache_sentinel")?(a=()=>n(null),e[1]=a):a=e[1];let c;return e[2]!==s||e[3]!==o?(c=(0,r.jsx)(ks,{schema:o,onSubmit:s,onBack:a}),e[2]=s,e[3]=o,e[4]=c):c=e[4],c};const As=t=>{let e=(0,W.c)(6),{children:s}=t,[o,n]=(0,K.useState)(!1),a;e[0]===s?a=e[1]:(a=(0,r.jsx)(kt,{asChild:!0,children:s}),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,r.jsx)(Oe,{onClose:()=>n(!1)}),e[2]=c):c=e[2];let l;return e[3]!==o||e[4]!==a?(l=(0,r.jsxs)(jt,{open:o,onOpenChange:n,children:[a,c]}),e[3]=o,e[4]=a,e[5]=l):l=e[5],l},Oe=t=>{let e=(0,W.c)(4),{onClose:s}=t,o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=(0,r.jsx)($t,{children:"Add Connection"}),e[0]=o):o=e[0];let n;e[1]===Symbol.for("react.memo_cache_sentinel")?(n=(0,r.jsxs)(xt,{className:"mb-4",children:[o,(0,r.jsxs)(At,{children:["Connect to your database or data catalog to query data directly from your notebook. Learn more about how to connect to your database in our"," ",(0,r.jsx)(Rt,{href:"https://docs.marimo.io/guides/working_with_data/sql/#connecting-to-a-custom-database",children:"docs."})]})]}),e[1]=n):n=e[1];let a;return e[2]===s?a=e[3]:(a=(0,r.jsxs)(Ct,{className:"max-h-[75vh] overflow-y-auto",children:[n,(0,r.jsx)(Cs,{onSubmit:()=>s()})]}),e[2]=s,e[3]=a),a};function js(t){return(0,r.jsx)(et,{value:t,children:Ne[t]},t)}export{Oe as n,As as t};