@marimo-team/frontend 0.23.16-dev45 → 0.23.16-dev48
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.
- package/dist/assets/{JsonOutput-C08yZPMz.js → JsonOutput-BIwD6Z9Y.js} +12 -12
- package/dist/assets/{add-cell-with-ai-ByOBQT99.js → add-cell-with-ai-C38rS_Vb.js} +35 -35
- package/dist/assets/{add-connection-dialog-ChQis5IF.js → add-connection-dialog-DDGKGmv6.js} +1 -1
- package/dist/assets/{agent-panel-Bh4wHqF0.js → agent-panel-BzpwIGH_.js} +1 -1
- package/dist/assets/blob-D4PJCCaE.js +1 -0
- package/dist/assets/{cell-editor-_0p7q-Z_.js → cell-editor-IyYRG2xm.js} +2 -2
- package/dist/assets/{chat-display-Ccgk4vbE.js → chat-display-CX7zz7Iy.js} +1 -1
- package/dist/assets/{chat-panel--53TIc3t.js → chat-panel-D3FqQl4H.js} +1 -1
- package/dist/assets/{chat-ui-B5rBxgsw.js → chat-ui-B7QB4NwC.js} +1 -1
- package/dist/assets/{column-preview-UAW6odg3.js → column-preview-rIsKPa9V.js} +1 -1
- package/dist/assets/{command-palette-YAVCtQ6D.js → command-palette-IpDnUFd7.js} +1 -1
- package/dist/assets/{edit-page-DQuTJlR3.js → edit-page-BxWEex0a.js} +5 -5
- package/dist/assets/{file-explorer-panel-BxfypeX1.js → file-explorer-panel-D_9Rm9qM.js} +4 -4
- package/dist/assets/{form-D8N71OB1.js → form-DTWstSVJ.js} +2 -2
- package/dist/assets/{index-Dmz2_F1x.js → index-CGrnjnHL.js} +7 -7
- package/dist/assets/{layout-B8cCh91r.js → layout-rWti2H65.js} +5 -5
- package/dist/assets/{panels-DG_QWeJn.js → panels-D-BYYQCt.js} +1 -1
- package/dist/assets/{reveal-component-c5jsRi2_.js → reveal-component-CGBET1VL.js} +1 -1
- package/dist/assets/{run-page-BUPqI6K7.js → run-page-BDt08QR4.js} +1 -1
- package/dist/assets/{scratchpad-panel-BR7YpUiV.js → scratchpad-panel-CZqs-AmJ.js} +1 -1
- package/dist/assets/session-panel-BNdpCbXw.js +1 -0
- package/dist/assets/{skeleton-CeWH7IQO.js → skeleton-BJuRsFbf.js} +1 -1
- package/dist/assets/{state-DtziTd1T.js → state-DJzSWGB9.js} +1 -1
- package/dist/assets/{useNotebookActions-Cm5GAHUD.js → useNotebookActions-DDDJKVxq.js} +1 -1
- package/dist/index.html +6 -6
- package/package.json +1 -1
- package/src/components/editor/file-tree/__tests__/renderers.test.ts +31 -0
- package/src/components/editor/file-tree/file-viewer.tsx +11 -7
- package/src/components/editor/file-tree/renderers.tsx +21 -0
- package/src/core/ai/context/providers/file.ts +8 -29
- package/src/utils/__tests__/blob.test.ts +27 -1
- package/src/utils/blob.ts +24 -1
- package/dist/assets/blob-C3EfaMOb.js +0 -1
- package/dist/assets/session-panel-DW3mL5Qf.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var jr=Object.defineProperty;var Ct=m=>{throw TypeError(m)};var $r=(m,y,_)=>y in m?jr(m,y,{enumerable:!0,configurable:!0,writable:!0,value:_}):m[y]=_;var o=(m,y,_)=>$r(m,typeof y!="symbol"?y+"":y,_),We=(m,y,_)=>y.has(m)||Ct("Cannot "+_);var i=(m,y,_)=>(We(m,y,"read from private field"),_?_.call(m):y.get(m)),u=(m,y,_)=>y.has(m)?Ct("Cannot add the same private member more than once"):y instanceof WeakSet?y.add(m):y.set(m,_),h=(m,y,_,le)=>(We(m,y,"write to private field"),le?le.call(m,_):y.set(m,_),_),g=(m,y,_)=>(We(m,y,"access private method"),_);import{i as U,p as Rt,u as Hr}from"./useEvent-D91BmmQi.js";import{Bi as Dr,Fi as Or,Gt as ie,Ji as zr,Ri as Br,Ui as Vr,Wt as qt,Yi as Se,b as Qr,qn as Gr,__tla as Yr}from"./cells-DzyDERZy.js";import{t as Jr}from"./get-C-qh_et5.js";import{t as Kr}from"./debounce-OiXznToA.js";import{t as Xr}from"./_baseSet-CsW0tABf.js";import{g as p,v as b}from"./useEventListener-C0195JsF.js";import{t as Zr}from"./invariant-CkiqGLcK.js";import{E as en}from"./utils-BWBBpCkT.js";import{E as kt,M as tn,c as je,j as rn,l as Pt,n as nn}from"./config-B-Q7J_6d.js";import{n as sn}from"./switch-OVajJBPR.js";import{c as an}from"./readonly-python-code-DHxOnQGj.js";import{t as on}from"./createReducer-DGx5Af-C.js";import{r as ln}from"./strings--BknHX9C.js";import{t as $e}from"./requests-9-v2bhoi.js";import{c as Ft,o as It,__tla as dn}from"./markdown-renderer-sEayY9-m.js";import{t as un}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as cn}from"./preload-helper-TXkS1QI3.js";import{t as At}from"./Deferred-D2igisxY.js";import{t as Nt}from"./uuid-ImXS-885.js";import{t as hn}from"./use-toast-BwJoaaDM.js";import{n as pn}from"./RenderHTML-Cd-PP5ZR.js";import{t as fn}from"./useRunCells-C2dvU2jA.js";import{
|
|
1
|
+
var jr=Object.defineProperty;var Ct=m=>{throw TypeError(m)};var $r=(m,y,_)=>y in m?jr(m,y,{enumerable:!0,configurable:!0,writable:!0,value:_}):m[y]=_;var o=(m,y,_)=>$r(m,typeof y!="symbol"?y+"":y,_),We=(m,y,_)=>y.has(m)||Ct("Cannot "+_);var i=(m,y,_)=>(We(m,y,"read from private field"),_?_.call(m):y.get(m)),u=(m,y,_)=>y.has(m)?Ct("Cannot add the same private member more than once"):y instanceof WeakSet?y.add(m):y.set(m,_),h=(m,y,_,le)=>(We(m,y,"write to private field"),le?le.call(m,_):y.set(m,_),_),g=(m,y,_)=>(We(m,y,"access private method"),_);import{i as U,p as Rt,u as Hr}from"./useEvent-D91BmmQi.js";import{Bi as Dr,Fi as Or,Gt as ie,Ji as zr,Ri as Br,Ui as Vr,Wt as qt,Yi as Se,b as Qr,qn as Gr,__tla as Yr}from"./cells-DzyDERZy.js";import{t as Jr}from"./get-C-qh_et5.js";import{t as Kr}from"./debounce-OiXznToA.js";import{t as Xr}from"./_baseSet-CsW0tABf.js";import{g as p,v as b}from"./useEventListener-C0195JsF.js";import{t as Zr}from"./invariant-CkiqGLcK.js";import{E as en}from"./utils-BWBBpCkT.js";import{E as kt,M as tn,c as je,j as rn,l as Pt,n as nn}from"./config-B-Q7J_6d.js";import{n as sn}from"./switch-OVajJBPR.js";import{c as an}from"./readonly-python-code-DHxOnQGj.js";import{t as on}from"./createReducer-DGx5Af-C.js";import{r as ln}from"./strings--BknHX9C.js";import{t as $e}from"./requests-9-v2bhoi.js";import{c as Ft,o as It,__tla as dn}from"./markdown-renderer-sEayY9-m.js";import{t as un}from"./DeferredRequestRegistry-C8EV1PoE.js";import{t as cn}from"./preload-helper-TXkS1QI3.js";import{t as At}from"./Deferred-D2igisxY.js";import{t as Nt}from"./uuid-ImXS-885.js";import{t as hn}from"./use-toast-BwJoaaDM.js";import{n as pn}from"./RenderHTML-Cd-PP5ZR.js";import{t as fn}from"./useRunCells-C2dvU2jA.js";import{r as gn,t as mn}from"./blob-D4PJCCaE.js";import{n as yn,r as wn,t as bn}from"./share-852X_cqy.js";import{i as Lt,r as vn,t as Sn}from"./events-90X9nql5.js";let _e,He,De,Tt,Ut,Wt,jt,ae,oe,$t,Oe,Ht,Dt,Ot,ze,zt,Fe,Bt,Ie,Be,Vt,Qt,_n=Promise.all([(()=>{try{return Yr}catch{}})(),(()=>{try{return dn}catch{}})()]).then(async()=>{var vt,Re,$,H,Z,q,D,Yt,Jt,Kt,qe,ee,z,ke,Xt,St,te,de,ue,ce,he,B,re,V,Zt,Qe,ne,O,pe,fe,ge,me,F,C,Q,A,N,G,x,ye,Y,v,Ge,Ye,er,Je,tr,Ke,Xe,rr,_t,L,we,be,W,X,Et;function m(t,e,r){return t==null?t:Xr(t,e,r)}_e=m,Qt=Rt(null);var{valueAtom:y,useActions:_}=on(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:Nt()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(r=>r.id!==e)}),clearBanners:t=>({...t,banners:[]})});Tt=()=>Hr(y),Vt=function(){return _()};let le,Ze;Be=class{constructor(){o(this,"subscriptions",new Map)}addSubscription(t,e){var r;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(r=this.subscriptions.get(t))==null||r.add(e)}removeSubscription(t,e){var r;(r=this.subscriptions.get(t))==null||r.delete(e)}notify(t,e){for(let r of this.subscriptions.get(t)??[])r(e)}},He=class Ve{constructor(e){o(this,"subscriptions",new Be);this.producer=e}static withProducerCallback(e){return new Ve(e)}static empty(){return new Ve}startProducer(){this.producer&&this.producer(e=>{this.subscriptions.notify("message",e)})}connect(){return new Promise(e=>setTimeout(e,0)).then(()=>{this.subscriptions.notify("open",new Event("open"))})}get readyState(){return WebSocket.OPEN}reconnect(e,r){this.close(),this.connect()}close(){this.subscriptions.notify("close",new Event("close"))}send(e){return this.subscriptions.notify("message",new MessageEvent("message",{data:e})),Promise.resolve()}addEventListener(e,r){this.subscriptions.addSubscription(e,r),e==="open"&&r(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,r){this.subscriptions.removeSubscription(e,r)}},le=1e10,Ze=1e3;function Ee(t,e){let r=t.map(n=>`"${n}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${r}`)}function sr(t={}){let e={};function r(d){e=d}let n={};function s(d){var f;n.unregisterHandler&&n.unregisterHandler(),n=d,(f=n.registerHandler)==null||f.call(n,Wr)}let a;function l(d){if(typeof d=="function"){a=d;return}a=(f,E)=>{let S=d[f];if(S)return S(E);let M=d._;if(!M)throw Error(`The requested method has no handler: ${f}`);return M(f,E)}}let{maxRequestTime:c=Ze}=t;t.transport&&s(t.transport),t.requestHandler&&l(t.requestHandler),t._debugHooks&&r(t._debugHooks);let w=0;function R(){return w<=le?++w:w=0}let k=new Map,P=new Map;function j(d,...f){let E=f[0];return new Promise((S,M)=>{var se;if(!n.send)throw Ee(["send"],"make requests");let T=R(),K={type:"request",id:T,method:d,params:E};k.set(T,{resolve:S,reject:M}),c!==1/0&&P.set(T,setTimeout(()=>{P.delete(T),M(Error("RPC request timed out."))},c)),(se=e.onSend)==null||se.call(e,K),n.send(K)})}let I=new Proxy(j,{get:(d,f,E)=>f in d?Reflect.get(d,f,E):S=>j(f,S)}),Pe=I;function ve(d,...f){var M;let E=f[0];if(!n.send)throw Ee(["send"],"send messages");let S={type:"message",id:d,payload:E};(M=e.onSend)==null||M.call(e,S),n.send(S)}let xt=new Proxy(ve,{get:(d,f,E)=>f in d?Reflect.get(d,f,E):S=>ve(f,S)}),Mt=xt,J=new Map,Ue=new Set;function Tr(d,f){var E;if(!n.registerHandler)throw Ee(["registerHandler"],"register message listeners");if(d==="*"){Ue.add(f);return}J.has(d)||J.set(d,new Set),(E=J.get(d))==null||E.add(f)}function Ur(d,f){var E,S;if(d==="*"){Ue.delete(f);return}(E=J.get(d))==null||E.delete(f),((S=J.get(d))==null?void 0:S.size)===0&&J.delete(d)}async function Wr(d){var f,E;if((f=e.onReceive)==null||f.call(e,d),!("type"in d))throw Error("Message does not contain a type.");if(d.type==="request"){if(!n.send||!a)throw Ee(["send","requestHandler"],"handle requests");let{id:S,method:M,params:T}=d,K;try{K={type:"response",id:S,success:!0,payload:await a(M,T)}}catch(se){if(!(se instanceof Error))throw se;K={type:"response",id:S,success:!1,error:se.message}}(E=e.onSend)==null||E.call(e,K),n.send(K);return}if(d.type==="response"){let S=P.get(d.id);S!=null&&clearTimeout(S);let{resolve:M,reject:T}=k.get(d.id)??{};d.success?M==null||M(d.payload):T==null||T(Error(d.error));return}if(d.type==="message"){for(let M of Ue)M(d.id,d.payload);let S=J.get(d.id);if(!S)return;for(let M of S)M(d.payload);return}throw Error(`Unexpected RPC message type: ${d.type}`)}return{setTransport:s,setRequestHandler:l,request:I,requestProxy:Pe,send:xt,sendProxy:Mt,addMessageListener:Tr,removeMessageListener:Ur,proxy:{send:Mt,request:Pe},_setDebugHooks:r}}function ir(t){return sr(t)}var et="[transport-id]";function ar(t,e){let{transportId:r}=e;return r==null?t:{[et]:r,data:t}}function or(t,e){let{transportId:r,filter:n}=e,s=n==null?void 0:n();if(r!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let a=t;if(r){if(t[et]!==r)return[!0];a=t.data}return s===!1?[!0]:[!1,a]}function lr(t,e={}){let{transportId:r,filter:n,remotePort:s}=e,a=t,l=s??t,c;return{send(w){l.postMessage(ar(w,{transportId:r}))},registerHandler(w){c=R=>{let k=R.data,[P,j]=or(k,{transportId:r,filter:()=>n==null?void 0:n(R)});P||w(j)},a.addEventListener("message",c)},unregisterHandler(){c&&a.removeEventListener("message",c)}}}function dr(t,e){return lr(t,e)}function tt(t){return ir({transport:dr(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{p.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{p.debug("[rpc] Worker -> Parent",e)}}})}ae=Rt({kind:"loading",message:"Initializing..."});var rt=yn(),nt="marimo:file",st=new Or(null);const ur={saveFile(t){st.set(nt,t)},readFile(){return st.get(nt)}};var cr={saveFile(t){Se.setCodeForHash((0,rt.compressToEncodedURIComponent)(t))},readFile(){let t=Se.getCodeFromHash()||Se.getCodeFromSearchParam();return t?(0,rt.decompressFromEncodedURIComponent)(t):null}};const hr={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var pr={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("export_demos/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}};const fr={saveFile(t){},readFile(){return U.get(Br)??null}};var gr={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
2
|
`)}},it=class{constructor(t){this.stores=t}insert(t,e){this.stores.splice(t,0,e)}saveFile(t){this.stores.forEach(e=>e.saveFile(t))}readFile(){for(let t of this.stores){let e=t.readFile();if(e)return e}return null}};let xe;oe=new it([fr,hr,cr]),xe=new it([ur,pr,gr]),ze=class Gt{constructor(){o(this,"initialized",new At);o(this,"sendRename",async({filename:e})=>(e===null||(Se.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));o(this,"sendSave",async e=>{if(!this.saveRpc)return p.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let r=await this.readCode();return r.contents&&(oe.saveFile(r.contents),xe.saveFile(r.contents)),this.rpc.proxy.request.saveNotebook(e).catch(n=>{p.error(n)}),null});o(this,"sendCopy",async()=>{b()});o(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));o(this,"sendPdb",async()=>{b()});o(this,"sendSetBreakpoints",async()=>{b()});o(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
3
|
`)),await this.putControlRequest({type:"execute-cells",...e}),null));o(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));o(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));o(this,"sendShutdown",async()=>(window.close(),null));o(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));o(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));o(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));o(this,"sendCodeCompletionRequest",async e=>(U.get(Qr)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));o(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),sn.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(r=>(p.error(r),null))));o(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));o(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));o(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(oe.saveFile(e.contents),xe.saveFile(e.contents)),wn(),null});o(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(p.warn("Save RPC not initialized"),{contents:""}));o(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));o(this,"openFile",async({path:e})=>{let r=bn({code:null,baseUrl:window.location.origin});return window.open(r,"_blank"),null});o(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));o(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));o(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:Nt()}),null));o(this,"sendInstantiate",async e=>null);o(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));o(this,"sendCreateFileOrFolder",async e=>{let r=null;return e.file&&(r=(await gn(e.file)).split(",")[1]??""),await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:{path:e.path,type:e.type,name:e.name,contents:r}})});o(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));o(this,"sendCopyFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"copy_file_or_directory",payload:e}));o(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));o(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));o(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));o(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));o(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));o(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));o(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));o(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));o(this,"previewSQLSchemaList",async e=>(await this.putControlRequest({type:"list-sql-schemas",...e}),null));o(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));o(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));o(this,"sendModelValue",async e=>(await this.putControlRequest({type:"model",...e}),null));o(this,"sendDocumentTransaction",()=>Promise.resolve(null));o(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));o(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));o(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());o(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));o(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));o(this,"getUsageStats",b);o(this,"getEnvironmentInfo",async()=>await this.rpc.proxy.request.bridge({functionName:"get_environment_info",payload:void 0}));o(this,"openTutorial",b);o(this,"getRecentFiles",b);o(this,"getWorkspaceFiles",b);o(this,"getRunningNotebooks",b);o(this,"shutdownSession",b);o(this,"getExportAvailability",b);o(this,"exportAsIPYNB",b);o(this,"exportAsPDF",b);o(this,"autoExportAsHTML",b);o(this,"autoExportAsMarkdown",b);o(this,"autoExportAsIPYNB",b);o(this,"updateCellOutputs",b);o(this,"writeSecret",b);o(this,"invokeAiTool",b);o(this,"clearCache",b);o(this,"getCacheInfo",b);o(this,"listStorageEntries",b);o(this,"downloadStorage",b);tn()&&(this.rpc=tt(new Worker(new URL(""+new URL("worker-BQo2bijx.js",import.meta.url).href,""+import.meta.url),{type:"module",name:at()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),U.set(ae,{kind:"ready"}),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{U.get(ae).kind==="loading"&&U.set(ae,{kind:"loading",message:e})}),this.rpc.addMessageListener("initializedError",({error:e})=>{if(this.initialized.status==="resolved"){p.error(e),hn({title:"Error initializing",description:e,variant:"danger"});return}U.set(ae,{kind:"error",message:e}),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var r;(r=this.messageConsumer)==null||r.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new Gt),window[e]}getSaveWorker(){return kt()==="read"?(p.debug("Using partially disabled SaveWorker in read-mode"),{readFile:b,readNotebook:async()=>await oe.readFile()??"",saveNotebook:b}):tt(new Worker(new URL(""+new URL("save-worker-_Qc1hOeF.js",import.meta.url).href,""+import.meta.url),{type:"module",name:at()})).proxy.request}async startSession(){let e=await oe.readFile(),r=await xe.readFile(),n=U.get(Dr)??Se.getFilename(),s=U.get(en),a={},l=new URLSearchParams(window.location.search);for(let c of l.keys()){let w=l.getAll(c);a[c]=w.length===1?w[0]:w}await this.rpc.proxy.request.startSession({queryParameters:a,code:e||r||"",filename:n,userConfig:{...s,runtime:{...s.runtime,auto_instantiate:kt()==="read"?!0:s.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):p.warn("Not running in a secure context; interrupts are not available.")}attachMessageConsumer(e){this.messageConsumer=e,this.rpc.proxy.send.consumerReady({})}async putControlRequest(e){await this.rpc.proxy.request.bridge({functionName:"put_control_request",payload:e})}},Ht=function(){return He.withProducerCallback(t=>{ze.INSTANCE.attachMessageConsumer(t)})};function at(){let t=typeof window<"u"&&window.__MARIMO_HAS_WASM_CONTROLLER__===!0;return an()+(t?"::controller":"")}Wt=function(t=je()){let e=window.fetch;return window.fetch=async(r,n)=>{let s=r instanceof Request?r.url:r.toString();if(s.startsWith("data:"))return e(r,n);try{let a=Me(s,t);if(a){let l=await(await e(a)).arrayBuffer();return new Response(l,{headers:{"Content-Type":mr(s)}})}return e(r,n)}catch(a){return p.error("Error parsing URL",a),e(r,n)}},()=>{window.fetch=e}};function mr(t){return t.endsWith(".csv")?"text/csv":t.endsWith(".json")?"application/json":t.endsWith(".txt")?"text/plain":"application/octet-stream"}jt=function(t,e=je()){let r=t.http.bind(t),n=t.load.bind(t);return t.http=async s=>{let a=Me(s,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await r(s)}catch(l){if(s.startsWith("data:"))return await window.fetch(s).then(c=>c.text());throw l}},t.load=async s=>{let a=Me(s,e);if(a)return await window.fetch(a).then(l=>l.text());try{return await n(s)}catch(l){if(s.startsWith("data:"))return await window.fetch(s).then(c=>c.text());throw l}},()=>{t.http=r,t.load=n}};function ot(t){return t.startsWith(".")?t.slice(1):t}function yr(t,e=je()){let r=Me(t,e);if(!r)return t;let n=mn(r);return URL.createObjectURL(n)}function Me(t,e){let r=document.baseURI;r.startsWith("blob:")&&(r=r.replace("blob:",""));let n=new URL(t,r).pathname,s=lt(t),a=lt(n);return e[t]||e[ot(t)]||e[n]||e[ot(n)]||s&&e[s]||a&&e[a]}function lt(t){let e=t.indexOf("/@file/");return e===-1?null:t.slice(e)}function Ce(t,e){return{get(r){return t.get(r)},set(r,n){t.set(r,n)},save_changes(){t.save_changes()},send:t.send.bind(t),on(r,n){e.aborted||(t.on(r,n),e.addEventListener("abort",()=>t.off(r,n),{once:!0}))},off(r,n){t.off(r??null,n??null)},widget_manager:{async get_model(r){return Ce(await t.widget_manager.get_model(r),e)}}}}Ie=function(t){return typeof t=="string"&&t.length>0};function dt(t){if(typeof t=="string"&&t.startsWith("anywidget:")){let e=t.slice(10);if(Ie(e))return e}throw Error(`[anywidget] Invalid widget reference: ${JSON.stringify(t)}`)}function wr(t,e){return{async getModel(r){let n=dt(r);return Ce(await t.getModel(n),e)},async getWidget(r){let n=dt(r),s=await t.getWidget(n);return{exports:s.exports,async render({el:a,signal:l}){await s.render({el:a,signal:l??e})}}}}}var ut=Symbol("marimo");function Ae(t){return t[ut]}var ct=(vt=ut,ee=class{constructor(e,r,n){u(this,D);u(this,Re,"change");u(this,$);u(this,H);u(this,Z);u(this,q,{});o(this,vt,{updateAndEmitDiffs:e=>g(this,D,Jt).call(this,e),emitCustomMessage:(e,r)=>g(this,D,Kt).call(this,e,r)});o(this,"widget_manager",{async get_model(e){let r=await ee._modelManager.getModel(e);if(!r)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return r}});u(this,qe,Kr(()=>{let e=i(this,q)[i(this,Re)];if(e)for(let r of[...e])try{r()}catch(n){p.error("Error emitting event",n)}},0));h(this,H,e),h(this,Z,r),h(this,$,new Map),n&&n.addEventListener("abort",()=>{p.debug("[Model] Signal aborted, clearing all listeners"),h(this,q,{})})}off(e,r){var n;if(!e){h(this,q,{});return}if(!r){i(this,q)[e]=new Set;return}(n=i(this,q)[e])==null||n.delete(r)}send(e,r,n){let s=(n??[]).map(a=>a instanceof ArrayBuffer?new DataView(a):new DataView(a.buffer,a.byteOffset,a.byteLength));return i(this,Z).sendCustomMessage(e,s).then(()=>r==null?void 0:r())}get(e){return i(this,H)[e]}set(e,r){h(this,H,{...i(this,H),[e]:r}),i(this,$).set(e,r),g(this,D,Yt).call(this,`change:${e}`,r),i(this,qe).call(this)}save_changes(){if(i(this,$).size===0)return;let e=Object.fromEntries(i(this,$).entries());i(this,$).clear(),i(this,Z).sendUpdate(e)}on(e,r,n){let s=n==null?void 0:n.signal;s!=null&&s.aborted||(i(this,q)[e]||(i(this,q)[e]=new Set),i(this,q)[e].add(r),s==null||s.addEventListener("abort",()=>this.off(e,r),{once:!0}))}},Re=new WeakMap,$=new WeakMap,H=new WeakMap,Z=new WeakMap,q=new WeakMap,D=new WeakSet,Yt=function(e,r){let n=i(this,q)[e];if(n)for(let s of[...n])try{s(r)}catch(a){p.error("Error emitting event",a)}},Jt=function(e){e!=null&&Object.keys(e).forEach(r=>{let n=r;i(this,H)[n]!==e[n]&&this.set(n,e[n])})},Kt=function(e,r=[]){let n=i(this,q)["msg:custom"];if(n)for(let s of[...n])try{s(e.content,r)}catch(a){p.error("Error emitting event",a)}},qe=new WeakMap,ee);function ht(t){return typeof t=="function"}function pt(t){return typeof t=="function"}function br(t){return ie(t)&&(ht(t.render)||pt(t.initialize))}function vr(t){return typeof t=="function"||br(t)}function Sr(t){return ie(t)&&vr(t.default)}var ft=new Set,gt=new WeakMap;function _r(t,e){if(Sr(t))return t.default;if(!ie(t)||t.default!==void 0)return null;let r=ht(t.render)?t.render:void 0,n=pt(t.initialize)?t.initialize:void 0;if(r===void 0&&n===void 0)return null;let s=gt.get(t);if(s)return s;ft.has(e)||(ft.add(e),p.warn(`Anywidget module at ${e} uses deprecated top-level named exports (\`render\`/\`initialize\`). Per the AFM spec, use a default export instead: \`export default { render }\`. See https://anywidget.dev/en/afm/`));let a={render:r,initialize:n};return gt.set(t,a),a}function Er(t,e){let r="https://anywidget.dev/en/afm/",n=ie(t)&&qt(t,"render"),s=ie(t)&&qt(t,"initialize");if(ie(t)&&t.default!==void 0)return Error(`Anywidget module at ${e} has an invalid default export. Expected a factory function or an object with \`render\` or \`initialize\`. See ${r}`);if(n||s){let a=[n?"`render`":null,s?"`initialize`":null].filter(Boolean).join(" and "),l=[n?"render":null,s?"initialize":null].filter(R=>R!==null),c=`export default { ${l.join(", ")} }`,w=l.length===1?`export function ${l[0]}`:"named export function ...";return Error(`Anywidget module at ${e} uses named exports (${a}). Per the AFM spec, use a default export instead: \`${c}\` (not \`${w}\`). See ${r}`)}return Error(`Anywidget module at ${e} is missing a default export. Per the AFM spec, use \`export default { render }\` or \`export default async () => ({ render })\`. See ${r}`)}Oe=function(t){return typeof t!="string"||t.length===0?!1:!!(/^(\.?\/)?@file\/[^?#]+$/.test(t)||Mr(t))};function xr(){return U.get(fn)||pn()}function Mr(t){return t.startsWith("data:text/javascript;base64,")||t.startsWith("data:application/javascript;base64,")||t.startsWith("data:text/css;base64,")?xr():!1}const mt={invoke:async()=>{let t="anywidget.invoke not supported in marimo. Please file an issue at https://github.com/marimo-team/marimo/issues";throw p.warn(t),Error(t)}};function Cr(t){if(typeof AbortSignal.any=="function")return AbortSignal.any(t);let e=new AbortController;for(let r of t){if(r.aborted)return e.abort(r.reason),e.signal;r.addEventListener("abort",()=>e.abort(r.reason),{once:!0})}return e.signal}var Rr=(St=class{constructor(){u(this,ke);u(this,z,new Map)}getModule(t){let{jsUrl:e,jsHash:r,kernelAuthored:n=!1}=t,s=i(this,z).get(r);if(s)return s;let a=g(this,ke,Xt).call(this,e,{kernelAuthored:n}).catch(l=>{throw i(this,z).delete(r),l});return i(this,z).set(r,a),a}invalidate(t){i(this,z).delete(t)}},z=new WeakMap,ke=new WeakSet,Xt=async function(t,e={}){if(!(Oe(t)||e.kernelAuthored===!0&&/^(https?:|data:)/.test(t)))throw Error(`Refusing to load anywidget module from untrusted URL: ${String(t)}`);let r=nn(t).toString();return Pt()&&(r=yr(r)),cn(()=>import(r).then(async n=>(await n.__tla,n)),[],import.meta.url)},St);function Ne(t){return typeof t=="function"}async function yt(t,e){try{await t()}catch(r){p.warn(`[WidgetBinding] ${e} cleanup failed`,r)}}var qr=(ne=class{constructor(e){u(this,V);u(this,te);u(this,de);u(this,ue);u(this,ce);u(this,he);u(this,B,new Set);u(this,re,new Set);h(this,de,e.widget),h(this,ue,e.model),h(this,ce,e.exports),h(this,te,e.controller),h(this,he,e.createHost)}static async create({widgetDef:e,model:r,createHost:n,controller:s=new AbortController}){var j;let a=s.signal,l=typeof e=="function"?await e():e,c=Promise.resolve((j=l.initialize)==null?void 0:j.call(l,{model:Ce(r,a),experimental:mt,signal:a}));c.then(async I=>{a.aborted&&Ne(I)&&await yt(I,"late initialize")}).catch(()=>{});let w=await Promise.race([c,new Promise((I,Pe)=>{let ve=()=>Pe(Error("[anywidget] binding destroyed"));if(a.aborted){ve();return}a.addEventListener("abort",ve,{once:!0})})]);if(a.aborted)throw Error("[anywidget] binding destroyed");let R,k;Ne(w)?(k=w,R=void 0):R=typeof w=="object"&&w?w:void 0;let P=new ne({widget:l,model:r,exports:R,controller:s,createHost:n});return k&&a.addEventListener("abort",()=>{var I;g(I=P,V,Qe).call(I,k,"initialize")},{once:!0}),P}get exports(){return i(this,ce)}async createView(e,r){let n=g(this,V,Zt).call(this,e,r);i(this,re).add(n);try{await n}finally{i(this,re).delete(n)}}async destroy(){for(p.debug("[WidgetBinding] Destroying binding generation"),i(this,te).abort(),await Promise.allSettled(i(this,re));i(this,B).size>0;)await Promise.all(i(this,B))}},te=new WeakMap,de=new WeakMap,ue=new WeakMap,ce=new WeakMap,he=new WeakMap,B=new WeakMap,re=new WeakMap,V=new WeakSet,Zt=async function(e,r){let n=i(this,de);if(!n.render)return;let s=Cr([r.signal,i(this,te).signal]);if(s.aborted)return;e.el.innerHTML="";let a=i(this,he).call(this,s),l=await n.render({model:Ce(i(this,ue),s),el:e.el,experimental:mt,signal:s,host:a});if(Ne(l)){let c=()=>{let w=r.signal.aborted?"view unmount":"binding destroyed";return p.debug(`[WidgetBinding] Render cleanup triggered (reason: ${w})`),g(this,V,Qe).call(this,l,"render")};if(s.aborted){await c();return}s.addEventListener("abort",()=>{c()},{once:!0})}},Qe=function(e,r){let n=yt(e,r);return i(this,B).add(n),n.finally(()=>i(this,B).delete(n)),n},ne);const wt=new Rr;var kr=(_t=class{constructor(t,e){u(this,v);u(this,O);u(this,pe);u(this,fe);u(this,ge);u(this,me);u(this,F,new AbortController);u(this,C,new At);u(this,Q,new Set);u(this,A,new Map);u(this,N);u(this,G);u(this,x);u(this,ye,Promise.resolve());u(this,Y,"");h(this,O,t),h(this,pe,e.timeout),h(this,fe,e.isEditMode),h(this,ge,e.createHost),h(this,me,e.onModelTimeout)}getModel(){return i(this,C).status==="pending"&&!i(this,N)&&h(this,N,setTimeout(()=>{i(this,C).status==="pending"&&(h(this,N,void 0),i(this,C).reject(Error(`Model not found for key: ${i(this,O)}`)),i(this,me).call(this))},i(this,pe))),i(this,C).promise}getModelSync(){return i(this,C).status==="resolved"?i(this,C).value:void 0}createModel(t){i(this,C).status==="pending"&&g(this,v,Ge).call(this,t(i(this,F).signal))}setModel(t){i(this,C).status==="pending"&&g(this,v,Ge).call(this,t)}setSpec(t){if(!i(this,G)){h(this,G,t);return}i(this,fe).call(this)&&(h(this,G,t),i(this,x)&&i(this,x).hash!==t.hash&&g(this,v,tr).call(this,t))}async getWidget(){return{exports:(await g(this,v,Ye).call(this)).exports,render:async({el:t,signal:e})=>{await this.createView({el:t,signal:e??i(this,F).signal})}}}async createView(t){if(t.signal.aborted||i(this,F).signal.aborted)return;let e={el:t.el,signal:t.signal};i(this,Q).add(e),g(this,v,rr).call(this,e),t.signal.addEventListener("abort",()=>i(this,Q).delete(e),{once:!0}),await g(this,v,Xe).call(this,e)}dispose(){if(!i(this,F).signal.aborted){p.debug(`[WidgetRuntime] Disposing model=${i(this,O)}`),i(this,N)&&h(this,N,(clearTimeout(i(this,N)),void 0)),i(this,C).status==="pending"&&(i(this,C).promise.catch(()=>{}),i(this,C).reject(Error("[anywidget] widget runtime destroyed"))),i(this,x)&&g(this,v,Ke).call(this,i(this,x)),i(this,F).abort(),i(this,Q).clear();for(let t of i(this,A).values())t.dispose();i(this,A).clear()}}},O=new WeakMap,pe=new WeakMap,fe=new WeakMap,ge=new WeakMap,me=new WeakMap,F=new WeakMap,C=new WeakMap,Q=new WeakMap,A=new WeakMap,N=new WeakMap,G=new WeakMap,x=new WeakMap,ye=new WeakMap,Y=new WeakMap,v=new WeakSet,Ge=function(t){i(this,N)&&h(this,N,(clearTimeout(i(this,N)),void 0)),i(this,C).resolve(t);let e=t.get("_css");h(this,Y,typeof e=="string"?e:""),t.on("change:_css",r=>{h(this,Y,typeof r=="string"?r:"");for(let n of i(this,A).values())n.update(i(this,Y))},{signal:i(this,F).signal})},Ye=async function(){for(;!i(this,F).signal.aborted;){let t=await this.getModel(),e=i(this,x);if(!e){let r=i(this,G);if(!r)throw Error(`[anywidget] No ESM spec for model ${i(this,O)}: nothing ever provided this widget's code`);e=g(this,v,Je).call(this,r,t)}try{let r=await e.promise;if(e===i(this,x))return r}catch(r){if(!i(this,x)||e===i(this,x))throw r}}throw Error("[anywidget] widget runtime destroyed")},er=async function(t){let{spec:e,model:r,controller:n}=t,s=await wt.getModule({jsUrl:e.url,jsHash:e.hash,kernelAuthored:!0}),a=_r(s,e.url);if(!a)throw wt.invalidate(e.hash),Er(s,e.url);return qr.create({widgetDef:a,model:r,createHost:i(this,ge),controller:n})},Je=function(t,e){let r=new AbortController,n={hash:t.hash,controller:r,promise:g(this,v,er).call(this,{spec:t,model:e,controller:r})};return n.promise.catch(()=>{i(this,x)===n&&h(this,x,void 0)}),h(this,x,n),n},tr=function(t){let e=i(this,x);if(!e)return;p.debug(`[WidgetRuntime] Hot-swapping generation for model=${i(this,O)}`);let r=g(this,v,Ke).call(this,e),n=this.getModelSync();if(!n)return;let s=g(this,v,Je).call(this,t,n);for(let a of i(this,Q))a.generation=void 0,r.then(()=>g(this,v,Xe).call(this,a,s)).catch(l=>{p.error("[WidgetRuntime] Error replacing widget view",l)})},Ke=function(t){t.controller.abort();let e=i(this,ye).then(async()=>{try{await(await t.promise).destroy()}catch{}});return h(this,ye,e),e},Xe=async function(t,e){if(t.signal.aborted||i(this,F).signal.aborted)return;let r=e??i(this,x),n=r?await r.promise:await g(this,v,Ye).call(this),s=i(this,x);if(!(!s||s!==(r??s))&&t.generation!==s){t.generation=s;try{await n.createView({el:t.el},{signal:t.signal})}catch(a){if(s!==i(this,x)){t.generation=void 0;return}throw a}}},rr=function(t){let e=t.el.getRootNode();if(!Le(e)&&!Pr(e))return;let r=i(this,A).get(e);r||(r=Fr(e,i(this,Y)),i(this,A).set(e,r)),r.references+=1;let n=!1;t.signal.addEventListener("abort",()=>{if(n)return;n=!0;let s=i(this,A).get(e);s&&(--s.references,s.references===0&&(s.dispose(),i(this,A).delete(e)))},{once:!0})},_t);function Le(t){return t.nodeType===Node.DOCUMENT_NODE}function Pr(t){return t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in t}function Fr(t,e){let r=Le(t)?t:t.ownerDocument??document,n=r.defaultView??window;if("adoptedStyleSheets"in t&&n.CSSStyleSheet!==void 0&&typeof n.CSSStyleSheet.prototype.replaceSync=="function")try{let a=new n.CSSStyleSheet;return a.replaceSync(e),t.adoptedStyleSheets=[...t.adoptedStyleSheets,a],{references:0,update(l){a.replaceSync(l)},dispose(){t.adoptedStyleSheets=t.adoptedStyleSheets.filter(l=>l!==a)}}}catch{}let s=r.createElement("style");return s.textContent=e,Le(t)?r.head.append(s):t.append(s),{references:0,update(a){s.textContent=a},dispose(){s.remove()}}}function Te(t,e=[]){let r=[];if(t instanceof DataView)r.push(e);else if(Array.isArray(t))for(let[n,s]of t.entries())r.push(...Te(s,[...e,n]));else if(typeof t=="object"&&t)for(let[n,s]of Object.entries(t))r.push(...Te(s,[...e,n]));return r}function Ir(t){let e=Te(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let r=structuredClone(t),n=[],s=[];for(let a of e){let l=Jr(t,a);if(l instanceof DataView){let c=Ft(l);n.push(c),s.push(a),_e(r,a,c)}}return{state:r,buffers:n,bufferPaths:s}}function bt(t){let{state:e,bufferPaths:r,buffers:n}=t;if(!r||r.length===0)return e;n&&Zr(n.length===r.length,"Buffers and buffer paths not the same length");let s=e;for(let[a,l]of r.entries()){let c=n==null?void 0:n[a];if(c==null){p.warn("[anywidget] Could not find buffer at path",l);continue}typeof c=="string"?_e(s,l,It(c)):_e(s,l,c)}return s}function Ar(){let t=U.get(rn).mode;return t==="edit"||t==="present"}Fe=new(Et=class{constructor(t=1e4,e=Ar){u(this,W);u(this,L,new Map);u(this,we);u(this,be);h(this,we,t),h(this,be,e)}getModel(t){return g(this,W,X).call(this,t).getModel()}getModelSync(t){var e;return(e=i(this,L).get(t))==null?void 0:e.getModelSync()}createModel(t,e){g(this,W,X).call(this,t).createModel(e)}setModel(t,e){g(this,W,X).call(this,t).setModel(e)}setSpec(t,e){g(this,W,X).call(this,t).setSpec(e)}getWidget(t){return g(this,W,X).call(this,t).getWidget()}createView(t){return g(this,W,X).call(this,t.modelId).createView(t)}delete(t){let e=i(this,L).get(t);e&&(e.dispose(),i(this,L).delete(t))}},L=new WeakMap,we=new WeakMap,be=new WeakMap,W=new WeakSet,X=function(t){let e=i(this,L).get(t);if(!e){let r=new kr(t,{timeout:i(this,we),isEditMode:i(this,be),createHost:n=>wr(this,n),onModelTimeout:()=>{i(this,L).get(t)===r&&(r.dispose(),i(this,L).delete(t))}});e=r,i(this,L).set(t,e)}return e},Et),ct._modelManager=Fe,Ut=async function(t,e){let r=e.model_id;if(!Ie(r))throw Error(`[anywidget] Invalid model id: ${String(r)}`);let n=e.message,s=("buffers"in n?n.buffers:[]).map(It);switch(n.method){case"open":{let{state:a,buffer_paths:l=[]}=n;n.esm_spec&&t.setSpec(r,n.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:s}),w=t.getModelSync(r);if(w){Ae(w).updateAndEmitDiffs(c);return}t.createModel(r,R=>new ct(c,Pt()?{sendUpdate:async()=>{},sendCustomMessage:async()=>{}}:{async sendUpdate(k){if(R.aborted){p.debug(`[Model] sendUpdate suppressed for model=${r} (signal aborted)`);return}let{state:P,buffers:j,bufferPaths:I}=Ir(k);await $e().sendModelValue({modelId:r,message:{method:"update",state:P,bufferPaths:I},buffers:j})},async sendCustomMessage(k,P){if(R.aborted){p.debug(`[Model] sendCustomMessage suppressed for model=${r} (signal aborted)`);return}await $e().sendModelValue({modelId:r,message:{method:"custom",content:k},buffers:P.map(Ft)})}},R));return}case"custom":Ae(await t.getModel(r)).emitCustomMessage({method:"custom",content:n.content},s);return;case"close":t.delete(r);return;case"update":{let{state:a,buffer_paths:l=[]}=n;n.esm_spec&&t.setSpec(r,n.esm_spec);let c=bt({state:a,bufferPaths:l,buffers:s});Ae(await t.getModel(r)).updateAndEmitDiffs(c);return}default:ln(n)}},Gr(Fe,"WIDGET_REGISTRY");function Nr(t){return typeof t!="object"||!t?!1:"type"in t&&t.type==="marimo-ui-value-update"}De=class nr{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new nr),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,r){this.entries.has(e)&&p.debug("UIElementRegistry overwriting entry for objectId.",e),this.entries.set(e,{objectId:e,value:r,elements:new Set})}registerInstance(e,r){let n=this.entries.get(e);n===void 0?this.entries.set(e,{objectId:e,value:zr(r,this),elements:new Set([r])}):n.elements.add(r)}removeInstance(e,r){let n=this.entries.get(e);n!=null&&n.elements.has(r)&&n.elements.delete(r)}removeElementsByCell(e){[...this.entries.keys()].filter(r=>r.startsWith(`${e}-`)).forEach(r=>{this.entries.delete(r)})}lookupValue(e){let r=this.entries.get(e);return r===void 0?void 0:r.value}broadcastMessage(e,r,n){let s=this.entries.get(e);if(s===void 0){p.warn("UIElementRegistry missing entry",e);return}if(Nr(r)){s.value=r.value,s.elements.forEach(a=>{a.dispatchEvent(Lt.create({bubbles:!1,composed:!0,detail:{value:r.value,element:a}}))});return}s.elements.forEach(a=>{a.dispatchEvent(Sn.create({bubbles:!1,composed:!0,detail:{objectId:e,message:r,buffers:n}}))})}broadcastValueUpdate(e,r,n){let s=this.entries.get(r);s===void 0?p.warn("UIElementRegistry missing entry",r):(s.value=n,s.elements.forEach(a=>{a!==e&&a.dispatchEvent(Lt.create({bubbles:!1,composed:!0,detail:{value:n,element:a}}))}),document.dispatchEvent(vn.create({bubbles:!0,composed:!0,detail:{objectId:r}})))}},Ot=De.INSTANCE,$t=new un("function-call-result",async(t,e)=>{await $e().sendFunctionRequest({functionCallId:t,...e})}),Bt="68px";var Lr="288px";Dt=t=>t?/^\d+$/.test(t)?`${t}px`:t:Lr,zt=Vr({isOpen:!0},(t,e)=>{if(!e)return t;switch(e.type){case"toggle":return{...t,isOpen:e.isOpen??t.isOpen};case"setWidth":return{...t,width:e.width};default:return t}})});export{_e as S,He as _,_n as __tla,De as a,Tt as b,Ut as c,Wt as d,jt as f,ae as g,oe as h,$t as i,Oe as l,Ht as m,Dt as n,Ot as o,ze as p,zt as r,Fe as s,Bt as t,Ie as u,Be as v,Vt as x,Qt as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as Se}from"./chunk-LvLJmgfZ.js";import{d as R,i as Wt,l as St,p as At,u as N}from"./useEvent-D91BmmQi.js";import{t as _t}from"./react-Bj1aDYRI.js";import{An as Dt,Bi as Et,Cr as It,E as Ae,Fi as Pt,Fn as Ot,Kn as Tt,Ln as Lt,Nn as Ht,Nr as Rt,Nt as _e,Or as Ft,Pn as $t,Qi as ke,T as qt,Tr as Bt,g as Ut,m as De,qt as Yt,si as Kt,t as Vt,wr as Ee,y as Gt}from"./cells-DzyDERZy.js";import{t as z}from"./compiler-runtime-B3qBwwSJ.js";import{n as Jt,r as Qt,x as Xt}from"./ai-model-dropdown-Bvqy98cI.js";import{g as F,n as Zt}from"./useEventListener-C0195JsF.js";import{t as Ie}from"./objects-BlG0ZrO0.js";import{C as ea,r as ta}from"./utils-BWBBpCkT.js";import{n as v,t as Pe}from"./constants-CDyU_g2F.js";import{M as ee,O as aa,T as Oe,j as Te,k as na,v as Le}from"./config-B-Q7J_6d.js";import{c as oa}from"./readonly-python-code-DHxOnQGj.js";import{t as sa}from"./cn-DYvqRARy.js";import{t as ra}from"./jsx-runtime-Blw4afVn.js";import{o as ia}from"./alert-dialog-Bb8Lz8ko.js";import{a as la,c as da,i as ca,n as ha,r as ma,s as ua,t as pa}from"./select-BP75_5jJ.js";import{
|
|
1
|
+
import{s as Se}from"./chunk-LvLJmgfZ.js";import{d as R,i as Wt,l as St,p as At,u as N}from"./useEvent-D91BmmQi.js";import{t as _t}from"./react-Bj1aDYRI.js";import{An as Dt,Bi as Et,Cr as It,E as Ae,Fi as Pt,Fn as Ot,Kn as Tt,Ln as Lt,Nn as Ht,Nr as Rt,Nt as _e,Or as Ft,Pn as $t,Qi as ke,T as qt,Tr as Bt,g as Ut,m as De,qt as Yt,si as Kt,t as Vt,wr as Ee,y as Gt}from"./cells-DzyDERZy.js";import{t as z}from"./compiler-runtime-B3qBwwSJ.js";import{n as Jt,r as Qt,x as Xt}from"./ai-model-dropdown-Bvqy98cI.js";import{g as F,n as Zt}from"./useEventListener-C0195JsF.js";import{t as Ie}from"./objects-BlG0ZrO0.js";import{C as ea,r as ta}from"./utils-BWBBpCkT.js";import{n as v,t as Pe}from"./constants-CDyU_g2F.js";import{M as ee,O as aa,T as Oe,j as Te,k as na,v as Le}from"./config-B-Q7J_6d.js";import{c as oa}from"./readonly-python-code-DHxOnQGj.js";import{t as sa}from"./cn-DYvqRARy.js";import{t as ra}from"./jsx-runtime-Blw4afVn.js";import{o as ia}from"./alert-dialog-Bb8Lz8ko.js";import{a as la,c as da,i as ca,n as ha,r as ma,s as ua,t as pa}from"./select-BP75_5jJ.js";import{It as fa}from"./JsonOutput-BIwD6Z9Y.js";import{f as xa,l as He,n as ba,o as Re,r as ya,s as ka,t as wa}from"./download-BIGA4WFm.js";import{t as ga}from"./tooltip-4bZlU7jl.js";import{r as ja,t as P}from"./button-DDGiD1NW.js";import{i as va,t as we}from"./strings--BknHX9C.js";import{r as O}from"./requests-9-v2bhoi.js";import{t as k}from"./createLucideIcon-w-Qo9n0R.js";import{F as Ca,I as Na,L as za,R as Fe,a as $e,d as Ma,i as qe,u as Be}from"./layout-rWti2H65.js";import{t as Ue}from"./check-rzLRd0j9.js";import{r as Wa}from"./useCellActionButton-D-uro4Di.js";import{t as Sa}from"./code-B2aKtXoe.js";import{t as Aa}from"./copy-3iHFdt22.js";import{t as Ye}from"./eye-off-BOZA7gbn.js";import{t as Ke}from"./external-link-BOlXZUla.js";import{t as te}from"./file-CJH9JNGH.js";import{u as _a}from"./form-DTWstSVJ.js";import{n as Da,r as Ea,t as Ia}from"./youtube-OwaksuQt.js";import{i as Pa,n as Ve}from"./add-connection-dialog-DDGKGmv6.js";import{t as Oa}from"./house-DS0r7dNZ.js";import{t as Ta}from"./image-5XI2VU-q.js";import{t as La}from"./link-CHdiBDr5.js";import{r as Ha}from"./input-JxFwu-3G.js";import{t as Ra}from"./settings-D_PiwXwo.js";import{t as Fa}from"./sparkles-DUCpRFlS.js";import{y as $a}from"./textarea-Bmzmbbpo.js";import{t as qa}from"./square-DFICx2Qv.js";import{t as Ge}from"./triangle-alert-BL4YVsPy.js";import{t as W}from"./use-toast-BwJoaaDM.js";import{n as Je,t as Ba}from"./paths-BKO-pHK6.js";import{o as Ua}from"./session-BmukRjSi.js";import{n as ae}from"./copy-Bxb1_Gtw.js";import{t as Qe}from"./copy-icon-neDQUo4Q.js";import{r as Ya}from"./useRunCells-C2dvU2jA.js";import{a as Xe,c as Ze,i as Ka,n as et,r as tt}from"./dialog-BCVepWLJ.js";import{n as ne}from"./ImperativeModal-fY-ZfT0b.js";import{r as Va,t as at}from"./share-852X_cqy.js";import{a as Ga}from"./cell-link-w5IbCQV4.js";import{n as nt}from"./useAsyncData-Bg5iAViP.js";import{a as Ja}from"./renderShortcut-Bl8_FVn8.js";import{t as Qa}from"./icons-CIPE8AIY.js";import{i as Xa,n as ot}from"./error-entries-CTYMwfsh.js";import{t as Za}from"./pair-with-agent-modal-BCRSACei.js";import{t as en}from"./github-_JH-0hIO.js";import{n as st}from"./marimo-icons-C_nFooxr.js";import{t as tn}from"./links-CZr5bjvo.js";import{i as an,n as rt,t as ge}from"./skeleton-BJuRsFbf.js";import{t as it}from"./types-Da7lA5YC.js";var nn=k("circle-chevron-down",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 10-4 4-4-4",key:"894hmk"}]]),on=k("circle-chevron-right",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m10 8 4 4-4 4",key:"1wy4r4"}]]),lt=k("clipboard-copy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),dt=k("command",[["path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3",key:"11bfej"}]]),ct=k("diamond-plus",[["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z",key:"1ey20j"}],["path",{d:"M8 12h8",key:"1wcyev"}]]),sn=k("fast-forward",[["path",{d:"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z",key:"b19h5q"}],["path",{d:"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z",key:"h7h5ge"}]]),rn=k("files",[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]]),ln=k("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]),ht=k("message-circle-question-mark",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),dn=k("notebook",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M16 2v20",key:"rotuqe"}]]),cn=k("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]),mt=k("presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),hn=k("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),mn=k("square-power",[["path",{d:"M12 7v4",key:"xawao1"}],["path",{d:"M7.998 9.003a5 5 0 1 0 8-.005",key:"1pek45"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]]),ut=k("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),un=z(),T=Se(_t(),1);function je(e,t){let n=(0,un.c)(11),o;n[0]===t?o=n[1]:(o=new Pt(t),n[0]=t,n[1]=o);let s=o,i;n[2]!==e||n[3]!==s?(i=()=>s.get(e),n[2]=e,n[3]=s,n[4]=i):i=n[4];let[r,d]=(0,T.useState)(i),l;n[5]!==e||n[6]!==s?(l=x=>{d(x),s.set(e,x)},n[5]=e,n[6]=s,n[7]=l):l=n[7];let c=l,h;return n[8]!==c||n[9]!==r?(h=[r,c],n[8]=c,n[9]=r,n[10]=h):h=n[10],h}function pn(e,t){return{...e,Binaries:{...e.Binaries,Browser:t}}}function fn(e,t,n,o){return{marimo:e,Locale:n||void 0,Binaries:{Browser:t},"Environment Collection Error":o}}function ve(e,t){let n=Math.max(2,...Array.from(t.matchAll(/`+/g),s=>s[0].length)),o="`".repeat(n+1);return`${o}${e}
|
|
2
2
|
${t}
|
|
3
3
|
${o}`}function xn(e,t){let n=e.includes("?")?"&":"?",o=[],s=e,i=0;for(let[r,d]of Object.entries(t)){if(d.length===0)continue;let l=`${r}=${encodeURIComponent(d)}`,c=`${s}${i===0?n:"&"}${l}`;if(c.length>6e3){o.push(r);continue}s=c,i+=1}return{url:s,omitted:o}}function Ce(e,t){return["<details>",`<summary>${we.htmlEscape(e)??""}</summary>`,"",t,"","</details>"].join(`
|
|
4
4
|
`)}function bn(e){return Ce("Environment",ve("json",JSON.stringify(e,null,2)))}function pt(e){return Ce("Errors",ve("text",e.map(ot).join(`
|
package/dist/index.html
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-CGrnjnHL.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-TXkS1QI3.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/objects-BlG0ZrO0.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
|
|
@@ -201,11 +201,11 @@
|
|
|
201
201
|
<link rel="modulepreload" crossorigin href="./assets/plus-AgXtozBz.js">
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/trash-2-72W0TZ3L.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Z-MD3n3J.js">
|
|
204
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
204
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-BIwD6Z9Y.js">
|
|
205
205
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-iDRxid4h.js">
|
|
206
206
|
<link rel="modulepreload" crossorigin href="./assets/square-function-DNNRTPQJ.js">
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/spec-C7opZZRp.js">
|
|
208
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
208
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-rIsKPa9V.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="./assets/icons-CIPE8AIY.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="./assets/radio-group-DfioQthW.js">
|
|
211
211
|
<link rel="modulepreload" crossorigin href="./assets/floating-outline-LitP0wCD.js">
|
|
@@ -219,15 +219,15 @@
|
|
|
219
219
|
<link rel="modulepreload" crossorigin href="./assets/file-icons-DfWENcb8.js">
|
|
220
220
|
<link rel="modulepreload" crossorigin href="./assets/events-90X9nql5.js">
|
|
221
221
|
<link rel="modulepreload" crossorigin href="./assets/share-852X_cqy.js">
|
|
222
|
-
<link rel="modulepreload" crossorigin href="./assets/blob-
|
|
222
|
+
<link rel="modulepreload" crossorigin href="./assets/blob-D4PJCCaE.js">
|
|
223
223
|
<link rel="modulepreload" crossorigin href="./assets/memoize-Tp7rARFe.js">
|
|
224
224
|
<link rel="modulepreload" crossorigin href="./assets/get-C-qh_et5.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-CsW0tABf.js">
|
|
226
|
-
<link rel="modulepreload" crossorigin href="./assets/state-
|
|
226
|
+
<link rel="modulepreload" crossorigin href="./assets/state-DJzSWGB9.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/label-CqjrpwRC.js">
|
|
228
228
|
<link rel="modulepreload" crossorigin href="./assets/textarea-Bmzmbbpo.js">
|
|
229
229
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-sLaKP2vj.js">
|
|
230
|
-
<link rel="modulepreload" crossorigin href="./assets/form-
|
|
230
|
+
<link rel="modulepreload" crossorigin href="./assets/form-DTWstSVJ.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/renderShortcut-Bl8_FVn8.js">
|
|
232
232
|
<link rel="modulepreload" crossorigin href="./assets/useBoolean-CFj86iac.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-CSMoa-ga.js">
|
package/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { buildMediaSource } from "../renderers";
|
|
4
|
+
|
|
5
|
+
describe("buildMediaSource", () => {
|
|
6
|
+
it("returns base64 source for binary media", () => {
|
|
7
|
+
expect(
|
|
8
|
+
buildMediaSource({
|
|
9
|
+
contents: "aGVsbG8=",
|
|
10
|
+
mimeType: "image/png",
|
|
11
|
+
isBase64: true,
|
|
12
|
+
}),
|
|
13
|
+
).toEqual({
|
|
14
|
+
base64: "aGVsbG8=",
|
|
15
|
+
mime: "image/png",
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("returns UTF-8 data URL for text-based media", () => {
|
|
20
|
+
const svg = '<svg xmlns="http://www.w3.org/2000/svg"></svg>';
|
|
21
|
+
expect(
|
|
22
|
+
buildMediaSource({
|
|
23
|
+
contents: svg,
|
|
24
|
+
mimeType: "image/svg+xml",
|
|
25
|
+
isBase64: false,
|
|
26
|
+
}),
|
|
27
|
+
).toEqual({
|
|
28
|
+
url: `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -22,12 +22,11 @@ import { isWasm } from "@/core/wasm/utils";
|
|
|
22
22
|
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
23
23
|
import { ErrorBanner } from "@/plugins/impl/common/error-banner";
|
|
24
24
|
import { copyToClipboard } from "@/utils/copy";
|
|
25
|
-
import type { Base64String } from "@/utils/json/base64";
|
|
26
25
|
import { downloadFile } from "./download";
|
|
27
26
|
import { FilePreviewHeader } from "./file-header";
|
|
28
27
|
import { FilePreviewMetadata } from "./file-preview-metadata";
|
|
29
28
|
import { getFileRenderMode } from "./file-render-mode";
|
|
30
|
-
import { FileContentRenderer } from "./renderers";
|
|
29
|
+
import { buildMediaSource, FileContentRenderer } from "./renderers";
|
|
31
30
|
|
|
32
31
|
export const MAX_FILE_PREVIEW_BYTES = 10 * 1024 * 1024;
|
|
33
32
|
|
|
@@ -226,6 +225,15 @@ export const FileViewer: React.FC<Props> = ({ file, onOpenNotebook }) => {
|
|
|
226
225
|
</Alert>
|
|
227
226
|
);
|
|
228
227
|
|
|
228
|
+
const mediaSource =
|
|
229
|
+
isMedia && data.contents
|
|
230
|
+
? buildMediaSource({
|
|
231
|
+
contents: data.contents,
|
|
232
|
+
mimeType,
|
|
233
|
+
isBase64: data.isBase64 ?? false,
|
|
234
|
+
})
|
|
235
|
+
: undefined;
|
|
236
|
+
|
|
229
237
|
return (
|
|
230
238
|
<>
|
|
231
239
|
{header}
|
|
@@ -239,11 +247,7 @@ export const FileViewer: React.FC<Props> = ({ file, onOpenNotebook }) => {
|
|
|
239
247
|
? (data.contents ?? undefined)
|
|
240
248
|
: undefined
|
|
241
249
|
}
|
|
242
|
-
mediaSource={
|
|
243
|
-
isMedia && data.contents
|
|
244
|
-
? { base64: data.contents as Base64String, mime: mimeType }
|
|
245
|
-
: undefined
|
|
246
|
-
}
|
|
250
|
+
mediaSource={mediaSource}
|
|
247
251
|
readOnly={!isText}
|
|
248
252
|
onChange={isText ? setInternalValue : undefined}
|
|
249
253
|
extensions={isText ? [saveKeymapExtension] : []}
|
|
@@ -60,6 +60,27 @@ function resolveMediaSrc(source: MediaSource): string {
|
|
|
60
60
|
return base64ToDataURL(source.base64, source.mime);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Build a {@link MediaSource} from file details.
|
|
65
|
+
* Binary media is base64-encoded; text-based media (e.g. SVG) uses a UTF-8 data URL.
|
|
66
|
+
*/
|
|
67
|
+
export function buildMediaSource({
|
|
68
|
+
contents,
|
|
69
|
+
mimeType,
|
|
70
|
+
isBase64,
|
|
71
|
+
}: {
|
|
72
|
+
contents: string;
|
|
73
|
+
mimeType: string;
|
|
74
|
+
isBase64: boolean;
|
|
75
|
+
}): MediaSource {
|
|
76
|
+
if (isBase64) {
|
|
77
|
+
return { base64: contents as Base64String, mime: mimeType };
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
url: `data:${mimeType};charset=utf-8,${encodeURIComponent(contents)}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
63
84
|
export const CsvViewer: React.FC<{ contents: string }> = ({ contents }) => {
|
|
64
85
|
const data = useMemo(() => parseCsvData(contents), [contents]);
|
|
65
86
|
const [pagination, setPagination] = useState<PaginationState>({
|
|
@@ -10,8 +10,7 @@ import {
|
|
|
10
10
|
import { toast } from "@/components/ui/use-toast";
|
|
11
11
|
import { contextCallbacks } from "@/core/codemirror/ai/state";
|
|
12
12
|
import type { EditRequests, FileInfo, RunRequests } from "@/core/network/types";
|
|
13
|
-
import {
|
|
14
|
-
import { type Base64String, base64ToDataURL } from "@/utils/json/base64";
|
|
13
|
+
import { fileDetailsToBlob } from "@/utils/blob";
|
|
15
14
|
import { Logger } from "@/utils/Logger";
|
|
16
15
|
import { type AIContextItem, AIContextProvider } from "../registry";
|
|
17
16
|
import { contextToXml } from "../utils";
|
|
@@ -219,33 +218,13 @@ export class FileContextProvider extends AIContextProvider<FileContextItem> {
|
|
|
219
218
|
|
|
220
219
|
const mimeType = fileDetails.mimeType || "text/plain";
|
|
221
220
|
|
|
222
|
-
//
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
mimeType
|
|
227
|
-
|
|
228
|
-
)
|
|
229
|
-
// Text files - create blob directly from contents
|
|
230
|
-
blob = new Blob([fileDetails.contents || ""], { type: mimeType });
|
|
231
|
-
} else {
|
|
232
|
-
// Binary files - use blob utility to decode base64
|
|
233
|
-
if (fileDetails.contents) {
|
|
234
|
-
try {
|
|
235
|
-
// Create data URL using utility and deserialize blob
|
|
236
|
-
const dataURL = base64ToDataURL(
|
|
237
|
-
fileDetails.contents as Base64String,
|
|
238
|
-
mimeType,
|
|
239
|
-
);
|
|
240
|
-
blob = deserializeBlob(dataURL);
|
|
241
|
-
} catch {
|
|
242
|
-
// Fallback to treating as text
|
|
243
|
-
blob = new Blob([fileDetails.contents], { type: mimeType });
|
|
244
|
-
}
|
|
245
|
-
} else {
|
|
246
|
-
blob = new Blob([""], { type: mimeType });
|
|
247
|
-
}
|
|
248
|
-
}
|
|
221
|
+
// The backend's `isBase64` flag authoritatively distinguishes binary
|
|
222
|
+
// (base64-encoded) from UTF-8 text contents.
|
|
223
|
+
const blob = fileDetailsToBlob({
|
|
224
|
+
contents: fileDetails.contents ?? "",
|
|
225
|
+
mimeType,
|
|
226
|
+
isBase64: fileDetails.isBase64 ?? false,
|
|
227
|
+
});
|
|
249
228
|
|
|
250
229
|
const file = new File([blob], name, { type: mimeType });
|
|
251
230
|
addAttachment(file);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import { beforeEach, describe, expect, test } from "vitest";
|
|
3
|
-
import { deserializeBlob, serializeBlob } from "../blob";
|
|
3
|
+
import { deserializeBlob, fileDetailsToBlob, serializeBlob } from "../blob";
|
|
4
4
|
import { blobToString } from "../fileToBase64";
|
|
5
5
|
|
|
6
6
|
describe("Blob serialization and deserialization", () => {
|
|
@@ -52,6 +52,32 @@ describe("Blob serialization and deserialization", () => {
|
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
+
describe("fileDetailsToBlob", () => {
|
|
56
|
+
test("decodes base64 contents into a binary blob", async () => {
|
|
57
|
+
const bytes = new Uint8Array([0, 1, 2, 3, 255]);
|
|
58
|
+
const base64 = btoa(String.fromCharCode(...bytes));
|
|
59
|
+
const blob = fileDetailsToBlob({
|
|
60
|
+
contents: base64,
|
|
61
|
+
mimeType: "image/png",
|
|
62
|
+
isBase64: true,
|
|
63
|
+
});
|
|
64
|
+
expect(blob.type).toBe("image/png");
|
|
65
|
+
const roundTripped = new Uint8Array(await blob.arrayBuffer());
|
|
66
|
+
expect(roundTripped).toEqual(bytes);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test("treats non-base64 contents as UTF-8 text", async () => {
|
|
70
|
+
const svg = '<svg xmlns="http://www.w3.org/2000/svg"></svg>';
|
|
71
|
+
const blob = fileDetailsToBlob({
|
|
72
|
+
contents: svg,
|
|
73
|
+
mimeType: "image/svg+xml",
|
|
74
|
+
isBase64: false,
|
|
75
|
+
});
|
|
76
|
+
expect(blob.type).toBe("image/svg+xml");
|
|
77
|
+
expect(await blob.text()).toBe(svg);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
55
81
|
describe("blobToString", () => {
|
|
56
82
|
const testString = "Hello, world!";
|
|
57
83
|
const mimeType = "text/plain";
|
package/src/utils/blob.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
import
|
|
2
|
+
import {
|
|
3
|
+
type Base64String,
|
|
4
|
+
base64ToDataURL,
|
|
5
|
+
type DataURLString,
|
|
6
|
+
} from "./json/base64";
|
|
3
7
|
|
|
4
8
|
export function serializeBlob<T>(blob: Blob): Promise<DataURLString> {
|
|
5
9
|
return new Promise<DataURLString>((resolve, reject) => {
|
|
@@ -30,3 +34,22 @@ export function deserializeBlob(serializedBlob: DataURLString): Blob {
|
|
|
30
34
|
const blob = new Blob([bytes], { type: mimeType });
|
|
31
35
|
return blob;
|
|
32
36
|
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Convert file details into a `Blob`, using the authoritative `isBase64` flag
|
|
40
|
+
* to decide between decoding base64 bytes and treating contents as UTF-8 text.
|
|
41
|
+
*/
|
|
42
|
+
export function fileDetailsToBlob({
|
|
43
|
+
contents,
|
|
44
|
+
mimeType,
|
|
45
|
+
isBase64,
|
|
46
|
+
}: {
|
|
47
|
+
contents: string;
|
|
48
|
+
mimeType: string;
|
|
49
|
+
isBase64: boolean;
|
|
50
|
+
}): Blob {
|
|
51
|
+
if (isBase64) {
|
|
52
|
+
return deserializeBlob(base64ToDataURL(contents as Base64String, mimeType));
|
|
53
|
+
}
|
|
54
|
+
return new Blob([contents], { type: mimeType });
|
|
55
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function s(n){return new Promise((o,l)=>{let r=new FileReader;r.onload=e=>{var t;o((t=e.target)==null?void 0:t.result)},r.onerror=e=>{l(Error(`Failed to read blob: ${e.type}`))},r.readAsDataURL(n)})}function b(n){var d;let[o,l]=n.split(",",2),r=(d=/^data:(.+);base64$/.exec(o))==null?void 0:d[1],e=atob(l),t=e.length,i=new Uint8Array(t);for(let a=0;a<t;a++)i[a]=e.charCodeAt(a);return new Blob([i],{type:r})}export{s as n,b as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as ge}from"./chunk-LvLJmgfZ.js";import{d as je,l as ye,p as ve,u as J}from"./useEvent-D91BmmQi.js";import{t as Qe}from"./react-Bj1aDYRI.js";import{$r as Ye,Bn as Ze,Br as Ne,Ct as ea,E as aa,Gr as oe,Hn as ta,Hr as sa,Ir as la,Kr as we,Lt as na,N as ra,Qr as Se,Rt as oa,Tr as ce,Ur as ca,Vr as _e,Wi as Ce,Xr as ma,Yr as ia,Zr as da,d as ha,dr as ua,fn as xa,fr as pa,i as fa,j as ba,jt as ga,mr as ja,ni as Ie,qr as me,ti as ya,wr as va,xr as Na,zn as ke,zr as ie,zt as wa}from"./cells-DzyDERZy.js";import"./react-dom-CSu739Rf.js";import{t as Te}from"./compiler-runtime-B3qBwwSJ.js";import{c as Sa}from"./utils-BWBBpCkT.js";import{t as _a}from"./ErrorBoundary-DzTD8LVq.js";import{t as Q}from"./cn-DYvqRARy.js";import{t as Ca}from"./jsx-runtime-Blw4afVn.js";import"./fullscreen-CTDqNQr6.js";import{r as Ia}from"./config-BJVx3eBW.js";import"./popover-Bcz1Zikb.js";import{$ as de,et as Pe,f as Fe,g as $e,h as he,it as ka,m as ue,nt as Ta,p as le,rt as Pa,tt as Fa,u as $a}from"./JsonOutput-C08yZPMz.js";import"./download-BIGA4WFm.js";import{r as Re}from"./radio-group-DfioQthW.js";import{t as xe}from"./tooltip-4bZlU7jl.js";import{r as Ra,t as ne}from"./button-DDGiD1NW.js";import"./dist-12S8I4CH.js";import{l as Y}from"./arrays-DbOq36rN.js";import"./cjs-D5tzp-Y6.js";import"./main-BNL5rxQw.js";import"./useNonce-CbdaHKzX.js";import{i as Va}from"./strings--BknHX9C.js";import{r as Da}from"./requests-9-v2bhoi.js";import{t as qa}from"./createLucideIcon-w-Qo9n0R.js";import{t as Ba}from"./x-C-Eq0ag8.js";import{a as La,r as Ma}from"./tree-actions-Dx9CDaxV.js";import"./markdown-renderer-sEayY9-m.js";import{t as Ve}from"./add-connection-dialog-ChQis5IF.js";import{t as De}from"./plus-AgXtozBz.js";import{a as Ea}from"./input-JxFwu-3G.js";import{n as Oa,o as za}from"./column-preview-UAW6odg3.js";import{t as Aa}from"./workflow-e-XGaKyY.js";import"./dist-DcwTQG1A.js";import"./dist-DnjsPBRJ.js";import"./dist-BJZAIIze.js";import"./dist-aRc_dRed.js";import"./dist-CPjTeT8p.js";import"./session-BmukRjSi.js";import"./purify.es-CWmnYhGI.js";import"./dates-C2LWzsCZ.js";import{t as Ua}from"./copy-icon-neDQUo4Q.js";import{t as Ga}from"./context-BFPaAUK_.js";import"./tooltip-B7U4xkIN.js";import"./vega-loader.browser-Dun7Qe4B.js";import"./defaultLocale-DOVIEEPN.js";import"./defaultLocale-BUCH2FMc.js";import{t as qe}from"./cell-link-w5IbCQV4.js";import"./chunk-5FQGJX7Z-Cp0LZT-a.js";import{r as Ha}from"./html-to-image-JaxFFZcr.js";import{o as Ka}from"./focus-CNKbm-Xz.js";import{n as pe}from"./useAsyncData-Bg5iAViP.js";import{a as Wa,i as Xa,n as Ja,o as Be,r as Qa,t as Ya}from"./table-CH2plyy9.js";import"./react-resizable-panels.browser.esm-Z-MD3n3J.js";import{a as Za,f as et,o as re,t as at}from"./command-Dqxie4gq.js";import{n as tt}from"./icons-CIPE8AIY.js";import{t as st}from"./useDeepCompareMemoize-CSMoa-ga.js";import{t as lt}from"./empty-state-CqJvEFRk.js";import{n as nt,t as rt}from"./common-CJ3baa6D.js";import{a as ot,i as ct,n as Le,r as Me,t as Ee}from"./components-DpUIWGaj.js";var mt=qa("square-equal",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 10h10",key:"1101jm"}],["path",{d:"M7 14h10",key:"1mhdw3"}]]),U=Te(),F=ge(Qe(),1),s=ge(Ca(),1),fe=1;function Oe(a){return 1.75+a*fe}function it(a){return 3+a*fe}function ze(a){return 3.25+a*fe}var A={engineEmpty:.75,engine:.75,database:1,tableLoading:2.75,tableSchemaless:2,columnLocal:1.25,columnPreview:2.5};function E(a){return{paddingLeft:`${a}rem`}}var dt=ve(a=>{let e=a(_e),t=a(ta),l=a(fa);return Y(e,n=>{if(!n.variable_name)return-1;let i=Object.values(t).find(d=>d.name===n.variable_name);if(!i)return 0;let c=l.inOrderIds.indexOf(i.declaredBy[0]);return c===-1?0:c})});const ht=Ce("marimo:datasources:hideEmpty",!1,ke,{getOnInit:!0});function Ae(a){let e=!1,t=[];for(let l of a){if(!me(l)||!oe(l)){t.push(l);continue}let n=l.child_schemas??[],i=Ae(n);if(l.tables.length===0&&i.length===0){e=!0;continue}if(i===n){t.push(l);continue}e=!0,t.push({...l,child_schemas:i})}return e?t:a}function ut(a){let e=!1,t=[];for(let l of a){if(we(l)&&l.schemas.length===0){e=!0;continue}if(l.schemas.length===0){t.push(l);continue}let n=Ae(l.schemas);if(n.length===0){e=!0;continue}if(n===l.schemas){t.push(l);continue}e=!0,t.push({...l,schemas:n})}return e?t:a}const Ue=ve(a=>{let e=new Map(a(la));for(let t of Ie){let l=e.get(t);l&&(l.databases.length===0&&e.delete(t),l.databases.length===1&&l.databases[0].name==="memory"&&l.databases[0].schemas.length===0&&e.delete(t))}return Y([...e.values()],t=>Ie.has(t.name)?1:0)}),xt=()=>{let a=(0,U.c)(40),[e,t]=F.useState(""),[l,n]=ye(ht),i=je(Ne),c=J(dt),d=J(Ue),r;e:{if(!l){r=d;break e}let f,v;a[0]===d?(f=a[1],v=a[2]):(f=!1,v=d.map(C=>{let k=ut(C.databases);return k===C.databases?C:(f=!0,{...C,databases:k})}),a[0]=d,a[1]=f,a[2]=v),r=f?v:d}let x=r;if(c.length===0&&x.length===0){let f;return a[3]===Symbol.for("react.memo_cache_sentinel")?(f=(0,s.jsx)(lt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:(0,s.jsx)(Ve,{children:(0,s.jsxs)(ne,{variant:"outline",size:"sm",children:["Add database or catalog",(0,s.jsx)(De,{className:"h-4 w-4 ml-2"})]})}),icon:(0,s.jsx)(ce,{})}),a[3]=f):f=a[3],f}let h=!!e.trim(),m;a[4]===i?m=a[5]:(m=f=>{i(f.length>0),t(f)},a[4]=i,a[5]=m);let o;a[6]!==e||a[7]!==m?(o=(0,s.jsx)(Za,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:m,rootClassName:"flex-1 border-r border-b-0"}),a[6]=e,a[7]=m,a[8]=o):o=a[8];let p;a[9]===h?p=a[10]:(p=h&&(0,s.jsx)("button",{type:"button",className:"float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground",onClick:()=>t(""),children:(0,s.jsx)(Ba,{className:"h-4 w-4"})}),a[9]=h,a[10]=p);let S=!l,b;a[11]!==l||a[12]!==n?(b=()=>n(!l),a[11]=l,a[12]=n,a[13]=b):b=a[13];let N;a[14]!==S||a[15]!==b?(N=(0,s.jsx)(La,{"data-testid":"datasources-hide-empty-button",isVisible:S,onToggle:b,showTooltip:"Show empty schemas and databases",hideTooltip:"Hide empty schemas and databases",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden"}),a[14]=S,a[15]=b,a[16]=N):N=a[16];let y;a[17]===Symbol.for("react.memo_cache_sentinel")?(y=(0,s.jsx)(Ve,{children:(0,s.jsx)(ne,{variant:"ghost",size:"sm",className:"px-2 rounded-none focus-visible:outline-hidden",children:(0,s.jsx)(De,{className:"h-4 w-4"})})}),a[17]=y):y=a[17];let j;a[18]!==o||a[19]!==p||a[20]!==N?(j=(0,s.jsxs)("div",{className:"flex items-center w-full border-b",children:[o,p,N,y]}),a[18]=o,a[19]=p,a[20]=N,a[21]=j):j=a[21];let g;if(a[22]!==x||a[23]!==e){let f;a[25]===e?f=a[26]:(f=v=>(0,s.jsx)(pt,{connection:v,hasChildren:v.databases.length>0,children:v.databases.map(C=>(0,s.jsx)(ft,{connection:v,database:C,searchValue:e},C.name))},v.name),a[25]=e,a[26]=f),g=x.map(f),a[22]=x,a[23]=e,a[24]=g}else g=a[24];let w;a[27]!==x.length||a[28]!==c.length?(w=x.length>0&&c.length>0&&(0,s.jsxs)(Fe,{className:"pr-2",style:E(A.engine),children:[(0,s.jsx)(tt,{className:"h-4 w-4 text-muted-foreground"}),(0,s.jsx)("span",{className:"text-xs",children:"Python"})]}),a[27]=x.length,a[28]=c.length,a[29]=w):w=a[29];let u;a[30]!==e||a[31]!==c?(u=c.length>0&&(0,s.jsx)(be,{tables:c,searchValue:e}),a[30]=e,a[31]=c,a[32]=u):u=a[32];let _;a[33]!==w||a[34]!==u||a[35]!==g?(_=(0,s.jsxs)(et,{className:"flex flex-col",children:[g,w,u]}),a[33]=w,a[34]=u,a[35]=g,a[36]=_):_=a[36];let I;return a[37]!==_||a[38]!==j?(I=(0,s.jsxs)(at,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[j,_]}),a[37]=_,a[38]=j,a[39]=I):I=a[39],I};var pt=a=>{let e=(0,U.c)(26),{connection:t,children:l,hasChildren:n}=a,i=t.name===ya,c=i?"In-Memory":t.name,{previewDataSourceConnection:d}=Da(),r;e[0]!==t.name||e[1]!==d?(r=async()=>{await d({engine:t.name})},e[0]=t.name,e[1]=d,e[2]=r):r=e[2];let x=r,h;e[3]===Symbol.for("react.memo_cache_sentinel")?(h=E(A.engine),e[3]=h):h=e[3];let m;e[4]===t.dialect?m=e[5]:(m=(0,s.jsx)(ea,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[4]=t.dialect,e[5]=m);let o;e[6]===t.dialect?o=e[7]:(o=ua(t.dialect),e[6]=t.dialect,e[7]=o);let p;e[8]===o?p=e[9]:(p=(0,s.jsx)("span",{className:"text-xs",children:o}),e[8]=o,e[9]=p);let S=c,b;e[10]===S?b=e[11]:(b=(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",(0,s.jsx)(ot,{variableName:S}),")"]}),e[10]=S,e[11]=b);let N;e[12]!==x||e[13]!==i?(N=!i&&(0,s.jsx)(Ma,{onClick:x,tooltip:"Refresh connection",className:"ml-auto h-4 p-0",iconClassName:"h-3.5 w-3.5"}),e[12]=x,e[13]=i,e[14]=N):N=e[14];let y;e[15]!==m||e[16]!==p||e[17]!==b||e[18]!==N?(y=(0,s.jsxs)(Fe,{className:"pr-2",style:h,children:[m,p,b,N]}),e[15]=m,e[16]=p,e[17]=b,e[18]=N,e[19]=y):y=e[19];let j;e[20]!==l||e[21]!==n?(j=n?l:(0,s.jsx)(le,{content:"No databases available",style:E(A.engineEmpty)}),e[20]=l,e[21]=n,e[22]=j):j=e[22];let g;return e[23]!==j||e[24]!==y?(g=(0,s.jsxs)(s.Fragment,{children:[y,j]}),e[23]=j,e[24]=y,e[25]=g):g=e[25],g},Ge=F.createContext(null);function He(){let a=F.useContext(Ge);if(a==null)throw Error("useDataSourceTree must be used within a DataSourceTreeContext.Provider");return a}function Ke(a,{schema:e,schemaPath:t}){return{engine:a.engineName,database:a.databaseName,schema:e,schemaPath:t,defaultSchema:a.defaultSchema,defaultDatabase:a.defaultDatabase,dialect:a.dialect}}var ft=a=>{let e=(0,U.c)(21),{connection:t,database:l,searchValue:n}=a,i;e[0]!==t.default_database||e[1]!==t.default_schema||e[2]!==t.dialect||e[3]!==t.name||e[4]!==l.name||e[5]!==n?(i={engineName:t.name,databaseName:l.name,dialect:t.dialect,defaultSchema:t.default_schema,defaultDatabase:t.default_database,searchValue:n},e[0]=t.default_database,e[1]=t.default_schema,e[2]=t.dialect,e[3]=t.name,e[4]=l.name,e[5]=n,e[6]=i):i=e[6];let c=i,d=t.name,r=l.schemas,x;e[7]===l?x=e[8]:(x=we(l),e[7]=l,e[8]=x);let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[9]=h):h=e[9];let m;e[10]!==l.schemas||e[11]!==x?(m=(0,s.jsx)(We,{schemas:r,schemasResolved:x,schemaPath:h,depth:0}),e[10]=l.schemas,e[11]=x,e[12]=m):m=e[12];let o;e[13]!==m||e[14]!==c?(o=(0,s.jsx)(Ge.Provider,{value:c,children:m}),e[13]=m,e[14]=c,e[15]=o):o=e[15];let p;return e[16]!==t.name||e[17]!==l||e[18]!==n||e[19]!==o?(p=(0,s.jsx)(bt,{engineName:d,database:l,searchValue:n,children:o}),e[16]=t.name,e[17]=l,e[18]=n,e[19]=o,e[20]=p):p=e[20],p},bt=a=>{let e=(0,U.c)(29),{searchValue:t,engineName:l,database:n,children:i}=a,c;e[0]!==n||e[1]!==t?(c=da(n,t),e[0]=n,e[1]=t,e[2]=c):c=e[2];let d=c,[r,x]=F.useState(d),[h,m]=F.useState(!1),[o,p]=F.useState(t),[S,b]=F.useState(d);(o!==t||S!==d)&&(p(t),b(d),x(d));let N;e[3]===Symbol.for("react.memo_cache_sentinel")?(N=E(A.database),e[3]=N):N=e[3];let y;e[4]!==r||e[5]!==h?(y=()=>{x(!r),m(!h)},e[4]=r,e[5]=h,e[6]=y):y=e[6];let j=`${l}:${n.name}`,g;e[7]===r?g=e[8]:(g=(0,s.jsx)($e,{isExpanded:r}),e[7]=r,e[8]=g);let w=h&&r?"text-foreground":"text-muted-foreground",u;e[9]===w?u=e[10]:(u=Q("h-4 w-4",w),e[9]=w,e[10]=u);let _;e[11]===u?_=e[12]:(_=(0,s.jsx)(ce,{className:u}),e[11]=u,e[12]=_);let I=h&&r&&"font-semibold",f;e[13]===I?f=e[14]:(f=Q(I),e[13]=I,e[14]=f);let v;e[15]===n.name?v=e[16]:(v=n.name===""?(0,s.jsx)("i",{children:"Not connected"}):n.name,e[15]=n.name,e[16]=v);let C;e[17]!==f||e[18]!==v?(C=(0,s.jsx)("span",{className:f,children:v}),e[17]=f,e[18]=v,e[19]=C):C=e[19];let k;e[20]!==C||e[21]!==y||e[22]!==j||e[23]!==g||e[24]!==_?(k=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:N,onSelect:y,value:j,children:[g,_,C]}),e[20]=C,e[21]=y,e[22]=j,e[23]=g,e[24]=_,e[25]=k):k=e[25];let T=r&&i,P;return e[26]!==k||e[27]!==T?(P=(0,s.jsxs)(s.Fragment,{children:[k,T]}),e[26]=k,e[27]=T,e[28]=P):P=e[28],P},We=a=>{let{schemas:e,schemasResolved:t,depth:l}=a,n=He(),{engineName:i,databaseName:c,searchValue:d}=n,{addSchemaList:r}=ie(),x=st(a.schemaPath),[h,m]=F.useState(!1),{isPending:o,error:p}=pe(async()=>{if(!t&&i){m(!0);try{r({schemas:(await na.request({engine:i,database:c,schemaPath:x})).schemas??[],sqlSchemaContext:{engine:i,database:c,schemaPath:x}})}finally{m(!1)}}},[t,i,c,x]),S=E(Oe(l));return o||h?(0,s.jsx)(he,{message:"Loading schemas...",style:S}):p?(0,s.jsx)(ue,{error:p,style:S}):e.length===0?(0,s.jsx)(le,{content:"No schemas available",style:S}):(0,s.jsx)(s.Fragment,{children:e.map(b=>ia(b.name)?(0,s.jsx)(be,{tables:b.tables,tablesResolved:me(b),searchValue:d,sqlTableContext:Ke(n,{schema:b.name,schemaPath:x})},b.name):(0,s.jsx)(gt,{schema:b,schemaPath:[...x,b.name],depth:l},b.name))})},gt=a=>{let e=(0,U.c)(39),{schema:t,schemaPath:l,depth:n}=a,i=He(),{databaseName:c,searchValue:d}=i,r;e[0]!==t||e[1]!==d?(r=ma(t,d),e[0]=t,e[1]=d,e[2]=r):r=e[2];let x=r,[h,m]=F.useState(x),[o,p]=F.useState(!1),[S,b]=F.useState(d),[N,y]=F.useState(x),j=`${c}:${l.join(".")}`,g;e[3]===t.child_schemas?g=e[4]:(g=t.child_schemas??[],e[3]=t.child_schemas,e[4]=g);let w=g;(S!==d||N!==x)&&(b(d),y(x),m(x));let u;e[5]===n?u=e[6]:(u=E(Oe(n)),e[5]=n,e[6]=u);let _;e[7]!==h||e[8]!==o?(_=()=>{m(!h),p(!o)},e[7]=h,e[8]=o,e[9]=_):_=e[9];let I;e[10]===h?I=e[11]:(I=(0,s.jsx)($e,{isExpanded:h}),e[10]=h,e[11]=I);let f=o&&h&&"text-foreground",v;e[12]===f?v=e[13]:(v=Q("h-4 w-4 text-muted-foreground",f),e[12]=f,e[13]=v);let C;e[14]===v?C=e[15]:(C=(0,s.jsx)(Na,{className:v}),e[14]=v,e[15]=C);let k=o&&h&&"font-semibold",T;e[16]===k?T=e[17]:(T=Q(k),e[16]=k,e[17]=T);let P;e[18]!==t.name||e[19]!==T?(P=(0,s.jsx)("span",{className:T,children:t.name}),e[18]=t.name,e[19]=T,e[20]=P):P=e[20];let R;e[21]!==P||e[22]!==u||e[23]!==_||e[24]!==I||e[25]!==C||e[26]!==j?(R=(0,s.jsxs)(re,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",style:u,onSelect:_,value:j,children:[I,C,P]}),e[21]=P,e[22]=u,e[23]=_,e[24]=I,e[25]=C,e[26]=j,e[27]=R):R=e[27];let V;e[28]!==w||e[29]!==n||e[30]!==h||e[31]!==t||e[32]!==l||e[33]!==d||e[34]!==i?(V=h&&(0,s.jsxs)(s.Fragment,{children:[(w.length>0||!oe(t))&&(0,s.jsx)(We,{schemas:w,schemasResolved:oe(t),schemaPath:l,depth:n+1}),(0,s.jsx)(be,{tables:t.tables,tablesResolved:me(t),searchValue:d,tableIndentRem:it(n),columnIndentRem:ze(n),sqlTableContext:Ke(i,{schema:t.name,schemaPath:l})})]}),e[28]=w,e[29]=n,e[30]=h,e[31]=t,e[32]=l,e[33]=d,e[34]=i,e[35]=V):V=e[35];let $;return e[36]!==R||e[37]!==V?($=(0,s.jsxs)(s.Fragment,{children:[R,V]}),e[36]=R,e[37]=V,e[38]=$):$=e[38],$},be=a=>{let e=(0,U.c)(31),{tables:t,sqlTableContext:l,searchValue:n,tablesResolved:i,tableIndentRem:c,columnIndentRem:d}=a,r=i===void 0?!0:i,{addTableList:x}=ie(),[h,m]=F.useState(!1),o;e[0]!==x||e[1]!==l||e[2]!==r?(o=async()=>{if(!r&&l){m(!0);let{engine:u,database:_,schema:I,schemaPath:f}=l,v=await wa.request({engine:u,database:_,schema:I,schemaPath:f??[]});if(!(v!=null&&v.tables))throw m(!1),Error("No tables available");x({tables:v.tables,sqlTableContext:l}),m(!1)}},e[0]=x,e[1]=l,e[2]=r,e[3]=o):o=e[3];let p;e[4]!==l||e[5]!==r?(p=[r,l],e[4]=l,e[5]=r,e[6]=p):p=e[6];let{isPending:S,error:b}=pe(o,p),N=c??A.tableLoading,y;e[7]===N?y=e[8]:(y=E(N),e[7]=N,e[8]=y);let j=y;if(S||h){let u;return e[9]===j?u=e[10]:(u=(0,s.jsx)(he,{message:"Loading tables...",style:j}),e[9]=j,e[10]=u),u}if(b){let u;return e[11]!==b||e[12]!==j?(u=(0,s.jsx)(ue,{error:b,style:j}),e[11]=b,e[12]=j,e[13]=u):u=e[13],u}if(t.length===0){let u;return e[14]===j?u=e[15]:(u=(0,s.jsx)(le,{content:"No tables found",style:j}),e[14]=j,e[15]=u),u}let g;if(e[16]!==d||e[17]!==n||e[18]!==l||e[19]!==c||e[20]!==t){let u;e[22]===n?u=e[23]:(u=f=>n?f.name.toLowerCase().includes(n.toLowerCase()):!0,e[22]=n,e[23]=u);let _=t.filter(u),I;e[24]!==d||e[25]!==n||e[26]!==l||e[27]!==c?(I=f=>(0,s.jsx)(jt,{table:f,sqlTableContext:l,isSearching:!!n,tableIndentRem:c,columnIndentRem:d},f.name),e[24]=d,e[25]=n,e[26]=l,e[27]=c,e[28]=I):I=e[28],g=_.map(I),e[16]=d,e[17]=n,e[18]=l,e[19]=c,e[20]=t,e[21]=g}else g=e[21];let w;return e[29]===g?w=e[30]:(w=(0,s.jsx)(s.Fragment,{children:g}),e[29]=g,e[30]=w),w},jt=a=>{let e=(0,U.c)(69),{table:t,sqlTableContext:l,isSearching:n,tableIndentRem:i,columnIndentRem:c}=a,{addTable:d}=ie(),[r,x]=F.useState(!1),h=t.columns.length>0,m;e[0]!==d||e[1]!==r||e[2]!==l||e[3]!==t.name||e[4]!==h?(m=async()=>{if(r&&!h&&l){let{engine:L,database:ae,schema:te,schemaPath:Je}=l,se=await oa.request({engine:L,database:ae,schema:te,tableName:t.name,schemaPath:Je??[]});if(!(se!=null&&se.table))throw Error("No table details available");d({table:se.table,sqlTableContext:l})}},e[0]=d,e[1]=r,e[2]=l,e[3]=t.name,e[4]=h,e[5]=m):m=e[5];let o;e[6]!==r||e[7]!==h?(o=[r,h],e[6]=r,e[7]=h,e[8]=o):o=e[8];let{isFetching:p,isPending:S,error:b}=pe(m,o),N=J(Sa),y=Ka(),{createNewCell:j}=aa(),g=Re(),w;e[9]!==g||e[10]!==N||e[11]!==j||e[12]!==y||e[13]!==l||e[14]!==t?(w=()=>{Ha({autoInstantiate:N,createNewCell:j,fromCellId:y}),g((()=>{if(t.source_type==="catalog"){let L=l!=null&&l.database?[l.database,...l.schemaPath??[],t.name].join("."):t.name;return`${t.engine}.load_table("${L}")`}if(l)return Se({table:t,columnName:"*",sqlTableContext:l});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return Se({table:t,columnName:"*",sqlTableContext:l});default:return Va(t.source_type),""}})())},e[9]=g,e[10]=N,e[11]=j,e[12]=y,e[13]=l,e[14]=t,e[15]=w):w=e[15];let u=w,_;e[16]!==t.num_columns||e[17]!==t.num_rows?(_=()=>{let L=[];return t.num_rows!=null&&L.push(`${t.num_rows} rows`),t.num_columns!=null&&L.push(`${t.num_columns} columns`),L.length===0?null:(0,s.jsx)("div",{className:"flex flex-row gap-2 items-center pl-6 group-hover:hidden",children:(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:L.join(", ")})})},e[16]=t.num_columns,e[17]=t.num_rows,e[18]=_):_=e[18];let I=_,f;e[19]!==c||e[20]!==b||e[21]!==p||e[22]!==S||e[23]!==l||e[24]!==t?(f=()=>{let L=E(c??A.tableLoading);if(S||p)return(0,s.jsx)(he,{message:"Loading columns...",style:L});if(b)return(0,s.jsx)(ue,{error:b,style:L});let ae=t.columns;return ae.length===0?(0,s.jsx)(le,{content:"No columns found",style:L}):ae.map(te=>(0,s.jsx)(yt,{table:t,column:te,sqlTableContext:l,columnIndentRem:c},te.name))},e[19]=c,e[20]=b,e[21]=p,e[22]=S,e[23]=l,e[24]=t,e[25]=f):f=e[25];let v=f,C;e[26]!==r||e[27]!==n||e[28]!==t.source_type||e[29]!==t.type?(C=()=>{if(t.source_type!=="local")return(0,s.jsx)(t.type==="table"?ja:va,{className:"h-3 w-3",strokeWidth:r||n?2.5:void 0})},e[26]=r,e[27]=n,e[28]=t.source_type,e[29]=t.type,e[30]=C):C=e[30];let k=C,T;e[31]!==l||e[32]!==t.name?(T=Ye(l,t.name),e[31]=l,e[32]=t.name,e[33]=T):T=e[33];let P=T,R=i??(l?A.tableSchemaless:0),V=(r||n)&&"font-semibold",$;e[34]===V?$=e[35]:($=Q("rounded-none group h-8 cursor-pointer",V),e[34]=V,e[35]=$);let D;e[36]===R?D=e[37]:(D=E(R),e[36]=R,e[37]=D);let q;e[38]===r?q=e[39]:(q=()=>x(!r),e[38]=r,e[39]=q);let M;e[40]===k?M=e[41]:(M=k(),e[40]=k,e[41]=M);let O;e[42]===t.name?O=e[43]:(O=(0,s.jsx)("span",{className:"text-sm",children:t.name}),e[42]=t.name,e[43]=O);let z;e[44]!==M||e[45]!==O?(z=(0,s.jsxs)("div",{className:"flex gap-2 items-center flex-1 pl-1",children:[M,O]}),e[44]=M,e[45]=O,e[46]=z):z=e[46];let B;e[47]===I?B=e[48]:(B=I(),e[47]=I,e[48]=B);let H;e[49]===u?H=e[50]:(H=Ra.stopPropagation(()=>u()),e[49]=u,e[50]=H);let Z;e[51]===Symbol.for("react.memo_cache_sentinel")?(Z=(0,s.jsx)(za,{className:"h-3 w-3"}),e[51]=Z):Z=e[51];let K;e[52]===H?K=e[53]:(K=(0,s.jsx)(xe,{content:"Add table to notebook",delayDuration:400,children:(0,s.jsx)(ne,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:H,children:Z})}),e[52]=H,e[53]=K);let W;e[54]!==r||e[55]!==D||e[56]!==q||e[57]!==z||e[58]!==B||e[59]!==K||e[60]!==$||e[61]!==P?(W=(0,s.jsxs)(re,{className:$,style:D,value:P,"aria-selected":r,forceMount:!0,onSelect:q,children:[z,B,K]}),e[54]=r,e[55]=D,e[56]=q,e[57]=z,e[58]=B,e[59]=K,e[60]=$,e[61]=P,e[62]=W):W=e[62];let X;e[63]!==r||e[64]!==v?(X=r&&v(),e[63]=r,e[64]=v,e[65]=X):X=e[65];let ee;return e[66]!==W||e[67]!==X?(ee=(0,s.jsxs)(s.Fragment,{children:[W,X]}),e[66]=W,e[67]=X,e[68]=ee):ee=e[68],ee},yt=a=>{var O,z;let e=(0,U.c)(51),{table:t,column:l,sqlTableContext:n,columnIndentRem:i}=a,[c,d]=F.useState(!1),r=J(Ne),x=je(sa);r&&c&&d(!1),x(c?B=>new Set([...B,`${t.name}:${l.name}`]):B=>(B.delete(`${t.name}:${l.name}`),new Set(B)));let h=Re(),{columnsPreviews:m}=ca(),o;e[0]!==l.name||e[1]!==t.primary_keys?(o=((O=t.primary_keys)==null?void 0:O.includes(l.name))||!1,e[0]=l.name,e[1]=t.primary_keys,e[2]=o):o=e[2];let p=o,S;e[3]!==l.name||e[4]!==t.indexes?(S=((z=t.indexes)==null?void 0:z.includes(l.name))||!1,e[3]=l.name,e[4]=t.indexes,e[5]=S):S=e[5];let b=S,N;e[6]===h?N=e[7]:(N=B=>{h(B)},e[6]=h,e[7]=N);let y=N,j=vt,g=c?"font-semibold":"",w;e[8]!==l.name||e[9]!==g?(w=(0,s.jsx)("span",{className:g,children:l.name}),e[8]=l.name,e[9]=g,e[10]=w):w=e[10];let u=w,_=`${t.name}.${l.name}`,I=`${t.name}.${l.name}`,f;e[11]===c?f=e[12]:(f=()=>d(!c),e[11]=c,e[12]=f);let v;e[13]!==i||e[14]!==n?(v=i??(n?ze(0):A.columnLocal),e[13]=i,e[14]=n,e[15]=v):v=e[15];let C;e[16]===v?C=e[17]:(C=E(v),e[16]=v,e[17]=C);let k;e[18]!==l.type||e[19]!==u?(k=(0,s.jsx)($a,{columnName:u,dataType:l.type}),e[18]=l.type,e[19]=u,e[20]=k):k=e[20];let T;e[21]===p?T=e[22]:(T=p&&j({tooltipContent:"Primary key",content:"PK"}),e[21]=p,e[22]=T);let P;e[23]===b?P=e[24]:(P=b&&j({tooltipContent:"Indexed",content:"IDX"}),e[23]=b,e[24]=P);let R;e[25]!==C||e[26]!==k||e[27]!==T||e[28]!==P?(R=(0,s.jsxs)("div",{className:"flex flex-row gap-2 items-center flex-1",style:C,children:[k,T,P]}),e[25]=C,e[26]=k,e[27]=T,e[28]=P,e[29]=R):R=e[29];let V;e[30]===l.name?V=e[31]:(V=(0,s.jsx)(xe,{content:"Copy column name",delayDuration:400,children:(0,s.jsx)(ne,{variant:"text",size:"icon",className:"group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground",children:(0,s.jsx)(Ua,{tooltip:!1,value:l.name,className:"h-3 w-3"})})}),e[30]=l.name,e[31]=V);let $;e[32]===l.external_type?$=e[33]:($=(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:l.external_type}),e[32]=l.external_type,e[33]=$);let D;e[34]!==R||e[35]!==V||e[36]!==$||e[37]!==_||e[38]!==I||e[39]!==f?(D=(0,s.jsxs)(re,{className:"rounded-none py-1 group cursor-pointer",value:I,onSelect:f,children:[R,V,$]},_),e[34]=R,e[35]=V,e[36]=$,e[37]=_,e[38]=I,e[39]=f,e[40]=D):D=e[40];let q;e[41]!==l||e[42]!==m||e[43]!==y||e[44]!==c||e[45]!==n||e[46]!==t?(q=c&&(0,s.jsx)("div",{className:"pr-2 py-2 bg-(--slate-1) shadow-inner border-b",style:E(A.columnPreview),children:(0,s.jsx)(_a,{children:(0,s.jsx)(Oa,{table:t,column:l,onAddColumnChart:y,preview:m.get(n?`${n.database}.${n.schema}.${t.name}:${l.name}`:`${t.name}:${l.name}`),sqlTableContext:n})})}),e[41]=l,e[42]=m,e[43]=y,e[44]=c,e[45]=n,e[46]=t,e[47]=q):q=e[47];let M;return e[48]!==D||e[49]!==q?(M=(0,s.jsxs)(s.Fragment,{children:[D,q]}),e[48]=D,e[49]=q,e[50]=M):M=e[50],M};function vt(a){let{tooltipContent:e,content:t}=a;return(0,s.jsx)(xe,{content:e,delayDuration:100,children:(0,s.jsx)("span",{className:"text-xs text-black bg-gray-100 dark:invert rounded px-1",children:t})})}function Ds(a){return a}var G={name:"name",type:"type-value",defs:"defs-refs"},Nt=[{id:G.name,accessorFn:a=>[a.name,a.declaredBy],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:"Name",column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsx)(rt,{name:e,declaredBy:t})}},{id:G.type,accessorFn:a=>[a.dataType,a.value],enableSorting:!0,sortingFn:"alphanumeric",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Type"}),(0,s.jsx)("span",{children:"Value"})]}),column:a}),cell:({getValue:a})=>{let[e,t]=a();return(0,s.jsxs)("div",{className:"max-w-[150px]",children:[(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap text-muted-foreground font-mono text-xs",children:e}),(0,s.jsx)("div",{className:"text-ellipsis overflow-hidden whitespace-nowrap",title:t??"",children:t})]})}},{id:G.defs,accessorFn:a=>[a.declaredBy,a.usedBy,a.name,a.declaredByNames,a.usedByNames],enableSorting:!0,sortingFn:"basic",header:({column:a})=>(0,s.jsx)(de,{header:(0,s.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,s.jsx)("span",{children:"Declared By"}),(0,s.jsx)("span",{children:"Used By"})]}),column:a}),cell:({getValue:a})=>{let[e,t,l]=a(),n=i=>{let c=ha(i);c&&xa(c,l)};return(0,s.jsxs)("div",{className:"flex flex-col gap-1 py-1",children:[(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-center",children:[(0,s.jsx)("span",{title:"Declared by",children:(0,s.jsx)(mt,{className:"w-3.5 h-3.5 text-muted-foreground"})}),e.length===1?(0,s.jsx)(qe,{variant:"focus",cellId:e[0],skipScroll:!0,onClick:()=>n(e[0])}):(0,s.jsx)("div",{className:"text-destructive flex flex-row gap-2",children:e.slice(0,3).map((i,c)=>(0,s.jsxs)("span",{className:"flex",children:[(0,s.jsx)(qe,{variant:"focus",cellId:i,skipScroll:!0,className:"whitespace-nowrap text-destructive",onClick:()=>n(i)},i),c<e.length-1&&", "]},i))})]}),(0,s.jsxs)("div",{className:"flex flex-row overflow-auto gap-2 items-baseline",children:[(0,s.jsx)("span",{title:"Used by",children:(0,s.jsx)(Aa,{className:"w-3.5 h-3.5 text-muted-foreground"})}),(0,s.jsx)(nt,{maxCount:3,cellIds:t,skipScroll:!0,onClick:n})]})]})}}];function wt({variables:a,sort:e,cellIdToIndex:t}){e||(e={id:G.defs,desc:!1});let l=[];switch(e.id){case G.name:l=Y(a,n=>n.name);break;case G.type:l=Y(a,n=>n.dataType);break;case G.defs:l=Y(a,n=>t.get(n.declaredBy[0]));break}return e.desc?l.toReversed():l}const Xe=(0,F.memo)(({className:a,cellIds:e,variables:t})=>{let[l,n]=F.useState([]),[i,c]=F.useState(""),d=ra(),{locale:r}=Ga(),x=(0,F.useMemo)(()=>{let m=o=>{let p=d[o];return ga(p)?`cell-${e.indexOf(o)}`:p??`cell-${e.indexOf(o)}`};return Object.values(t).map(o=>({...o,declaredByNames:o.declaredBy.map(m),usedByNames:o.usedBy.map(m)}))},[t,d,e]),h=Fa({data:(0,F.useMemo)(()=>{let m=new Map;return e.forEach((o,p)=>m.set(o,p)),wt({variables:x,sort:l[0],cellIdToIndex:m})},[x,l,e]),columns:Nt,getCoreRowModel:Ta(),onGlobalFilterChange:c,getFilteredRowModel:Pa(),enableFilters:!0,enableGlobalFilter:!0,enableColumnPinning:!1,getColumnCanGlobalFilter(m){return m.columnDef.enableGlobalFilter??!0},globalFilterFn:"auto",manualSorting:!0,locale:r,onSortingChange:n,getSortedRowModel:ka(),state:{sorting:l,globalFilter:i}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(Ea,{className:"w-full",placeholder:"Search",value:i,onChange:m=>c(m.target.value)}),(0,s.jsxs)(Ya,{className:Q("w-full text-sm flex-1 border-separate border-spacing-0",a),children:[(0,s.jsx)(Wa,{children:(0,s.jsx)(Be,{className:"whitespace-nowrap text-xs",children:h.getFlatHeaders().map(m=>(0,s.jsx)(Xa,{className:"sticky top-0 bg-background border-b",children:Pe(m.column.columnDef.header,m.getContext())},m.id))})}),(0,s.jsx)(Ja,{children:h.getRowModel().rows.map(m=>(0,s.jsx)(Be,{className:"hover:bg-accent",children:m.getVisibleCells().map(o=>(0,s.jsx)(Qa,{className:"border-b",children:Pe(o.column.columnDef.cell,o.getContext())},o.id))},m.id))})]})]})});Xe.displayName="VariableTable";var St=Te(),_t=Ce("marimo:session-panel:state",{openSections:["variables"],hasUserInteracted:!1},ke),Ct=()=>{let a=(0,St.c)(24),e=Ze(),t=ba(),l=J(_e),n=J(Ue),[i,c]=ye(_t),d=l.length+n.length,r;a[0]!==d||a[1]!==i.hasUserInteracted||a[2]!==i.openSections?(r=!i.hasUserInteracted&&d>0?[...new Set([...i.openSections,"datasources"])]:i.openSections,a[0]=d,a[1]=i.hasUserInteracted,a[2]=i.openSections,a[3]=r):r=a[3];let x=r,h;a[4]===c?h=a[5]:(h=u=>{c({openSections:u,hasUserInteracted:!0})},a[4]=c,a[5]=h);let m=h,o=!x.includes("datasources")&&d>0,p;a[6]===Symbol.for("react.memo_cache_sentinel")?(p=(0,s.jsx)(ce,{className:"w-4 h-4"}),a[6]=p):p=a[6];let S;a[7]!==d||a[8]!==o?(S=o&&(0,s.jsx)(ct,{children:d}),a[7]=d,a[8]=o,a[9]=S):S=a[9];let b;a[10]===S?b=a[11]:(b=(0,s.jsxs)(Me,{children:[p,"Data sources",S]}),a[10]=S,a[11]=b);let N;a[12]===Symbol.for("react.memo_cache_sentinel")?(N=(0,s.jsx)(Ee,{children:(0,s.jsx)(xt,{})}),a[12]=N):N=a[12];let y;a[13]===b?y=a[14]:(y=(0,s.jsxs)(Le,{value:"datasources",children:[b,N]}),a[13]=b,a[14]=y);let j;a[15]===Symbol.for("react.memo_cache_sentinel")?(j=(0,s.jsxs)(Me,{children:[(0,s.jsx)(pa,{className:"w-4 h-4"}),"Variables"]}),a[15]=j):j=a[15];let g;a[16]!==t||a[17]!==e?(g=(0,s.jsxs)(Le,{value:"variables",lastItem:!0,children:[j,(0,s.jsx)(Ee,{children:Object.keys(e).length===0?(0,s.jsx)("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"No variables defined"}):(0,s.jsx)(Xe,{cellIds:t.inOrderIds,variables:e})})]}),a[16]=t,a[17]=e,a[18]=g):g=a[18];let w;return a[19]!==m||a[20]!==x||a[21]!==y||a[22]!==g?(w=(0,s.jsxs)(Ia,{type:"multiple",value:x,onValueChange:m,className:"flex flex-col h-full overflow-auto",children:[y,g]}),a[19]=m,a[20]=x,a[21]=y,a[22]=g,a[23]=w):w=a[23],w};export{Ct as default};
|