@marimo-team/frontend 0.19.7-dev19 → 0.19.7-dev20
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-C087tCA7.js → JsonOutput-BVI_kCSN.js} +1 -1
- package/dist/assets/{add-cell-with-ai-CNdKSxaa.js → add-cell-with-ai-COxBrLrH.js} +1 -1
- package/dist/assets/{agent-panel-Dy_hm2_M.js → agent-panel-0HhcHaVj.js} +1 -1
- package/dist/assets/{cell-editor-Bvp7zX3H.js → cell-editor-COotfHlv.js} +1 -1
- package/dist/assets/{chat-display-h-b47mmp.js → chat-display-C4qhRyWq.js} +1 -1
- package/dist/assets/chat-panel-BxxPae_R.js +3 -0
- package/dist/assets/column-preview-tRvaNrl-.js +1 -0
- package/dist/assets/command-palette-D8_SvjIR.js +1 -0
- package/dist/assets/dependency-graph-panel-DSeZ5qhn.js +4 -0
- package/dist/assets/download-CBUrhm0-.js +1 -0
- package/dist/assets/{edit-page-DucVU2vb.js → edit-page-CdRvNDWO.js} +3 -3
- package/dist/assets/file-explorer-panel-g80R2HMx.js +1 -0
- package/dist/assets/{hooks-BoHS86qq.js → hooks-BCWaBVPa.js} +1 -1
- package/dist/assets/html-to-image-CJgqxZci.js +2 -0
- package/dist/assets/{index-BdCXVyjC.js → index-Clc-qLX8.js} +3 -3
- package/dist/assets/{layout-8LmhWA4r.js → layout--FMxALVU.js} +1 -1
- package/dist/assets/{markdown-renderer-BNamR17B.js → markdown-renderer-CoQm4UxN.js} +1 -1
- package/dist/assets/{panels-BiS_ABCE.js → panels-D4X7kUpt.js} +1 -1
- package/dist/assets/{readonly-python-code-DnKq8Ckc.js → readonly-python-code-BlVsu50E.js} +1 -1
- package/dist/assets/run-page-DLppr0V5.js +1 -0
- package/dist/assets/scratchpad-panel-Dh7Pdw2h.js +1 -0
- package/dist/assets/session-panel-CCi2mMz9.js +1 -0
- package/dist/assets/useAddCell-CklpKCq2.js +1 -0
- package/dist/assets/useCellActionButton-Cgy2ht_4.js +1 -0
- package/dist/assets/{useDependencyPanelTab-B9_W1Uje.js → useDependencyPanelTab-gUps1qpH.js} +1 -1
- package/dist/assets/{useNotebookActions-Dw4aWlN7.js → useNotebookActions-BuhoyoG6.js} +1 -1
- package/dist/assets/{utilities.esm-BzVBlDNW.js → utilities.esm-DOpL-6DC.js} +1 -1
- package/dist/index.html +11 -11
- package/package.json +2 -2
- package/src/core/ai/context/providers/cell-output.ts +1 -1
- package/src/core/export/__tests__/hooks.test.ts +7 -1
- package/src/utils/__tests__/download.test.tsx +21 -3
- package/src/utils/download.ts +2 -1
- package/src/utils/html-to-image.ts +41 -0
- package/dist/assets/chat-panel-CbxPNQCO.js +0 -3
- package/dist/assets/column-preview-Bu_k3EWh.js +0 -1
- package/dist/assets/command-palette-DVVtIzJb.js +0 -1
- package/dist/assets/dependency-graph-panel-DihHLc0M.js +0 -4
- package/dist/assets/download-C8KLYiVf.js +0 -1
- package/dist/assets/es-t8uugS1p.js +0 -2
- package/dist/assets/file-explorer-panel-DiNYnHNB.js +0 -1
- package/dist/assets/run-page-C4DY7FUI.js +0 -1
- package/dist/assets/scratchpad-panel-CDIagr7F.js +0 -1
- package/dist/assets/session-panel-BI117ZSA.js +0 -1
- package/dist/assets/useAddCell-CD1n1R64.js +0 -1
- package/dist/assets/useCellActionButton-3vaWtKqb.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var it=Object.defineProperty;var ot=(t,e,n)=>e in t?it(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var a=(t,e,n)=>ot(t,typeof e!="symbol"?e+"":e,n);var M;import{s as ce}from"./chunk-LvLJmgfZ.js";import{i as Q,l as D,o as lt,p as q,u as ut}from"./useEvent-DO6uJBas.js";import{t as ct}from"./react-BGmjiNul.js";import{Wr as dt,Xr as ft,b as mt,ni as z,ti as pt,y as ht}from"./cells-Cvo5AIrZ.js";import{B as gt,C as de,D as yt,I as bt,N as wt,P as O,R as fe,k as W,w as me}from"./zod-Cg4WLWh2.js";import{t as pe}from"./compiler-runtime-DeeZ7FnK.js";import{t as vt}from"./get-6uJrSKbw.js";import{r as xt}from"./useLifecycle-DvpL8DUJ.js";import{t as Et}from"./debounce-B3mjKxHe.js";import{t as _t}from"./_baseSet-5Rdwpmr3.js";import{d as E,p as y}from"./hotkeys-DghjL7BQ.js";import{t as Ct}from"./invariant-CAG_dYON.js";import{S as kt}from"./utils-CSDCHxwI.js";import{j as Ft}from"./config-BgpK7vqH.js";import{a as Rt}from"./switch-Di5kBaS8.js";import{n as he}from"./globals-uEPg-4pq.js";import{t as ge}from"./ErrorBoundary-BU1OKJ3L.js";import{t as Nt}from"./jsx-runtime-ZmTK25f3.js";import{t as St}from"./button-B3uq-Cpf.js";import{t as qt}from"./cn-BKtXLv3a.js";import{Z as Pt}from"./JsonOutput-C087tCA7.js";import{t as jt}from"./createReducer-Cki97cx5.js";import{t as ye}from"./requests-BsVD4CdD.js";import{t as be}from"./createLucideIcon-CnW3RofX.js";import{h as Mt}from"./select-UFziUNxL.js";import{a as At,l as Tt,r as It}from"./markdown-renderer-BNamR17B.js";import{t as Lt}from"./DeferredRequestRegistry-CO2AyNfd.js";import{t as K}from"./Deferred-CrO5-0RA.js";import{t as we}from"./uuid-DercMavo.js";import{t as Ut}from"./use-toast-rmUWldD_.js";import{t as ve}from"./tooltip-CEc2ajau.js";import{t as xe}from"./mode-DjraKyN2.js";import{n as zt,r as Ot,t as Wt}from"./share-CKfNi8fD.js";import{r as Dt,t as Ht}from"./react-resizable-panels.browser.esm-Ctj_10o2.js";import{t as Ee}from"./toggle-jWKnIArU.js";function Bt(t,e,n){return t==null?t:_t(t,e,n)}var H=Bt,Vt=be("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]),Xt=be("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function $t(t){return{all:t||(t=new Map),on:function(e,n){var r=t.get(e);r?r.push(n):t.set(e,[n])},off:function(e,n){var r=t.get(e);r&&(n?r.splice(r.indexOf(n)>>>0,1):t.set(e,[]))},emit:function(e,n){var r=t.get(e);r&&r.slice().map(function(s){s(n)}),(r=t.get("*"))&&r.slice().map(function(s){s(e,n)})}}}var u=ce(ct(),1),Z=(0,u.createContext)(null),Yt=t=>{let{controller:e}=(0,u.useContext)(Z),n=u.useRef(Symbol("fill"));return(0,u.useEffect)(()=>(e.mount({name:t.name,ref:n.current,children:t.children}),()=>{e.unmount({name:t.name,ref:n.current})}),[]),(0,u.useEffect)(()=>{e.update({name:t.name,ref:n.current,children:t.children})}),null},Gt=Object.defineProperty,Qt=(t,e,n)=>e in t?Gt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,_e=(t,e,n)=>(Qt(t,typeof e=="symbol"?e:e+"",n),n),Ce=console,Kt=class{constructor(t){_e(this,"_bus"),_e(this,"_db"),this._bus=t,this.handleFillMount=this.handleFillMount.bind(this),this.handleFillUpdated=this.handleFillUpdated.bind(this),this.handleFillUnmount=this.handleFillUnmount.bind(this),this._db={byName:new Map,byFill:new Map}}mount(){this._bus.on("fill-mount",this.handleFillMount),this._bus.on("fill-updated",this.handleFillUpdated),this._bus.on("fill-unmount",this.handleFillUnmount)}unmount(){this._bus.off("fill-mount",this.handleFillMount),this._bus.off("fill-updated",this.handleFillUpdated),this._bus.off("fill-unmount",this.handleFillUnmount)}handleFillMount({fill:t}){let e=u.Children.toArray(t.children),n=t.name,r={fill:t,children:e,name:n},s=this._db.byName.get(n);s?(s.components.push(r),s.listeners.forEach(i=>i([...s.components]))):this._db.byName.set(n,{listeners:[],components:[r]}),this._db.byFill.set(t.ref,r)}handleFillUpdated({fill:t}){let e=this._db.byFill.get(t.ref),n=u.Children.toArray(t.children);if(e){e.children=n;let r=this._db.byName.get(e.name);if(r)r.listeners.forEach(s=>s([...r.components]));else throw Error("registration was expected to be defined")}else{Ce.error("[handleFillUpdated] component was expected to be defined");return}}handleFillUnmount({fill:t}){let e=this._db.byFill.get(t.ref);if(!e){Ce.error("[handleFillUnmount] component was expected to be defined");return}let n=e.name,r=this._db.byName.get(n);if(!r)throw Error("registration was expected to be defined");r.components=r.components.filter(s=>s!==e),this._db.byFill.delete(t.ref),r.listeners.length===0&&r.components.length===0?this._db.byName.delete(n):r.listeners.forEach(s=>s([...r.components]))}onComponentsChange(t,e){let n=this._db.byName.get(t);n?(n.listeners.push(e),e(n.components)):(this._db.byName.set(t,{listeners:[e],components:[]}),e([]))}getFillsByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.fill):[]}getChildrenByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.children).reduce((n,r)=>n.concat(r),[]):[]}removeOnComponentsChange(t,e){let n=this._db.byName.get(t);if(!n)throw Error("expected registration to be defined");let r=n.listeners;r.splice(r.indexOf(e),1)}},Zt=Object.defineProperty,Jt=(t,e,n)=>e in t?Zt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,en=(t,e,n)=>(Jt(t,typeof e=="symbol"?e:e+"",n),n),ke=class{constructor(){en(this,"bus",$t())}mount(t){this.bus.emit("fill-mount",{fill:t})}unmount(t){this.bus.emit("fill-unmount",{fill:t})}update(t){this.bus.emit("fill-updated",{fill:t})}};function tn(t){let e=t||new ke;return{controller:e,manager:new Kt(e.bus)}}var nn=({controller:t,children:e})=>{let[n]=u.useState(()=>{let r=tn(t);return r.manager.mount(),r});return u.useEffect(()=>()=>{n.manager.unmount()},[]),u.createElement(Z.Provider,{value:n},e)};function J(t,e){let[n,r]=(0,u.useState)([]),{manager:s}=(0,u.useContext)(Z);return(0,u.useEffect)(()=>(s.onComponentsChange(t,r),()=>{s.removeOnComponentsChange(t,r)}),[t]),n.flatMap((i,d)=>{let{children:l}=i;return l.map((p,b)=>{if(typeof p=="number"||typeof p=="string")throw Error("Only element children will work here");return u.cloneElement(p,{key:d.toString()+b.toString(),...e})})})}var Fe=t=>{let e=J(t.name,t.childProps);if(typeof t.children=="function"){let n=t.children(e);if(u.isValidElement(n)||n===null)return n;throw Error("Slot rendered with function must return a valid React Element.")}return e};const rn=q(null);var{valueAtom:sn,useActions:an}=jt(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:we()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(n=>n.id!==e)}),clearBanners:t=>({...t,banners:[]})});const on=()=>ut(sn);function ln(){return an()}const un=new ke,B={SIDEBAR:"sidebar",CONTEXT_AWARE_PANEL:"context-aware-panel"};var cn=class{constructor(){a(this,"subscriptions",new Map)}addSubscription(t,e){var n;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(n=this.subscriptions.get(t))==null||n.add(e)}removeSubscription(t,e){var n;(n=this.subscriptions.get(t))==null||n.delete(e)}notify(t,e){for(let n of this.subscriptions.get(t)??[])n(e)}},Re=class ue{constructor(e){a(this,"subscriptions",new cn);this.producer=e}static withProducerCallback(e){return new ue(e)}static empty(){return new ue}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,n){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,n){this.subscriptions.addSubscription(e,n),e==="open"&&n(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,n){this.subscriptions.removeSubscription(e,n)}},dn=1e10,fn=1e3;function V(t,e){let n=t.map(r=>`"${r}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${n}`)}function mn(t={}){let e={};function n(o){e=o}let r={};function s(o){var f;r.unregisterHandler&&r.unregisterHandler(),r=o,(f=r.registerHandler)==null||f.call(r,U)}let i;function d(o){if(typeof o=="function"){i=o;return}i=(f,g)=>{let c=o[f];if(c)return c(g);let h=o._;if(!h)throw Error(`The requested method has no handler: ${f}`);return h(f,g)}}let{maxRequestTime:l=fn}=t;t.transport&&s(t.transport),t.requestHandler&&d(t.requestHandler),t._debugHooks&&n(t._debugHooks);let p=0;function b(){return p<=dn?++p:p=0}let x=new Map,w=new Map;function _(o,...f){let g=f[0];return new Promise((c,h)=>{var T;if(!r.send)throw V(["send"],"make requests");let S=b(),j={type:"request",id:S,method:o,params:g};x.set(S,{resolve:c,reject:h}),l!==1/0&&w.set(S,setTimeout(()=>{w.delete(S),h(Error("RPC request timed out."))},l)),(T=e.onSend)==null||T.call(e,j),r.send(j)})}let R=new Proxy(_,{get:(o,f,g)=>f in o?Reflect.get(o,f,g):c=>_(f,c)}),C=R;function k(o,...f){var h;let g=f[0];if(!r.send)throw V(["send"],"send messages");let c={type:"message",id:o,payload:g};(h=e.onSend)==null||h.call(e,c),r.send(c)}let F=new Proxy(k,{get:(o,f,g)=>f in o?Reflect.get(o,f,g):c=>k(f,c)}),v=F,N=new Map,P=new Set;function A(o,f){var g;if(!r.registerHandler)throw V(["registerHandler"],"register message listeners");if(o==="*"){P.add(f);return}N.has(o)||N.set(o,new Set),(g=N.get(o))==null||g.add(f)}function L(o,f){var g,c;if(o==="*"){P.delete(f);return}(g=N.get(o))==null||g.delete(f),((c=N.get(o))==null?void 0:c.size)===0&&N.delete(o)}async function U(o){var f,g;if((f=e.onReceive)==null||f.call(e,o),!("type"in o))throw Error("Message does not contain a type.");if(o.type==="request"){if(!r.send||!i)throw V(["send","requestHandler"],"handle requests");let{id:c,method:h,params:S}=o,j;try{j={type:"response",id:c,success:!0,payload:await i(h,S)}}catch(T){if(!(T instanceof Error))throw T;j={type:"response",id:c,success:!1,error:T.message}}(g=e.onSend)==null||g.call(e,j),r.send(j);return}if(o.type==="response"){let c=w.get(o.id);c!=null&&clearTimeout(c);let{resolve:h,reject:S}=x.get(o.id)??{};o.success?h==null||h(o.payload):S==null||S(Error(o.error));return}if(o.type==="message"){for(let h of P)h(o.id,o.payload);let c=N.get(o.id);if(!c)return;for(let h of c)h(o.payload);return}throw Error(`Unexpected RPC message type: ${o.type}`)}return{setTransport:s,setRequestHandler:d,request:R,requestProxy:C,send:F,sendProxy:v,addMessageListener:A,removeMessageListener:L,proxy:{send:v,request:C},_setDebugHooks:n}}function pn(t){return mn(t)}var Ne="[transport-id]";function hn(t,e){let{transportId:n}=e;return n==null?t:{[Ne]:n,data:t}}function gn(t,e){let{transportId:n,filter:r}=e,s=r==null?void 0:r();if(n!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let i=t;if(n){if(t[Ne]!==n)return[!0];i=t.data}return s===!1?[!0]:[!1,i]}function yn(t,e={}){let{transportId:n,filter:r,remotePort:s}=e,i=t,d=s??t,l;return{send(p){d.postMessage(hn(p,{transportId:n}))},registerHandler(p){l=b=>{let x=b.data,[w,_]=gn(x,{transportId:n,filter:()=>r==null?void 0:r(b)});w||p(_)},i.addEventListener("message",l)},unregisterHandler(){l&&i.removeEventListener("message",l)}}}function bn(t,e){return yn(t,e)}function Se(t){return pn({transport:bn(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{E.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{E.debug("[rpc] Worker -> Parent",e)}}})}const qe=q("Initializing..."),wn=q(t=>{let e=t(ht),n=Object.values(e.cellRuntime);return n.some(r=>!Tt(r.output))?!0:n.every(r=>r.status==="idle")});var Pe=zt(),je="marimo:file",Me=new dt(null);const vn={saveFile(t){Me.set(je,t)},readFile(){return Me.get(je)}};var xn={saveFile(t){z.setCodeForHash((0,Pe.compressToEncodedURIComponent)(t))},readFile(){let t=z.getCodeFromHash()||z.getCodeFromSearchParam();return t?(0,Pe.decompressFromEncodedURIComponent)(t):null}};const En={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var _n={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("files/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}},Cn={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
1
|
+
var it=Object.defineProperty;var ot=(t,e,n)=>e in t?it(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var a=(t,e,n)=>ot(t,typeof e!="symbol"?e+"":e,n);var M;import{s as ce}from"./chunk-LvLJmgfZ.js";import{i as Q,l as D,o as lt,p as q,u as ut}from"./useEvent-DO6uJBas.js";import{t as ct}from"./react-BGmjiNul.js";import{Wr as dt,Xr as ft,b as mt,ni as z,ti as pt,y as ht}from"./cells-Cvo5AIrZ.js";import{B as gt,C as de,D as yt,I as bt,N as wt,P as O,R as fe,k as W,w as me}from"./zod-Cg4WLWh2.js";import{t as pe}from"./compiler-runtime-DeeZ7FnK.js";import{t as vt}from"./get-6uJrSKbw.js";import{r as xt}from"./useLifecycle-DvpL8DUJ.js";import{t as Et}from"./debounce-B3mjKxHe.js";import{t as _t}from"./_baseSet-5Rdwpmr3.js";import{d as E,p as y}from"./hotkeys-DghjL7BQ.js";import{t as Ct}from"./invariant-CAG_dYON.js";import{S as kt}from"./utils-CSDCHxwI.js";import{j as Ft}from"./config-BgpK7vqH.js";import{a as Rt}from"./switch-Di5kBaS8.js";import{n as he}from"./globals-uEPg-4pq.js";import{t as ge}from"./ErrorBoundary-BU1OKJ3L.js";import{t as Nt}from"./jsx-runtime-ZmTK25f3.js";import{t as St}from"./button-B3uq-Cpf.js";import{t as qt}from"./cn-BKtXLv3a.js";import{Z as Pt}from"./JsonOutput-BVI_kCSN.js";import{t as jt}from"./createReducer-Cki97cx5.js";import{t as ye}from"./requests-BsVD4CdD.js";import{t as be}from"./createLucideIcon-CnW3RofX.js";import{h as Mt}from"./select-UFziUNxL.js";import{a as At,l as Tt,r as It}from"./markdown-renderer-CoQm4UxN.js";import{t as Lt}from"./DeferredRequestRegistry-CO2AyNfd.js";import{t as K}from"./Deferred-CrO5-0RA.js";import{t as we}from"./uuid-DercMavo.js";import{t as Ut}from"./use-toast-rmUWldD_.js";import{t as ve}from"./tooltip-CEc2ajau.js";import{t as xe}from"./mode-DjraKyN2.js";import{n as zt,r as Ot,t as Wt}from"./share-CKfNi8fD.js";import{r as Dt,t as Ht}from"./react-resizable-panels.browser.esm-Ctj_10o2.js";import{t as Ee}from"./toggle-jWKnIArU.js";function Bt(t,e,n){return t==null?t:_t(t,e,n)}var H=Bt,Vt=be("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]),Xt=be("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]);function $t(t){return{all:t||(t=new Map),on:function(e,n){var r=t.get(e);r?r.push(n):t.set(e,[n])},off:function(e,n){var r=t.get(e);r&&(n?r.splice(r.indexOf(n)>>>0,1):t.set(e,[]))},emit:function(e,n){var r=t.get(e);r&&r.slice().map(function(s){s(n)}),(r=t.get("*"))&&r.slice().map(function(s){s(e,n)})}}}var u=ce(ct(),1),Z=(0,u.createContext)(null),Yt=t=>{let{controller:e}=(0,u.useContext)(Z),n=u.useRef(Symbol("fill"));return(0,u.useEffect)(()=>(e.mount({name:t.name,ref:n.current,children:t.children}),()=>{e.unmount({name:t.name,ref:n.current})}),[]),(0,u.useEffect)(()=>{e.update({name:t.name,ref:n.current,children:t.children})}),null},Gt=Object.defineProperty,Qt=(t,e,n)=>e in t?Gt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,_e=(t,e,n)=>(Qt(t,typeof e=="symbol"?e:e+"",n),n),Ce=console,Kt=class{constructor(t){_e(this,"_bus"),_e(this,"_db"),this._bus=t,this.handleFillMount=this.handleFillMount.bind(this),this.handleFillUpdated=this.handleFillUpdated.bind(this),this.handleFillUnmount=this.handleFillUnmount.bind(this),this._db={byName:new Map,byFill:new Map}}mount(){this._bus.on("fill-mount",this.handleFillMount),this._bus.on("fill-updated",this.handleFillUpdated),this._bus.on("fill-unmount",this.handleFillUnmount)}unmount(){this._bus.off("fill-mount",this.handleFillMount),this._bus.off("fill-updated",this.handleFillUpdated),this._bus.off("fill-unmount",this.handleFillUnmount)}handleFillMount({fill:t}){let e=u.Children.toArray(t.children),n=t.name,r={fill:t,children:e,name:n},s=this._db.byName.get(n);s?(s.components.push(r),s.listeners.forEach(i=>i([...s.components]))):this._db.byName.set(n,{listeners:[],components:[r]}),this._db.byFill.set(t.ref,r)}handleFillUpdated({fill:t}){let e=this._db.byFill.get(t.ref),n=u.Children.toArray(t.children);if(e){e.children=n;let r=this._db.byName.get(e.name);if(r)r.listeners.forEach(s=>s([...r.components]));else throw Error("registration was expected to be defined")}else{Ce.error("[handleFillUpdated] component was expected to be defined");return}}handleFillUnmount({fill:t}){let e=this._db.byFill.get(t.ref);if(!e){Ce.error("[handleFillUnmount] component was expected to be defined");return}let n=e.name,r=this._db.byName.get(n);if(!r)throw Error("registration was expected to be defined");r.components=r.components.filter(s=>s!==e),this._db.byFill.delete(t.ref),r.listeners.length===0&&r.components.length===0?this._db.byName.delete(n):r.listeners.forEach(s=>s([...r.components]))}onComponentsChange(t,e){let n=this._db.byName.get(t);n?(n.listeners.push(e),e(n.components)):(this._db.byName.set(t,{listeners:[e],components:[]}),e([]))}getFillsByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.fill):[]}getChildrenByName(t){let e=this._db.byName.get(t);return e?e.components.map(n=>n.children).reduce((n,r)=>n.concat(r),[]):[]}removeOnComponentsChange(t,e){let n=this._db.byName.get(t);if(!n)throw Error("expected registration to be defined");let r=n.listeners;r.splice(r.indexOf(e),1)}},Zt=Object.defineProperty,Jt=(t,e,n)=>e in t?Zt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,en=(t,e,n)=>(Jt(t,typeof e=="symbol"?e:e+"",n),n),ke=class{constructor(){en(this,"bus",$t())}mount(t){this.bus.emit("fill-mount",{fill:t})}unmount(t){this.bus.emit("fill-unmount",{fill:t})}update(t){this.bus.emit("fill-updated",{fill:t})}};function tn(t){let e=t||new ke;return{controller:e,manager:new Kt(e.bus)}}var nn=({controller:t,children:e})=>{let[n]=u.useState(()=>{let r=tn(t);return r.manager.mount(),r});return u.useEffect(()=>()=>{n.manager.unmount()},[]),u.createElement(Z.Provider,{value:n},e)};function J(t,e){let[n,r]=(0,u.useState)([]),{manager:s}=(0,u.useContext)(Z);return(0,u.useEffect)(()=>(s.onComponentsChange(t,r),()=>{s.removeOnComponentsChange(t,r)}),[t]),n.flatMap((i,d)=>{let{children:l}=i;return l.map((p,b)=>{if(typeof p=="number"||typeof p=="string")throw Error("Only element children will work here");return u.cloneElement(p,{key:d.toString()+b.toString(),...e})})})}var Fe=t=>{let e=J(t.name,t.childProps);if(typeof t.children=="function"){let n=t.children(e);if(u.isValidElement(n)||n===null)return n;throw Error("Slot rendered with function must return a valid React Element.")}return e};const rn=q(null);var{valueAtom:sn,useActions:an}=jt(()=>({banners:[]}),{addBanner:(t,e)=>({...t,banners:[...t.banners,{...e,id:we()}]}),removeBanner:(t,e)=>({...t,banners:t.banners.filter(n=>n.id!==e)}),clearBanners:t=>({...t,banners:[]})});const on=()=>ut(sn);function ln(){return an()}const un=new ke,B={SIDEBAR:"sidebar",CONTEXT_AWARE_PANEL:"context-aware-panel"};var cn=class{constructor(){a(this,"subscriptions",new Map)}addSubscription(t,e){var n;this.subscriptions.has(t)||this.subscriptions.set(t,new Set),(n=this.subscriptions.get(t))==null||n.add(e)}removeSubscription(t,e){var n;(n=this.subscriptions.get(t))==null||n.delete(e)}notify(t,e){for(let n of this.subscriptions.get(t)??[])n(e)}},Re=class ue{constructor(e){a(this,"subscriptions",new cn);this.producer=e}static withProducerCallback(e){return new ue(e)}static empty(){return new ue}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,n){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,n){this.subscriptions.addSubscription(e,n),e==="open"&&n(new Event("open")),e==="message"&&this.startProducer()}removeEventListener(e,n){this.subscriptions.removeSubscription(e,n)}},dn=1e10,fn=1e3;function V(t,e){let n=t.map(r=>`"${r}"`).join(", ");return Error(`This RPC instance cannot ${e} because the transport did not provide one or more of these methods: ${n}`)}function mn(t={}){let e={};function n(o){e=o}let r={};function s(o){var f;r.unregisterHandler&&r.unregisterHandler(),r=o,(f=r.registerHandler)==null||f.call(r,U)}let i;function d(o){if(typeof o=="function"){i=o;return}i=(f,g)=>{let c=o[f];if(c)return c(g);let h=o._;if(!h)throw Error(`The requested method has no handler: ${f}`);return h(f,g)}}let{maxRequestTime:l=fn}=t;t.transport&&s(t.transport),t.requestHandler&&d(t.requestHandler),t._debugHooks&&n(t._debugHooks);let p=0;function b(){return p<=dn?++p:p=0}let x=new Map,w=new Map;function _(o,...f){let g=f[0];return new Promise((c,h)=>{var T;if(!r.send)throw V(["send"],"make requests");let S=b(),j={type:"request",id:S,method:o,params:g};x.set(S,{resolve:c,reject:h}),l!==1/0&&w.set(S,setTimeout(()=>{w.delete(S),h(Error("RPC request timed out."))},l)),(T=e.onSend)==null||T.call(e,j),r.send(j)})}let R=new Proxy(_,{get:(o,f,g)=>f in o?Reflect.get(o,f,g):c=>_(f,c)}),C=R;function k(o,...f){var h;let g=f[0];if(!r.send)throw V(["send"],"send messages");let c={type:"message",id:o,payload:g};(h=e.onSend)==null||h.call(e,c),r.send(c)}let F=new Proxy(k,{get:(o,f,g)=>f in o?Reflect.get(o,f,g):c=>k(f,c)}),v=F,N=new Map,P=new Set;function A(o,f){var g;if(!r.registerHandler)throw V(["registerHandler"],"register message listeners");if(o==="*"){P.add(f);return}N.has(o)||N.set(o,new Set),(g=N.get(o))==null||g.add(f)}function L(o,f){var g,c;if(o==="*"){P.delete(f);return}(g=N.get(o))==null||g.delete(f),((c=N.get(o))==null?void 0:c.size)===0&&N.delete(o)}async function U(o){var f,g;if((f=e.onReceive)==null||f.call(e,o),!("type"in o))throw Error("Message does not contain a type.");if(o.type==="request"){if(!r.send||!i)throw V(["send","requestHandler"],"handle requests");let{id:c,method:h,params:S}=o,j;try{j={type:"response",id:c,success:!0,payload:await i(h,S)}}catch(T){if(!(T instanceof Error))throw T;j={type:"response",id:c,success:!1,error:T.message}}(g=e.onSend)==null||g.call(e,j),r.send(j);return}if(o.type==="response"){let c=w.get(o.id);c!=null&&clearTimeout(c);let{resolve:h,reject:S}=x.get(o.id)??{};o.success?h==null||h(o.payload):S==null||S(Error(o.error));return}if(o.type==="message"){for(let h of P)h(o.id,o.payload);let c=N.get(o.id);if(!c)return;for(let h of c)h(o.payload);return}throw Error(`Unexpected RPC message type: ${o.type}`)}return{setTransport:s,setRequestHandler:d,request:R,requestProxy:C,send:F,sendProxy:v,addMessageListener:A,removeMessageListener:L,proxy:{send:v,request:C},_setDebugHooks:n}}function pn(t){return mn(t)}var Ne="[transport-id]";function hn(t,e){let{transportId:n}=e;return n==null?t:{[Ne]:n,data:t}}function gn(t,e){let{transportId:n,filter:r}=e,s=r==null?void 0:r();if(n!=null&&s!=null)throw Error("Cannot use both `transportId` and `filter` at the same time");let i=t;if(n){if(t[Ne]!==n)return[!0];i=t.data}return s===!1?[!0]:[!1,i]}function yn(t,e={}){let{transportId:n,filter:r,remotePort:s}=e,i=t,d=s??t,l;return{send(p){d.postMessage(hn(p,{transportId:n}))},registerHandler(p){l=b=>{let x=b.data,[w,_]=gn(x,{transportId:n,filter:()=>r==null?void 0:r(b)});w||p(_)},i.addEventListener("message",l)},unregisterHandler(){l&&i.removeEventListener("message",l)}}}function bn(t,e){return yn(t,e)}function Se(t){return pn({transport:bn(t,{transportId:"marimo-transport"}),maxRequestTime:2e4,_debugHooks:{onSend:e=>{E.debug("[rpc] Parent -> Worker",e)},onReceive:e=>{E.debug("[rpc] Worker -> Parent",e)}}})}const qe=q("Initializing..."),wn=q(t=>{let e=t(ht),n=Object.values(e.cellRuntime);return n.some(r=>!Tt(r.output))?!0:n.every(r=>r.status==="idle")});var Pe=zt(),je="marimo:file",Me=new dt(null);const vn={saveFile(t){Me.set(je,t)},readFile(){return Me.get(je)}};var xn={saveFile(t){z.setCodeForHash((0,Pe.compressToEncodedURIComponent)(t))},readFile(){let t=z.getCodeFromHash()||z.getCodeFromSearchParam();return t?(0,Pe.decompressFromEncodedURIComponent)(t):null}};const En={saveFile(t){},readFile(){let t=document.querySelector("marimo-code");return t?decodeURIComponent(t.textContent||"").trim():null}};var _n={saveFile(t){},readFile(){if(window.location.hostname!=="marimo.app")return null;let t=new URL("files/wasm-intro.py",document.baseURI);return fetch(t.toString()).then(e=>e.ok?e.text():null).catch(()=>null)}},Cn={saveFile(t){},readFile(){return["import marimo","app = marimo.App()","","@app.cell","def __():"," return","",'if __name__ == "__main__":'," app.run()"].join(`
|
|
2
2
|
`)}},Ae=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}};const X=new Ae([En,xn]),ee=new Ae([vn,_n,Cn]);var Te=class st{constructor(){a(this,"initialized",new K);a(this,"sendRename",async({filename:e})=>(e===null||(z.setFilename(e),await this.rpc.proxy.request.bridge({functionName:"rename_file",payload:e})),null));a(this,"sendSave",async e=>{if(!this.saveRpc)return E.warn("Save RPC not initialized"),null;await this.saveRpc.saveNotebook(e);let n=await this.readCode();return n.contents&&(X.saveFile(n.contents),ee.saveFile(n.contents)),this.rpc.proxy.request.saveNotebook(e).catch(r=>{E.error(r)}),null});a(this,"sendCopy",async()=>{y()});a(this,"sendStdin",async e=>(await this.rpc.proxy.request.bridge({functionName:"put_input",payload:e.text}),null));a(this,"sendPdb",async()=>{y()});a(this,"sendRun",async e=>(await this.rpc.proxy.request.loadPackages(e.codes.join(`
|
|
3
3
|
`)),await this.putControlRequest({type:"execute-cells",...e}),null));a(this,"sendRunScratchpad",async e=>(await this.rpc.proxy.request.loadPackages(e.code),await this.putControlRequest({type:"execute-scratchpad",...e}),null));a(this,"sendInterrupt",async()=>(this.interruptBuffer!==void 0&&(this.interruptBuffer[0]=2),null));a(this,"sendShutdown",async()=>(window.close(),null));a(this,"sendFormat",async e=>await this.rpc.proxy.request.bridge({functionName:"format",payload:e}));a(this,"sendDeleteCell",async e=>(await this.putControlRequest({type:"delete-cell",...e}),null));a(this,"sendInstallMissingPackages",async e=>(this.putControlRequest({type:"install-packages",...e}),null));a(this,"sendCodeCompletionRequest",async e=>(Q.get(mt)||await this.rpc.proxy.request.bridge({functionName:"code_complete",payload:e}),null));a(this,"saveUserConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_user_config",payload:e}),Rt.post("/kernel/save_user_config",e,{baseUrl:"/"}).catch(n=>(E.error(n),null))));a(this,"saveAppConfig",async e=>(await this.rpc.proxy.request.bridge({functionName:"save_app_config",payload:e}),null));a(this,"saveCellConfig",async e=>(await this.putControlRequest({type:"update-cell-config",...e}),null));a(this,"sendRestart",async()=>{let e=await this.readCode();return e.contents&&(X.saveFile(e.contents),ee.saveFile(e.contents)),Ot(),null});a(this,"readCode",async()=>this.saveRpc?{contents:await this.saveRpc.readNotebook()}:(E.warn("Save RPC not initialized"),{contents:""}));a(this,"readSnippets",async()=>await this.rpc.proxy.request.bridge({functionName:"read_snippets",payload:void 0}));a(this,"openFile",async({path:e})=>{let n=Wt({code:null,baseUrl:window.location.origin});return window.open(n,"_blank"),null});a(this,"sendListFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"list_files",payload:e}));a(this,"sendSearchFiles",async e=>await this.rpc.proxy.request.bridge({functionName:"search_files",payload:e}));a(this,"sendComponentValues",async e=>(await this.putControlRequest({type:"update-ui-element",...e,token:we()}),null));a(this,"sendInstantiate",async e=>null);a(this,"sendFunctionRequest",async e=>(await this.putControlRequest({type:"invoke-function",...e}),null));a(this,"sendCreateFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"create_file_or_directory",payload:e}));a(this,"sendDeleteFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"delete_file_or_directory",payload:e}));a(this,"sendRenameFileOrFolder",async e=>await this.rpc.proxy.request.bridge({functionName:"move_file_or_directory",payload:e}));a(this,"sendUpdateFile",async e=>await this.rpc.proxy.request.bridge({functionName:"update_file",payload:e}));a(this,"sendFileDetails",async e=>await this.rpc.proxy.request.bridge({functionName:"file_details",payload:e}));a(this,"exportAsHTML",async e=>await this.rpc.proxy.request.bridge({functionName:"export_html",payload:e}));a(this,"exportAsMarkdown",async e=>await this.rpc.proxy.request.bridge({functionName:"export_markdown",payload:e}));a(this,"previewDatasetColumn",async e=>(await this.putControlRequest({type:"preview-dataset-column",...e}),null));a(this,"previewSQLTable",async e=>(await this.putControlRequest({type:"preview-sql-table",...e}),null));a(this,"previewSQLTableList",async e=>(await this.putControlRequest({type:"list-sql-tables",...e}),null));a(this,"previewDataSourceConnection",async e=>(await this.putControlRequest({type:"list-data-source-connection",...e}),null));a(this,"validateSQL",async e=>(await this.putControlRequest({type:"validate-sql",...e}),null));a(this,"sendModelValue",async e=>(await this.putControlRequest({type:"update-widget-model",...e}),null));a(this,"syncCellIds",()=>Promise.resolve(null));a(this,"addPackage",async e=>this.rpc.proxy.request.addPackage(e));a(this,"removePackage",async e=>this.rpc.proxy.request.removePackage(e));a(this,"getPackageList",async()=>await this.rpc.proxy.request.listPackages());a(this,"getDependencyTree",async()=>({tree:{dependencies:[],name:"",tags:[],version:null}}));a(this,"listSecretKeys",async e=>(await this.putControlRequest({type:"list-secret-keys",...e}),null));a(this,"getUsageStats",y);a(this,"openTutorial",y);a(this,"getRecentFiles",y);a(this,"getWorkspaceFiles",y);a(this,"getRunningNotebooks",y);a(this,"shutdownSession",y);a(this,"exportAsPDF",y);a(this,"autoExportAsHTML",y);a(this,"autoExportAsMarkdown",y);a(this,"autoExportAsIPYNB",y);a(this,"updateCellOutputs",y);a(this,"writeSecret",y);a(this,"invokeAiTool",y);a(this,"clearCache",y);a(this,"getCacheInfo",y);Ft()&&(this.rpc=Se(new Worker(new URL(""+new URL("worker-CUL1lW-N.js",import.meta.url).href,""+import.meta.url),{type:"module",name:he()})),this.rpc.addMessageListener("ready",()=>{this.startSession()}),this.rpc.addMessageListener("initialized",()=>{this.saveRpc=this.getSaveWorker(),this.setInterruptBuffer(),this.initialized.resolve()}),this.rpc.addMessageListener("initializingMessage",({message:e})=>{Q.set(qe,e)}),this.rpc.addMessageListener("initializedError",({error:e})=>{this.initialized.status==="resolved"&&(E.error(e),Ut({title:"Error initializing",description:e,variant:"danger"})),this.initialized.reject(Error(e))}),this.rpc.addMessageListener("kernelMessage",({message:e})=>{var n;(n=this.messageConsumer)==null||n.call(this,new MessageEvent("message",{data:e}))}))}static get INSTANCE(){let e="_marimo_private_PyodideBridge";return window[e]||(window[e]=new st),window[e]}getSaveWorker(){return xe()==="read"?(E.debug("Skipping SaveWorker in read-mode"),{readFile:y,readNotebook:y,saveNotebook:y}):Se(new Worker(new URL(""+new URL("save-worker-DtF6B3PS.js",import.meta.url).href,""+import.meta.url),{type:"module",name:he()})).proxy.request}async startSession(){let e=await X.readFile(),n=await ee.readFile(),r=z.getFilename(),s=Q.get(kt),i={},d=new URLSearchParams(window.location.search);for(let l of d.keys()){let p=d.getAll(l);i[l]=p.length===1?p[0]:p}await this.rpc.proxy.request.startSession({queryParameters:i,code:e||n||"",filename:r,userConfig:{...s,runtime:{...s.runtime,auto_instantiate:xe()==="read"?!0:s.runtime.auto_instantiate}}})}setInterruptBuffer(){crossOriginIsolated?(this.interruptBuffer=new Uint8Array(new SharedArrayBuffer(1)),this.rpc.proxy.request.setInterruptBuffer(this.interruptBuffer)):E.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})}};function kn(){return Re.withProducerCallback(t=>{Te.INSTANCE.attachMessageConsumer(t)})}const Ie=q({isInstantiated:!1,error:null});function Fn(){return lt(Ie,t=>t.isInstantiated)}function $(t){return()=>({TYPE:t,is(e){return e.type===t},create(e){return new CustomEvent(t,e)}})}const Le=$("marimo-value-input")(),Ue=$("marimo-value-update")(),ze=$("marimo-value-ready")(),Oe=$("marimo-incoming-message")();function Rn(t,e){return Le.create({bubbles:!0,composed:!0,detail:{value:t,element:e}})}var We=class at{static get INSTANCE(){let e="_marimo_private_UIElementRegistry";return window[e]||(window[e]=new at),window[e]}constructor(){this.entries=new Map}has(e){return this.entries.has(e)}set(e,n){if(this.entries.has(e))throw Error(`UIElement ${e} already registered`);this.entries.set(e,{objectId:e,value:n,elements:new Set})}registerInstance(e,n){let r=this.entries.get(e);r===void 0?this.entries.set(e,{objectId:e,value:pt(n,this),elements:new Set([n])}):r.elements.add(n)}removeInstance(e,n){let r=this.entries.get(e);r!=null&&r.elements.has(n)&&r.elements.delete(n)}removeElementsByCell(e){[...this.entries.keys()].filter(n=>n.startsWith(`${e}-`)).forEach(n=>{this.entries.delete(n)})}lookupValue(e){let n=this.entries.get(e);return n===void 0?void 0:n.value}broadcastMessage(e,n,r){let s=this.entries.get(e);s===void 0?E.warn("UIElementRegistry missing entry",e):s.elements.forEach(i=>{i.dispatchEvent(Oe.create({bubbles:!1,composed:!0,detail:{objectId:e,message:n,buffers:r}}))})}broadcastValueUpdate(e,n,r){let s=this.entries.get(n);s===void 0?E.warn("UIElementRegistry missing entry",n):(s.value=r,s.elements.forEach(i=>{i!==e&&i.dispatchEvent(Ue.create({bubbles:!1,composed:!0,detail:{value:r,element:i}}))}),document.dispatchEvent(ze.create({bubbles:!0,composed:!0,detail:{objectId:n}})))}};const Nn=We.INSTANCE,Sn=new Lt("function-call-result",async(t,e)=>{await ye().sendFunctionRequest({functionCallId:t,...e})}),qn="68px";var Pn="288px";const jn=t=>t?/^\d+$/.test(t)?`${t}px`:t:Pn,Mn=ft({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}});function te(t,e=[]){let n=[];if(t instanceof DataView)n.push(e);else if(Array.isArray(t))for(let[r,s]of t.entries())n.push(...te(s,[...e,r]));else if(typeof t=="object"&&t)for(let[r,s]of Object.entries(t))n.push(...te(s,[...e,r]));return n}function ne(t){let e=te(t);if(e.length===0)return{state:t,buffers:[],bufferPaths:[]};let n=structuredClone(t),r=[],s=[];for(let i of e){let d=vt(t,i);if(d instanceof DataView){let l=At(d);r.push(l),s.push(i),H(n,i,l)}}return{state:n,buffers:r,bufferPaths:s}}function An(t){return typeof t=="object"&&!!t&&"state"in t&&"bufferPaths"in t&&"buffers"in t}function Y(t){let{state:e,bufferPaths:n,buffers:r}=t;if(!n||n.length===0)return e;r&&Ct(r.length===n.length,"Buffers and buffer paths not the same length");let s=structuredClone(e);for(let[i,d]of n.entries()){let l=r==null?void 0:r[i];if(l==null){E.warn("[anywidget] Could not find buffer at path",d);continue}typeof l=="string"?H(s,d,It(l)):H(s,d,l)}return s}const De=new class{constructor(t=1e4){a(this,"models",new Map);this.timeout=t}get(t){let e=this.models.get(t);return e||(e=new K,this.models.set(t,e),setTimeout(()=>{e.status==="pending"&&(e.reject(Error(`Model not found for key: ${t}`)),this.models.delete(t))},this.timeout)),e.promise}set(t,e){let n=this.models.get(t);n||(n=new K,this.models.set(t,n)),n.resolve(e)}delete(t){this.models.delete(t)}};var He=(M=class{constructor(e,n,r,s){a(this,"ANY_CHANGE_EVENT","change");a(this,"listeners",{});a(this,"widget_manager",{async get_model(e){let n=await M._modelManager.get(e);if(!n)throw Error(`Model not found with id: ${e}. This is likely because the model was not registered.`);return n}});a(this,"emitAnyChange",Et(()=>{var e;(e=this.listeners[this.ANY_CHANGE_EVENT])==null||e.forEach(n=>n())},0));this.data=e,this.onChange=n,this.sendToWidget=r,this.dirtyFields=new Map([...s].map(i=>[i,this.data[i]]))}off(e,n){var r;if(!e){this.listeners={};return}if(!n){this.listeners[e]=new Set;return}(r=this.listeners[e])==null||r.delete(n)}send(e,n,r){let{state:s,bufferPaths:i,buffers:d}=ne(e);this.sendToWidget({content:{state:s,bufferPaths:i},buffers:d}).then(n)}get(e){return this.data[e]}set(e,n){this.data={...this.data,[e]:n},this.dirtyFields.set(e,n),this.emit(`change:${e}`,n),this.emitAnyChange()}save_changes(){if(this.dirtyFields.size===0)return;let e=Object.fromEntries(this.dirtyFields.entries());this.dirtyFields.clear(),this.onChange(e)}updateAndEmitDiffs(e){e!=null&&Object.keys(e).forEach(n=>{let r=n;this.data[r]!==e[r]&&this.set(r,e[r])})}receiveCustomMessage(e,n=[]){var s;let r=Be.safeParse(e);if(r.success){let i=r.data;switch(i.method){case"update":this.updateAndEmitDiffs(Y({state:i.state,bufferPaths:i.buffer_paths??[],buffers:n}));break;case"custom":(s=this.listeners["msg:custom"])==null||s.forEach(d=>d(i.content,n));break;case"open":this.updateAndEmitDiffs(Y({state:i.state,bufferPaths:i.buffer_paths??[],buffers:n}));break;case"echo_update":break;default:E.error("[anywidget] Unknown message method",i.method);break}}else E.error("Failed to parse message",r.error),E.error("Message",e)}on(e,n){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(n)}emit(e,n){this.listeners[e]&&this.listeners[e].forEach(r=>r(n))}},a(M,"_modelManager",De),M),re=me(me(gt([fe(),wt()]))),se=bt(fe(),de()),Be=yt("method",[O({method:W("open"),state:se,buffer_paths:re.optional()}),O({method:W("update"),state:se,buffer_paths:re.optional()}),O({method:W("custom"),content:de()}),O({method:W("echo_update"),buffer_paths:re,state:se}),O({method:W("close")})]);function Tn(t){return t==null?!1:Be.safeParse(t).success}async function In({modelId:t,msg:e,buffers:n,modelManager:r}){if(e.method==="echo_update")return;if(e.method==="custom"){(await r.get(t)).receiveCustomMessage(e,n);return}if(e.method==="close"){r.delete(t);return}let{method:s,state:i,buffer_paths:d=[]}=e,l=Y({state:i,bufferPaths:d,buffers:n});if(s==="open"){let p=new He(l,b=>{let{state:x,buffers:w,bufferPaths:_}=ne(b);ye().sendModelValue({modelId:t,message:{state:x,bufferPaths:_},buffers:w})},y,new Set);r.set(t,p);return}if(s==="update"){(await r.get(t)).updateAndEmitDiffs(l);return}xt(s)}const Ve=q(null),Ln=q(null),Xe=q(!1),Un=q(!1),$e=q(!1);var zn=pe();const Ye=t=>{let e=(0,zn.c)(8),{onResize:n,startingWidth:r,minWidth:s,maxWidth:i}=t,d=(0,u.useRef)(null),l=(0,u.useRef)(null),p=(0,u.useRef)(null),b,x;e[0]!==i||e[1]!==s||e[2]!==n?(b=()=>{let C=d.current,k=l.current,F=p.current;if(!C||!k&&!F)return;let v=Number.parseInt(window.getComputedStyle(C).width,10),N=0,P=!1,A=null,L=c=>{if(!C||!P||!A)return;let h=c.clientX-N;N=c.clientX,v=A==="left"?v-h:v+h,s&&(v=Math.max(s,v)),i&&(v=Math.min(i,v)),C.style.width=`${v}px`},U=()=>{P&&(n==null||n(v),P=!1,A=null),document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",U)},o=(c,h)=>{c.preventDefault(),P=!0,A=h,N=c.clientX,document.addEventListener("mousemove",L),document.addEventListener("mouseup",U)},f=c=>o(c,"left"),g=c=>o(c,"right");return k&&k.addEventListener("mousedown",f),F&&F.addEventListener("mousedown",g),()=>{k&&k.removeEventListener("mousedown",f),F&&F.removeEventListener("mousedown",g),document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",U)}},x=[s,i,n],e[0]=i,e[1]=s,e[2]=n,e[3]=b,e[4]=x):(b=e[3],x=e[4]),(0,u.useEffect)(b,x);let w;e[5]===Symbol.for("react.memo_cache_sentinel")?(w={left:l,right:p},e[5]=w):w=e[5];let _=r==="contentWidth"?"var(--content-width-medium)":`${r}px`,R;return e[6]===_?R=e[7]:(R={resizableDivRef:d,handleRefs:w,style:{width:_}},e[6]=_,e[7]=R),R};function Ge(t){t||window.dispatchEvent(new Event("resize"))}var Qe=pe(),m=ce(Nt(),1);const On=()=>{let t=(0,Qe.c)(16),[e,n]=D(Ve),[r,s]=D(Xe),[i,d]=D(Un),[l,p]=D($e),b;t[0]!==s||t[1]!==n?(b=()=>{n(null),s(!1)},t[0]=s,t[1]=n,t[2]=b):b=t[2];let x=b;if(J(B.CONTEXT_AWARE_PANEL).length===0||!e||!r)return null;let w;t[3]!==l||t[4]!==i||t[5]!==p||t[6]!==d?(w=()=>(0,m.jsxs)("div",{className:"flex flex-row items-center gap-3",children:[(0,m.jsx)(ve,{content:i?"Unpin panel":"Pin panel",children:(0,m.jsx)(Ee,{size:"xs",onPressedChange:()=>d(!i),pressed:i,"aria-label":i?"Unpin panel":"Pin panel",children:i?(0,m.jsx)(Xt,{className:"w-4 h-4"}):(0,m.jsx)(Pt,{className:"w-4 h-4"})})}),(0,m.jsx)(ve,{content:l?(0,m.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,m.jsx)("span",{children:"Follow focused table"}),(0,m.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel updates as cells that output tables are focused. Click to fix to the current cell."})]}):(0,m.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,m.jsx)("span",{children:"Focus on current table"}),(0,m.jsx)("span",{className:"text-xs text-muted-foreground w-64",children:"The panel is focused on the current table. Click to update based on which cell is focused."})]}),children:(0,m.jsx)(Ee,{size:"xs",onPressedChange:()=>p(!l),pressed:l,"aria-label":l?"Follow focused cell":"Fixed",children:(0,m.jsx)(Vt,{className:qt("w-4 h-4",l&&"text-primary")})})})]}),t[3]=l,t[4]=i,t[5]=p,t[6]=d,t[7]=w):w=t[7];let _=w,R;t[8]!==x||t[9]!==_?(R=()=>(0,m.jsxs)("div",{className:"mt-2 pb-7 mb-4 h-full overflow-auto",children:[(0,m.jsxs)("div",{className:"flex flex-row justify-between items-center mx-2",children:[_(),(0,m.jsx)(St,{variant:"linkDestructive",size:"icon",onClick:x,"aria-label":"Close selection panel",children:(0,m.jsx)(Mt,{className:"w-4 h-4"})})]}),(0,m.jsx)(ge,{children:(0,m.jsx)(Fe,{name:B.CONTEXT_AWARE_PANEL})})]}),t[8]=x,t[9]=_,t[10]=R):R=t[10];let C=R;if(!i){let v;return t[11]===C?v=t[12]:(v=(0,m.jsx)(Dn,{children:C()}),t[11]=C,t[12]=v),v}let k;t[13]===Symbol.for("react.memo_cache_sentinel")?(k=(0,m.jsx)(Dt,{onDragging:Ge,className:"resize-handle border-border z-20 no-print border-l"}),t[13]=k):k=t[13];let F;return t[14]===C?F=t[15]:(F=(0,m.jsxs)(m.Fragment,{children:[k,(0,m.jsx)(Ht,{defaultSize:20,minSize:15,maxSize:80,children:C()})]}),t[14]=C,t[15]=F),F},Wn=t=>{let e=(0,Qe.c)(2),{children:n}=t,r;return e[0]===n?r=e[1]:(r=(0,m.jsx)(ge,{children:(0,m.jsx)(Yt,{name:B.CONTEXT_AWARE_PANEL,children:n})}),e[0]=n,e[1]=r),r};var Dn=({children:t})=>{let{resizableDivRef:e,handleRefs:n,style:r}=Ye({startingWidth:400,minWidth:300,maxWidth:1500});return(0,m.jsxs)("div",{className:"absolute z-40 right-0 h-full bg-background flex flex-row",children:[(0,m.jsx)("div",{ref:n.left,className:"w-1 h-full cursor-col-resize border-l"}),(0,m.jsx)("div",{ref:e,style:r,children:t})]})};function Hn(){var t=[...arguments];return(0,u.useMemo)(()=>e=>{t.forEach(n=>n(e))},t)}var Ke=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0;function G(t){let e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function ae(t){return"nodeType"in t}function I(t){var e;return t?G(t)?t:ae(t)?((e=t.ownerDocument)==null?void 0:e.defaultView)??window:window:window}function Ze(t){let{Document:e}=I(t);return t instanceof e}function Je(t){return G(t)?!1:t instanceof I(t).HTMLElement}function et(t){return t instanceof I(t).SVGElement}function Bn(t){return t?G(t)?t.document:ae(t)?Ze(t)?t:Je(t)||et(t)?t.ownerDocument:document:document:document}var ie=Ke?u.useLayoutEffect:u.useEffect;function tt(t){let e=(0,u.useRef)(t);return ie(()=>{e.current=t}),(0,u.useCallback)(function(){var n=[...arguments];return e.current==null?void 0:e.current(...n)},[])}function Vn(){let t=(0,u.useRef)(null);return[(0,u.useCallback)((e,n)=>{t.current=setInterval(e,n)},[]),(0,u.useCallback)(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[])]}function Xn(t,e){e===void 0&&(e=[t]);let n=(0,u.useRef)(t);return ie(()=>{n.current!==t&&(n.current=t)},e),n}function $n(t,e){let n=(0,u.useRef)();return(0,u.useMemo)(()=>{let r=t(n.current);return n.current=r,r},[...e])}function Yn(t){let e=tt(t),n=(0,u.useRef)(null);return[n,(0,u.useCallback)(r=>{r!==n.current&&(e==null||e(r,n.current)),n.current=r},[])]}function Gn(t){let e=(0,u.useRef)();return(0,u.useEffect)(()=>{e.current=t},[t]),e.current}var oe={};function Qn(t,e){return(0,u.useMemo)(()=>{if(e)return e;let n=oe[t]==null?0:oe[t]+1;return oe[t]=n,t+"-"+n},[t,e])}function nt(t){return function(e){return[...arguments].slice(1).reduce((n,r)=>{let s=Object.entries(r);for(let[i,d]of s){let l=n[i];l!=null&&(n[i]=l+t*d)}return n},{...e})}}var Kn=nt(1),Zn=nt(-1);function Jn(t){return"clientX"in t&&"clientY"in t}function er(t){if(!t)return!1;let{KeyboardEvent:e}=I(t.target);return e&&t instanceof e}function tr(t){if(!t)return!1;let{TouchEvent:e}=I(t.target);return e&&t instanceof e}function nr(t){if(tr(t)){if(t.touches&&t.touches.length){let{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){let{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return Jn(t)?{x:t.clientX,y:t.clientY}:null}var le=Object.freeze({Translate:{toString(t){if(!t)return;let{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;let{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[le.Translate.toString(t),le.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),rt="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function rr(t){return t.matches(rt)?t:t.querySelector(rt)}export{kn as $,Ln as A,jn as B,Qn as C,Ye as D,Ge as E,Tn as F,Oe as G,Sn as H,Y as I,Ue as J,Le as K,An as L,De as M,He as N,Xe as O,In as P,Te as Q,ne as R,Gn as S,Wn as T,We as U,Mn as V,Nn as W,Ie as X,Rn as Y,Fn as Z,Vn as _,nr as a,un as at,$n as b,Ze as c,ln as ct,ae as d,J as dt,X as et,et as f,H as ft,tt as g,Hn as h,rr as i,B as it,$e as j,Ve as k,Je as l,nn as lt,Zn as m,Kn as n,qe as nt,Bn as o,rn as ot,G as p,ze as q,Ke as r,Re as rt,I as s,on as st,le as t,wn as tt,er as u,Fe as ut,ie as v,On as w,Yn as x,Xn as y,qn as z};
|
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-Clc-qLX8.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-DItdS47A.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/clsx-D8GwTfvk.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/cn-BKtXLv3a.js">
|
|
@@ -181,12 +181,12 @@
|
|
|
181
181
|
<link rel="modulepreload" crossorigin href="./assets/state-CS48Wh7M.js">
|
|
182
182
|
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-eoDwRuKU.js">
|
|
183
183
|
<link rel="modulepreload" crossorigin href="./assets/copy-icon-wZr2McVB.js">
|
|
184
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
184
|
+
<link rel="modulepreload" crossorigin href="./assets/html-to-image-CJgqxZci.js">
|
|
185
185
|
<link rel="modulepreload" crossorigin href="./assets/focus-BeWVOW9Q.js">
|
|
186
186
|
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-ygeIsKeo.js">
|
|
187
187
|
<link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-CVUXBqX6.js">
|
|
188
188
|
<link rel="modulepreload" crossorigin href="./assets/katex-Dc8yG8NU.js">
|
|
189
|
-
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-
|
|
189
|
+
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-CoQm4UxN.js">
|
|
190
190
|
<link rel="modulepreload" crossorigin href="./assets/command-BjWSp3sa.js">
|
|
191
191
|
<link rel="modulepreload" crossorigin href="./assets/useRunCells-jbEa8WGV.js">
|
|
192
192
|
<link rel="modulepreload" crossorigin href="./assets/purify.es-DNVQZNFu.js">
|
|
@@ -196,40 +196,40 @@
|
|
|
196
196
|
<link rel="modulepreload" crossorigin href="./assets/en-US-pRRbZZHE.js">
|
|
197
197
|
<link rel="modulepreload" crossorigin href="./assets/isValid-DcYggVWP.js">
|
|
198
198
|
<link rel="modulepreload" crossorigin href="./assets/dates-CxJmszXT.js">
|
|
199
|
-
<link rel="modulepreload" crossorigin href="./assets/download-
|
|
199
|
+
<link rel="modulepreload" crossorigin href="./assets/download-CBUrhm0-.js">
|
|
200
200
|
<link rel="modulepreload" crossorigin href="./assets/maps-vcWR7nnr.js">
|
|
201
201
|
<link rel="modulepreload" crossorigin href="./assets/extends-B2LJnKU3.js">
|
|
202
202
|
<link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-DD4AwVTU.js">
|
|
203
203
|
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-CS4kbWl2.js">
|
|
204
204
|
<link rel="modulepreload" crossorigin href="./assets/range-D2UKkEg-.js">
|
|
205
205
|
<link rel="modulepreload" crossorigin href="./assets/table-DZR6ewbN.js">
|
|
206
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
206
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-BVI_kCSN.js">
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/file-Cs1JbsV6.js">
|
|
208
208
|
<link rel="modulepreload" crossorigin href="./assets/play-BPIh-ZEU.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="./assets/chat-components-BV83l1rZ.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="./assets/isEmpty-CgX_-6Mt.js">
|
|
211
|
-
<link rel="modulepreload" crossorigin href="./assets/chat-display-
|
|
211
|
+
<link rel="modulepreload" crossorigin href="./assets/chat-display-C4qhRyWq.js">
|
|
212
212
|
<link rel="modulepreload" crossorigin href="./assets/useDeleteCell-BRWEDSc9.js">
|
|
213
213
|
<link rel="modulepreload" crossorigin href="./assets/icons-BhEXrzsb.js">
|
|
214
214
|
<link rel="modulepreload" crossorigin href="./assets/process-output-CwcoTocd.js">
|
|
215
215
|
<link rel="modulepreload" crossorigin href="./assets/blob-CuXvdYPX.js">
|
|
216
216
|
<link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-DaPAPabU.js">
|
|
217
217
|
<link rel="modulepreload" crossorigin href="./assets/esm-DpMp6qko.js">
|
|
218
|
-
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-
|
|
218
|
+
<link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-COxBrLrH.js">
|
|
219
219
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-W42b2ZIs.js">
|
|
220
220
|
<link rel="modulepreload" crossorigin href="./assets/square-function-CqXXKtIq.js">
|
|
221
221
|
<link rel="modulepreload" crossorigin href="./assets/spec-DJ3YTCel.js">
|
|
222
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
222
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-tRvaNrl-.js">
|
|
223
223
|
<link rel="modulepreload" crossorigin href="./assets/toggle-jWKnIArU.js">
|
|
224
224
|
<link rel="modulepreload" crossorigin href="./assets/globals-uEPg-4pq.js">
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/share-CKfNi8fD.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-5Rdwpmr3.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Ctj_10o2.js">
|
|
228
|
-
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-
|
|
228
|
+
<link rel="modulepreload" crossorigin href="./assets/utilities.esm-DOpL-6DC.js">
|
|
229
229
|
<link rel="modulepreload" crossorigin href="./assets/floating-outline-CxfziveS.js">
|
|
230
|
-
<link rel="modulepreload" crossorigin href="./assets/useAddCell-
|
|
230
|
+
<link rel="modulepreload" crossorigin href="./assets/useAddCell-CklpKCq2.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/eye-off-BhExYOph.js">
|
|
232
|
-
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-
|
|
232
|
+
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-BlVsu50E.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="./assets/file-video-camera-DW3v07j2.js">
|
|
234
234
|
<link rel="modulepreload" crossorigin href="./assets/types-DWpF5HiT.js">
|
|
235
235
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-DLEiQDS3.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marimo-team/frontend",
|
|
3
|
-
"version": "0.19.7-
|
|
3
|
+
"version": "0.19.7-dev20",
|
|
4
4
|
"main": "dist/main.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"eslint-plugin-header": "^3.1.1",
|
|
129
129
|
"htm": "^3.1.1",
|
|
130
130
|
"html-react-parser": "^5.2.11",
|
|
131
|
-
"html-to-image": "
|
|
131
|
+
"html-to-image": "1.11.13",
|
|
132
132
|
"humanize-duration": "^3.33.2",
|
|
133
133
|
"iconify-icon": "^2.3.0",
|
|
134
134
|
"jotai": "^2.16.1",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import type { Completion } from "@codemirror/autocomplete";
|
|
4
4
|
import type { FileUIPart } from "ai";
|
|
5
|
-
import { toPng } from "html-to-image";
|
|
6
5
|
import { processOutput } from "@/components/editor/output/console/process-output";
|
|
7
6
|
import { type NotebookState, notebookAtom } from "@/core/cells/cells";
|
|
8
7
|
import { type CellId, CellOutputId } from "@/core/cells/ids";
|
|
@@ -10,6 +9,7 @@ import { displayCellName } from "@/core/cells/names";
|
|
|
10
9
|
import { isOutputEmpty } from "@/core/cells/outputs";
|
|
11
10
|
import type { OutputMessage } from "@/core/kernel/messages";
|
|
12
11
|
import type { JotaiStore } from "@/core/state/jotai";
|
|
12
|
+
import { toPng } from "@/utils/html-to-image";
|
|
13
13
|
import { Logger } from "@/utils/Logger";
|
|
14
14
|
import { type AIContextItem, AIContextProvider } from "../registry";
|
|
15
15
|
import { contextToXml } from "../utils";
|
|
@@ -137,7 +137,13 @@ describe("useEnrichCellOutputs", () => {
|
|
|
137
137
|
expect(document.getElementById).toHaveBeenCalledWith(
|
|
138
138
|
CellOutputId.create(cellId),
|
|
139
139
|
);
|
|
140
|
-
expect(toPng).toHaveBeenCalledWith(
|
|
140
|
+
expect(toPng).toHaveBeenCalledWith(
|
|
141
|
+
mockElement,
|
|
142
|
+
expect.objectContaining({
|
|
143
|
+
filter: expect.any(Function),
|
|
144
|
+
onImageErrorHandler: expect.any(Function),
|
|
145
|
+
}),
|
|
146
|
+
);
|
|
141
147
|
expect(output).toEqual({
|
|
142
148
|
[cellId]: ["image/png", mockDataUrl],
|
|
143
149
|
});
|
|
@@ -155,7 +155,13 @@ describe("getImageDataUrlForCell", () => {
|
|
|
155
155
|
const result = await getImageDataUrlForCell("cell-1" as CellId);
|
|
156
156
|
|
|
157
157
|
expect(result).toBe(mockDataUrl);
|
|
158
|
-
expect(toPng).toHaveBeenCalledWith(
|
|
158
|
+
expect(toPng).toHaveBeenCalledWith(
|
|
159
|
+
mockElement,
|
|
160
|
+
expect.objectContaining({
|
|
161
|
+
filter: expect.any(Function),
|
|
162
|
+
onImageErrorHandler: expect.any(Function),
|
|
163
|
+
}),
|
|
164
|
+
);
|
|
159
165
|
});
|
|
160
166
|
|
|
161
167
|
it("should add printing classes before capture when enablePrintMode is true", async () => {
|
|
@@ -352,7 +358,13 @@ describe("downloadHTMLAsImage", () => {
|
|
|
352
358
|
|
|
353
359
|
await downloadHTMLAsImage({ element: mockElement, filename: "test" });
|
|
354
360
|
|
|
355
|
-
expect(toPng).toHaveBeenCalledWith(
|
|
361
|
+
expect(toPng).toHaveBeenCalledWith(
|
|
362
|
+
mockElement,
|
|
363
|
+
expect.objectContaining({
|
|
364
|
+
filter: expect.any(Function),
|
|
365
|
+
onImageErrorHandler: expect.any(Function),
|
|
366
|
+
}),
|
|
367
|
+
);
|
|
356
368
|
expect(mockAnchor.href).toBe(mockDataUrl);
|
|
357
369
|
expect(mockAnchor.download).toBe("test.png");
|
|
358
370
|
expect(mockAnchor.click).toHaveBeenCalled();
|
|
@@ -488,7 +500,13 @@ describe("downloadCellOutputAsImage", () => {
|
|
|
488
500
|
|
|
489
501
|
await downloadCellOutputAsImage("cell-1" as CellId, "result");
|
|
490
502
|
|
|
491
|
-
expect(toPng).toHaveBeenCalledWith(
|
|
503
|
+
expect(toPng).toHaveBeenCalledWith(
|
|
504
|
+
mockElement,
|
|
505
|
+
expect.objectContaining({
|
|
506
|
+
filter: expect.any(Function),
|
|
507
|
+
onImageErrorHandler: expect.any(Function),
|
|
508
|
+
}),
|
|
509
|
+
);
|
|
492
510
|
expect(mockAnchor.download).toBe("result.png");
|
|
493
511
|
});
|
|
494
512
|
|
package/src/utils/download.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { toast } from "@/components/ui/use-toast";
|
|
4
4
|
import { type CellId, CellOutputId } from "@/core/cells/ids";
|
|
5
5
|
import { getRequestClient } from "@/core/network/requests";
|
|
6
6
|
import { Filenames } from "@/utils/filenames";
|
|
7
7
|
import { Paths } from "@/utils/paths";
|
|
8
8
|
import { prettyError } from "./errors";
|
|
9
|
+
import { toPng } from "./html-to-image";
|
|
9
10
|
import { Logger } from "./Logger";
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { toPng as htmlToImageToPng } from "html-to-image";
|
|
3
|
+
import { Logger } from "./Logger";
|
|
4
|
+
|
|
5
|
+
export type HtmlToImageOptions = Parameters<typeof htmlToImageToPng>[1];
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Default options for html-to-image conversions.
|
|
9
|
+
* These handle common edge cases like filtering out toolbars and logging errors.
|
|
10
|
+
*/
|
|
11
|
+
export const defaultHtmlToImageOptions: HtmlToImageOptions = {
|
|
12
|
+
filter: (node) => {
|
|
13
|
+
try {
|
|
14
|
+
if ("classList" in node) {
|
|
15
|
+
// Filter out matplotlib toolbars
|
|
16
|
+
return !node.classList.contains("mpl-toolbar");
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
} catch (error) {
|
|
20
|
+
Logger.error("Error filtering node:", error);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
onImageErrorHandler: (event) => {
|
|
25
|
+
Logger.error("Error loading image:", event);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Convert an HTML element to a PNG data URL.
|
|
31
|
+
* This is a wrapper around html-to-image's toPng with default options applied.
|
|
32
|
+
*/
|
|
33
|
+
export function toPng(
|
|
34
|
+
element: HTMLElement,
|
|
35
|
+
options?: HtmlToImageOptions,
|
|
36
|
+
): Promise<string> {
|
|
37
|
+
return htmlToImageToPng(element, {
|
|
38
|
+
...defaultHtmlToImageOptions,
|
|
39
|
+
...options,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{s as et}from"./chunk-LvLJmgfZ.js";import{d as It,f as zt,l as kt,n as V,u as Ve}from"./useEvent-DO6uJBas.js";import{t as Dt}from"./react-BGmjiNul.js";import{mn as Mt,qn as Ft,w as Ht}from"./cells-Cvo5AIrZ.js";import"./react-dom-C9fstfnp.js";import{t as tt}from"./compiler-runtime-DeeZ7FnK.js";import{T as Ot,o as Wt,r as rt,t as Yt,w as Ut}from"./ai-model-dropdown-GvB-5iLY.js";import{d as Ie}from"./hotkeys-DghjL7BQ.js";import{n as lt,r as Xt}from"./utils-CSDCHxwI.js";import{o as Bt}from"./config-BgpK7vqH.js";import{r as ae}from"./useEventListener-DIUKKfEy.js";import{t as Vt}from"./jsx-runtime-ZmTK25f3.js";import{t as B}from"./button-B3uq-Cpf.js";import{t as se}from"./cn-BKtXLv3a.js";import"./dist-DBwNzi3C.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{r as qt}from"./requests-BsVD4CdD.js";import{E as $t,O as Gt,c as Jt,d as Kt,f as Qt,g as Zt,k as er,l as ot,n as nt,p as tr,s as at,u as rr,v as lr,w as or,x as nr}from"./add-cell-with-ai-CNdKSxaa.js";import{i as st,n as ar,r as sr,t as ir}from"./chat-components-BV83l1rZ.js";import{a as cr,i as dr,n as ur,p as mr,r as pr,s as hr,t as fr}from"./select-UFziUNxL.js";import"./markdown-renderer-BNamR17B.js";import{n as xr}from"./spinner-DaIKav-i.js";import{t as vr}from"./plus-BD5o34_i.js";import{lt as gr,r as it}from"./input-BeGfEf2S.js";import{t as wr}from"./settings-DOXWMfVd.js";import{r as ct,t as br}from"./state-CS48Wh7M.js";import{t as yr}from"./square-C8Tw_XXG.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import{t as jr}from"./use-toast-rmUWldD_.js";import{C as Sr,E as Cr,_ as he,g as q,w as $,x as ze}from"./Combination-CMPwuAmi.js";import{i as dt,t as ie}from"./tooltip-CEc2ajau.js";import{u as Nr}from"./menu-items-CJhvWPOk.js";import{i as _r}from"./dates-CxJmszXT.js";import{t as Rr}from"./context-JwD-oSsl.js";import{i as Ar,r as Tr,t as Er}from"./popover-D16ZremR.js";import{t as Lr}from"./copy-icon-wZr2McVB.js";import{n as Pr}from"./error-banner-BWJsOpnc.js";import"./chunk-5FQGJX7Z-CVUXBqX6.js";import"./katex-Dc8yG8NU.js";import"./es-t8uugS1p.js";import{t as Ir}from"./chat-display-h-b47mmp.js";import"./esm-DpMp6qko.js";import{t as qe}from"./empty-state-h8C2C6hZ.js";var ut=tt(),m=et(Dt(),1);const zr=({chatState:e,chatId:t,messages:r})=>{if(!t)return Ie.warn("No active chat"),e;let a=e.chats.get(t);if(!a)return Ie.warn("No active chat"),e;let o=new Map(e.chats),n=Date.now();return o.set(a.id,{...a,messages:r,updatedAt:n}),{...e,chats:o}};var l=et(Vt(),1);function kr(e,t){return m.useReducer((r,a)=>t[r][a]??r,e)}var $e="ScrollArea",[mt,ho]=Cr($e),[Dr,F]=mt($e),pt=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:a="hover",dir:o,scrollHideDelay:n=600,...s}=e,[c,i]=m.useState(null),[d,u]=m.useState(null),[p,h]=m.useState(null),[f,g]=m.useState(null),[y,L]=m.useState(null),[b,C]=m.useState(0),[j,S]=m.useState(0),[_,N]=m.useState(!1),[P,I]=m.useState(!1),w=ae(t,k=>i(k)),T=Nr(o);return(0,l.jsx)(Dr,{scope:r,type:a,dir:T,scrollHideDelay:n,scrollArea:c,viewport:d,onViewportChange:u,content:p,onContentChange:h,scrollbarX:f,onScrollbarXChange:g,scrollbarXEnabled:_,onScrollbarXEnabledChange:N,scrollbarY:y,onScrollbarYChange:L,scrollbarYEnabled:P,onScrollbarYEnabledChange:I,onCornerWidthChange:C,onCornerHeightChange:S,children:(0,l.jsx)(he.div,{dir:T,...s,ref:w,style:{position:"relative","--radix-scroll-area-corner-width":b+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})})});pt.displayName=$e;var ht="ScrollAreaViewport",ft=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,children:a,nonce:o,...n}=e,s=F(ht,r),c=ae(t,m.useRef(null),s.onViewportChange);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,l.jsx)(he.div,{"data-radix-scroll-area-viewport":"",...n,ref:c,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,l.jsx)("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:a})})]})});ft.displayName=ht;var Y="ScrollAreaScrollbar",Ge=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),{onScrollbarXEnabledChange:n,onScrollbarYEnabledChange:s}=o,c=e.orientation==="horizontal";return m.useEffect(()=>(c?n(!0):s(!0),()=>{c?n(!1):s(!1)}),[c,n,s]),o.type==="hover"?(0,l.jsx)(Mr,{...a,ref:t,forceMount:r}):o.type==="scroll"?(0,l.jsx)(Fr,{...a,ref:t,forceMount:r}):o.type==="auto"?(0,l.jsx)(xt,{...a,ref:t,forceMount:r}):o.type==="always"?(0,l.jsx)(Je,{...a,ref:t}):null});Ge.displayName=Y;var Mr=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),[n,s]=m.useState(!1);return m.useEffect(()=>{let c=o.scrollArea,i=0;if(c){let d=()=>{window.clearTimeout(i),s(!0)},u=()=>{i=window.setTimeout(()=>s(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",d),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(i),c.removeEventListener("pointerenter",d),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),(0,l.jsx)(ze,{present:r||n,children:(0,l.jsx)(xt,{"data-state":n?"visible":"hidden",...a,ref:t})})}),Fr=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=F(Y,e.__scopeScrollArea),n=e.orientation==="horizontal",s=Fe(()=>i("SCROLL_END"),100),[c,i]=kr("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return m.useEffect(()=>{if(c==="idle"){let d=window.setTimeout(()=>i("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(d)}},[c,o.scrollHideDelay,i]),m.useEffect(()=>{let d=o.viewport,u=n?"scrollLeft":"scrollTop";if(d){let p=d[u],h=()=>{let f=d[u];p!==f&&(i("SCROLL"),s()),p=f};return d.addEventListener("scroll",h),()=>d.removeEventListener("scroll",h)}},[o.viewport,n,i,s]),(0,l.jsx)(ze,{present:r||c!=="hidden",children:(0,l.jsx)(Je,{"data-state":c==="hidden"?"hidden":"visible",...a,ref:t,onPointerEnter:$(e.onPointerEnter,()=>i("POINTER_ENTER")),onPointerLeave:$(e.onPointerLeave,()=>i("POINTER_LEAVE"))})})}),xt=m.forwardRef((e,t)=>{let r=F(Y,e.__scopeScrollArea),{forceMount:a,...o}=e,[n,s]=m.useState(!1),c=e.orientation==="horizontal",i=Fe(()=>{if(r.viewport){let d=r.viewport.offsetWidth<r.viewport.scrollWidth,u=r.viewport.offsetHeight<r.viewport.scrollHeight;s(c?d:u)}},10);return ce(r.viewport,i),ce(r.content,i),(0,l.jsx)(ze,{present:a||n,children:(0,l.jsx)(Je,{"data-state":n?"visible":"hidden",...o,ref:t})})}),Je=m.forwardRef((e,t)=>{let{orientation:r="vertical",...a}=e,o=F(Y,e.__scopeScrollArea),n=m.useRef(null),s=m.useRef(0),[c,i]=m.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=yt(c.viewport,c.content),u={...a,sizes:c,onSizesChange:i,hasThumb:d>0&&d<1,onThumbChange:h=>n.current=h,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:h=>s.current=h};function p(h,f){return Xr(h,s.current,c,f)}return r==="horizontal"?(0,l.jsx)(Hr,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&n.current){let h=o.viewport.scrollLeft,f=jt(h,c,o.dir);n.current.style.transform=`translate3d(${f}px, 0, 0)`}},onWheelScroll:h=>{o.viewport&&(o.viewport.scrollLeft=h)},onDragScroll:h=>{o.viewport&&(o.viewport.scrollLeft=p(h,o.dir))}}):r==="vertical"?(0,l.jsx)(Or,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&n.current){let h=o.viewport.scrollTop,f=jt(h,c);n.current.style.transform=`translate3d(0, ${f}px, 0)`}},onWheelScroll:h=>{o.viewport&&(o.viewport.scrollTop=h)},onDragScroll:h=>{o.viewport&&(o.viewport.scrollTop=p(h))}}):null}),Hr=m.forwardRef((e,t)=>{let{sizes:r,onSizesChange:a,...o}=e,n=F(Y,e.__scopeScrollArea),[s,c]=m.useState(),i=m.useRef(null),d=ae(t,i,n.onScrollbarXChange);return m.useEffect(()=>{i.current&&c(getComputedStyle(i.current))},[i]),(0,l.jsx)(gt,{"data-orientation":"horizontal",...o,ref:d,sizes:r,style:{bottom:0,left:n.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:n.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Me(r)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(n.viewport){let h=n.viewport.scrollLeft+u.deltaX;e.onWheelScroll(h),Ct(h,p)&&u.preventDefault()}},onResize:()=>{i.current&&n.viewport&&s&&a({content:n.viewport.scrollWidth,viewport:n.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:De(s.paddingLeft),paddingEnd:De(s.paddingRight)}})}})}),Or=m.forwardRef((e,t)=>{let{sizes:r,onSizesChange:a,...o}=e,n=F(Y,e.__scopeScrollArea),[s,c]=m.useState(),i=m.useRef(null),d=ae(t,i,n.onScrollbarYChange);return m.useEffect(()=>{i.current&&c(getComputedStyle(i.current))},[i]),(0,l.jsx)(gt,{"data-orientation":"vertical",...o,ref:d,sizes:r,style:{top:0,right:n.dir==="ltr"?0:void 0,left:n.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Me(r)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(n.viewport){let h=n.viewport.scrollTop+u.deltaY;e.onWheelScroll(h),Ct(h,p)&&u.preventDefault()}},onResize:()=>{i.current&&n.viewport&&s&&a({content:n.viewport.scrollHeight,viewport:n.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:De(s.paddingTop),paddingEnd:De(s.paddingBottom)}})}})}),[Wr,vt]=mt(Y),gt=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,sizes:a,hasThumb:o,onThumbChange:n,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:i,onDragScroll:d,onWheelScroll:u,onResize:p,...h}=e,f=F(Y,r),[g,y]=m.useState(null),L=ae(t,w=>y(w)),b=m.useRef(null),C=m.useRef(""),j=f.viewport,S=a.content-a.viewport,_=q(u),N=q(i),P=Fe(p,10);function I(w){b.current&&d({x:w.clientX-b.current.left,y:w.clientY-b.current.top})}return m.useEffect(()=>{let w=T=>{let k=T.target;g!=null&&g.contains(k)&&_(T,S)};return document.addEventListener("wheel",w,{passive:!1}),()=>document.removeEventListener("wheel",w,{passive:!1})},[j,g,S,_]),m.useEffect(N,[a,N]),ce(g,P),ce(f.content,P),(0,l.jsx)(Wr,{scope:r,scrollbar:g,hasThumb:o,onThumbChange:q(n),onThumbPointerUp:q(s),onThumbPositionChange:N,onThumbPointerDown:q(c),children:(0,l.jsx)(he.div,{...h,ref:L,style:{position:"absolute",...h.style},onPointerDown:$(e.onPointerDown,w=>{w.button===0&&(w.target.setPointerCapture(w.pointerId),b.current=g.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",f.viewport&&(f.viewport.style.scrollBehavior="auto"),I(w))}),onPointerMove:$(e.onPointerMove,I),onPointerUp:$(e.onPointerUp,w=>{let T=w.target;T.hasPointerCapture(w.pointerId)&&T.releasePointerCapture(w.pointerId),document.body.style.webkitUserSelect=C.current,f.viewport&&(f.viewport.style.scrollBehavior=""),b.current=null})})})}),ke="ScrollAreaThumb",wt=m.forwardRef((e,t)=>{let{forceMount:r,...a}=e,o=vt(ke,e.__scopeScrollArea);return(0,l.jsx)(ze,{present:r||o.hasThumb,children:(0,l.jsx)(Yr,{ref:t,...a})})}),Yr=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,style:a,...o}=e,n=F(ke,r),s=vt(ke,r),{onThumbPositionChange:c}=s,i=ae(t,p=>s.onThumbChange(p)),d=m.useRef(void 0),u=Fe(()=>{d.current&&(d.current=(d.current(),void 0))},100);return m.useEffect(()=>{let p=n.viewport;if(p){let h=()=>{u(),d.current||(d.current=Br(p,c),c())};return c(),p.addEventListener("scroll",h),()=>p.removeEventListener("scroll",h)}},[n.viewport,u,c]),(0,l.jsx)(he.div,{"data-state":s.hasThumb?"visible":"hidden",...o,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...a},onPointerDownCapture:$(e.onPointerDownCapture,p=>{let h=p.target.getBoundingClientRect(),f=p.clientX-h.left,g=p.clientY-h.top;s.onThumbPointerDown({x:f,y:g})}),onPointerUp:$(e.onPointerUp,s.onThumbPointerUp)})});wt.displayName=ke;var Ke="ScrollAreaCorner",bt=m.forwardRef((e,t)=>{let r=F(Ke,e.__scopeScrollArea),a=!!(r.scrollbarX&&r.scrollbarY);return r.type!=="scroll"&&a?(0,l.jsx)(Ur,{...e,ref:t}):null});bt.displayName=Ke;var Ur=m.forwardRef((e,t)=>{let{__scopeScrollArea:r,...a}=e,o=F(Ke,r),[n,s]=m.useState(0),[c,i]=m.useState(0),d=!!(n&&c);return ce(o.scrollbarX,()=>{var p;let u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),i(u)}),ce(o.scrollbarY,()=>{var p;let u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),s(u)}),d?(0,l.jsx)(he.div,{...a,ref:t,style:{width:n,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function De(e){return e?parseInt(e,10):0}function yt(e,t){let r=e/t;return isNaN(r)?0:r}function Me(e){let t=yt(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,a=(e.scrollbar.size-r)*t;return Math.max(a,18)}function Xr(e,t,r,a="ltr"){let o=Me(r),n=o/2,s=t||n,c=o-s,i=r.scrollbar.paddingStart+s,d=r.scrollbar.size-r.scrollbar.paddingEnd-c,u=r.content-r.viewport,p=a==="ltr"?[0,u]:[u*-1,0];return St([i,d],p)(e)}function jt(e,t,r="ltr"){let a=Me(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,s=t.content-t.viewport,c=n-a,i=mr(e,r==="ltr"?[0,s]:[s*-1,0]);return St([0,s],[0,c])(i)}function St(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let a=(t[1]-t[0])/(e[1]-e[0]);return t[0]+a*(r-e[0])}}function Ct(e,t){return e>0&&e<t}var Br=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},a=0;return(function o(){let n={left:e.scrollLeft,top:e.scrollTop},s=r.left!==n.left,c=r.top!==n.top;(s||c)&&t(),r=n,a=window.requestAnimationFrame(o)})(),()=>window.cancelAnimationFrame(a)};function Fe(e,t){let r=q(e),a=m.useRef(0);return m.useEffect(()=>()=>window.clearTimeout(a.current),[]),m.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(r,t)},[r,t])}function ce(e,t){let r=q(t);Sr(()=>{let a=0;if(e){let o=new ResizeObserver(()=>{cancelAnimationFrame(a),a=window.requestAnimationFrame(r)});return o.observe(e),()=>{window.cancelAnimationFrame(a),o.unobserve(e)}}},[e,r])}var Nt=pt,Vr=ft,qr=bt,_t=m.forwardRef((e,t)=>{let r=(0,ut.c)(15),a,o,n;r[0]===e?(a=r[1],o=r[2],n=r[3]):({className:o,children:a,...n}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=n);let s;r[4]===o?s=r[5]:(s=se("relative overflow-hidden",o),r[4]=o,r[5]=s);let c;r[6]===a?c=r[7]:(c=(0,l.jsx)(Vr,{className:"h-full w-full rounded-[inherit]",children:a}),r[6]=a,r[7]=c);let i,d;r[8]===Symbol.for("react.memo_cache_sentinel")?(i=(0,l.jsx)(Rt,{}),d=(0,l.jsx)(qr,{}),r[8]=i,r[9]=d):(i=r[8],d=r[9]);let u;return r[10]!==n||r[11]!==t||r[12]!==s||r[13]!==c?(u=(0,l.jsxs)(Nt,{ref:t,className:s,...n,children:[c,i,d]}),r[10]=n,r[11]=t,r[12]=s,r[13]=c,r[14]=u):u=r[14],u});_t.displayName=Nt.displayName;var Rt=m.forwardRef((e,t)=>{let r=(0,ut.c)(14),a,o,n;r[0]===e?(a=r[1],o=r[2],n=r[3]):({className:a,orientation:n,...o}=e,r[0]=e,r[1]=a,r[2]=o,r[3]=n);let s=n===void 0?"vertical":n,c=s==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-px",i=s==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-px",d;r[4]!==a||r[5]!==c||r[6]!==i?(d=se("flex touch-none select-none transition-colors",c,i,a),r[4]=a,r[5]=c,r[6]=i,r[7]=d):d=r[7];let u;r[8]===Symbol.for("react.memo_cache_sentinel")?(u=(0,l.jsx)(wt,{className:"relative flex-1 rounded-full bg-border"}),r[8]=u):u=r[8];let p;return r[9]!==s||r[10]!==o||r[11]!==t||r[12]!==d?(p=(0,l.jsx)(Ge,{ref:t,orientation:s,className:d,...o,children:u}),r[9]=s,r[10]=o,r[11]=t,r[12]=d,r[13]=p):p=r[13],p});Rt.displayName=Ge.displayName;var $r=[{label:"Today",days:0},{label:"Yesterday",days:1},{label:"2d ago",days:2},{label:"3d ago",days:3},{label:"This week",days:7},{label:"This month",days:30}];const Gr=e=>{let t=Date.now(),r=$r.map(n=>({...n,chats:[]})),a={label:"Older",days:1/0,chats:[]},o=n=>{switch(n){case 0:return r[0];case 1:return r[1];case 2:return r[2];case 3:return r[3];default:return n>=4&&n<=7?r[4]:n>=8&&n<=30?r[5]:a}};for(let n of e)o(Math.floor((t-n.updatedAt)/864e5)).chats.push(n);return[...r,a].filter(n=>n.chats.length>0)},Jr=({activeChatId:e,setActiveChat:t})=>{let r=Ve(ct),{locale:a}=Rr(),[o,n]=(0,m.useState)(""),s=(0,m.useMemo)(()=>[...r.chats.values()].sort((d,u)=>u.updatedAt-d.updatedAt),[r.chats]),c=(0,m.useMemo)(()=>o.trim()?s.filter(d=>d.title.toLowerCase().includes(o.toLowerCase())):s,[s,o]),i=(0,m.useMemo)(()=>Gr(c),[c]);return(0,l.jsxs)(Er,{children:[(0,l.jsx)(ie,{content:"Previous chats",children:(0,l.jsx)(Ar,{asChild:!0,children:(0,l.jsx)(B,{variant:"text",size:"icon",children:(0,l.jsx)(Ft,{className:"h-4 w-4"})})})}),(0,l.jsxs)(Tr,{className:"w-[480px] p-0",align:"start",side:"right",children:[(0,l.jsx)("div",{className:"pt-3 px-3 w-full",children:(0,l.jsx)(it,{placeholder:"Search chat history...",value:o,onChange:d=>n(d.target.value),className:"text-xs"})}),(0,l.jsx)(_t,{className:"h-[450px] p-2",children:(0,l.jsxs)("div",{className:"space-y-3",children:[s.length===0&&(0,l.jsx)(qe,{title:"No chats yet",description:"Start a new chat to get started",icon:(0,l.jsx)(st,{})}),c.length===0&&o&&s.length>0&&(0,l.jsx)(qe,{title:"No chats found",description:`No chats match "${o}"`,icon:(0,l.jsx)(gr,{})}),i.map((d,u)=>(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsx)("div",{className:"text-xs px-1 text-muted-foreground/60",children:d.label}),(0,l.jsx)("div",{children:d.chats.map(p=>(0,l.jsxs)("button",{className:se("w-full p-1 rounded-md cursor-pointer text-left flex items-center justify-between",p.id===e&&"bg-accent",p.id!==e&&"hover:bg-muted/20"),onClick:()=>{t(p.id)},type:"button",children:[(0,l.jsx)("div",{className:"flex-1 min-w-0",children:(0,l.jsx)("div",{className:"text-sm truncate",children:p.title})}),(0,l.jsx)("div",{className:"text-xs text-muted-foreground/60 ml-2 flex-shrink-0",children:_r(p.updatedAt,a)})]},p.id))}),u!==i.length-1&&(0,l.jsx)("hr",{})]},d.label))]})})]})]})};var de=tt(),At="manual",Kr=new Set(["openai","google","anthropic"]),Qr=["image/*","text/*"],Zr=1024*1024*50,el=e=>{let t=(0,de.c)(18),{onNewChat:r,activeChatId:a,setActiveChat:o}=e,{handleClick:n}=rt(),s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s=(0,l.jsx)(vr,{className:"h-4 w-4"}),t[0]=s):s=t[0];let c;t[1]===r?c=t[2]:(c=(0,l.jsx)(ie,{content:"New chat",children:(0,l.jsx)(B,{variant:"text",size:"icon",onClick:r,children:s})}),t[1]=r,t[2]=c);let i;t[3]===Symbol.for("react.memo_cache_sentinel")?(i=(0,l.jsx)(Wt,{}),t[3]=i):i=t[3];let d;t[4]===n?d=t[5]:(d=()=>n("ai"),t[4]=n,t[5]=d);let u;t[6]===Symbol.for("react.memo_cache_sentinel")?(u=(0,l.jsx)(wr,{className:"h-4 w-4"}),t[6]=u):u=t[6];let p;t[7]===d?p=t[8]:(p=(0,l.jsx)(ie,{content:"AI Settings",children:(0,l.jsx)(B,{variant:"text",size:"xs",className:"hover:bg-foreground/10 py-2",onClick:d,children:u})}),t[7]=d,t[8]=p);let h;t[9]!==a||t[10]!==o?(h=(0,l.jsx)(Jr,{activeChatId:a,setActiveChat:o}),t[9]=a,t[10]=o,t[11]=h):h=t[11];let f;t[12]!==p||t[13]!==h?(f=(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[i,p,h]}),t[12]=p,t[13]=h,t[14]=f):f=t[14];let g;return t[15]!==c||t[16]!==f?(g=(0,l.jsxs)("div",{className:"flex border-b px-2 py-1 justify-between shrink-0 items-center",children:[c,f]}),t[15]=c,t[16]=f,t[17]=g):g=t[17],g},Tt=(0,m.memo)(e=>{let t=(0,de.c)(15),{message:r,index:a,onEdit:o,isStreamingReasoning:n,isLast:s}=e,c;t[0]!==a||t[1]!==o?(c=y=>{var C,j,S;let L=(j=(C=y.parts)==null?void 0:C.filter(ol))==null?void 0:j.map(nl).join(`
|
|
2
|
-
`),b=(S=y.parts)==null?void 0:S.filter(al);return(0,l.jsxs)("div",{className:"w-[95%] bg-background border p-1 rounded-sm",children:[b==null?void 0:b.map(sl),(0,l.jsx)(nt,{value:L,placeholder:"Type your message...",onChange:il,onSubmit:(_,N)=>{N.trim()&&o(a,N)},onClose:cl},y.id)]})},t[0]=a,t[1]=o,t[2]=c):c=t[2];let i=c,d;t[3]!==s||t[4]!==n?(d=y=>(0,l.jsxs)("div",{className:"w-[95%] wrap-break-word",children:[(0,l.jsx)("div",{className:"absolute right-1 top-1 opacity-0 group-hover:opacity-100 transition-opacity",children:(0,l.jsx)(Lr,{className:"h-3 w-3",value:y.parts.filter(dl).map(ul).join(`
|
|
3
|
-
`)||""})}),Ir({message:y,isStreamingReasoning:n,isLast:s})]}),t[3]=s,t[4]=n,t[5]=d):d=t[5];let u=d,p=r.role==="user"?"justify-end":"justify-start",h;t[6]===p?h=t[7]:(h=se("flex group relative",p),t[6]=p,t[7]=h);let f;t[8]!==r||t[9]!==u||t[10]!==i?(f=r.role==="user"?i(r):u(r),t[8]=r,t[9]=u,t[10]=i,t[11]=f):f=t[11];let g;return t[12]!==h||t[13]!==f?(g=(0,l.jsx)("div",{className:h,children:f}),t[12]=h,t[13]=f,t[14]=g):g=t[14],g});Tt.displayName="ChatMessage";var Et=(0,m.memo)(e=>{var fe;let t=(0,de.c)(39),{isEmpty:r,onSendClick:a,isLoading:o,onStop:n,fileInputRef:s,onAddFiles:c,onAddContext:i}=e,d=Ve(lt),u=(d==null?void 0:d.mode)||At,p=((fe=d==null?void 0:d.models)==null?void 0:fe.chat_model)||"openai/gpt-4o",h=Ut.parse(p).providerId,{saveModeChange:f}=Ot(),g;t[0]===Symbol.for("react.memo_cache_sentinel")?(g=[{value:"ask",label:"Ask",subtitle:"Use AI with access to read-only tools like documentation search"},{value:"manual",label:"Manual",subtitle:"Pure chat, no tool usage"},{value:"agent",label:"Agent (beta)",subtitle:"Use AI with access to read and write tools"}],t[0]=g):g=t[0];let y=g,L=Kr.has(h),b;t[1]===u?b=t[2]:(b=(0,l.jsx)(hr,{className:"h-6 text-xs border-border shadow-none! ring-0! bg-muted hover:bg-muted/30 py-0 px-2 gap-1 capitalize",children:u}),t[1]=u,t[2]=b);let C;t[3]===Symbol.for("react.memo_cache_sentinel")?(C=(0,l.jsx)(cr,{children:"AI Mode"}),t[3]=C):C=t[3];let j;t[4]===y?j=t[5]:(j=(0,l.jsx)(ur,{children:(0,l.jsxs)(pr,{children:[C,y.map(ml)]})}),t[4]=y,t[5]=j);let S;t[6]!==u||t[7]!==f||t[8]!==b||t[9]!==j?(S=(0,l.jsx)(Mt,{feature:"chat_modes",children:(0,l.jsxs)(fr,{value:u,onValueChange:f,children:[b,j]})}),t[6]=u,t[7]=f,t[8]=b,t[9]=j,t[10]=S):S=t[10];let _;t[11]===Symbol.for("react.memo_cache_sentinel")?(_=(0,l.jsx)(Yt,{placeholder:"Model",triggerClassName:"h-6 text-xs shadow-none! ring-0! bg-muted hover:bg-muted/30 rounded-sm",iconSize:"small",showAddCustomModelDocs:!0,forRole:"chat"}),t[11]=_):_=t[11];let N;t[12]===S?N=t[13]:(N=(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[S,_]}),t[12]=S,t[13]=N);let P;t[14]===Symbol.for("react.memo_cache_sentinel")?(P=(0,l.jsx)(er,{className:"h-3.5 w-3.5"}),t[14]=P):P=t[14];let I;t[15]!==o||t[16]!==i?(I=(0,l.jsx)(ie,{content:"Add context",children:(0,l.jsx)(B,{variant:"text",size:"icon",onClick:i,disabled:o,children:P})}),t[15]=o,t[16]=i,t[17]=I):I=t[17];let w;t[18]!==s||t[19]!==L||t[20]!==o||t[21]!==c?(w=L&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ie,{content:"Attach a file",children:(0,l.jsx)(B,{variant:"text",size:"icon",className:"cursor-pointer",onClick:()=>{var X;return(X=s.current)==null?void 0:X.click()},title:"Attach a file",disabled:o,children:(0,l.jsx)(sr,{className:"h-3.5 w-3.5"})})}),(0,l.jsx)(it,{ref:s,type:"file",multiple:!0,hidden:!0,onChange:X=>{X.target.files&&c([...X.target.files])},accept:Qr.join(",")})]}),t[18]=s,t[19]=L,t[20]=o,t[21]=c,t[22]=w):w=t[22];let T=o?"Stop":"Submit",k=o?n:a,A=o?!1:r,E;t[23]===o?E=t[24]:(E=o?(0,l.jsx)(yr,{className:"h-3 w-3 fill-current"}):(0,l.jsx)(Gt,{className:"h-3 w-3"}),t[23]=o,t[24]=E);let H;t[25]!==k||t[26]!==A||t[27]!==E?(H=(0,l.jsx)(B,{variant:"text",size:"sm",className:"h-6 w-6 p-0 hover:bg-muted/30 cursor-pointer",onClick:k,disabled:A,children:E}),t[25]=k,t[26]=A,t[27]=E,t[28]=H):H=t[28];let U;t[29]!==T||t[30]!==H?(U=(0,l.jsx)(ie,{content:T,children:H}),t[29]=T,t[30]=H,t[31]=U):U=t[31];let O;t[32]!==w||t[33]!==U||t[34]!==I?(O=(0,l.jsxs)("div",{className:"flex flex-row",children:[I,w,U]}),t[32]=w,t[33]=U,t[34]=I,t[35]=O):O=t[35];let D;return t[36]!==O||t[37]!==N?(D=(0,l.jsx)(dt,{children:(0,l.jsxs)("div",{className:"px-3 py-2 border-t border-border/20 flex flex-row flex-wrap items-center justify-between gap-1",children:[N,O]})}),t[36]=O,t[37]=N,t[38]=D):D=t[38],D});Et.displayName="ChatInputFooter";var Qe=(0,m.memo)(e=>{let t=(0,de.c)(29),{placeholder:r,input:a,inputClassName:o,setInput:n,onSubmit:s,inputRef:c,isLoading:i,onStop:d,fileInputRef:u,onAddFiles:p,onClose:h}=e,f;t[0]!==a||t[1]!==s?(f=()=>{a.trim()&&s(void 0,a)},t[0]=a,t[1]=s,t[2]=f):f=t[2];let g=V(f),y;t[3]===o?y=t[4]:(y=se("px-2 py-3 flex-1",o),t[3]=o,t[4]=y);let L=r||"Type your message...",b;t[5]!==a||t[6]!==c||t[7]!==p||t[8]!==h||t[9]!==s||t[10]!==n||t[11]!==L?(b=(0,l.jsx)(nt,{inputRef:c,value:a,onChange:n,onSubmit:s,onClose:h,onAddFiles:p,placeholder:L}),t[5]=a,t[6]=c,t[7]=p,t[8]=h,t[9]=s,t[10]=n,t[11]=L,t[12]=b):b=t[12];let C;t[13]!==y||t[14]!==b?(C=(0,l.jsx)("div",{className:y,children:b}),t[13]=y,t[14]=b,t[15]=C):C=t[15];let j=!a.trim(),S;t[16]===c?S=t[17]:(S=()=>nr(c),t[16]=c,t[17]=S);let _;t[18]!==u||t[19]!==g||t[20]!==i||t[21]!==p||t[22]!==d||t[23]!==j||t[24]!==S?(_=(0,l.jsx)(Et,{isEmpty:j,onAddContext:S,onSendClick:g,isLoading:i,onStop:d,fileInputRef:u,onAddFiles:p}),t[18]=u,t[19]=g,t[20]=i,t[21]=p,t[22]=d,t[23]=j,t[24]=S,t[25]=_):_=t[25];let N;return t[26]!==C||t[27]!==_?(N=(0,l.jsxs)("div",{className:"relative shrink-0 min-h-[80px] flex flex-col border-t",children:[C,_]}),t[26]=C,t[27]=_,t[28]=N):N=t[28],N});Qe.displayName="ChatInput";var tl=()=>{let e=(0,de.c)(6),t=Ve(Xt),{handleClick:r}=rt();if(!t){let o;e[0]===r?o=e[1]:(o=(0,l.jsx)(B,{variant:"outline",size:"sm",onClick:()=>r("ai","ai-providers"),children:"Edit AI settings"}),e[0]=r,e[1]=o);let n;e[2]===Symbol.for("react.memo_cache_sentinel")?(n=(0,l.jsx)(st,{}),e[2]=n):n=e[2];let s;return e[3]===o?s=e[4]:(s=(0,l.jsx)(qe,{title:"Chat with AI",description:"No AI provider configured or model selected",action:o,icon:n}),e[3]=o,e[4]=s),s}let a;return e[5]===Symbol.for("react.memo_cache_sentinel")?(a=(0,l.jsx)(rl,{}),e[5]=a):a=e[5],a},rl=()=>{let e=(0,de.c)(95),t=It(ct),[r,a]=kt(br),[o,n]=(0,m.useState)(""),[s,c]=(0,m.useState)(""),[i,d]=(0,m.useState)(),u=(0,m.useRef)(null),p=(0,m.useRef)(null),h=(0,m.useRef)(null),f=(0,m.useRef)(null),g=(0,m.useRef)(null),y=Bt(),{invokeAiTool:L,sendRun:b}=qt(),C=r==null?void 0:r.id,j=zt(),{addStagedCell:S}=lr(),{createNewCell:_,prepareForRun:N}=Ht(),P;e[0]!==S||e[1]!==_||e[2]!==N||e[3]!==b||e[4]!==j?(P={addStagedCell:S,createNewCell:_,prepareForRun:N,sendRun:b,store:j},e[0]=S,e[1]=_,e[2]=N,e[3]=b,e[4]=j,e[5]=P):P=e[5];let I=P,w;e[6]===(r==null?void 0:r.messages)?w=e[7]:(w=(r==null?void 0:r.messages)||[],e[6]=r==null?void 0:r.messages,e[7]=w);let T;if(e[8]!==y||e[9]!==j){let x;e[11]===j?x=e[12]:(x=async v=>{var ne;let R=await Jt(v.messages),W=((ne=j.get(lt))==null?void 0:ne.mode)||At;return{body:{tools:Zt.getToolSchemas(W),...v,...R}}},e[11]=j,e[12]=x),T=new $t({api:y.getAiURL("chat").toString(),headers:y.headers(),prepareSendMessagesRequest:x}),e[8]=y,e[9]=j,e[10]=T}else T=e[10];let k;e[13]===t?k=e[14]:(k=x=>{let{messages:v}=x;t(R=>zr({chatState:R,chatId:R.activeChatId,messages:v}))},e[13]=t,e[14]=k);let{messages:A,sendMessage:E,error:H,status:U,regenerate:O,stop:D,addToolOutput:fe,id:X}=or({id:C,sendAutomaticallyWhen:pl,messages:w,transport:T,onFinish:k,onToolCall:async x=>{let{toolCall:v}=x;if(v.dynamic){Ie.debug("Skipping dynamic tool call",v);return}await Kt({invokeAiTool:L,addToolOutput:Lt,toolCall:{toolName:v.toolName,toolCallId:v.toolCallId,input:v.input},toolContext:I})},onError:hl}),Lt=fe,xe;e[15]===Symbol.for("react.memo_cache_sentinel")?(xe=x=>{if(x.length===0)return;let v=0;for(let R of x)v+=R.size;if(v>Zr){jr({title:"File size exceeds 50MB limit",description:"Please remove some files and try again."});return}d(R=>[...R??[],...x])},e[15]=xe):xe=e[15];let ve=V(xe),ge;e[16]===i?ge=e[17]:(ge=x=>{i&&d(i.filter(v=>v!==x))},e[16]=i,e[17]=ge);let He=V(ge),z=U==="submitted"||U==="streaming",we;e[18]!==z||e[19]!==A?(we=z&&A.length>0&&tr(A),e[18]=z,e[19]=A,e[20]=we):we=e[20];let ue=we,be;e[21]===Symbol.for("react.memo_cache_sentinel")?(be=()=>{requestAnimationFrame(()=>{if(h.current){let x=h.current;x.scrollTop=x.scrollHeight}})},e[21]=be):be=e[21];let ye;e[22]===C?ye=e[23]:(ye=[C],e[22]=C,e[23]=ye),(0,m.useEffect)(be,ye);let je;e[24]!==X||e[25]!==E||e[26]!==t?(je=async(x,v)=>{let R=Date.now(),W={id:X,title:rr(x),messages:[],createdAt:R,updatedAt:R};t(pe=>{let Ze=new Map(pe.chats);return Ze.set(W.id,W),{...pe,chats:Ze,activeChatId:W.id}});let ne=v&&v.length>0?await ot(v):void 0;E({role:"user",parts:[{type:"text",text:x},...ne??[]]}),d(void 0),n("")},e[24]=X,e[25]=E,e[26]=t,e[27]=je):je=e[27];let Oe=je,Se;e[28]===a?Se=e[29]:(Se=()=>{a(null),n(""),c(""),d(void 0)},e[28]=a,e[29]=Se);let We=V(Se),Ce;e[30]!==A||e[31]!==E?(Ce=(x,v)=>{var pe;let R=A[x],W=(pe=R.parts)==null?void 0:pe.filter(fl),ne=R.id;E({messageId:ne,role:"user",parts:[{type:"text",text:v},...W]})},e[30]=A,e[31]=E,e[32]=Ce):Ce=e[32];let me=V(Ce),Ne;e[33]!==i||e[34]!==E?(Ne=async(x,v)=>{var W;if(!v.trim())return;(W=p.current)!=null&&W.view&&at(p.current.view);let R=i?await ot(i):void 0;x==null||x.preventDefault(),E({text:v,files:R}),n(""),d(void 0)},e[33]=i,e[34]=E,e[35]=Ne):Ne=e[35];let Ye=V(Ne),_e;e[36]===O?_e=e[37]:(_e=()=>{O()},e[36]=O,e[37]=_e);let Ue=_e,Re;e[38]!==Oe||e[39]!==i||e[40]!==s?(Re=()=>{var x;s.trim()&&((x=u.current)!=null&&x.view&&at(u.current.view),Oe(s.trim(),i))},e[38]=Oe,e[39]=i,e[40]=s,e[41]=Re):Re=e[41];let Xe=V(Re),Ae;e[42]===Symbol.for("react.memo_cache_sentinel")?(Ae=()=>{var x,v;return(v=(x=u.current)==null?void 0:x.editor)==null?void 0:v.blur()},e[42]=Ae):Ae=e[42];let Pt=Ae,M=A.length===0,Te;e[43]!==Ye||e[44]!==Xe||e[45]!==o||e[46]!==z||e[47]!==M||e[48]!==s||e[49]!==ve||e[50]!==D?(Te=M?(0,l.jsx)(Qe,{placeholder:"Ask anything, @ to include context about tables or dataframes",input:s,inputRef:u,inputClassName:"px-1 py-0",setInput:c,onSubmit:Xe,isLoading:z,onStop:D,fileInputRef:f,onAddFiles:ve,onClose:Pt},"new-thread-input"):(0,l.jsx)(Qe,{input:o,setInput:n,onSubmit:Ye,inputRef:p,isLoading:z,onStop:D,onClose:()=>{var x,v;return(v=(x=p.current)==null?void 0:x.editor)==null?void 0:v.blur()},fileInputRef:f,onAddFiles:ve}),e[43]=Ye,e[44]=Xe,e[45]=o,e[46]=z,e[47]=M,e[48]=s,e[49]=ve,e[50]=D,e[51]=Te):Te=e[51];let G=Te,Ee;e[52]!==i||e[53]!==M||e[54]!==He?(Ee=i&&i.length>0&&(0,l.jsx)("div",{className:se("flex flex-row gap-1 flex-wrap p-1",M&&"py-2 px-1"),children:i==null?void 0:i.map(x=>(0,l.jsx)(ar,{file:x,onRemove:()=>He(x)},x.name))}),e[52]=i,e[53]=M,e[54]=He,e[55]=Ee):Ee=e[55];let J=Ee,Be=r==null?void 0:r.id,K;e[56]!==We||e[57]!==a||e[58]!==Be?(K=(0,l.jsx)(dt,{children:(0,l.jsx)(el,{onNewChat:We,activeChatId:Be,setActiveChat:a})}),e[56]=We,e[57]=a,e[58]=Be,e[59]=K):K=e[59];let Q;e[60]!==G||e[61]!==J||e[62]!==M?(Q=M&&(0,l.jsxs)("div",{className:"rounded-md border bg-background",children:[J,G]}),e[60]=G,e[61]=J,e[62]=M,e[63]=Q):Q=e[63];let Z;if(e[64]!==me||e[65]!==ue||e[66]!==A){let x;e[68]!==me||e[69]!==ue||e[70]!==A.length?(x=(v,R)=>(0,l.jsx)(Tt,{message:v,index:R,onEdit:me,isStreamingReasoning:ue,isLast:R===A.length-1},v.id),e[68]=me,e[69]=ue,e[70]=A.length,e[71]=x):x=e[71],Z=A.map(x),e[64]=me,e[65]=ue,e[66]=A,e[67]=Z}else Z=e[67];let ee;e[72]===z?ee=e[73]:(ee=z&&(0,l.jsx)("div",{className:"flex justify-center py-4",children:(0,l.jsx)(xr,{className:"h-4 w-4 animate-spin"})}),e[72]=z,e[73]=ee);let te;e[74]!==H||e[75]!==Ue?(te=H&&(0,l.jsxs)("div",{className:"flex items-center justify-center space-x-2 mb-4",children:[(0,l.jsx)(Pr,{error:H}),(0,l.jsx)(B,{variant:"outline",size:"sm",onClick:Ue,children:"Retry"})]}),e[74]=H,e[75]=Ue,e[76]=te):te=e[76];let Le;e[77]===Symbol.for("react.memo_cache_sentinel")?(Le=(0,l.jsx)("div",{ref:g}),e[77]=Le):Le=e[77];let re;e[78]!==Q||e[79]!==Z||e[80]!==ee||e[81]!==te?(re=(0,l.jsxs)("div",{className:"flex-1 px-3 bg-(--slate-1) gap-4 py-3 flex flex-col overflow-y-auto",ref:h,children:[Q,Z,ee,te,Le]}),e[78]=Q,e[79]=Z,e[80]=ee,e[81]=te,e[82]=re):re=e[82];let le;e[83]!==z||e[84]!==D?(le=z&&(0,l.jsx)("div",{className:"w-full flex justify-center items-center z-20 border-t",children:(0,l.jsx)(B,{variant:"linkDestructive",size:"sm",onClick:D,children:"Stop"})}),e[83]=z,e[84]=D,e[85]=le):le=e[85];let oe;e[86]!==G||e[87]!==J||e[88]!==M?(oe=!M&&(0,l.jsxs)(l.Fragment,{children:[J,G]}),e[86]=G,e[87]=J,e[88]=M,e[89]=oe):oe=e[89];let Pe;return e[90]!==K||e[91]!==re||e[92]!==le||e[93]!==oe?(Pe=(0,l.jsxs)("div",{className:"flex flex-col h-[calc(100%-53px)]",children:[K,re,le,oe]}),e[90]=K,e[91]=re,e[92]=le,e[93]=oe,e[94]=Pe):Pe=e[94],Pe},ll=tl;function ol(e){return e.type==="text"}function nl(e){return e.text}function al(e){return e.type==="file"}function sl(e,t){return(0,l.jsx)(ir,{attachment:e},t)}function il(){}function cl(){}function dl(e){return e.type==="text"}function ul(e){return e.text}function ml(e){return(0,l.jsx)(dr,{value:e.value,className:"text-xs",children:(0,l.jsxs)("div",{className:"flex flex-col",children:[e.label,(0,l.jsx)("div",{className:"text-muted-foreground text-xs pt-1 block",children:e.subtitle})]})},e.value)}function pl(e){let{messages:t}=e;return Qt(t)}function hl(e){Ie.error("An error occurred:",e)}function fl(e){return e.type==="file"}export{ll as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as L}from"./chunk-LvLJmgfZ.js";import{u as K}from"./useEvent-DO6uJBas.js";import{t as R}from"./react-BGmjiNul.js";import{An as U,dr as V,jn as W,pr as O,w as Y}from"./cells-Cvo5AIrZ.js";import{t as D}from"./compiler-runtime-DeeZ7FnK.js";import{t as X}from"./useLifecycle-DvpL8DUJ.js";import{o as Z}from"./utils-CSDCHxwI.js";import{t as ee}from"./jsx-runtime-ZmTK25f3.js";import{r as M,t as z}from"./button-B3uq-Cpf.js";import{t as x}from"./cn-BKtXLv3a.js";import{G as te}from"./JsonOutput-C087tCA7.js";import{r as ae}from"./requests-BsVD4CdD.js";import{t as se}from"./createLucideIcon-CnW3RofX.js";import{h as re}from"./select-UFziUNxL.js";import{t as ne}from"./chevron-right-DwagBitu.js";import{n as le,t as oe}from"./spinner-DaIKav-i.js";import{r as ce}from"./useTheme-CuyH5VNX.js";import{t as $}from"./tooltip-CEc2ajau.js";import{t as ie}from"./context-JwD-oSsl.js";import{r as me}from"./numbers-CSY3JIgn.js";import{t as de}from"./copy-icon-wZr2McVB.js";import{t as pe}from"./useInstallPackage-Dxl_p6oW.js";import{n as ue}from"./es-t8uugS1p.js";import{o as xe}from"./focus-BeWVOW9Q.js";var I=se("square-plus",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]),h=D(),l=L(ee(),1);const he=o=>{let e=(0,h.c)(4),{isExpanded:a}=o,s=a&&"rotate-90",t;e[0]===s?t=e[1]:(t=x("h-3 w-3 transition-transform",s),e[0]=s,e[1]=t);let r;return e[2]===t?r=e[3]:(r=(0,l.jsx)(ne,{className:t}),e[2]=t,e[3]=r),r},fe=o=>{let e=(0,h.c)(5),{children:a,className:s}=o,t;e[0]===s?t=e[1]:(t=x("flex gap-1.5 items-center font-bold py-1.5 text-muted-foreground bg-(--slate-2) text-sm",s),e[0]=s,e[1]=t);let r;return e[2]!==a||e[3]!==t?(r=(0,l.jsx)("div",{className:t,children:a}),e[2]=a,e[3]=t,e[4]=r):r=e[4],r},ge=o=>{let e=(0,h.c)(5),{content:a,className:s}=o,t;e[0]===s?t=e[1]:(t=x("text-sm text-muted-foreground py-1",s),e[0]=s,e[1]=t);let r;return e[2]!==a||e[3]!==t?(r=(0,l.jsx)("div",{className:t,children:a}),e[2]=a,e[3]=t,e[4]=r):r=e[4],r},ye=o=>{let e=(0,h.c)(6),{error:a,className:s}=o,t;e[0]===s?t=e[1]:(t=x("text-sm bg-red-50 dark:bg-red-900 text-red-600 dark:text-red-50 flex items-center gap-2 p-2 h-8",s),e[0]=s,e[1]=t);let r;e[2]===Symbol.for("react.memo_cache_sentinel")?(r=(0,l.jsx)(re,{className:"h-4 w-4 mt-0.5"}),e[2]=r):r=e[2];let n;return e[3]!==a.message||e[4]!==t?(n=(0,l.jsxs)("div",{className:t,children:[r,a.message]}),e[3]=a.message,e[4]=t,e[5]=n):n=e[5],n},be=o=>{let e=(0,h.c)(6),{message:a,className:s}=o,t;e[0]===s?t=e[1]:(t=x("text-sm bg-blue-50 dark:bg-(--accent) text-blue-500 dark:text-blue-50 flex items-center gap-2 p-2 h-8",s),e[0]=s,e[1]=t);let r;e[2]===Symbol.for("react.memo_cache_sentinel")?(r=(0,l.jsx)(le,{className:"h-4 w-4 animate-spin"}),e[2]=r):r=e[2];let n;return e[3]!==a||e[4]!==t?(n=(0,l.jsxs)("div",{className:t,children:[r,a]}),e[3]=a,e[4]=t,e[5]=n):n=e[5],n},E=o=>{let e=(0,h.c)(5),{children:a,className:s}=o,t;e[0]===s?t=e[1]:(t=x("flex flex-col gap-2 relative",s),e[0]=s,e[1]=t);let r;return e[2]!==a||e[3]!==t?(r=(0,l.jsx)("div",{className:t,children:a}),e[2]=a,e[3]=t,e[4]=r):r=e[4],r},_e=o=>{let e=(0,h.c)(6),{columnName:a,dataType:s}=o,t=U[s],r=`w-4 h-4 p-0.5 rounded-sm stroke-card-foreground ${W(s)}`,n;e[0]!==t||e[1]!==r?(n=(0,l.jsx)(t,{className:r}),e[0]=t,e[1]=r,e[2]=n):n=e[2];let c;return e[3]!==a||e[4]!==n?(c=(0,l.jsxs)("div",{className:"flex flex-row items-center gap-1.5",children:[n,a]}),e[3]=a,e[4]=n,e[5]=c):c=e[5],c};var je=D(),Ne=L(R(),1);const ke=o=>{let e=(0,je.c)(13),{packages:a,showMaxPackages:s,className:t,onInstall:r}=o,{handleInstallPackages:n}=pe();if(!a||a.length===0)return null;let c;e[0]!==n||e[1]!==r||e[2]!==a?(c=()=>{n(a,r)},e[0]=n,e[1]=r,e[2]=a,e[3]=c):c=e[3];let i;e[4]===t?i=e[5]:(i=x("ml-2",t),e[4]=t,e[5]=i);let d;e[6]!==a||e[7]!==s?(d=s?a.slice(0,s).join(", "):a.join(", "),e[6]=a,e[7]=s,e[8]=d):d=e[8];let p;return e[9]!==c||e[10]!==i||e[11]!==d?(p=(0,l.jsxs)(z,{variant:"outline",size:"xs",onClick:c,className:i,children:["Install"," ",d]}),e[9]=c,e[10]=i,e[11]=d,e[12]=p):p=e[12],p};var Q=D();const ve=o=>{let e=(0,Q.c)(53),{table:a,column:s,preview:t,onAddColumnChart:r,sqlTableContext:n}=o,{theme:c}=ce(),{previewDatasetColumn:i}=ae(),{locale:d}=ie(),p;e[0]!==s.name||e[1]!==i||e[2]!==n||e[3]!==a.name||e[4]!==a.source||e[5]!==a.source_type?(p=()=>{i({source:a.source,tableName:a.name,columnName:s.name,sourceType:a.source_type,fullyQualifiedTableName:n?`${n.database}.${n.schema}.${a.name}`:a.name})},e[0]=s.name,e[1]=i,e[2]=n,e[3]=a.name,e[4]=a.source,e[5]=a.source_type,e[6]=p):p=e[6];let u=p,y;if(e[7]!==t||e[8]!==u||e[9]!==a.source_type?(y=()=>{t||a.source_type==="connection"||a.source_type==="catalog"||u()},e[7]=t,e[8]=u,e[9]=a.source_type,e[10]=y):y=e[10],X(y),a.source_type==="connection"){let m=s.name,H=s.external_type,f;e[11]!==s.name||e[12]!==r||e[13]!==n||e[14]!==a?(f=M.stopPropagation(()=>{r(O({table:a,columnName:s.name,sqlTableContext:n}))}),e[11]=s.name,e[12]=r,e[13]=n,e[14]=a,e[15]=f):f=e[15];let P;e[16]===Symbol.for("react.memo_cache_sentinel")?(P=(0,l.jsx)(I,{className:"h-3 w-3 mr-1"}),e[16]=P):P=e[16];let g;e[17]===f?g=e[18]:(g=(0,l.jsxs)(z,{variant:"outline",size:"xs",onClick:f,children:[P," Add SQL cell"]}),e[17]=f,e[18]=g);let T;return e[19]!==s.external_type||e[20]!==s.name||e[21]!==g?(T=(0,l.jsxs)("span",{className:"text-xs text-muted-foreground gap-2 flex items-center justify-between pl-7",children:[m," (",H,")",g]}),e[19]=s.external_type,e[20]=s.name,e[21]=g,e[22]=T):T=e[22],T}if(a.source_type==="catalog"){let m;return e[23]!==s.external_type||e[24]!==s.name?(m=(0,l.jsxs)("span",{className:"text-xs text-muted-foreground gap-2 flex items-center justify-between pl-7",children:[s.name," (",s.external_type,")"]}),e[23]=s.external_type,e[24]=s.name,e[25]=m):m=e[25],m}if(!t){let m;return e[26]===Symbol.for("react.memo_cache_sentinel")?(m=(0,l.jsx)("span",{className:"text-xs text-muted-foreground",children:"Loading..."}),e[26]=m):m=e[26],m}let b;e[27]!==t.error||e[28]!==t.missing_packages||e[29]!==u?(b=t.error&&G({error:t.error,missingPackages:t.missing_packages,refetchPreview:u}),e[27]=t.error,e[28]=t.missing_packages,e[29]=u,e[30]=b):b=e[30];let _=b,j;e[31]!==s.type||e[32]!==d||e[33]!==t.stats?(j=t.stats&&J({stats:t.stats,dataType:s.type,locale:d}),e[31]=s.type,e[32]=d,e[33]=t.stats,e[34]=j):j=e[34];let N=j,k;e[35]!==t.chart_spec||e[36]!==c?(k=t.chart_spec&&B(t.chart_spec,c),e[35]=t.chart_spec,e[36]=c,e[37]=k):k=e[37];let v=k,w;e[38]!==t.chart_code||e[39]!==a.source_type?(w=t.chart_code&&a.source_type==="local"&&(0,l.jsx)(F,{chartCode:t.chart_code}),e[38]=t.chart_code,e[39]=a.source_type,e[40]=w):w=e[40];let A=w,C;e[41]!==s.name||e[42]!==r||e[43]!==n||e[44]!==a?(C=a.source_type==="duckdb"&&(0,l.jsx)($,{content:"Add SQL cell",delayDuration:400,children:(0,l.jsx)(z,{variant:"outline",size:"icon",className:"z-10 bg-background absolute right-1 -top-1",onClick:M.stopPropagation(()=>{r(O({table:a,columnName:s.name,sqlTableContext:n}))}),children:(0,l.jsx)(I,{className:"h-3 w-3"})})}),e[41]=s.name,e[42]=r,e[43]=n,e[44]=a,e[45]=C):C=e[45];let q=C;if(!_&&!N&&!v){let m;return e[46]===Symbol.for("react.memo_cache_sentinel")?(m=(0,l.jsx)("span",{className:"text-xs text-muted-foreground",children:"No data"}),e[46]=m):m=e[46],m}let S;return e[47]!==A||e[48]!==q||e[49]!==v||e[50]!==_||e[51]!==N?(S=(0,l.jsxs)(E,{children:[_,A,q,v,N]}),e[47]=A,e[48]=q,e[49]=v,e[50]=_,e[51]=N,e[52]=S):S=e[52],S};function G({error:o,missingPackages:e,refetchPreview:a}){return(0,l.jsxs)("div",{className:"text-xs text-muted-foreground p-2 border border-border rounded flex items-center justify-between",children:[(0,l.jsx)("span",{children:o}),e&&(0,l.jsx)(ke,{packages:e,showMaxPackages:1,className:"w-32",onInstall:a})]})}function J({stats:o,dataType:e,locale:a}){return(0,l.jsx)("div",{className:"gap-x-16 gap-y-1 grid grid-cols-2-fit border rounded p-2 empty:hidden",children:Object.entries(o).map(([s,t])=>t==null?null:(0,l.jsxs)("div",{className:"flex items-center gap-1 group",children:[(0,l.jsx)("span",{className:"text-xs min-w-[60px] capitalize",children:V(s,e)}),(0,l.jsx)("span",{className:"text-xs font-bold text-muted-foreground tracking-wide",children:me(t,a)}),(0,l.jsx)(de,{className:"h-3 w-3 invisible group-hover:visible",value:String(t)})]},s))})}var we=(0,l.jsx)("div",{className:"flex justify-center",children:(0,l.jsx)(oe,{className:"size-4"})});function B(o,e){return(0,l.jsx)(Ne.Suspense,{fallback:we,children:(0,l.jsx)(te,{spec:(a=>({...a,background:"transparent",config:{...a.config,background:"transparent"}}))(JSON.parse(o)),options:{theme:e==="dark"?"dark":"vox",height:100,width:"container",actions:!1,renderer:"canvas"}})})}const F=o=>{let e=(0,Q.c)(10),{chartCode:a}=o,s=K(Z),t=xe(),{createNewCell:r}=Y(),n;e[0]!==s||e[1]!==r||e[2]!==t?(n=u=>{u.includes("alt")&&ue({autoInstantiate:s,createNewCell:r,fromCellId:t}),r({code:u,before:!1,cellId:t??"__end__"})},e[0]=s,e[1]=r,e[2]=t,e[3]=n):n=e[3];let c=n,i;e[4]!==a||e[5]!==c?(i=M.stopPropagation(()=>c(a)),e[4]=a,e[5]=c,e[6]=i):i=e[6];let d;e[7]===Symbol.for("react.memo_cache_sentinel")?(d=(0,l.jsx)(I,{className:"h-3 w-3"}),e[7]=d):d=e[7];let p;return e[8]===i?p=e[9]:(p=(0,l.jsx)($,{content:"Add chart to notebook",delayDuration:400,children:(0,l.jsx)(z,{variant:"outline",size:"icon",className:"z-10 bg-background absolute right-1 -top-0.5",onClick:i,children:d})}),e[8]=i,e[9]=p),p};export{J as a,fe as c,be as d,he as f,G as i,ge as l,ve as n,_e as o,I as p,B as r,E as s,F as t,ye as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as V}from"./chunk-LvLJmgfZ.js";import{l as X,u as L}from"./useEvent-DO6uJBas.js";import{t as Y}from"./react-BGmjiNul.js";import{Wr as Z}from"./cells-Cvo5AIrZ.js";import"./react-dom-C9fstfnp.js";import{t as T}from"./compiler-runtime-DeeZ7FnK.js";import"./tooltip-CE4l3v3B.js";import{S as ee}from"./ai-model-dropdown-GvB-5iLY.js";import{a as le,i as te,l as ie}from"./hotkeys-DghjL7BQ.js";import{p as ae,v as oe,y as re}from"./utils-CSDCHxwI.js";import"./config-BgpK7vqH.js";import{i as ne}from"./switch-Di5kBaS8.js";import{t as pe}from"./useEventListener-DIUKKfEy.js";import{t as se}from"./jsx-runtime-ZmTK25f3.js";import"./dist-DBwNzi3C.js";import"./JsonOutput-C087tCA7.js";import"./cjs-CH5Rj0g8.js";import"./main-U5Goe76G.js";import"./useNonce-_Aax6sXd.js";import{r as de}from"./requests-BsVD4CdD.js";import"./layout-8LmhWA4r.js";import"./download-C8KLYiVf.js";import{t as me}from"./useCellActionButton-3vaWtKqb.js";import"./markdown-renderer-BNamR17B.js";import{i as he,t as ce}from"./useNotebookActions-Dw4aWlN7.js";import"./dist-Cayq-K1c.js";import"./dist-TiFCI16_.js";import"./dist-BIKFl48f.js";import"./dist-B0VqT_4z.js";import"./dist-BYyu59D8.js";import"./Combination-CMPwuAmi.js";import"./dates-CxJmszXT.js";import"./popover-D16ZremR.js";import"./share-CKfNi8fD.js";import"./vega-loader.browser-CRZ52CKf.js";import"./defaultLocale-D_rSvXvJ.js";import"./defaultLocale-C92Rrpmf.js";import"./purify.es-DNVQZNFu.js";import{a as ye,c as fe,i as W,l as z,n as ue,o as J,r as be,s as ge}from"./command-BjWSp3sa.js";import"./chunk-5FQGJX7Z-CVUXBqX6.js";import"./katex-Dc8yG8NU.js";import"./es-t8uugS1p.js";import{r as ke}from"./focus-BeWVOW9Q.js";import{t as K}from"./renderShortcut-Dyrbz79Y.js";import"./esm-DpMp6qko.js";import"./name-cell-input-CHmzPoeN.js";import"./multi-icon-DZsiUPo5.js";import"./dist-C9XNJlLJ.js";import"./dist-fsvXrTzp.js";import"./dist-6cIjG-FS.js";import"./dist-CldbmzwA.js";import"./dist-OM63llNV.js";import"./dist-BmvOPdv_.js";import"./dist-DDGPBuw4.js";import"./dist-C4h-1T2Q.js";import"./dist-D_XLVesh.js";import"./esm-l4kcybiY.js";var Ce=T(),je=V(Y(),1);function xe(e,l){let t=(0,Ce.c)(11),n;t[0]===l?n=t[1]:(n=new Z(l),t[0]=l,t[1]=n);let p=n,r;t[2]!==e||t[3]!==p?(r=()=>p.get(e),t[2]=e,t[3]=p,t[4]=r):r=t[4];let[m,g]=(0,je.useState)(r),i;t[5]!==e||t[6]!==p?(i=k=>{g(k),p.set(e,k)},t[5]=e,t[6]=p,t[7]=i):i=t[7];let f=i,h;return t[8]!==f||t[9]!==m?(h=[m,f],t[8]=f,t[9]=m,t[10]=h):h=t[10],h}var ve=T(),Se=3;function we(){let e=(0,ve.c)(7),l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=[],e[0]=l):l=e[0];let[t,n]=xe("marimo:commands",l),p;e[1]!==t||e[2]!==n?(p=m=>{n(_e([m,...t]).slice(0,Se))},e[1]=t,e[2]=n,e[3]=p):p=e[3];let r;return e[4]!==t||e[5]!==p?(r={recentCommands:t,addRecentCommand:p},e[4]=t,e[5]=p,e[6]=r):r=e[6],r}function _e(e){return[...new Set(e)]}function Q(e){return e.dropdown!==void 0}function U(e,l=""){return e.flatMap(t=>t.label?Q(t)?U(t.dropdown,`${l+t.label} > `):{...t,label:l+t.label}:[])}var He=T();function Ae(){let e=(0,He.c)(75),[l,t]=re(),[n,p]=oe(),{saveAppConfig:r,saveUserConfig:m}=de(),g;e[0]!==m||e[1]!==t?(g=async d=>{await m({config:d}).then(()=>{t(c=>({...c,...d}))})},e[0]=m,e[1]=t,e[2]=g):g=e[2];let i=g,f;e[3]!==r||e[4]!==p?(f=async d=>{await r({config:d}).then(()=>{p(d)})},e[3]=r,e[4]=p,e[5]=f):f=e[5];let h=f,k;if(e[6]!==n||e[7]!==l.completion||e[8]!==l.display||e[9]!==l.keymap||e[10]!==h||e[11]!==i){let d;e[13]===n?d=e[14]:(d=O=>O!==n.width,e[13]=n,e[14]=d);let c;e[15]!==n||e[16]!==h?(c=O=>({label:`App config > Set width=${O}`,handle:()=>{h({...n,width:O})}}),e[15]=n,e[16]=h,e[17]=c):c=e[17];let H;e[18]!==l.display||e[19]!==i?(H={label:"Config > Set theme: dark",handle:()=>{i({display:{...l.display,theme:"dark"}})}},e[18]=l.display,e[19]=i,e[20]=H):H=e[20];let C;e[21]!==l.display||e[22]!==i?(C={label:"Config > Set theme: light",handle:()=>{i({display:{...l.display,theme:"light"}})}},e[21]=l.display,e[22]=i,e[23]=C):C=e[23];let A;e[24]!==l.display||e[25]!==i?(A={label:"Config > Set theme: system",handle:()=>{i({display:{...l.display,theme:"system"}})}},e[24]=l.display,e[25]=i,e[26]=A):A=e[26];let P=l.keymap.preset==="vim",M;e[27]!==l.keymap||e[28]!==i?(M=()=>{i({keymap:{...l.keymap,preset:"vim"}})},e[27]=l.keymap,e[28]=i,e[29]=M):M=e[29];let N;e[30]!==P||e[31]!==M?(N={label:"Config > Switch keymap to VIM",hidden:P,handle:M},e[30]=P,e[31]=M,e[32]=N):N=e[32];let D=l.keymap.preset==="default",j;e[33]!==l.keymap||e[34]!==i?(j=()=>{i({keymap:{...l.keymap,preset:"default"}})},e[33]=l.keymap,e[34]=i,e[35]=j):j=e[35];let u;e[36]!==D||e[37]!==j?(u={label:"Config > Switch keymap to default (current: VIM)",hidden:D,handle:j},e[36]=D,e[37]=j,e[38]=u):u=e[38];let x;e[39]!==l.completion||e[40]!==i?(x=()=>{i({completion:{...l.completion,copilot:!1}})},e[39]=l.completion,e[40]=i,e[41]=x):x=e[41];let v=l.completion.copilot!=="github",$;e[42]!==x||e[43]!==v?($={label:"Config > Disable GitHub Copilot",handle:x,hidden:v},e[42]=x,e[43]=v,e[44]=$):$=e[44];let S;e[45]!==l.completion||e[46]!==i?(S=()=>{i({completion:{...l.completion,copilot:"github"}})},e[45]=l.completion,e[46]=i,e[47]=S):S=e[47];let I=l.completion.copilot==="github",q;e[48]!==S||e[49]!==I?(q={label:"Config > Enable GitHub Copilot",handle:S,hidden:I},e[48]=S,e[49]=I,e[50]=q):q=e[50];let B=!l.display.reference_highlighting,w;e[51]!==l.display||e[52]!==i?(w=()=>{i({display:{...l.display,reference_highlighting:!1}})},e[51]=l.display,e[52]=i,e[53]=w):w=e[53];let b;e[54]!==B||e[55]!==w?(b={label:"Config > Disable reference highlighting",hidden:B,handle:w},e[54]=B,e[55]=w,e[56]=b):b=e[56];let y;e[57]!==l.display||e[58]!==i?(y=()=>{i({display:{...l.display,reference_highlighting:!0}})},e[57]=l.display,e[58]=i,e[59]=y):y=e[59];let F;e[60]!==l.display.reference_highlighting||e[61]!==y?(F={label:"Config > Enable reference highlighting",hidden:l.display.reference_highlighting,handle:y},e[60]=l.display.reference_highlighting,e[61]=y,e[62]=F):F=e[62];let o=l.display.cell_output==="above",a;e[63]!==l.display||e[64]!==i?(a=()=>{i({display:{...l.display,cell_output:"above"}})},e[63]=l.display,e[64]=i,e[65]=a):a=e[65];let R;e[66]!==o||e[67]!==a?(R={label:"Config > Set cell output area: above",hidden:o,handle:a},e[66]=o,e[67]=a,e[68]=R):R=e[68];let _=l.display.cell_output==="below",E;e[69]!==l.display||e[70]!==i?(E=()=>{i({display:{...l.display,cell_output:"below"}})},e[69]=l.display,e[70]=i,e[71]=E):E=e[71];let G;e[72]!==_||e[73]!==E?(G={label:"Config > Set cell output area: below",hidden:_,handle:E},e[72]=_,e[73]=E,e[74]=G):G=e[74],k=[...ee().filter(d).map(c),H,C,A,N,u,$,q,b,F,R,G].filter(Me),e[6]=n,e[7]=l.completion,e[8]=l.display,e[9]=l.keymap,e[10]=h,e[11]=i,e[12]=k}else k=e[12];return k}function Me(e){return!e.hidden}var Ne=T(),s=V(se(),1),De=()=>{let e=(0,Ne.c)(37),[l,t]=X(he),n=ne(),p=L(ke),r=L(ae),m;e[0]===p?m=e[1]:(m={cell:p},e[0]=p,e[1]=m);let g=me(m).flat();g=U(g);let i=Ae(),f=ce();f=[...U(f),...U(i)];let h=f.filter(Fe),k=le.keyBy(h,Re),{recentCommands:d,addRecentCommand:c}=we(),H;e[2]===d?H=e[3]:(H=new Set(d),e[2]=d,e[3]=H);let C=H,A;e[4]!==r||e[5]!==t?(A=o=>{ie(r.getHotkey("global.commandPalette").key)(o)&&(o.preventDefault(),t(Ee))},e[4]=r,e[5]=t,e[6]=A):A=e[6],pe(document,"keydown",A);let P;e[7]!==c||e[8]!==r||e[9]!==n||e[10]!==t?(P=(o,a)=>{let R=n[o];if(!R)return null;let _=r.getHotkey(o);return(0,s.jsxs)(J,{disabled:a.disabled,onSelect:()=>{c(o),t(!1),requestAnimationFrame(()=>{R()})},value:_.name,children:[(0,s.jsxs)("span",{children:[_.name,a.tooltip&&(0,s.jsx)("span",{className:"ml-2",children:a.tooltip})]}),(0,s.jsx)(z,{children:(0,s.jsx)(K,{shortcut:_.key})})]},o)},e[7]=c,e[8]=r,e[9]=n,e[10]=t,e[11]=P):P=e[11];let M=P,N;e[12]!==c||e[13]!==r||e[14]!==t?(N=o=>{let{label:a,handle:R,props:_,hotkey:E}=o,G=_===void 0?{}:_;return(0,s.jsxs)(J,{disabled:G.disabled,onSelect:()=>{c(a),t(!1),requestAnimationFrame(()=>{R()})},value:a,children:[(0,s.jsxs)("span",{children:[a,G.tooltip&&(0,s.jsxs)("span",{className:"ml-2",children:["(",G.tooltip,")"]})]}),E&&(0,s.jsx)(z,{children:(0,s.jsx)(K,{shortcut:r.getHotkey(E).key})})]},a)},e[12]=c,e[13]=r,e[14]=t,e[15]=N):N=e[15];let D=N,j=ue,u;e[16]===Symbol.for("react.memo_cache_sentinel")?(u=(0,s.jsx)(ye,{placeholder:"Type to search..."}),e[16]=u):u=e[16];let x=ge,v;e[17]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(be,{children:"No results found."}),e[17]=v):v=e[17];let $=d.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(W,{heading:"Recently Used",children:d.map(o=>{let a=k[o];return te(o)?M(o,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip}):a&&!Q(a)?D({label:a.label,handle:a.handleHeadless||a.handle,props:{disabled:a.disabled,tooltip:a.tooltip}}):null})}),(0,s.jsx)(fe,{})]}),S=W,I=r.iterate().map(o=>{if(C.has(o))return null;let a=k[o];return M(o,{disabled:a==null?void 0:a.disabled,tooltip:a==null?void 0:a.tooltip})}),q=h.map(o=>C.has(o.label)?null:D({label:o.label,handle:o.handleHeadless||o.handle,props:{disabled:o.disabled,tooltip:o.tooltip}})),B;e[18]!==C||e[19]!==D?(B=o=>C.has(o.label)?null:D({label:`Cell > ${o.label}`,handle:o.handleHeadless||o.handle,props:{disabled:o.disabled,tooltip:o.tooltip}}),e[18]=C,e[19]=D,e[20]=B):B=e[20];let w=g.map(B),b;e[21]!==S||e[22]!==q||e[23]!==w||e[24]!==I?(b=(0,s.jsxs)(S,{heading:"Commands",children:[I,q,w]}),e[21]=S,e[22]=q,e[23]=w,e[24]=I,e[25]=b):b=e[25];let y;e[26]!==x||e[27]!==b||e[28]!==v||e[29]!==$?(y=(0,s.jsxs)(x,{children:[v,$,b]}),e[26]=x,e[27]=b,e[28]=v,e[29]=$,e[30]=y):y=e[30];let F;return e[31]!==j||e[32]!==l||e[33]!==t||e[34]!==y||e[35]!==u?(F=(0,s.jsxs)(j,{open:l,onOpenChange:t,children:[u,y]}),e[31]=j,e[32]=l,e[33]=t,e[34]=y,e[35]=u,e[36]=F):F=e[36],F};function Fe(e){return!e.hotkey}function Re(e){return e.label}function Ee(e){return!e}export{De as default};
|