@marimo-team/frontend 0.25.3-dev85 → 0.25.3-dev88
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-3NheuQEt.js → JsonOutput-DryOywaN.js} +4 -4
- package/dist/assets/{agent-panel-BCCe7-0m.js → agent-panel-6t16-QG0.js} +1 -1
- package/dist/assets/{cell-editor-B6Wvf232.js → cell-editor-CM_kQ_VW.js} +1 -1
- package/dist/assets/{column-preview-BNPxoRnw.js → column-preview-CqFSXTtf.js} +1 -1
- package/dist/assets/{command-palette-CFLLUKbE.js → command-palette-CkDj29px.js} +1 -1
- package/dist/assets/{edit-page-Bh44QoBu.js → edit-page-Bgkov1Jy.js} +4 -4
- package/dist/assets/{file-explorer-panel-CAq2LZFc.js → file-explorer-panel-B9jBSwhj.js} +1 -1
- package/dist/assets/{hooks-BPw6SVXo.js → hooks-yjSoxKTw.js} +1 -1
- package/dist/assets/{index-D2O1B6ZY.js → index-0pnwTVch.js} +3 -3
- package/dist/assets/index-BnhSnwvB.css +2 -0
- package/dist/assets/{layout-NkCTvSyj.js → layout-B2MJFBFp.js} +3 -3
- package/dist/assets/{panels-CiR0Zzhg.js → panels-DI8gAi31.js} +1 -1
- package/dist/assets/{reveal-component-D2xhcDzw.js → reveal-component-BoGgZrdo.js} +1 -1
- package/dist/assets/{run-page-B9Jb5LMt.js → run-page-DnvqkxCy.js} +1 -1
- package/dist/assets/{scratchpad-panel-B_xrdEvJ.js → scratchpad-panel-DZDmNIPw.js} +1 -1
- package/dist/assets/{session-panel-DwuCGJU1.js → session-panel-B1QB5LN7.js} +1 -1
- package/dist/assets/{useNotebookActions-DNuGk3m2.js → useNotebookActions-DJuAUAGI.js} +1 -1
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/src/components/data-table/__tests__/columns.test.tsx +105 -0
- package/src/components/data-table/__tests__/search-highlight.test.tsx +109 -0
- package/src/components/data-table/__tests__/url-detector.test.tsx +74 -0
- package/src/components/data-table/columns.tsx +43 -45
- package/src/components/data-table/data-table.tsx +7 -1
- package/src/components/data-table/search-highlight.tsx +79 -0
- package/src/components/data-table/types.ts +1 -0
- package/src/components/data-table/url-detector.tsx +49 -9
- package/src/css/globals.css +2 -0
- package/dist/assets/index-BdsOMJac.css +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,u as i}from"./useEvent-Dfcbgjhg.js";import{t as a}from"./react-DVplv7_D.js";import{D as o,E as s,Hr as c,Jr as l,Ka as u,Kr as d,Mt as f,Xr as p,Zr as m,_ as h,ai as g,an as _,co as v,er as y,h as b,in as x,oo as ee,qa as S,qr as te,ra as C,ro as w,t as ne,xo as T,yt as re}from"./cells-DfF1DLV_.js";import{C as E,N as D,v as O}from"./schemas-ChRqMOTL.js";import{t as k}from"./compiler-runtime-BrajqUja.js";import{C as A,n as j}from"./config-DGX7JYor.js";import{g as M}from"./useEventListener-CjDeLqFC.js";import{t as N}from"./objects-rLPlQ3X_.js";import{n as P,r as F}from"./utils-B4K466FK.js";import{_ as I,g as L,h as R,m as ie,s as z,v as B}from"./session-B8Y-GJnS.js";import{M as V,O as H}from"./config-BWKfkUWA.js";import{t as U}from"./cn-ldLVeaqm.js";import{t as ae}from"./jsx-runtime-B74pBk57.js";import{Ft as oe,It as se,Q as ce}from"./JsonOutput-3NheuQEt.js";import{a as le,c as ue,i as de,n as fe,r as pe,s as me,t as W}from"./select-3CVGlYrC.js";import{a as he,c as ge,d as G,o as _e,t as ve}from"./download-CMTzX3rG.js";import{t as ye}from"./switch-IoWE8PbW.js";import{i as be,n as xe,r as Se,t as Ce}from"./tabs-CY8E4r9U.js";import{n as we,t as K}from"./button-D8gVKwe-.js";import{t as q}from"./createLucideIcon-DfJ2oMlA.js";import{a as Te,i as Ee,n as De,r as Oe,t as ke}from"./paths-bkIFVj8h.js";import{F as Ae,I as je,L as Me,c as Ne,t as Pe}from"./layout-NkCTvSyj.js";import{E as Fe,h as Ie,n as Le,r as Re}from"./ai-model-dropdown-prnCk5hq.js";import{t as ze}from"./check-BQNapYaf.js";import{o as Be,r as Ve}from"./useCellActionButton-D7Ruyes-.js";import{s as He}from"./tree-actions-Zg3Ycse4.js";import{f as Ue,n as We}from"./markdown-renderer-CkN_xAjW.js";import{t as Ge}from"./code-BEiQP4pS.js";import{t as Ke}from"./eye-off-CxVozGAC.js";import{t as qe}from"./external-link-UrX9KO36.js";import{t as Je}from"./file-BPBVl9pl.js";import{t as Ye}from"./globe-UdPdIbF7.js";import{n as Xe,r as Ze,t as Qe}from"./youtube-CbJhsgLy.js";import{n as $e}from"./components-DrU8dOzy.js";import{t as et}from"./house-CpsMWsLL.js";import{t as tt}from"./image-wZvTj8WY.js";import{b as nt}from"./write-secret-modal-7DzehGyr.js";import{t as rt}from"./spinner-DyNE-o8o.js";import{c as it,l as at,u as ot}from"./readonly-python-code-DeBED4OB.js";import{Qt as st,Xt as ct,Yt as lt,Zt as ut,tn as dt}from"./input-BZdRe7pb.js";import{t as ft}from"./settings-BpdQZRgT.js";import{t as pt}from"./square-BPmgQFnh.js";import{n as mt}from"./copy-KlhazlhB.js";import{t as ht}from"./use-toast-Wu434mLr.js";import{t as gt}from"./copy-icon-8-a5vovc.js";import{i as _t,r as vt,t as yt}from"./strings-C25fhMR_.js";import{r as J}from"./requests-lt0JK8Jt.js";import{t as bt}from"./shell-Fj8a65ii.js";import{n as xt}from"./useAsyncData-DhhdOGGd.js";import{r as St}from"./useRunCells-CV81rge-.js";import{s as Ct}from"./useInstallPackage-CWcPxSLP.js";import{t as wt}from"./share-BZW3tzEX.js";import{n as Tt,r as Et}from"./markdown-export-DzhB1FrN.js";import{n as Dt,t as Ot}from"./alert-DTaqCu_d.js";import{a as kt}from"./cell-link-D8EbRFJJ.js";import{t as At}from"./icons-CiZ_8zS-.js";import{n as jt}from"./feedback-button-C-ScLxY2.js";import{i as Mt,n as Nt,r as Pt}from"./add-connection-dialog-CNIwGJVL.js";import{t as Ft}from"./github-DQZhN3La.js";import{n as It}from"./marimo-icons-CqliHyTr.js";import{t as Lt}from"./links-CXcpNIM0.js";import{r as Rt,t as zt}from"./hooks-BPw6SVXo.js";var Bt=q(`circle-chevron-down`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 10-4 4-4-4`,key:`894hmk`}]]),Vt=q(`circle-chevron-right`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m10 8 4 4-4 4`,key:`1wy4r4`}]]),Ht=q(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),Ut=q(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),Wt=q(`diamond-plus`,[[`path`,{d:`M12 8v8`,key:`napkw2`}],[`path`,{d:`M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z`,key:`1ey20j`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]]),Gt=q(`fast-forward`,[[`path`,{d:`M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z`,key:`b19h5q`}],[`path`,{d:`M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z`,key:`h7h5ge`}]]),Kt=q(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),qt=q(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),Jt=q(`message-circle-question-mark`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Yt=q(`notebook`,[[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,key:`1nb95v`}],[`path`,{d:`M16 2v20`,key:`rotuqe`}]]),Xt=q(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),Zt=q(`presentation`,[[`path`,{d:`M2 3h20`,key:`91anmk`}],[`path`,{d:`M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3`,key:`2k9sn8`}],[`path`,{d:`m7 21 5-5 5 5`,key:`bip4we`}]]),Qt=q(`share-2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),$t=q(`square-power`,[[`path`,{d:`M12 7v4`,key:`xawao1`}],[`path`,{d:`M7.998 9.003a5 5 0 1 0 8-.005`,key:`1pek45`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),en=q(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]),Y=e(a(),1),X=k();async function tn(e,t){let n=new Blob([t],{type:`text/html`});if(n.size>104857600)throw Error(`File is too large. Maximum size is 100 MB.`);let r=await fetch(`${F.molab}/api/artifacts/pending`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({fileName:e,fileSize:n.size})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e?.error??(r.status===429?`Too many uploads, try again later`:`Failed to prepare the upload`))}let{presignedUrl:i,claimUrl:a}=await r.json();if(!(await fetch(i,{method:`PUT`,body:n})).ok)throw Error(`Failed to upload the notebook export`);return a}var Z=ae(),nn=e=>{let t=(0,X.c)(33),{onClose:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={kind:`idle`},t[0]=r):r=t[0];let[i,a]=(0,Y.useState)(r),{exportAsHTML:o}=J(),s;t[1]===o?s=t[2]:(s=async()=>{a({kind:`publishing`});try{let{contents:e,filename:t}=await o({download:!1,includeCode:!0,files:Ne.INSTANCE.filenames(),layout:await Pe(),assetUrl:`https://cdn.jsdelivr.net/npm/@marimo-team/frontend@{version}/dist`}),n=await tn(t,e);window.open(n,`_blank`,`noopener,noreferrer`),a({kind:`staged`,claimUrl:n})}catch(e){let t=e;a({kind:`failed`,message:t instanceof Error?t.message:`Something went wrong`})}},t[1]=o,t[2]=s);let c=s;if(i.kind===`staged`){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(st,{children:[(0,Z.jsx)(dt,{children:`Finish publishing`}),(0,Z.jsx)(ct,{children:`If the confirmation page didn't open in a new tab, open it below.`})]}),t[3]=e):e=t[3];let r;t[4]===n?r=t[5]:(r=(0,Z.jsx)(K,{"data-testid":`done-share-static-notebook-button`,variant:`secondary`,onClick:n,children:`Done`}),t[4]=n,t[5]=r);let a;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(qe,{size:14,strokeWidth:1.5,className:`mr-2`}),t[6]=a):a=t[6];let o;t[7]===i.claimUrl?o=t[8]:(o=(0,Z.jsx)(K,{asChild:!0,variant:`default`,children:(0,Z.jsxs)(`a`,{"data-testid":`open-claim-page-link`,href:i.claimUrl,target:`_blank`,rel:`noopener noreferrer`,children:[a,`Open confirmation page`]})}),t[7]=i.claimUrl,t[8]=o);let s;return t[9]!==r||t[10]!==o?(s=(0,Z.jsxs)(lt,{className:`sm:max-w-[480px]`,children:[e,(0,Z.jsxs)(ut,{children:[r,o]})]}),t[9]=r,t[10]=o,t[11]=s):s=t[11],s}let l=i.kind===`publishing`,u;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Z.jsx)(dt,{children:`Publish HTML to web`}),t[12]=u):u=t[12];let d;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsxs)(st,{children:[u,(0,Z.jsxs)(ct,{children:[`Publish a static snapshot of this notebook to`,` `,(0,Z.jsx)(`a`,{href:F.molab,target:`_blank`,rel:`noopener noreferrer`,className:`underline`,children:`molab`}),`. Snapshots can be viewed by anyone on the internet.`]})]}),t[13]=d):d=t[13];let f;t[14]!==i.kind||t[15]!==i.message?(f=i.kind===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-destructive`,"data-testid":`share-static-notebook-error`,children:[`Publish failed: `,i.message]}),t[14]=i.kind,t[15]=i.message,t[16]=f):f=t[16];let p;t[17]!==l||t[18]!==n?(p=(0,Z.jsx)(K,{"data-testid":`cancel-share-static-notebook-button`,variant:`secondary`,onClick:n,disabled:l,children:`Cancel`}),t[17]=l,t[18]=n,t[19]=p):p=t[19];let m;t[20]!==l||t[21]!==i.kind?(m=l?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(rt,{className:`mr-2`,size:`small`}),`Snapshotting notebook ...`]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(qe,{size:14,strokeWidth:1.5,className:`mr-2`}),i.kind===`failed`?`Try again`:`Publish`]}),t[20]=l,t[21]=i.kind,t[22]=m):m=t[22];let h;t[23]!==c||t[24]!==l||t[25]!==m?(h=(0,Z.jsx)(K,{"data-testid":`share-static-notebook-button`,variant:`default`,disabled:l,onClick:c,children:m}),t[23]=c,t[24]=l,t[25]=m,t[26]=h):h=t[26];let g;t[27]!==p||t[28]!==h?(g=(0,Z.jsxs)(ut,{children:[p,h]}),t[27]=p,t[28]=h,t[29]=g):g=t[29];let _;return t[30]!==f||t[31]!==g?(_=(0,Z.jsxs)(lt,{className:`sm:max-w-[480px]`,children:[d,f,g]}),t[30]=f,t[31]=g,t[32]=_):_=t[32],_};function rn(){let e=document.getElementsByClassName(P.outputArea);for(let t of e){let e=t.getBoundingClientRect();if(e.bottom>0&&e.top<window.innerHeight){let e=T.findElement(t);if(!e){M.warn(`Could not find HTMLCellId for visible output area`,t);continue}return{cellId:T.parse(e.id)}}}return M.warn(`No visible output area found for scroll anchor`),null}function an(e){if(!e){M.warn(`No scroll anchor provided to restore scroll position`);return}let t=document.getElementById(T.create(e.cellId));if(!t){M.warn(`Could not find cell element to restore scroll position`,e.cellId);return}if(!t.querySelector(`.${P.outputArea}`)){M.warn(`Could not find output area to restore scroll position`,e.cellId);return}t.scrollIntoView({block:`start`,behavior:`auto`})}function on(){let e=(0,X.c)(2),t=i(B),n;return e[0]===t?n=e[1]:(n=()=>{let e=rn();t(t=>({mode:L(t.mode),cellAnchor:e?.cellId??null})),requestAnimationFrame(()=>{requestAnimationFrame(()=>{an(e)})})},e[0]=t,e[1]=n),n}var sn=n(!1),cn=()=>{let e=(0,X.c)(7),{selectedLayout:t}=at(),{setLayoutView:n}=it();if(V()&&!g(`wasm_layouts`))return null;let r;e[0]===n?r=e[1]:(r=e=>n(e),e[0]=n,e[1]=r);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Z.jsx)(me,{className:`min-w-[110px] border-border bg-background`,"data-testid":`layout-select`,children:(0,Z.jsx)(ue,{placeholder:`Select a view`})}),e[2]=i):i=e[2];let a;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(fe,{children:(0,Z.jsxs)(pe,{children:[(0,Z.jsx)(le,{children:`View as`}),ot.map(fn)]})}),e[3]=a):a=e[3];let o;return e[4]!==t||e[5]!==r?(o=(0,Z.jsxs)(W,{"data-testid":`layout-select`,value:t,onValueChange:r,children:[i,a]}),e[4]=t,e[5]=r,e[6]=o):o=e[6],o};function ln(e){let t=un(e);return(0,Z.jsx)(t,{className:`h-4 w-4`})}function un(e){switch(e){case`vertical`:return qt;case`grid`:return Ze;case`slides`:return Zt;default:return _t(e),pt}}function dn(e){return yt.startCase(e)}function fn(e){return(0,Z.jsx)(de,{value:e,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 leading-5`,children:[ln(e),(0,Z.jsx)(`span`,{children:dn(e)})]})},e)}var pn=[`html`,`markdown`,`ipynb`,`pdf`,`script`,`png`],mn=[`pymdown`,`qmd`,`mystmd`,`mdx`],hn=[`topological`,`top-down`],gn=[`document`,`slides`],_n=[`source`,`flat`];function vn(e){return typeof e==`string`&&pn.some(t=>t===e)}var Q={html:{includeCode:!0},markdown:{flavor:null},ipynb:{sortMode:`topological`,includeOutputs:!1},pdf:{preset:`document`,includeInputs:!0,includeOutputs:!0,webpdf:!0},script:{type:`source`}};function $(e,t){return e.default(t).catch(t)}function yn(e){return D(e).optional().catch(void 0)}var bn=D({html:yn({includeCode:$(E(),Q.html.includeCode)}),markdown:yn({flavor:$(O(mn).nullable(),Q.markdown.flavor)}),ipynb:yn({sortMode:$(O(hn),Q.ipynb.sortMode),includeOutputs:$(E(),Q.ipynb.includeOutputs)}),pdf:yn({preset:$(O(gn),Q.pdf.preset),includeInputs:$(E(),Q.pdf.includeInputs),includeOutputs:$(E(),Q.pdf.includeOutputs),webpdf:$(E(),Q.pdf.webpdf)}),script:yn({type:$(O(_n),Q.script.type)})}).catch({});function xn(e,t){let n={...e},r=r=>{n[r]={...e[r],...t[r]}};for(let e of Object.keys(t))r(e);return n}function Sn(e){return xn(Q,bn.parse(e))}var Cn=m({toSerializable:e=>e,fromSerializable:Sn}),wn=H(`marimo:export:options:v1`,Q,Cn,{getOnInit:!0}),Tn=H(`marimo:export:last-format:v1`,`html`,m({toSerializable:e=>e,fromSerializable:e=>vn(e)?e:`html`}),{getOnInit:!0}),En={html:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},markdown:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},ipynb:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},pdf:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},script:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1},png:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1}};function Dn(e,t){return e===`wasm`&&t===`pdf`}function On({format:e,options:t,runtime:n,filename:r,availability:i}){let a=e===`script`&&t.script.type===`source`?{...En.script,requiresNamedNotebookOnServer:!0}:En[e],o=Dn(n,e);if(n===`wasm`&&a.requiresServerRuntime)return{available:o,reason:{type:`wasm-runtime`}};if(n===`server`&&a.requiresNamedNotebookOnServer&&!r)return{available:!1,reason:{type:`notebook-must-be-named`}};if(n===`wasm`||!a.checksServerAvailability)return{available:!0};if(i.status===`pending`)return{available:!1,reason:{type:`checking-requirements`}};if(i.status===`error`||!i.data)return{available:!0,availabilityCheckFailed:!0};let s=i.data.formats.find(t=>t.format===e);return s?s.dependenciesAvailable?{available:!0}:s.missingPackages.length>0?{available:!1,reason:{type:`missing-packages`,packages:s.missingPackages}}:s.missingSetup.length>0?{available:!1,reason:{type:`missing-setup`,requirements:s.missingSetup}}:{available:!0,availabilityCheckFailed:!0}:{available:!0,availabilityCheckFailed:!0}}function kn(e,t){return e.map(e=>({value:e,...t[e]}))}var An=kn([`automatic`,...mn],{automatic:{label:`Automatic`,description:`Chooses a format from the notebook filename. Defaults to Markdown (.md).`},pymdown:{label:`Markdown (.md)`,description:`Creates a .md file with Python code blocks.`},qmd:{label:`Quarto (.qmd)`,description:`Creates a .qmd file for Quarto.`},mystmd:{label:`MyST (.myst.md)`,description:`Creates a .myst.md file for MyST.`},mdx:{label:`MDX (.mdx)`,description:`Creates a .mdx file for MDX.`}}),jn=kn(hn,{"top-down":{label:`Top to bottom`,description:`Keeps cells in the same order as this notebook.`},topological:{label:`Dependency order`,description:`Reorders cells so each cell appears after the cells it depends on.`}}),Mn=kn(gn,{document:{label:`Document`,description:`Creates pages for reading or printing.`},slides:{label:`Slides`,description:`Creates presentation slides from the notebook.`}}),Nn=kn([`browser`,`latex`],{browser:{label:`Browser`,description:`Uses browser rendering to preserve the notebook's visual output.`},latex:{label:`LaTeX first`,description:`Uses Pandoc and TeX when available, then falls back to browser rendering.`}}),Pn=kn(_n,{source:{label:`Notebook source`,description:`Downloads the saved notebook source for continued editing in marimo.`},flat:{label:`Flat script`,description:`Reorders cells so the Python script runs from top to bottom.`}}),Fn={html:{label:`HTML`,actionLabel:`Export HTML`,description:`Save the current notebook as an HTML page.`,Icon:Ye,Options:In},markdown:{label:`Markdown`,actionLabel:`Export Markdown`,description:`Save code and text in a Markdown-based file. Cell outputs are not included.`,Icon:Oe,Options:Ln},ipynb:{label:`Jupyter`,actionLabel:`Export Jupyter notebook`,description:`Open the notebook in Jupyter and other compatible tools.`,Icon:Yt,Options:Rn},pdf:{label:`PDF`,actionLabel:`Export PDF`,description:`Save the notebook as a PDF for printing or sharing.`,Icon:Je,Options:zn},script:{label:`Python`,actionLabel:`Export flat script`,description:`Save the notebook as a Python file.`,Icon:Ge,Options:Bn},png:{label:`PNG`,actionLabel:`Export PNG`,description:`Capture the current app view as an image.`,Icon:tt,Options:Vn}};function In(e){let t=(0,X.c)(7),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a={checked:`Includes code cells in the webpage.`,unchecked:`Leaves code cells out of the webpage.`},t[0]=a):a=t[0];let o;t[1]===r?o=t[2]:(o=e=>r(`html`,{includeCode:e}),t[1]=r,t[2]=o);let s;return t[3]!==i||t[4]!==n.html.includeCode||t[5]!==o?(s=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Un,{label:`Include code`,descriptions:a,checked:n.html.includeCode,disabled:i,onCheckedChange:o})}),t[3]=i,t[4]=n.html.includeCode,t[5]=o,t[6]=s):s=t[6],s}function Ln(e){let t=(0,X.c)(6),{options:n,updateOptions:r,disabled:i}=e,a=n.markdown.flavor??`automatic`,o;t[0]===r?o=t[1]:(o=e=>r(`markdown`,{flavor:e===`automatic`?null:e}),t[0]=r,t[1]=o);let s;return t[2]!==i||t[3]!==a||t[4]!==o?(s=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Kn,{label:`Format`,value:a,disabled:i,onValueChange:o,options:An})}),t[2]=i,t[3]=a,t[4]=o,t[5]=s):s=t[5],s}function Rn(e){let t=(0,X.c)(16),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`ipynb`,{sortMode:e}),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n.ipynb.sortMode||t[4]!==a?(o=(0,Z.jsx)(Wn,{label:`Cell order`,value:n.ipynb.sortMode,disabled:i,onValueChange:a,options:jn}),t[2]=i,t[3]=n.ipynb.sortMode,t[4]=a,t[5]=o):o=t[5];let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s={checked:`Keeps the outputs currently shown in the notebook.`,unchecked:`Leaves cell outputs out of the Jupyter notebook.`},t[6]=s):s=t[6];let c;t[7]===r?c=t[8]:(c=e=>r(`ipynb`,{includeOutputs:e}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==n.ipynb.includeOutputs||t[11]!==c?(l=(0,Z.jsx)(Un,{label:`Include outputs`,descriptions:s,checked:n.ipynb.includeOutputs,disabled:i,onCheckedChange:c}),t[9]=i,t[10]=n.ipynb.includeOutputs,t[11]=c,t[12]=l):l=t[12];let u;return t[13]!==o||t[14]!==l?(u=(0,Z.jsxs)(Hn,{children:[o,l]}),t[13]=o,t[14]=l,t[15]=u):u=t[15],u}function zn(e){let t=(0,X.c)(30),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`pdf`,{preset:e}),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n.pdf.preset||t[4]!==a?(o=(0,Z.jsx)(Wn,{label:`Layout`,value:n.pdf.preset,disabled:i,onValueChange:a,options:Mn}),t[2]=i,t[3]=n.pdf.preset,t[4]=a,t[5]=o):o=t[5];let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s={checked:`Includes code cells in the PDF.`,unchecked:`Leaves code cells out of the PDF.`},t[6]=s):s=t[6];let c;t[7]===r?c=t[8]:(c=e=>r(`pdf`,{includeInputs:e}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==n.pdf.includeInputs||t[11]!==c?(l=(0,Z.jsx)(Un,{label:`Include code`,descriptions:s,checked:n.pdf.includeInputs,disabled:i,onCheckedChange:c}),t[9]=i,t[10]=n.pdf.includeInputs,t[11]=c,t[12]=l):l=t[12];let u;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(u={checked:`Keeps the outputs currently shown in the notebook.`,unchecked:`Leaves cell outputs out of the PDF.`},t[13]=u):u=t[13];let d;t[14]===r?d=t[15]:(d=e=>r(`pdf`,{includeOutputs:e}),t[14]=r,t[15]=d);let f;t[16]!==i||t[17]!==n.pdf.includeOutputs||t[18]!==d?(f=(0,Z.jsx)(Un,{label:`Include outputs`,descriptions:u,checked:n.pdf.includeOutputs,disabled:i,onCheckedChange:d}),t[16]=i,t[17]=n.pdf.includeOutputs,t[18]=d,t[19]=f):f=t[19];let p;t[20]!==i||t[21]!==n.pdf.preset||t[22]!==n.pdf.webpdf||t[23]!==r?(p=n.pdf.preset===`document`?(0,Z.jsx)(Wn,{label:`Method`,value:n.pdf.webpdf?`browser`:`latex`,disabled:i,onValueChange:e=>r(`pdf`,{webpdf:e===`browser`}),options:Nn}):null,t[20]=i,t[21]=n.pdf.preset,t[22]=n.pdf.webpdf,t[23]=r,t[24]=p):p=t[24];let m;return t[25]!==o||t[26]!==l||t[27]!==f||t[28]!==p?(m=(0,Z.jsxs)(Hn,{children:[o,l,f,p]}),t[25]=o,t[26]=l,t[27]=f,t[28]=p,t[29]=m):m=t[29],m}function Bn(e){let t=(0,X.c)(6),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`script`,{type:e}),t[0]=r,t[1]=a);let o;return t[2]!==i||t[3]!==n.script.type||t[4]!==a?(o=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Wn,{label:`Format`,value:n.script.type,disabled:i,onValueChange:a,options:Pn})}),t[2]=i,t[3]=n.script.type,t[4]=a,t[5]=o):o=t[5],o}function Vn(){return null}function Hn(e){let t=(0,X.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,Z.jsx)(`div`,{className:`divide-y rounded-md border`,children:n}),t[0]=n,t[1]=r),r}function Un(e){let t=(0,X.c)(26),{label:n,descriptions:r,descriptionOverride:i,checked:a,disabled:o,onCheckedChange:s}=e,c=(0,Y.useId)(),l=`${c}-description`,u=i??(a?r.checked:r.unchecked),d;t[0]===i?d=t[1]:(d=i?[i]:[],t[0]=i,t[1]=d);let f;t[2]!==r.checked||t[3]!==r.unchecked||t[4]!==d?(f=[r.checked,r.unchecked,...d],t[2]=r.checked,t[3]=r.unchecked,t[4]=d,t[5]=f):f=t[5];let p=f,m;t[6]!==c||t[7]!==n?(m=(0,Z.jsx)(`label`,{htmlFor:c,className:`text-sm font-medium leading-5`,children:n}),t[6]=c,t[7]=n,t[8]=m):m=t[8];let h;t[9]!==u||t[10]!==l||t[11]!==p?(h=(0,Z.jsx)(Yn,{id:l,description:u,possibleDescriptions:p}),t[9]=u,t[10]=l,t[11]=p,t[12]=h):h=t[12];let g;t[13]!==m||t[14]!==h?(g=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[m,h]}),t[13]=m,t[14]=h,t[15]=g):g=t[15];let _;t[16]!==a||t[17]!==l||t[18]!==o||t[19]!==c||t[20]!==n||t[21]!==s?(_=(0,Z.jsx)(ye,{id:c,size:`sm`,checked:a,disabled:o,onCheckedChange:s,"aria-label":n,"aria-describedby":l}),t[16]=a,t[17]=l,t[18]=o,t[19]=c,t[20]=n,t[21]=s,t[22]=_):_=t[22];let v;return t[23]!==g||t[24]!==_?(v=(0,Z.jsxs)(`div`,{className:`flex min-h-14 items-center justify-between gap-4 px-3 py-2`,children:[g,_]}),t[23]=g,t[24]=_,t[25]=v):v=t[25],v}function Wn(e){let t=(0,X.c)(31),{label:n,value:r,disabled:i,onValueChange:a,options:o}=e,s=(0,Y.useId)(),c=`${s}-description`,l;t[0]!==o||t[1]!==r?(l=o.find(e=>e.value===r)?.description,t[0]=o,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===n?d=t[4]:(d=(0,Z.jsx)(`div`,{className:`text-sm font-medium leading-5`,children:n}),t[3]=n,t[4]=d);let f=u??``,p;t[5]===o?p=t[6]:(p=o.map(Gn),t[5]=o,t[6]=p);let m;t[7]!==c||t[8]!==f||t[9]!==p?(m=(0,Z.jsx)(Yn,{id:c,description:f,possibleDescriptions:p}),t[7]=c,t[8]=f,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==d||t[12]!==m?(h=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[d,m]}),t[11]=d,t[12]=m,t[13]=h):h=t[13];let g;t[14]===a?g=t[15]:(g=e=>a(e),t[14]=a,t[15]=g);let v;if(t[16]!==s||t[17]!==o){let e;t[19]===s?e=t[20]:(e=(e,t)=>{let n=`${s}-${t}`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(_,{id:n,value:e.value}),(0,Z.jsx)(`label`,{htmlFor:n,className:`text-sm`,children:e.label})]},e.value)},t[19]=s,t[20]=e),v=o.map(e),t[16]=s,t[17]=o,t[18]=v}else v=t[18];let y;t[21]!==c||t[22]!==i||t[23]!==n||t[24]!==g||t[25]!==v||t[26]!==r?(y=(0,Z.jsx)(x,{value:r,onValueChange:g,className:`flex shrink-0 flex-wrap gap-x-5 gap-y-2 sm:justify-end`,"aria-label":n,"aria-describedby":c,disabled:i,children:v}),t[21]=c,t[22]=i,t[23]=n,t[24]=g,t[25]=v,t[26]=r,t[27]=y):y=t[27];let b;return t[28]!==h||t[29]!==y?(b=(0,Z.jsxs)(`div`,{className:`flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4`,children:[h,y]}),t[28]=h,t[29]=y,t[30]=b):b=t[30],b}function Gn(e){return e.description}function Kn(e){let t=(0,X.c)(34),{label:n,value:r,disabled:i,onValueChange:a,options:o}=e,s=(0,Y.useId)(),c=`${s}-description`,l;t[0]!==o||t[1]!==r?(l=o.find(e=>e.value===r)?.description,t[0]=o,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]!==s||t[4]!==n?(d=(0,Z.jsx)(`label`,{htmlFor:s,className:`text-sm font-medium leading-5`,children:n}),t[3]=s,t[4]=n,t[5]=d):d=t[5];let f=u??``,p;t[6]===o?p=t[7]:(p=o.map(Jn),t[6]=o,t[7]=p);let m;t[8]!==c||t[9]!==f||t[10]!==p?(m=(0,Z.jsx)(Yn,{id:c,description:f,possibleDescriptions:p}),t[8]=c,t[9]=f,t[10]=p,t[11]=m):m=t[11];let h;t[12]!==d||t[13]!==m?(h=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[d,m]}),t[12]=d,t[13]=m,t[14]=h):h=t[14];let g;t[15]===a?g=t[16]:(g=e=>a(e),t[15]=a,t[16]=g);let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,Z.jsx)(ue,{}),t[17]=_):_=t[17];let v;t[18]!==c||t[19]!==s?(v=(0,Z.jsx)(me,{id:s,"aria-describedby":c,className:`h-8 w-full shrink-0 sm:w-44`,children:_}),t[18]=c,t[19]=s,t[20]=v):v=t[20];let y;t[21]===o?y=t[22]:(y=o.map(qn),t[21]=o,t[22]=y);let b;t[23]===y?b=t[24]:(b=(0,Z.jsx)(fe,{children:y}),t[23]=y,t[24]=b);let x;t[25]!==i||t[26]!==b||t[27]!==g||t[28]!==v||t[29]!==r?(x=(0,Z.jsxs)(W,{value:r,disabled:i,onValueChange:g,children:[v,b]}),t[25]=i,t[26]=b,t[27]=g,t[28]=v,t[29]=r,t[30]=x):x=t[30];let ee;return t[31]!==x||t[32]!==h?(ee=(0,Z.jsxs)(`div`,{className:`flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4`,children:[h,x]}),t[31]=x,t[32]=h,t[33]=ee):ee=t[33],ee}function qn(e){return(0,Z.jsx)(de,{value:e.value,children:e.label},e.value)}function Jn(e){return e.description}function Yn(e){let t=(0,X.c)(15),{id:n,description:r,possibleDescriptions:i}=e,a;t[0]===i?a=t[1]:(a=new Set(i),t[0]=i,t[1]=a);let o;t[2]===a?o=t[3]:(o=[...a],t[2]=a,t[3]=o);let s;t[4]!==r||t[5]!==o?(s=o.filter(e=>e!==r),t[4]=r,t[5]=o,t[6]=s):s=t[6];let c=s,l;t[7]!==r||t[8]!==n?(l=(0,Z.jsx)(`p`,{id:n,"aria-live":`polite`,className:`col-start-1 row-start-1`,children:r}),t[7]=r,t[8]=n,t[9]=l):l=t[9];let u;t[10]===c?u=t[11]:(u=c.map(Xn),t[10]=c,t[11]=u);let d;return t[12]!==l||t[13]!==u?(d=(0,Z.jsxs)(`div`,{className:`mt-0.5 grid text-xs leading-4 text-muted-foreground`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14],d}function Xn(e){return(0,Z.jsx)(`p`,{"aria-hidden":!0,className:`invisible col-start-1 row-start-1`,children:e},e)}var Zn={"playwright-chromium":{description:`PDF export requires Playwright Chromium.`}};function Qn(e){let t=(0,X.c)(10),{status:n}=e;if(n.available&&!n.availabilityCheckFailed)return null;if(n.reason?.type===`checking-requirements`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`ml-auto flex shrink-0`,children:[(0,Z.jsx)(rt,{size:`small`,className:`size-3`}),(0,Z.jsx)(`span`,{className:`sr-only`,children:`Checking requirements`})]}),t[0]=e):e=t[0],e}let r=n.availabilityCheckFailed?`Requirements unknown`:`Unavailable`,i=n.availabilityCheckFailed?`text-muted-foreground`:`text-(--yellow-11)`,a;t[1]===i?a=t[2]:(a=U(`size-3`,i),t[1]=i,t[2]=a);let o;t[3]===a?o=t[4]:(o=(0,Z.jsx)(v,{className:a}),t[3]=a,t[4]=o);let s;t[5]===r?s=t[6]:(s=(0,Z.jsx)(`span`,{className:`sr-only`,children:r}),t[5]=r,t[6]=s);let c;return t[7]!==o||t[8]!==s?(c=(0,Z.jsxs)(`span`,{className:`ml-auto flex shrink-0`,children:[o,s]}),t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function $n(e){let t=(0,X.c)(7),{format:n,formatLabel:r,status:i,onInstall:a,isInstalling:o}=e,s=o!==void 0&&o;if(i.availabilityCheckFailed){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`div`,{className:`mb-2.5`,children:(0,Z.jsx)(er,{children:`Couldn't check whether this export is available. You can still try it.`})}),t[0]=e):e=t[0],e}if(!i.reason)return null;let c;return t[1]!==n||t[2]!==r||t[3]!==s||t[4]!==a||t[5]!==i.reason?(c=(0,Z.jsx)(`div`,{className:`mb-2.5`,children:(0,Z.jsx)(tr,{format:n,formatLabel:r,reason:i.reason,onInstall:a,isInstalling:s})}),t[1]=n,t[2]=r,t[3]=s,t[4]=a,t[5]=i.reason,t[6]=c):c=t[6],c}function er(e){let t=(0,X.c)(9),{children:n,onInstall:r,isInstalling:i}=e,a=i!==void 0&&i,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Z.jsx)(v,{className:`size-4 shrink-0`}),t[0]=o):o=t[0];let s;t[1]===n?s=t[2]:(s=(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`,children:n}),t[1]=n,t[2]=s);let c;t[3]!==a||t[4]!==r?(c=r?(0,Z.jsxs)(K,{type:`button`,variant:`outline`,size:`xs`,className:`shrink-0 border-input bg-background text-foreground hover:border-input hover:bg-muted hover:text-foreground`,disabled:a,"aria-busy":a,onClick:r,children:[a?(0,Z.jsx)(rt,{size:`small`,className:`mr-1.5 size-3.5`}):(0,Z.jsx)(Ht,{className:`mr-1.5 size-3.5`}),`Install`]}):null,t[3]=a,t[4]=r,t[5]=c):c=t[5];let l;return t[6]!==s||t[7]!==c?(l=(0,Z.jsxs)(Ot,{variant:`warning`,className:`flex items-center gap-2.5 px-3 py-2 text-(--yellow-12) has-[svg]:pl-3 [&>svg]:static [&>svg+div]:translate-y-0`,children:[o,(0,Z.jsxs)(Dt,{className:`flex min-w-0 flex-1 items-center gap-3 text-sm leading-5`,children:[s,c]})]}),t[6]=s,t[7]=c,t[8]=l):l=t[8],l}function tr(e){let t=(0,X.c)(22),{format:n,formatLabel:r,reason:i,onInstall:a,isInstalling:o}=e;switch(i.type){case`checking-requirements`:{let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(rt,{className:`size-4 shrink-0`,size:`small`}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,Z.jsxs)(Ot,{role:`status`,variant:`info`,className:`flex items-center gap-2.5 p-3 has-[svg]:pl-3 [&>svg]:static [&>svg+div]:translate-y-0`,children:[e,(0,Z.jsxs)(Dt,{className:`min-w-0 flex-1 text-sm leading-5`,children:[`Checking `,r,` requirements…`]})]}),t[1]=r,t[2]=n),n}case`notebook-must-be-named`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(er,{children:`Name and save this notebook before exporting.`}),t[3]=e):e=t[3],e}case`missing-packages`:{let e;t[4]===i.packages?e=t[5]:(e=i.packages.join(`, `),t[4]=i.packages,t[5]=e);let n;t[6]===e?n=t[7]:(n=(0,Z.jsx)(`code`,{className:`break-words font-mono`,children:e}),t[6]=e,t[7]=n);let s;return t[8]!==r||t[9]!==o||t[10]!==a||t[11]!==n?(s=(0,Z.jsxs)(er,{onInstall:a,isInstalling:o,children:[r,` export requires`,` `,n,`.`]}),t[8]=r,t[9]=o,t[10]=a,t[11]=n,t[12]=s):s=t[12],s}case`missing-setup`:{let e;t[13]!==a||t[14]!==i.requirements?(e=a?i.requirements.map(rr).join(` `):(0,Z.jsx)(`span`,{className:`block min-w-0`,children:i.requirements.map(nr)}),t[13]=a,t[14]=i.requirements,t[15]=e):e=t[15];let n;return t[16]!==o||t[17]!==a||t[18]!==e?(n=(0,Z.jsx)(er,{onInstall:a,isInstalling:o,children:e}),t[16]=o,t[17]=a,t[18]=e,t[19]=n):n=t[19],n}case`wasm-runtime`:{let e=n===`pdf`?`Use your browser's print dialog to save the current app view as a PDF.`:`Open this notebook in a local marimo session to use this export.`,r;return t[20]===e?r=t[21]:(r=(0,Z.jsx)(er,{children:e}),t[20]=e,t[21]=r),r}default:vt(i)}}function nr(e){let t=Zn[e.name];return(0,Z.jsxs)(`span`,{className:`block`,children:[t.description,(0,Z.jsx)(`code`,{className:`mt-1 block break-all font-mono`,children:e.command})]},e.name)}function rr(e){return Zn[e.name].description}function ir(e){return e.endsWith(`.myst.md`)?`mystmd`:e.endsWith(`.qmd`)?`qmd`:e.endsWith(`.mdx`)?`mdx`:`pymdown`}function ar(e,t){let n=t??ir(e),r=Tt[n],i=Et.find(t=>e.endsWith(t)),a=G.withoutExtension(e);i&&(a=e.slice(0,-i.length));let o=`${a}.${r}`;return o===e?`${e.slice(0,-(r.length+1))}.export.${r}`:o}function or(e){return Object.entries(e).flatMap(([e,t])=>t===null?[]:t===!0?[`--${e}`]:t===!1?[`--no-${e}`]:[`--${e}=${t}`])}function sr(e){return e.preset===`document`?e.webpdf:null}var cr={html:{subcommand:`html`,flags:({html:e})=>({"include-code":e.includeCode}),outputFilename:e=>G.toHTML(e)},markdown:{subcommand:`md`,flags:({markdown:e})=>({flavor:e.flavor}),outputFilename:(e,{markdown:t})=>ar(e,t.flavor)},ipynb:{subcommand:`ipynb`,flags:({ipynb:e})=>({sort:e.sortMode,"include-outputs":e.includeOutputs}),outputFilename:e=>G.toIPYNB(e)},pdf:{subcommand:`pdf`,flags:({pdf:e})=>({as:e.preset,"include-inputs":e.includeInputs,"include-outputs":e.includeOutputs,webpdf:sr(e)}),outputFilename:e=>G.toPDF(e)},script:{subcommand:`script`,flags:()=>({}),outputFilename:e=>`${G.withoutExtension(e)}.script.py`}};function lr({format:e,filename:t,options:n}){if(e===`png`||e===`script`&&n.script.type===`source`||!t)return null;let r=cr[e];return[`marimo`,`export`,r.subcommand,bt(t),...or(r.flags(n)),`-o`,bt(r.outputFilename(t,n))].join(` `)}async function ur(e){let{exportOptions:t,captureOutputs:n,downloadPDF:r}=e;t.includeOutputs&&await n(),await r(t)}async function dr({format:e,options:t,requests:n,sourceFilename:r,htmlFiles:i,getLayout:a,captureOutputs:o,capturePNG:s,downloadFile:c}){switch(e){case`html`:c(await n.exportAsHTML({download:!1,files:i,includeCode:t.html.includeCode,layout:await a()}));return;case`markdown`:c(await n.exportAsMarkdown({download:!1,flavor:t.markdown.flavor}));return;case`ipynb`:t.ipynb.includeOutputs&&await o(),c(await n.exportAsIPYNB({download:!1,sortMode:t.ipynb.sortMode,includeOutputs:t.ipynb.includeOutputs}));return;case`pdf`:await ur({exportOptions:t.pdf,captureOutputs:o,downloadPDF:async e=>{c(await n.exportAsPDF(e))}});return;case`script`:if(t.script.type===`source`){c({contents:(await n.readCode()).contents,filename:r,mediaType:`text/plain`});return}c(await n.exportAsScript({download:!1}));return;case`png`:await s();return;default:vt(e)}}var fr={source:{actionLabel:`Export notebook source`,progressLabel:`notebook source`},flat:{actionLabel:`Export flat script`,progressLabel:`flat script`}};function pr(e,t){if(e===`wasm`)return{status:`success`,data:null};switch(t.status){case`pending`:case`loading`:return{status:`pending`};case`error`:return{status:`error`};case`success`:return{status:`success`,data:t.data}}}function mr(e,t){return e===`server`&&t?De.basename(t):G.toPY(document.title)}function hr({usesBrowserPrint:e,hasCommand:t,format:n,isNotebookSource:r}){return e?`Uses the browser's print settings for page size and filename.`:t?`Uses the current session state. The copied command exports the saved notebook.`:n!==`png`&&!r?`Save the notebook to copy an equivalent shell command.`:null}function gr(e){let n=kt(),[r,i]=t(wn),[a,o]=t(Tn),[s,c]=(0,Y.useState)(e??a),l=V()?`wasm`:`server`,u=J(),d=I(),[f,p]=(0,Y.useState)(!1),m=xt(async()=>l===`wasm`?null:u.getExportAvailability(),[l,u]),h=pr(l,m),g=e=>On({format:e,options:r,runtime:l,filename:n,availability:h}),_=g(s),v=d&&(_.reason?.type===`missing-packages`||_.reason?.type===`missing-setup`),y=pn.map(e=>({format:e,status:g(e)})),b=Dn(l,s),x=Fn[s],ee=s===`script`&&r.script.type===`source`,{actionLabel:S,progressLabel:te}=s===`script`?fr[r.script.type]:{actionLabel:x.actionLabel,progressLabel:x.label},C=b?null:lr({format:s,filename:n,options:r}),w=hr({usesBrowserPrint:b,hasCommand:!!C,format:s,isNotebookSource:ee});return(0,Y.useEffect)(()=>{e&&o(e)},[e,o]),{formats:y,options:r,selected:{format:s,status:_,usesBrowserPrint:b,actionLabel:S,command:C,footerDescription:w},exportRequest:{format:s,options:r,sourceFilename:mr(l,n),available:_.available,usesBrowserPrint:b,progressLabel:te},selectFormat:e=>{vn(e)&&(c(e),o(e))},updateOptions:(e,t)=>{i(n=>{let r={...n};return r[e]={...n[e],...t},r})},canInstall:v,isInstalling:f,installRequirements:async()=>{if(!(!v||f||s===`png`)){p(!0);try{let e=await u.installExportRequirements({format:s});m.setData(e)}catch{}finally{p(!1)}}}}}async function _r(e){let t=document.getElementById(`App`);if(!t){let e=`The current app view could not be captured.`;throw ht({title:`Failed to download as PNG`,description:e,variant:`danger`}),Error(e)}let n=e?.style.visibility,r=e?.classList.contains(`print:hidden`);if(!await _e({element:t,filename:document.title,prepare:()=>{let t=ve();return e&&(e.classList.add(`print:hidden`),e.style.visibility=`hidden`),()=>{t(),e&&(r||e.classList.remove(`print:hidden`),e.style.visibility=n??``)}}}))throw Error(`Failed to capture the current app view.`)}function vr(e){e(),requestAnimationFrame(()=>{setTimeout(()=>{window.print()},0)})}function yr({format:e,options:t,sourceFilename:n,available:r,usesBrowserPrint:i,progressLabel:a,onClose:o}){let s=J(),c=Rt(),[l,u]=(0,Y.useState)(!1),d=(0,Y.useRef)(null),f=(0,Y.useRef)(!0);(0,Y.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]);let p=async e=>{await zt({takeScreenshots:()=>c({progress:e}),updateCellOutputs:s.updateCellOutputs})},m=async()=>{await R(()=>_r(d.current?.parentElement??null))};return{dialogRef:d,isExporting:l,submit:async()=>{if(!(!r||l)){if(i){vr(o);return}u(!0);try{await ge(`Exporting ${a}…`,async r=>{await dr({format:e,options:t,requests:s,sourceFilename:n,htmlFiles:Ne.INSTANCE.filenames(),getLayout:Pe,captureOutputs:()=>p(r),capturePNG:m,downloadFile:he})}),f.current&&o()}catch(e){M.error(`Export failed`,e)}finally{f.current&&u(!1)}}}}}function br(e){let t=(0,X.c)(15),{initialFormat:n,onClose:r}=e,i=gr(n),a,o,s;t[0]===i?(a=t[1],o=t[2],s=t[3]):({exportRequest:a,selectFormat:o,...s}=i,t[0]=i,t[1]=a,t[2]=o,t[3]=s);let c;t[4]!==a||t[5]!==r?(c={...a,onClose:r},t[4]=a,t[5]=r,t[6]=c):c=t[6];let l=yr(c),u;t[7]!==l||t[8]!==o||t[9]!==s?(u=e=>{!l.isExporting&&!s.isInstalling&&o(e)},t[7]=l,t[8]=o,t[9]=s,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==s||t[13]!==u?(d={...s,...l,selectFormat:u},t[11]=l,t[12]=s,t[13]=u,t[14]=d):d=t[14],d}var xr=`(min-width: 640px)`,Sr=e=>{let t=(0,X.c)(75),{initialFormat:n,onClose:r,returnFocusRef:i}=e,a;t[0]!==n||t[1]!==r?(a={initialFormat:n,onClose:r},t[0]=n,t[1]=r,t[2]=a):a=t[2];let{dialogRef:o,isExporting:s,isInstalling:c,canInstall:l,formats:u,options:d,selected:f,selectFormat:p,updateOptions:m,installRequirements:h,submit:g}=br(a),_=s||c,v=ce(xr),{format:y,status:b,usesBrowserPrint:x,actionLabel:ee,command:S,footerDescription:te}=f,C=Fn[y],w=C.Options,ne;t[3]===i?ne=t[4]:(ne=i?{onCloseAutoFocus:e=>{e.preventDefault(),i.current?.focus()}}:{},t[3]=i,t[4]=ne);let T=ne,re;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,Z.jsxs)(st,{className:`border-b px-5 py-4 pr-12`,children:[(0,Z.jsx)(dt,{children:`Export notebook`}),(0,Z.jsx)(ct,{children:`Choose a format and adjust its options.`})]}),t[5]=re):re=t[5];let E=v?`vertical`:`horizontal`,D;if(t[6]!==u||t[7]!==_){let e;t[9]===_?e=t[10]:(e=e=>{let{format:t,status:n}=e,r=Fn[t];return(0,Z.jsxs)(be,{value:t,disabled:_,className:`min-w-0 justify-start gap-2 px-2.5 py-2 text-xs data-[state=active]:shadow-xs sm:w-full sm:text-sm`,"data-testid":`export-format-${t}`,children:[(0,Z.jsx)(r.Icon,{className:`size-3.5 shrink-0`,strokeWidth:1.5}),(0,Z.jsx)(`span`,{className:`truncate`,children:r.label}),(0,Z.jsx)(Qn,{status:n})]},t)},t[9]=_,t[10]=e),D=u.map(e),t[6]=u,t[7]=_,t[8]=D}else D=t[8];let O;t[11]===D?O=t[12]:(O=(0,Z.jsx)(Se,{"aria-label":`Export format`,className:`grid max-h-none shrink-0 grid-cols-2 items-stretch justify-start gap-1 overflow-auto rounded-none border-b bg-muted/20 p-2 min-[360px]:grid-cols-3 sm:flex sm:h-full sm:flex-col sm:border-b-0 sm:border-r`,children:D}),t[11]=D,t[12]=O);let k;if(t[13]!==w||t[14]!==l||t[15]!==C.description||t[16]!==C.label||t[17]!==y||t[18]!==u||t[19]!==h||t[20]!==_||t[21]!==c||t[22]!==d||t[23]!==b||t[24]!==m||t[25]!==x){let e;t[27]!==w||t[28]!==l||t[29]!==C.description||t[30]!==C.label||t[31]!==y||t[32]!==h||t[33]!==_||t[34]!==c||t[35]!==d||t[36]!==b||t[37]!==m||t[38]!==x?(e=e=>{let{format:t}=e;return(0,Z.jsxs)(xe,{value:t,className:`mt-0 min-h-0 min-w-0 overflow-y-auto px-4 py-3`,children:[(0,Z.jsxs)(`div`,{className:`mb-3`,children:[(0,Z.jsx)(`h3`,{className:`text-base font-semibold`,children:C.label}),(0,Z.jsx)(`p`,{className:`mt-0.5 text-sm text-muted-foreground`,children:C.description})]}),(0,Z.jsx)($n,{format:y,formatLabel:C.label,status:b,onInstall:l?h:void 0,isInstalling:c}),x?null:(0,Z.jsx)(w,{options:d,updateOptions:m,disabled:_})]},t)},t[27]=w,t[28]=l,t[29]=C.description,t[30]=C.label,t[31]=y,t[32]=h,t[33]=_,t[34]=c,t[35]=d,t[36]=b,t[37]=m,t[38]=x,t[39]=e):e=t[39],k=u.map(e),t[13]=w,t[14]=l,t[15]=C.description,t[16]=C.label,t[17]=y,t[18]=u,t[19]=h,t[20]=_,t[21]=c,t[22]=d,t[23]=b,t[24]=m,t[25]=x,t[26]=k}else k=t[26];let A;t[40]!==y||t[41]!==p||t[42]!==E||t[43]!==O||t[44]!==k?(A=(0,Z.jsxs)(Ce,{value:y,onValueChange:p,orientation:E,className:`flex min-h-0 min-w-0 flex-col overflow-hidden sm:grid sm:grid-cols-[168px_minmax(0,1fr)]`,children:[O,k]}),t[40]=y,t[41]=p,t[42]=E,t[43]=O,t[44]=k,t[45]=A):A=t[45];let j;t[46]===S?j=t[47]:(j=S?(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border bg-background px-2.5 py-2 font-mono text-xs`,children:[(0,Z.jsx)(`span`,{className:`select-none text-muted-foreground`,"aria-hidden":!0,children:`$`}),(0,Z.jsx)(`code`,{className:`min-w-0 flex-1 overflow-x-auto whitespace-nowrap`,"data-testid":`export-cli-command`,"aria-label":`Equivalent POSIX shell command`,children:S}),(0,Z.jsx)(gt,{value:S,className:`size-3.5`,buttonClassName:U(we({variant:`ghost`,size:`icon`}),`shrink-0`),tooltip:`Copy POSIX shell command`,ariaLabel:`Copy POSIX shell command`,toastTitle:`Command copied`})]}):null,t[46]=S,t[47]=j);let M=S&&`mt-3`,N;t[48]===M?N=t[49]:(N=U(`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,M),t[48]=M,t[49]=N);let P;t[50]===te?P=t[51]:(P=te?(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:te}):null,t[50]=te,t[51]=P);let F=!b.available||_,I=!te&&`sm:ml-auto`,L;t[52]===I?L=t[53]:(L=U(`border-(--blue-11) bg-(--blue-11) hover:border-(--blue-12) hover:bg-(--blue-12) sm:min-w-36 dark:border-(--blue-7) dark:bg-(--blue-5) dark:text-(--blue-12) dark:hover:border-(--blue-8) dark:hover:bg-(--blue-6)`,I),t[52]=I,t[53]=L);let R;t[54]===s?R=t[55]:(R=s&&(0,Z.jsx)(rt,{size:`small`,className:`mr-2`,"aria-hidden":!0}),t[54]=s,t[55]=R);let ie=x?`Print to PDF`:ee,z;t[56]!==s||t[57]!==g||t[58]!==F||t[59]!==L||t[60]!==R||t[61]!==ie?(z=(0,Z.jsxs)(K,{type:`button`,disabled:F,"aria-busy":s,onClick:g,className:L,"data-testid":`export-submit`,children:[R,ie]}),t[56]=s,t[57]=g,t[58]=F,t[59]=L,t[60]=R,t[61]=ie,t[62]=z):z=t[62];let B;t[63]!==N||t[64]!==P||t[65]!==z?(B=(0,Z.jsxs)(`div`,{className:N,children:[P,z]}),t[63]=N,t[64]=P,t[65]=z,t[66]=B):B=t[66];let V;t[67]!==B||t[68]!==j?(V=(0,Z.jsxs)(`footer`,{className:`min-w-0 border-t bg-muted/20 px-4 py-3`,children:[j,B]}),t[67]=B,t[68]=j,t[69]=V):V=t[69];let H;return t[70]!==o||t[71]!==T||t[72]!==V||t[73]!==A?(H=(0,Z.jsxs)(lt,{ref:o,className:`grid h-dvh max-h-[760px] min-w-0 w-[calc(100vw-2rem)] grid-rows-[auto_minmax(0,1fr)_auto] gap-0 overflow-hidden p-0 sm:top-[5vh] sm:h-[90vh] sm:max-h-[640px] sm:max-w-3xl`,"data-testid":`export-dialog`,...T,children:[re,A,V]}),t[70]=o,t[71]=T,t[72]=V,t[73]=A,t[74]=H):H=t[74],H};function Cr(e){let t=(0,X.c)(5),{openPrompt:n,closeModal:r}=nt(),{sendCopy:i}=J(),a;return t[0]!==r||t[1]!==n||t[2]!==i||t[3]!==e?(a=()=>{if(!e)return null;let t=ke.guessDeliminator(e),a=De.basename(e);n({title:`Copy notebook`,description:`Enter a new filename for the notebook copy.`,defaultValue:`_${a}`,confirmText:`Copy notebook`,spellCheck:!1,onConfirm:n=>{let a=t.join(De.dirname(e),n);i({source:e,destination:a}).then(()=>{r(),ht({title:`Notebook copied`,description:`A copy of the notebook has been created.`}),Lt(a)})}})},t[0]=r,t[1]=n,t[2]=i,t[3]=e,t[4]=a):a=t[4],a}var wr=new y,Tr=e=>wr.isSupported(e)?`markdown`:`code`,Er=()=>{let e=(0,X.c)(3),{updateCellConfig:t}=o(),{saveCellConfig:n}=J(),r;return e[0]!==n||e[1]!==t?(r=async(e,r)=>{let i=b(),a={};for(let t of i.cellIds.inOrderIds){let n=i.cellData[t];n!==void 0&&n.config.hide_code!==e&&Tr(n.code)===r&&(a[t]={hide_code:e})}let o=N.entries(a);if(o.length!==0){await n({configs:a});for(let[e,n]of o)t({cellId:e,config:n})}},e[0]=n,e[1]=t,e[2]=r):r=e[2],r};function Dr(e,t){let n={};for(let r of e.cellIds.inOrderIds){let i=e.cellData[r];i!==void 0&&(i.config.expand_output??!1)!==t&&(We(e.cellRuntime[r]?.output)||(n[r]={expand_output:t}))}return n}var Or=()=>{let e=(0,X.c)(3),{updateCellConfig:t}=o(),{saveCellConfig:n}=J(),r;return e[0]!==n||e[1]!==t?(r=async e=>{let r=Dr(b(),e),i=N.entries(r);if(i.length!==0){await n({configs:r});for(let[e,n]of i)t({cellId:e,config:n})}},e[0]=n,e[1]=t,e[2]=r):r=e[2],r},kr=e=>{e?.preventDefault(),e?.stopPropagation()};function Ar(e){let n=(0,X.c)(44),a;n[0]===e?a=n[1]:(a=e===void 0?{}:e,n[0]=e,n[1]=a);let{exportDialogReturnFocusRef:m}=a,g=kt(),{openModal:_,closeModal:v}=nt(),{toggleApplication:y}=d(),{selectedPanel:x}=te(),[T]=t(B),E=r(ie),D=Er(),O=Or(),[k]=A(),M=r(c),P=r(j),{updateCellConfig:I,undoDeleteCell:L,clearAllCellOutputs:R,addSetupCellIfDoesntExist:z,collapseAllCells:H,expandAllCells:U}=o(),ae=Ct(),ce=St(),le=Cr(g),ue=i(sn),de=i(Le),{handleClick:fe}=Re(),pe=i(Fe),me=i(wn),{readCode:W,saveCellConfig:he}=J(),ge=re(`database`),G=re(`storage`),_e=f(),ve=r(h),ye=r(ne),be=r(s),{selectedLayout:xe}=at(),{setLayoutView:Se}=it(),Ce=on(),we=k.sharing?.html??!0,K=k.sharing?.wasm??!0,q=k.sharing?.molab??!0,De=xe===`slides`,ke;if(n[2]!==_e||n[3]!==z||n[4]!==P||n[5]!==ye||n[6]!==M||n[7]!==R||n[8]!==v||n[9]!==H||n[10]!==le||n[11]!==ge||n[12]!==G||n[13]!==U||n[14]!==m||n[15]!==g||n[16]!==ve||n[17]!==De||n[18]!==E||n[19]!==_||n[20]!==fe||n[21]!==W||n[22]!==ae||n[23]!==ce||n[24]!==he||n[25]!==xe||n[26]!==x||n[27]!==D||n[28]!==ue||n[29]!==me||n[30]!==pe||n[31]!==Se||n[32]!==O||n[33]!==de||n[34]!==we||n[35]!==q||n[36]!==K||n[37]!==y||n[38]!==Ce||n[39]!==L||n[40]!==be||n[41]!==I||n[42]!==T.mode){let e=[`db`,`sql`,...Mt],t=[`bucket`,`object storage`,...Pt],r=Gr,i=(e,t)=>{t&&me(e=>xn(e,t)),_((0,Z.jsx)(Sr,{initialFormat:e,onClose:v,returnFocusRef:m}))};ke=[{icon:(0,Z.jsx)(oe,{size:14,strokeWidth:1.5}),label:`Export…`,additionalKeywords:[`download`,`html`,`markdown`,`ipynb`,`pdf`,`script`,`png`],handle:()=>i()},{icon:(0,Z.jsx)(oe,{size:14,strokeWidth:1.5}),label:`Download`,redundant:!0,handle:kr,dropdown:[{icon:(0,Z.jsx)(Me,{size:14,strokeWidth:1.5}),label:`Download as HTML`,handle:()=>i(`html`,{html:{includeCode:!0}})},{icon:(0,Z.jsx)(Me,{size:14,strokeWidth:1.5}),label:`Download as HTML (exclude code)`,handle:()=>i(`html`,{html:{includeCode:!1}})},{icon:(0,Z.jsx)(At,{strokeWidth:1.5,style:{width:14,height:14}}),label:`Download as Markdown`,handle:()=>i(`markdown`)},{icon:(0,Z.jsx)(Yt,{size:14,strokeWidth:1.5}),label:`Download as ipynb`,handle:()=>i(`ipynb`)},{icon:(0,Z.jsx)(Ge,{size:14,strokeWidth:1.5}),label:`Download notebook source`,handle:()=>i(`script`,{script:{type:`source`}})},{icon:(0,Z.jsx)(Ge,{size:14,strokeWidth:1.5}),label:`Download flat script`,handle:()=>i(`script`,{script:{type:`flat`}})},{divider:!0,icon:(0,Z.jsx)(tt,{size:14,strokeWidth:1.5}),label:`Download as PNG`,handle:()=>i(`png`)},De?{divider:!0,icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Download as PDF`,handle:kr,dropdown:[{icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Document Layout`,handle:()=>i(`pdf`,{pdf:{preset:`document`}})},{icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Slides Layout`,hidden:V(),rightElement:(0,Z.jsx)(`span`,{className:`ml-3 shrink-0 rounded-full border border-emerald-200 bg-emerald-50 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-emerald-700`,children:`Recommended`}),handle:()=>i(`pdf`,{pdf:{preset:`slides`}})}]}:{divider:!0,icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Download as PDF`,handle:()=>i(`pdf`,{pdf:{preset:`document`}})}]},{icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Connect your agent`,hidden:V(),handle:async()=>{_((0,Z.jsx)(Ie,{onClose:v}))},additionalKeywords:[`connect`]},{icon:(0,Z.jsx)(Qt,{size:14,strokeWidth:1.5}),label:`Share`,handle:kr,hidden:!we&&!K&&!q,dropdown:[{icon:(0,Z.jsx)(Ye,{size:14,strokeWidth:1.5}),label:`Publish HTML to web`,hidden:!we,handle:async()=>{_((0,Z.jsx)(nn,{onClose:v}))}},{icon:(0,Z.jsx)(Be,{size:14,strokeWidth:1.5}),label:`Create WebAssembly link`,hidden:!K,handle:async()=>{let e=await W(),t=wt({code:e.contents});await mt(t),ht({title:`Copied`,description:`Link copied to clipboard.`})}},{icon:(0,Z.jsx)(It,{size:14,strokeWidth:1.5}),label:`Create molab notebook`,hidden:!q,handle:async()=>{let e=await W(),t=wt({code:e.contents,baseUrl:`${F.molab}/new`});window.open(t,`_blank`)}}]},{icon:(0,Z.jsx)(Xt,{size:14,strokeWidth:1.5}),label:`Helper panel`,redundant:!0,handle:kr,dropdown:l.flatMap(e=>{let t=e.type===`ai`&&!P;if(p({panel:e,capabilities:M,aiEnabled:P})&&!t)return[];let{type:n,Icon:i,additionalKeywords:a}=e;return{label:yt.startCase(n),rightElement:r(x===n),icon:(0,Z.jsx)(i,{size:14,strokeWidth:1.5}),handle:()=>{if(t){fe(`ai`,`ai-features`);return}y(n)},additionalKeywords:a}})},{icon:(0,Z.jsx)(Zt,{size:14,strokeWidth:1.5}),label:`Present as`,handle:kr,dropdown:[{icon:T.mode===`present`?(0,Z.jsx)(u,{size:14,strokeWidth:1.5}):(0,Z.jsx)(Ae,{size:14,strokeWidth:1.5}),label:`Toggle app view`,hotkey:`global.hideCode`,handle:()=>{Ce()}},...ot.map((e,t)=>{let n=un(e);return{divider:t===0,label:dn(e),icon:(0,Z.jsx)(n,{size:14,strokeWidth:1.5}),rightElement:(0,Z.jsx)(`div`,{className:`w-8 flex justify-end`,children:xe===e&&(0,Z.jsx)(ze,{size:14})}),handle:()=>{Se(e),T.mode===`edit`&&Ce()}}})]},{icon:(0,Z.jsx)(Kt,{size:14,strokeWidth:1.5}),label:`Duplicate notebook`,hidden:!g||V(),handle:le},{icon:(0,Z.jsx)(se,{size:14,strokeWidth:1.5}),label:`Copy code to clipboard`,hidden:!g,handle:async()=>{let e=await W();await mt(e.contents),ht({title:`Copied`,description:`Code copied to clipboard.`})}},{icon:(0,Z.jsx)(Ve,{size:14,strokeWidth:1.5}),label:`Enable all cells`,hidden:!ve||E,handle:async()=>{let e=b(),t=C(e),n=N.fromEntries(t.map(Wr));await he({configs:n});for(let e of t)I({cellId:e,config:{disabled:!1}})}},{divider:!0,icon:(0,Z.jsx)(Wt,{size:14,strokeWidth:1.5}),label:`Add setup cell`,handle:()=>{z({})}},{icon:(0,Z.jsx)(Ee,{size:14,strokeWidth:1.5}),label:`Add database connection`,additionalKeywords:e,handle:()=>{_((0,Z.jsx)(Nt,{onClose:v}))},dropdown:ge.length===0?void 0:[...ge.map(e=>({icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Add ${e.displayName}`,description:`Detected in your environment`,handle:()=>_e(e)})),{divider:!0,icon:(0,Z.jsx)(Ee,{size:14,strokeWidth:1.5}),label:`Browse all connections`,additionalKeywords:e,handle:()=>{_((0,Z.jsx)(Nt,{onClose:v}))}}]},{icon:(0,Z.jsx)($e,{size:14,strokeWidth:1.5}),label:`Add remote storage`,additionalKeywords:t,handle:()=>{_((0,Z.jsx)(Nt,{defaultTab:`storage`,onClose:v}))},dropdown:G.length===0?void 0:[...G.map(e=>({icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Add ${e.displayName}`,description:`Detected in your environment`,handle:()=>_e(e)})),{divider:!0,icon:(0,Z.jsx)($e,{size:14,strokeWidth:1.5}),label:`Browse all connections`,additionalKeywords:t,handle:()=>{_((0,Z.jsx)(Nt,{defaultTab:`storage`,onClose:v}))}}]},{icon:(0,Z.jsx)(en,{size:14,strokeWidth:1.5}),label:be,hidden:!ye||E,handle:()=>{L()}},{icon:(0,Z.jsx)($t,{size:14,strokeWidth:1.5}),label:`Restart kernel`,variant:`danger`,handle:ae,additionalKeywords:[`reset`,`reload`,`restart`]},{icon:(0,Z.jsx)(Gt,{size:14,strokeWidth:1.5}),label:`Re-run all cells`,redundant:!0,hotkey:`global.runAll`,handle:async()=>{ce()}},{icon:(0,Z.jsx)(ee,{size:14,strokeWidth:1.5}),label:`Clear all outputs`,redundant:!0,handle:()=>{R()}},{icon:(0,Z.jsx)(w,{size:14,strokeWidth:1.5}),label:`Show all code`,hotkey:`global.showAllCode`,handle:()=>D(!1,`code`),redundant:!0},{icon:(0,Z.jsx)(Ke,{size:14,strokeWidth:1.5}),label:`Hide all code`,hotkey:`global.hideAllCode`,handle:()=>D(!0,`code`),redundant:!0},{icon:(0,Z.jsx)(w,{size:14,strokeWidth:1.5}),label:`Show all markdown code`,hotkey:`global.showAllMarkdownCode`,handle:()=>D(!1,`markdown`),redundant:!0},{icon:(0,Z.jsx)(Ke,{size:14,strokeWidth:1.5}),label:`Hide all markdown code`,hotkey:`global.hideAllMarkdownCode`,handle:()=>D(!0,`markdown`),redundant:!0},{icon:(0,Z.jsx)(Ue,{size:14,strokeWidth:1.5}),label:`Expand all outputs`,hotkey:`global.expandAllOutputs`,hidden:T.mode!==`edit`,handle:()=>O(!0),redundant:!0},{icon:(0,Z.jsx)(He,{size:14,strokeWidth:1.5}),label:`Clamp all outputs`,hotkey:`global.clampAllOutputs`,hidden:T.mode!==`edit`,handle:()=>O(!1),redundant:!0},{icon:(0,Z.jsx)(Vt,{size:14,strokeWidth:1.5}),label:`Collapse all sections`,hotkey:`global.collapseAllSections`,handle:H,redundant:!0},{icon:(0,Z.jsx)(Bt,{size:14,strokeWidth:1.5}),label:`Expand all sections`,hotkey:`global.expandAllSections`,handle:U,redundant:!0},{divider:!0,icon:(0,Z.jsx)(Ut,{size:14,strokeWidth:1.5}),label:`Command palette`,hotkey:`global.commandPalette`,handle:()=>ue(Ur)},{icon:(0,Z.jsx)(je,{size:14,strokeWidth:1.5}),label:`Keyboard shortcuts`,hotkey:`global.showHelp`,handle:()=>pe(Hr)},{icon:(0,Z.jsx)(ft,{size:14,strokeWidth:1.5}),label:`User settings`,handle:()=>de(Vr),redundant:!0,additionalKeywords:[`preferences`,`options`,`configuration`]},{icon:(0,Z.jsx)(Jt,{size:14,strokeWidth:1.5}),label:`Report an issue`,additionalKeywords:[`feedback`,`bug`,`issue`,`report`,`diagnostics`],handle:()=>_((0,Z.jsx)(jt,{onClose:v}))},{icon:(0,Z.jsx)(qe,{size:14,strokeWidth:1.5}),label:`Resources`,handle:kr,dropdown:[{icon:(0,Z.jsx)(Te,{size:14,strokeWidth:1.5}),label:`Documentation`,handle:Br},{icon:(0,Z.jsx)(Ft,{className:`h-3.5 w-3.5`}),label:`GitHub`,handle:zr},{icon:(0,Z.jsx)(Xe,{size:14,strokeWidth:1.5}),label:`Discord Community`,handle:Rr},{icon:(0,Z.jsx)(Qe,{className:`h-3.5 w-3.5`}),label:`YouTube`,handle:Lr},{icon:(0,Z.jsx)(Oe,{size:14,strokeWidth:1.5}),label:`Changelog`,handle:Ir}]},{divider:!0,icon:(0,Z.jsx)(et,{size:14,strokeWidth:1.5}),label:`Open home`,hidden:!location.search.includes(`file`),handle:Fr},{icon:(0,Z.jsx)(It,{size:14,strokeWidth:1.5}),label:`New notebook`,hidden:!location.search.includes(`file`),handle:Pr}].filter(Nr).map(jr),n[2]=_e,n[3]=z,n[4]=P,n[5]=ye,n[6]=M,n[7]=R,n[8]=v,n[9]=H,n[10]=le,n[11]=ge,n[12]=G,n[13]=U,n[14]=m,n[15]=g,n[16]=ve,n[17]=De,n[18]=E,n[19]=_,n[20]=fe,n[21]=W,n[22]=ae,n[23]=ce,n[24]=he,n[25]=xe,n[26]=x,n[27]=D,n[28]=ue,n[29]=me,n[30]=pe,n[31]=Se,n[32]=O,n[33]=de,n[34]=we,n[35]=q,n[36]=K,n[37]=y,n[38]=Ce,n[39]=L,n[40]=be,n[41]=I,n[42]=T.mode,n[43]=ke}else ke=n[43];return ke}function jr(e){return e.dropdown?{...e,dropdown:e.dropdown.filter(Mr)}:e}function Mr(e){return!e.hidden}function Nr(e){return!e.hidden}function Pr(){let e=z();window.open(e,`_blank`)}function Fr(){let e=document.baseURI.split(`?`)[0];window.open(e,`_blank`,`noopener`)}function Ir(){window.open(F.releasesPage,`_blank`)}function Lr(){window.open(F.youtube,`_blank`)}function Rr(){window.open(F.discordLink,`_blank`)}function zr(){window.open(F.githubPage,`_blank`)}function Br(){window.open(F.docsPage,`_blank`)}function Vr(e){return!e}function Hr(e){return!e}function Ur(e){return!e}function Wr(e){return[e,{disabled:!1}]}function Gr(e){return(0,Z.jsx)(`div`,{className:`w-8 flex justify-end`,children:e&&(0,Z.jsx)(ze,{size:14})})}export{sn as a,Jt as c,Ht as d,cn as i,Wt as l,Or as n,on as o,Er as r,en as s,Ar as t,Ut as u};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{c as t,f as n,l as r,u as i}from"./useEvent-Dfcbgjhg.js";import{t as a}from"./react-DVplv7_D.js";import{D as o,E as s,Hr as c,Jr as l,Ka as u,Kr as d,Mt as f,Xr as p,Zr as m,_ as h,ai as g,an as _,co as v,er as y,h as b,in as x,oo as ee,qa as S,qr as te,ra as C,ro as w,t as ne,xo as T,yt as re}from"./cells-DfF1DLV_.js";import{C as E,N as D,v as O}from"./schemas-ChRqMOTL.js";import{t as k}from"./compiler-runtime-BrajqUja.js";import{C as A,n as j}from"./config-DGX7JYor.js";import{g as M}from"./useEventListener-CjDeLqFC.js";import{t as N}from"./objects-rLPlQ3X_.js";import{n as P,r as F}from"./utils-B4K466FK.js";import{_ as I,g as L,h as R,m as ie,s as z,v as B}from"./session-B8Y-GJnS.js";import{M as V,O as H}from"./config-BWKfkUWA.js";import{t as U}from"./cn-ldLVeaqm.js";import{t as ae}from"./jsx-runtime-B74pBk57.js";import{Ft as oe,It as se,Q as ce}from"./JsonOutput-DryOywaN.js";import{a as le,c as ue,i as de,n as fe,r as pe,s as me,t as W}from"./select-3CVGlYrC.js";import{a as he,c as ge,d as G,o as _e,t as ve}from"./download-CMTzX3rG.js";import{t as ye}from"./switch-IoWE8PbW.js";import{i as be,n as xe,r as Se,t as Ce}from"./tabs-CY8E4r9U.js";import{n as we,t as K}from"./button-D8gVKwe-.js";import{t as q}from"./createLucideIcon-DfJ2oMlA.js";import{a as Te,i as Ee,n as De,r as Oe,t as ke}from"./paths-bkIFVj8h.js";import{F as Ae,I as je,L as Me,c as Ne,t as Pe}from"./layout-B2MJFBFp.js";import{E as Fe,h as Ie,n as Le,r as Re}from"./ai-model-dropdown-prnCk5hq.js";import{t as ze}from"./check-BQNapYaf.js";import{o as Be,r as Ve}from"./useCellActionButton-D7Ruyes-.js";import{s as He}from"./tree-actions-Zg3Ycse4.js";import{f as Ue,n as We}from"./markdown-renderer-CkN_xAjW.js";import{t as Ge}from"./code-BEiQP4pS.js";import{t as Ke}from"./eye-off-CxVozGAC.js";import{t as qe}from"./external-link-UrX9KO36.js";import{t as Je}from"./file-BPBVl9pl.js";import{t as Ye}from"./globe-UdPdIbF7.js";import{n as Xe,r as Ze,t as Qe}from"./youtube-CbJhsgLy.js";import{n as $e}from"./components-DrU8dOzy.js";import{t as et}from"./house-CpsMWsLL.js";import{t as tt}from"./image-wZvTj8WY.js";import{b as nt}from"./write-secret-modal-7DzehGyr.js";import{t as rt}from"./spinner-DyNE-o8o.js";import{c as it,l as at,u as ot}from"./readonly-python-code-DeBED4OB.js";import{Qt as st,Xt as ct,Yt as lt,Zt as ut,tn as dt}from"./input-BZdRe7pb.js";import{t as ft}from"./settings-BpdQZRgT.js";import{t as pt}from"./square-BPmgQFnh.js";import{n as mt}from"./copy-KlhazlhB.js";import{t as ht}from"./use-toast-Wu434mLr.js";import{t as gt}from"./copy-icon-8-a5vovc.js";import{i as _t,r as vt,t as yt}from"./strings-C25fhMR_.js";import{r as J}from"./requests-lt0JK8Jt.js";import{t as bt}from"./shell-Fj8a65ii.js";import{n as xt}from"./useAsyncData-DhhdOGGd.js";import{r as St}from"./useRunCells-CV81rge-.js";import{s as Ct}from"./useInstallPackage-CWcPxSLP.js";import{t as wt}from"./share-BZW3tzEX.js";import{n as Tt,r as Et}from"./markdown-export-DzhB1FrN.js";import{n as Dt,t as Ot}from"./alert-DTaqCu_d.js";import{a as kt}from"./cell-link-D8EbRFJJ.js";import{t as At}from"./icons-CiZ_8zS-.js";import{n as jt}from"./feedback-button-C-ScLxY2.js";import{i as Mt,n as Nt,r as Pt}from"./add-connection-dialog-CNIwGJVL.js";import{t as Ft}from"./github-DQZhN3La.js";import{n as It}from"./marimo-icons-CqliHyTr.js";import{t as Lt}from"./links-CXcpNIM0.js";import{r as Rt,t as zt}from"./hooks-yjSoxKTw.js";var Bt=q(`circle-chevron-down`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 10-4 4-4-4`,key:`894hmk`}]]),Vt=q(`circle-chevron-right`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m10 8 4 4-4 4`,key:`1wy4r4`}]]),Ht=q(`cloud-download`,[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]]),Ut=q(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),Wt=q(`diamond-plus`,[[`path`,{d:`M12 8v8`,key:`napkw2`}],[`path`,{d:`M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41L13.7 2.71a2.41 2.41 0 0 0-3.41 0z`,key:`1ey20j`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]]),Gt=q(`fast-forward`,[[`path`,{d:`M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z`,key:`b19h5q`}],[`path`,{d:`M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z`,key:`h7h5ge`}]]),Kt=q(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),qt=q(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),Jt=q(`message-circle-question-mark`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Yt=q(`notebook`,[[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,key:`1nb95v`}],[`path`,{d:`M16 2v20`,key:`rotuqe`}]]),Xt=q(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),Zt=q(`presentation`,[[`path`,{d:`M2 3h20`,key:`91anmk`}],[`path`,{d:`M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3`,key:`2k9sn8`}],[`path`,{d:`m7 21 5-5 5 5`,key:`bip4we`}]]),Qt=q(`share-2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),$t=q(`square-power`,[[`path`,{d:`M12 7v4`,key:`xawao1`}],[`path`,{d:`M7.998 9.003a5 5 0 1 0 8-.005`,key:`1pek45`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]),en=q(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]),Y=e(a(),1),X=k();async function tn(e,t){let n=new Blob([t],{type:`text/html`});if(n.size>104857600)throw Error(`File is too large. Maximum size is 100 MB.`);let r=await fetch(`${F.molab}/api/artifacts/pending`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({fileName:e,fileSize:n.size})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e?.error??(r.status===429?`Too many uploads, try again later`:`Failed to prepare the upload`))}let{presignedUrl:i,claimUrl:a}=await r.json();if(!(await fetch(i,{method:`PUT`,body:n})).ok)throw Error(`Failed to upload the notebook export`);return a}var Z=ae(),nn=e=>{let t=(0,X.c)(33),{onClose:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={kind:`idle`},t[0]=r):r=t[0];let[i,a]=(0,Y.useState)(r),{exportAsHTML:o}=J(),s;t[1]===o?s=t[2]:(s=async()=>{a({kind:`publishing`});try{let{contents:e,filename:t}=await o({download:!1,includeCode:!0,files:Ne.INSTANCE.filenames(),layout:await Pe(),assetUrl:`https://cdn.jsdelivr.net/npm/@marimo-team/frontend@{version}/dist`}),n=await tn(t,e);window.open(n,`_blank`,`noopener,noreferrer`),a({kind:`staged`,claimUrl:n})}catch(e){let t=e;a({kind:`failed`,message:t instanceof Error?t.message:`Something went wrong`})}},t[1]=o,t[2]=s);let c=s;if(i.kind===`staged`){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(st,{children:[(0,Z.jsx)(dt,{children:`Finish publishing`}),(0,Z.jsx)(ct,{children:`If the confirmation page didn't open in a new tab, open it below.`})]}),t[3]=e):e=t[3];let r;t[4]===n?r=t[5]:(r=(0,Z.jsx)(K,{"data-testid":`done-share-static-notebook-button`,variant:`secondary`,onClick:n,children:`Done`}),t[4]=n,t[5]=r);let a;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(qe,{size:14,strokeWidth:1.5,className:`mr-2`}),t[6]=a):a=t[6];let o;t[7]===i.claimUrl?o=t[8]:(o=(0,Z.jsx)(K,{asChild:!0,variant:`default`,children:(0,Z.jsxs)(`a`,{"data-testid":`open-claim-page-link`,href:i.claimUrl,target:`_blank`,rel:`noopener noreferrer`,children:[a,`Open confirmation page`]})}),t[7]=i.claimUrl,t[8]=o);let s;return t[9]!==r||t[10]!==o?(s=(0,Z.jsxs)(lt,{className:`sm:max-w-[480px]`,children:[e,(0,Z.jsxs)(ut,{children:[r,o]})]}),t[9]=r,t[10]=o,t[11]=s):s=t[11],s}let l=i.kind===`publishing`,u;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Z.jsx)(dt,{children:`Publish HTML to web`}),t[12]=u):u=t[12];let d;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsxs)(st,{children:[u,(0,Z.jsxs)(ct,{children:[`Publish a static snapshot of this notebook to`,` `,(0,Z.jsx)(`a`,{href:F.molab,target:`_blank`,rel:`noopener noreferrer`,className:`underline`,children:`molab`}),`. Snapshots can be viewed by anyone on the internet.`]})]}),t[13]=d):d=t[13];let f;t[14]!==i.kind||t[15]!==i.message?(f=i.kind===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-destructive`,"data-testid":`share-static-notebook-error`,children:[`Publish failed: `,i.message]}),t[14]=i.kind,t[15]=i.message,t[16]=f):f=t[16];let p;t[17]!==l||t[18]!==n?(p=(0,Z.jsx)(K,{"data-testid":`cancel-share-static-notebook-button`,variant:`secondary`,onClick:n,disabled:l,children:`Cancel`}),t[17]=l,t[18]=n,t[19]=p):p=t[19];let m;t[20]!==l||t[21]!==i.kind?(m=l?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(rt,{className:`mr-2`,size:`small`}),`Snapshotting notebook ...`]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(qe,{size:14,strokeWidth:1.5,className:`mr-2`}),i.kind===`failed`?`Try again`:`Publish`]}),t[20]=l,t[21]=i.kind,t[22]=m):m=t[22];let h;t[23]!==c||t[24]!==l||t[25]!==m?(h=(0,Z.jsx)(K,{"data-testid":`share-static-notebook-button`,variant:`default`,disabled:l,onClick:c,children:m}),t[23]=c,t[24]=l,t[25]=m,t[26]=h):h=t[26];let g;t[27]!==p||t[28]!==h?(g=(0,Z.jsxs)(ut,{children:[p,h]}),t[27]=p,t[28]=h,t[29]=g):g=t[29];let _;return t[30]!==f||t[31]!==g?(_=(0,Z.jsxs)(lt,{className:`sm:max-w-[480px]`,children:[d,f,g]}),t[30]=f,t[31]=g,t[32]=_):_=t[32],_};function rn(){let e=document.getElementsByClassName(P.outputArea);for(let t of e){let e=t.getBoundingClientRect();if(e.bottom>0&&e.top<window.innerHeight){let e=T.findElement(t);if(!e){M.warn(`Could not find HTMLCellId for visible output area`,t);continue}return{cellId:T.parse(e.id)}}}return M.warn(`No visible output area found for scroll anchor`),null}function an(e){if(!e){M.warn(`No scroll anchor provided to restore scroll position`);return}let t=document.getElementById(T.create(e.cellId));if(!t){M.warn(`Could not find cell element to restore scroll position`,e.cellId);return}if(!t.querySelector(`.${P.outputArea}`)){M.warn(`Could not find output area to restore scroll position`,e.cellId);return}t.scrollIntoView({block:`start`,behavior:`auto`})}function on(){let e=(0,X.c)(2),t=i(B),n;return e[0]===t?n=e[1]:(n=()=>{let e=rn();t(t=>({mode:L(t.mode),cellAnchor:e?.cellId??null})),requestAnimationFrame(()=>{requestAnimationFrame(()=>{an(e)})})},e[0]=t,e[1]=n),n}var sn=n(!1),cn=()=>{let e=(0,X.c)(7),{selectedLayout:t}=at(),{setLayoutView:n}=it();if(V()&&!g(`wasm_layouts`))return null;let r;e[0]===n?r=e[1]:(r=e=>n(e),e[0]=n,e[1]=r);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Z.jsx)(me,{className:`min-w-[110px] border-border bg-background`,"data-testid":`layout-select`,children:(0,Z.jsx)(ue,{placeholder:`Select a view`})}),e[2]=i):i=e[2];let a;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(fe,{children:(0,Z.jsxs)(pe,{children:[(0,Z.jsx)(le,{children:`View as`}),ot.map(fn)]})}),e[3]=a):a=e[3];let o;return e[4]!==t||e[5]!==r?(o=(0,Z.jsxs)(W,{"data-testid":`layout-select`,value:t,onValueChange:r,children:[i,a]}),e[4]=t,e[5]=r,e[6]=o):o=e[6],o};function ln(e){let t=un(e);return(0,Z.jsx)(t,{className:`h-4 w-4`})}function un(e){switch(e){case`vertical`:return qt;case`grid`:return Ze;case`slides`:return Zt;default:return _t(e),pt}}function dn(e){return yt.startCase(e)}function fn(e){return(0,Z.jsx)(de,{value:e,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 leading-5`,children:[ln(e),(0,Z.jsx)(`span`,{children:dn(e)})]})},e)}var pn=[`html`,`markdown`,`ipynb`,`pdf`,`script`,`png`],mn=[`pymdown`,`qmd`,`mystmd`,`mdx`],hn=[`topological`,`top-down`],gn=[`document`,`slides`],_n=[`source`,`flat`];function vn(e){return typeof e==`string`&&pn.some(t=>t===e)}var Q={html:{includeCode:!0},markdown:{flavor:null},ipynb:{sortMode:`topological`,includeOutputs:!1},pdf:{preset:`document`,includeInputs:!0,includeOutputs:!0,webpdf:!0},script:{type:`source`}};function $(e,t){return e.default(t).catch(t)}function yn(e){return D(e).optional().catch(void 0)}var bn=D({html:yn({includeCode:$(E(),Q.html.includeCode)}),markdown:yn({flavor:$(O(mn).nullable(),Q.markdown.flavor)}),ipynb:yn({sortMode:$(O(hn),Q.ipynb.sortMode),includeOutputs:$(E(),Q.ipynb.includeOutputs)}),pdf:yn({preset:$(O(gn),Q.pdf.preset),includeInputs:$(E(),Q.pdf.includeInputs),includeOutputs:$(E(),Q.pdf.includeOutputs),webpdf:$(E(),Q.pdf.webpdf)}),script:yn({type:$(O(_n),Q.script.type)})}).catch({});function xn(e,t){let n={...e},r=r=>{n[r]={...e[r],...t[r]}};for(let e of Object.keys(t))r(e);return n}function Sn(e){return xn(Q,bn.parse(e))}var Cn=m({toSerializable:e=>e,fromSerializable:Sn}),wn=H(`marimo:export:options:v1`,Q,Cn,{getOnInit:!0}),Tn=H(`marimo:export:last-format:v1`,`html`,m({toSerializable:e=>e,fromSerializable:e=>vn(e)?e:`html`}),{getOnInit:!0}),En={html:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},markdown:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!1,checksServerAvailability:!1},ipynb:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},pdf:{requiresNamedNotebookOnServer:!0,requiresServerRuntime:!0,checksServerAvailability:!0},script:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1},png:{requiresNamedNotebookOnServer:!1,requiresServerRuntime:!1,checksServerAvailability:!1}};function Dn(e,t){return e===`wasm`&&t===`pdf`}function On({format:e,options:t,runtime:n,filename:r,availability:i}){let a=e===`script`&&t.script.type===`source`?{...En.script,requiresNamedNotebookOnServer:!0}:En[e],o=Dn(n,e);if(n===`wasm`&&a.requiresServerRuntime)return{available:o,reason:{type:`wasm-runtime`}};if(n===`server`&&a.requiresNamedNotebookOnServer&&!r)return{available:!1,reason:{type:`notebook-must-be-named`}};if(n===`wasm`||!a.checksServerAvailability)return{available:!0};if(i.status===`pending`)return{available:!1,reason:{type:`checking-requirements`}};if(i.status===`error`||!i.data)return{available:!0,availabilityCheckFailed:!0};let s=i.data.formats.find(t=>t.format===e);return s?s.dependenciesAvailable?{available:!0}:s.missingPackages.length>0?{available:!1,reason:{type:`missing-packages`,packages:s.missingPackages}}:s.missingSetup.length>0?{available:!1,reason:{type:`missing-setup`,requirements:s.missingSetup}}:{available:!0,availabilityCheckFailed:!0}:{available:!0,availabilityCheckFailed:!0}}function kn(e,t){return e.map(e=>({value:e,...t[e]}))}var An=kn([`automatic`,...mn],{automatic:{label:`Automatic`,description:`Chooses a format from the notebook filename. Defaults to Markdown (.md).`},pymdown:{label:`Markdown (.md)`,description:`Creates a .md file with Python code blocks.`},qmd:{label:`Quarto (.qmd)`,description:`Creates a .qmd file for Quarto.`},mystmd:{label:`MyST (.myst.md)`,description:`Creates a .myst.md file for MyST.`},mdx:{label:`MDX (.mdx)`,description:`Creates a .mdx file for MDX.`}}),jn=kn(hn,{"top-down":{label:`Top to bottom`,description:`Keeps cells in the same order as this notebook.`},topological:{label:`Dependency order`,description:`Reorders cells so each cell appears after the cells it depends on.`}}),Mn=kn(gn,{document:{label:`Document`,description:`Creates pages for reading or printing.`},slides:{label:`Slides`,description:`Creates presentation slides from the notebook.`}}),Nn=kn([`browser`,`latex`],{browser:{label:`Browser`,description:`Uses browser rendering to preserve the notebook's visual output.`},latex:{label:`LaTeX first`,description:`Uses Pandoc and TeX when available, then falls back to browser rendering.`}}),Pn=kn(_n,{source:{label:`Notebook source`,description:`Downloads the saved notebook source for continued editing in marimo.`},flat:{label:`Flat script`,description:`Reorders cells so the Python script runs from top to bottom.`}}),Fn={html:{label:`HTML`,actionLabel:`Export HTML`,description:`Save the current notebook as an HTML page.`,Icon:Ye,Options:In},markdown:{label:`Markdown`,actionLabel:`Export Markdown`,description:`Save code and text in a Markdown-based file. Cell outputs are not included.`,Icon:Oe,Options:Ln},ipynb:{label:`Jupyter`,actionLabel:`Export Jupyter notebook`,description:`Open the notebook in Jupyter and other compatible tools.`,Icon:Yt,Options:Rn},pdf:{label:`PDF`,actionLabel:`Export PDF`,description:`Save the notebook as a PDF for printing or sharing.`,Icon:Je,Options:zn},script:{label:`Python`,actionLabel:`Export flat script`,description:`Save the notebook as a Python file.`,Icon:Ge,Options:Bn},png:{label:`PNG`,actionLabel:`Export PNG`,description:`Capture the current app view as an image.`,Icon:tt,Options:Vn}};function In(e){let t=(0,X.c)(7),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a={checked:`Includes code cells in the webpage.`,unchecked:`Leaves code cells out of the webpage.`},t[0]=a):a=t[0];let o;t[1]===r?o=t[2]:(o=e=>r(`html`,{includeCode:e}),t[1]=r,t[2]=o);let s;return t[3]!==i||t[4]!==n.html.includeCode||t[5]!==o?(s=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Un,{label:`Include code`,descriptions:a,checked:n.html.includeCode,disabled:i,onCheckedChange:o})}),t[3]=i,t[4]=n.html.includeCode,t[5]=o,t[6]=s):s=t[6],s}function Ln(e){let t=(0,X.c)(6),{options:n,updateOptions:r,disabled:i}=e,a=n.markdown.flavor??`automatic`,o;t[0]===r?o=t[1]:(o=e=>r(`markdown`,{flavor:e===`automatic`?null:e}),t[0]=r,t[1]=o);let s;return t[2]!==i||t[3]!==a||t[4]!==o?(s=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Kn,{label:`Format`,value:a,disabled:i,onValueChange:o,options:An})}),t[2]=i,t[3]=a,t[4]=o,t[5]=s):s=t[5],s}function Rn(e){let t=(0,X.c)(16),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`ipynb`,{sortMode:e}),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n.ipynb.sortMode||t[4]!==a?(o=(0,Z.jsx)(Wn,{label:`Cell order`,value:n.ipynb.sortMode,disabled:i,onValueChange:a,options:jn}),t[2]=i,t[3]=n.ipynb.sortMode,t[4]=a,t[5]=o):o=t[5];let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s={checked:`Keeps the outputs currently shown in the notebook.`,unchecked:`Leaves cell outputs out of the Jupyter notebook.`},t[6]=s):s=t[6];let c;t[7]===r?c=t[8]:(c=e=>r(`ipynb`,{includeOutputs:e}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==n.ipynb.includeOutputs||t[11]!==c?(l=(0,Z.jsx)(Un,{label:`Include outputs`,descriptions:s,checked:n.ipynb.includeOutputs,disabled:i,onCheckedChange:c}),t[9]=i,t[10]=n.ipynb.includeOutputs,t[11]=c,t[12]=l):l=t[12];let u;return t[13]!==o||t[14]!==l?(u=(0,Z.jsxs)(Hn,{children:[o,l]}),t[13]=o,t[14]=l,t[15]=u):u=t[15],u}function zn(e){let t=(0,X.c)(30),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`pdf`,{preset:e}),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n.pdf.preset||t[4]!==a?(o=(0,Z.jsx)(Wn,{label:`Layout`,value:n.pdf.preset,disabled:i,onValueChange:a,options:Mn}),t[2]=i,t[3]=n.pdf.preset,t[4]=a,t[5]=o):o=t[5];let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s={checked:`Includes code cells in the PDF.`,unchecked:`Leaves code cells out of the PDF.`},t[6]=s):s=t[6];let c;t[7]===r?c=t[8]:(c=e=>r(`pdf`,{includeInputs:e}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==n.pdf.includeInputs||t[11]!==c?(l=(0,Z.jsx)(Un,{label:`Include code`,descriptions:s,checked:n.pdf.includeInputs,disabled:i,onCheckedChange:c}),t[9]=i,t[10]=n.pdf.includeInputs,t[11]=c,t[12]=l):l=t[12];let u;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(u={checked:`Keeps the outputs currently shown in the notebook.`,unchecked:`Leaves cell outputs out of the PDF.`},t[13]=u):u=t[13];let d;t[14]===r?d=t[15]:(d=e=>r(`pdf`,{includeOutputs:e}),t[14]=r,t[15]=d);let f;t[16]!==i||t[17]!==n.pdf.includeOutputs||t[18]!==d?(f=(0,Z.jsx)(Un,{label:`Include outputs`,descriptions:u,checked:n.pdf.includeOutputs,disabled:i,onCheckedChange:d}),t[16]=i,t[17]=n.pdf.includeOutputs,t[18]=d,t[19]=f):f=t[19];let p;t[20]!==i||t[21]!==n.pdf.preset||t[22]!==n.pdf.webpdf||t[23]!==r?(p=n.pdf.preset===`document`?(0,Z.jsx)(Wn,{label:`Method`,value:n.pdf.webpdf?`browser`:`latex`,disabled:i,onValueChange:e=>r(`pdf`,{webpdf:e===`browser`}),options:Nn}):null,t[20]=i,t[21]=n.pdf.preset,t[22]=n.pdf.webpdf,t[23]=r,t[24]=p):p=t[24];let m;return t[25]!==o||t[26]!==l||t[27]!==f||t[28]!==p?(m=(0,Z.jsxs)(Hn,{children:[o,l,f,p]}),t[25]=o,t[26]=l,t[27]=f,t[28]=p,t[29]=m):m=t[29],m}function Bn(e){let t=(0,X.c)(6),{options:n,updateOptions:r,disabled:i}=e,a;t[0]===r?a=t[1]:(a=e=>r(`script`,{type:e}),t[0]=r,t[1]=a);let o;return t[2]!==i||t[3]!==n.script.type||t[4]!==a?(o=(0,Z.jsx)(Hn,{children:(0,Z.jsx)(Wn,{label:`Format`,value:n.script.type,disabled:i,onValueChange:a,options:Pn})}),t[2]=i,t[3]=n.script.type,t[4]=a,t[5]=o):o=t[5],o}function Vn(){return null}function Hn(e){let t=(0,X.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,Z.jsx)(`div`,{className:`divide-y rounded-md border`,children:n}),t[0]=n,t[1]=r),r}function Un(e){let t=(0,X.c)(26),{label:n,descriptions:r,descriptionOverride:i,checked:a,disabled:o,onCheckedChange:s}=e,c=(0,Y.useId)(),l=`${c}-description`,u=i??(a?r.checked:r.unchecked),d;t[0]===i?d=t[1]:(d=i?[i]:[],t[0]=i,t[1]=d);let f;t[2]!==r.checked||t[3]!==r.unchecked||t[4]!==d?(f=[r.checked,r.unchecked,...d],t[2]=r.checked,t[3]=r.unchecked,t[4]=d,t[5]=f):f=t[5];let p=f,m;t[6]!==c||t[7]!==n?(m=(0,Z.jsx)(`label`,{htmlFor:c,className:`text-sm font-medium leading-5`,children:n}),t[6]=c,t[7]=n,t[8]=m):m=t[8];let h;t[9]!==u||t[10]!==l||t[11]!==p?(h=(0,Z.jsx)(Yn,{id:l,description:u,possibleDescriptions:p}),t[9]=u,t[10]=l,t[11]=p,t[12]=h):h=t[12];let g;t[13]!==m||t[14]!==h?(g=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[m,h]}),t[13]=m,t[14]=h,t[15]=g):g=t[15];let _;t[16]!==a||t[17]!==l||t[18]!==o||t[19]!==c||t[20]!==n||t[21]!==s?(_=(0,Z.jsx)(ye,{id:c,size:`sm`,checked:a,disabled:o,onCheckedChange:s,"aria-label":n,"aria-describedby":l}),t[16]=a,t[17]=l,t[18]=o,t[19]=c,t[20]=n,t[21]=s,t[22]=_):_=t[22];let v;return t[23]!==g||t[24]!==_?(v=(0,Z.jsxs)(`div`,{className:`flex min-h-14 items-center justify-between gap-4 px-3 py-2`,children:[g,_]}),t[23]=g,t[24]=_,t[25]=v):v=t[25],v}function Wn(e){let t=(0,X.c)(31),{label:n,value:r,disabled:i,onValueChange:a,options:o}=e,s=(0,Y.useId)(),c=`${s}-description`,l;t[0]!==o||t[1]!==r?(l=o.find(e=>e.value===r)?.description,t[0]=o,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===n?d=t[4]:(d=(0,Z.jsx)(`div`,{className:`text-sm font-medium leading-5`,children:n}),t[3]=n,t[4]=d);let f=u??``,p;t[5]===o?p=t[6]:(p=o.map(Gn),t[5]=o,t[6]=p);let m;t[7]!==c||t[8]!==f||t[9]!==p?(m=(0,Z.jsx)(Yn,{id:c,description:f,possibleDescriptions:p}),t[7]=c,t[8]=f,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==d||t[12]!==m?(h=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[d,m]}),t[11]=d,t[12]=m,t[13]=h):h=t[13];let g;t[14]===a?g=t[15]:(g=e=>a(e),t[14]=a,t[15]=g);let v;if(t[16]!==s||t[17]!==o){let e;t[19]===s?e=t[20]:(e=(e,t)=>{let n=`${s}-${t}`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(_,{id:n,value:e.value}),(0,Z.jsx)(`label`,{htmlFor:n,className:`text-sm`,children:e.label})]},e.value)},t[19]=s,t[20]=e),v=o.map(e),t[16]=s,t[17]=o,t[18]=v}else v=t[18];let y;t[21]!==c||t[22]!==i||t[23]!==n||t[24]!==g||t[25]!==v||t[26]!==r?(y=(0,Z.jsx)(x,{value:r,onValueChange:g,className:`flex shrink-0 flex-wrap gap-x-5 gap-y-2 sm:justify-end`,"aria-label":n,"aria-describedby":c,disabled:i,children:v}),t[21]=c,t[22]=i,t[23]=n,t[24]=g,t[25]=v,t[26]=r,t[27]=y):y=t[27];let b;return t[28]!==h||t[29]!==y?(b=(0,Z.jsxs)(`div`,{className:`flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4`,children:[h,y]}),t[28]=h,t[29]=y,t[30]=b):b=t[30],b}function Gn(e){return e.description}function Kn(e){let t=(0,X.c)(34),{label:n,value:r,disabled:i,onValueChange:a,options:o}=e,s=(0,Y.useId)(),c=`${s}-description`,l;t[0]!==o||t[1]!==r?(l=o.find(e=>e.value===r)?.description,t[0]=o,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]!==s||t[4]!==n?(d=(0,Z.jsx)(`label`,{htmlFor:s,className:`text-sm font-medium leading-5`,children:n}),t[3]=s,t[4]=n,t[5]=d):d=t[5];let f=u??``,p;t[6]===o?p=t[7]:(p=o.map(Jn),t[6]=o,t[7]=p);let m;t[8]!==c||t[9]!==f||t[10]!==p?(m=(0,Z.jsx)(Yn,{id:c,description:f,possibleDescriptions:p}),t[8]=c,t[9]=f,t[10]=p,t[11]=m):m=t[11];let h;t[12]!==d||t[13]!==m?(h=(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[d,m]}),t[12]=d,t[13]=m,t[14]=h):h=t[14];let g;t[15]===a?g=t[16]:(g=e=>a(e),t[15]=a,t[16]=g);let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,Z.jsx)(ue,{}),t[17]=_):_=t[17];let v;t[18]!==c||t[19]!==s?(v=(0,Z.jsx)(me,{id:s,"aria-describedby":c,className:`h-8 w-full shrink-0 sm:w-44`,children:_}),t[18]=c,t[19]=s,t[20]=v):v=t[20];let y;t[21]===o?y=t[22]:(y=o.map(qn),t[21]=o,t[22]=y);let b;t[23]===y?b=t[24]:(b=(0,Z.jsx)(fe,{children:y}),t[23]=y,t[24]=b);let x;t[25]!==i||t[26]!==b||t[27]!==g||t[28]!==v||t[29]!==r?(x=(0,Z.jsxs)(W,{value:r,disabled:i,onValueChange:g,children:[v,b]}),t[25]=i,t[26]=b,t[27]=g,t[28]=v,t[29]=r,t[30]=x):x=t[30];let ee;return t[31]!==x||t[32]!==h?(ee=(0,Z.jsxs)(`div`,{className:`flex min-h-14 flex-col items-stretch gap-2 px-3 py-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4`,children:[h,x]}),t[31]=x,t[32]=h,t[33]=ee):ee=t[33],ee}function qn(e){return(0,Z.jsx)(de,{value:e.value,children:e.label},e.value)}function Jn(e){return e.description}function Yn(e){let t=(0,X.c)(15),{id:n,description:r,possibleDescriptions:i}=e,a;t[0]===i?a=t[1]:(a=new Set(i),t[0]=i,t[1]=a);let o;t[2]===a?o=t[3]:(o=[...a],t[2]=a,t[3]=o);let s;t[4]!==r||t[5]!==o?(s=o.filter(e=>e!==r),t[4]=r,t[5]=o,t[6]=s):s=t[6];let c=s,l;t[7]!==r||t[8]!==n?(l=(0,Z.jsx)(`p`,{id:n,"aria-live":`polite`,className:`col-start-1 row-start-1`,children:r}),t[7]=r,t[8]=n,t[9]=l):l=t[9];let u;t[10]===c?u=t[11]:(u=c.map(Xn),t[10]=c,t[11]=u);let d;return t[12]!==l||t[13]!==u?(d=(0,Z.jsxs)(`div`,{className:`mt-0.5 grid text-xs leading-4 text-muted-foreground`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14],d}function Xn(e){return(0,Z.jsx)(`p`,{"aria-hidden":!0,className:`invisible col-start-1 row-start-1`,children:e},e)}var Zn={"playwright-chromium":{description:`PDF export requires Playwright Chromium.`}};function Qn(e){let t=(0,X.c)(10),{status:n}=e;if(n.available&&!n.availabilityCheckFailed)return null;if(n.reason?.type===`checking-requirements`){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsxs)(`span`,{className:`ml-auto flex shrink-0`,children:[(0,Z.jsx)(rt,{size:`small`,className:`size-3`}),(0,Z.jsx)(`span`,{className:`sr-only`,children:`Checking requirements`})]}),t[0]=e):e=t[0],e}let r=n.availabilityCheckFailed?`Requirements unknown`:`Unavailable`,i=n.availabilityCheckFailed?`text-muted-foreground`:`text-(--yellow-11)`,a;t[1]===i?a=t[2]:(a=U(`size-3`,i),t[1]=i,t[2]=a);let o;t[3]===a?o=t[4]:(o=(0,Z.jsx)(v,{className:a}),t[3]=a,t[4]=o);let s;t[5]===r?s=t[6]:(s=(0,Z.jsx)(`span`,{className:`sr-only`,children:r}),t[5]=r,t[6]=s);let c;return t[7]!==o||t[8]!==s?(c=(0,Z.jsxs)(`span`,{className:`ml-auto flex shrink-0`,children:[o,s]}),t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function $n(e){let t=(0,X.c)(7),{format:n,formatLabel:r,status:i,onInstall:a,isInstalling:o}=e,s=o!==void 0&&o;if(i.availabilityCheckFailed){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(`div`,{className:`mb-2.5`,children:(0,Z.jsx)(er,{children:`Couldn't check whether this export is available. You can still try it.`})}),t[0]=e):e=t[0],e}if(!i.reason)return null;let c;return t[1]!==n||t[2]!==r||t[3]!==s||t[4]!==a||t[5]!==i.reason?(c=(0,Z.jsx)(`div`,{className:`mb-2.5`,children:(0,Z.jsx)(tr,{format:n,formatLabel:r,reason:i.reason,onInstall:a,isInstalling:s})}),t[1]=n,t[2]=r,t[3]=s,t[4]=a,t[5]=i.reason,t[6]=c):c=t[6],c}function er(e){let t=(0,X.c)(9),{children:n,onInstall:r,isInstalling:i}=e,a=i!==void 0&&i,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Z.jsx)(v,{className:`size-4 shrink-0`}),t[0]=o):o=t[0];let s;t[1]===n?s=t[2]:(s=(0,Z.jsx)(`span`,{className:`min-w-0 flex-1`,children:n}),t[1]=n,t[2]=s);let c;t[3]!==a||t[4]!==r?(c=r?(0,Z.jsxs)(K,{type:`button`,variant:`outline`,size:`xs`,className:`shrink-0 border-input bg-background text-foreground hover:border-input hover:bg-muted hover:text-foreground`,disabled:a,"aria-busy":a,onClick:r,children:[a?(0,Z.jsx)(rt,{size:`small`,className:`mr-1.5 size-3.5`}):(0,Z.jsx)(Ht,{className:`mr-1.5 size-3.5`}),`Install`]}):null,t[3]=a,t[4]=r,t[5]=c):c=t[5];let l;return t[6]!==s||t[7]!==c?(l=(0,Z.jsxs)(Ot,{variant:`warning`,className:`flex items-center gap-2.5 px-3 py-2 text-(--yellow-12) has-[svg]:pl-3 [&>svg]:static [&>svg+div]:translate-y-0`,children:[o,(0,Z.jsxs)(Dt,{className:`flex min-w-0 flex-1 items-center gap-3 text-sm leading-5`,children:[s,c]})]}),t[6]=s,t[7]=c,t[8]=l):l=t[8],l}function tr(e){let t=(0,X.c)(22),{format:n,formatLabel:r,reason:i,onInstall:a,isInstalling:o}=e;switch(i.type){case`checking-requirements`:{let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(rt,{className:`size-4 shrink-0`,size:`small`}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,Z.jsxs)(Ot,{role:`status`,variant:`info`,className:`flex items-center gap-2.5 p-3 has-[svg]:pl-3 [&>svg]:static [&>svg+div]:translate-y-0`,children:[e,(0,Z.jsxs)(Dt,{className:`min-w-0 flex-1 text-sm leading-5`,children:[`Checking `,r,` requirements…`]})]}),t[1]=r,t[2]=n),n}case`notebook-must-be-named`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(er,{children:`Name and save this notebook before exporting.`}),t[3]=e):e=t[3],e}case`missing-packages`:{let e;t[4]===i.packages?e=t[5]:(e=i.packages.join(`, `),t[4]=i.packages,t[5]=e);let n;t[6]===e?n=t[7]:(n=(0,Z.jsx)(`code`,{className:`break-words font-mono`,children:e}),t[6]=e,t[7]=n);let s;return t[8]!==r||t[9]!==o||t[10]!==a||t[11]!==n?(s=(0,Z.jsxs)(er,{onInstall:a,isInstalling:o,children:[r,` export requires`,` `,n,`.`]}),t[8]=r,t[9]=o,t[10]=a,t[11]=n,t[12]=s):s=t[12],s}case`missing-setup`:{let e;t[13]!==a||t[14]!==i.requirements?(e=a?i.requirements.map(rr).join(` `):(0,Z.jsx)(`span`,{className:`block min-w-0`,children:i.requirements.map(nr)}),t[13]=a,t[14]=i.requirements,t[15]=e):e=t[15];let n;return t[16]!==o||t[17]!==a||t[18]!==e?(n=(0,Z.jsx)(er,{onInstall:a,isInstalling:o,children:e}),t[16]=o,t[17]=a,t[18]=e,t[19]=n):n=t[19],n}case`wasm-runtime`:{let e=n===`pdf`?`Use your browser's print dialog to save the current app view as a PDF.`:`Open this notebook in a local marimo session to use this export.`,r;return t[20]===e?r=t[21]:(r=(0,Z.jsx)(er,{children:e}),t[20]=e,t[21]=r),r}default:vt(i)}}function nr(e){let t=Zn[e.name];return(0,Z.jsxs)(`span`,{className:`block`,children:[t.description,(0,Z.jsx)(`code`,{className:`mt-1 block break-all font-mono`,children:e.command})]},e.name)}function rr(e){return Zn[e.name].description}function ir(e){return e.endsWith(`.myst.md`)?`mystmd`:e.endsWith(`.qmd`)?`qmd`:e.endsWith(`.mdx`)?`mdx`:`pymdown`}function ar(e,t){let n=t??ir(e),r=Tt[n],i=Et.find(t=>e.endsWith(t)),a=G.withoutExtension(e);i&&(a=e.slice(0,-i.length));let o=`${a}.${r}`;return o===e?`${e.slice(0,-(r.length+1))}.export.${r}`:o}function or(e){return Object.entries(e).flatMap(([e,t])=>t===null?[]:t===!0?[`--${e}`]:t===!1?[`--no-${e}`]:[`--${e}=${t}`])}function sr(e){return e.preset===`document`?e.webpdf:null}var cr={html:{subcommand:`html`,flags:({html:e})=>({"include-code":e.includeCode}),outputFilename:e=>G.toHTML(e)},markdown:{subcommand:`md`,flags:({markdown:e})=>({flavor:e.flavor}),outputFilename:(e,{markdown:t})=>ar(e,t.flavor)},ipynb:{subcommand:`ipynb`,flags:({ipynb:e})=>({sort:e.sortMode,"include-outputs":e.includeOutputs}),outputFilename:e=>G.toIPYNB(e)},pdf:{subcommand:`pdf`,flags:({pdf:e})=>({as:e.preset,"include-inputs":e.includeInputs,"include-outputs":e.includeOutputs,webpdf:sr(e)}),outputFilename:e=>G.toPDF(e)},script:{subcommand:`script`,flags:()=>({}),outputFilename:e=>`${G.withoutExtension(e)}.script.py`}};function lr({format:e,filename:t,options:n}){if(e===`png`||e===`script`&&n.script.type===`source`||!t)return null;let r=cr[e];return[`marimo`,`export`,r.subcommand,bt(t),...or(r.flags(n)),`-o`,bt(r.outputFilename(t,n))].join(` `)}async function ur(e){let{exportOptions:t,captureOutputs:n,downloadPDF:r}=e;t.includeOutputs&&await n(),await r(t)}async function dr({format:e,options:t,requests:n,sourceFilename:r,htmlFiles:i,getLayout:a,captureOutputs:o,capturePNG:s,downloadFile:c}){switch(e){case`html`:c(await n.exportAsHTML({download:!1,files:i,includeCode:t.html.includeCode,layout:await a()}));return;case`markdown`:c(await n.exportAsMarkdown({download:!1,flavor:t.markdown.flavor}));return;case`ipynb`:t.ipynb.includeOutputs&&await o(),c(await n.exportAsIPYNB({download:!1,sortMode:t.ipynb.sortMode,includeOutputs:t.ipynb.includeOutputs}));return;case`pdf`:await ur({exportOptions:t.pdf,captureOutputs:o,downloadPDF:async e=>{c(await n.exportAsPDF(e))}});return;case`script`:if(t.script.type===`source`){c({contents:(await n.readCode()).contents,filename:r,mediaType:`text/plain`});return}c(await n.exportAsScript({download:!1}));return;case`png`:await s();return;default:vt(e)}}var fr={source:{actionLabel:`Export notebook source`,progressLabel:`notebook source`},flat:{actionLabel:`Export flat script`,progressLabel:`flat script`}};function pr(e,t){if(e===`wasm`)return{status:`success`,data:null};switch(t.status){case`pending`:case`loading`:return{status:`pending`};case`error`:return{status:`error`};case`success`:return{status:`success`,data:t.data}}}function mr(e,t){return e===`server`&&t?De.basename(t):G.toPY(document.title)}function hr({usesBrowserPrint:e,hasCommand:t,format:n,isNotebookSource:r}){return e?`Uses the browser's print settings for page size and filename.`:t?`Uses the current session state. The copied command exports the saved notebook.`:n!==`png`&&!r?`Save the notebook to copy an equivalent shell command.`:null}function gr(e){let n=kt(),[r,i]=t(wn),[a,o]=t(Tn),[s,c]=(0,Y.useState)(e??a),l=V()?`wasm`:`server`,u=J(),d=I(),[f,p]=(0,Y.useState)(!1),m=xt(async()=>l===`wasm`?null:u.getExportAvailability(),[l,u]),h=pr(l,m),g=e=>On({format:e,options:r,runtime:l,filename:n,availability:h}),_=g(s),v=d&&(_.reason?.type===`missing-packages`||_.reason?.type===`missing-setup`),y=pn.map(e=>({format:e,status:g(e)})),b=Dn(l,s),x=Fn[s],ee=s===`script`&&r.script.type===`source`,{actionLabel:S,progressLabel:te}=s===`script`?fr[r.script.type]:{actionLabel:x.actionLabel,progressLabel:x.label},C=b?null:lr({format:s,filename:n,options:r}),w=hr({usesBrowserPrint:b,hasCommand:!!C,format:s,isNotebookSource:ee});return(0,Y.useEffect)(()=>{e&&o(e)},[e,o]),{formats:y,options:r,selected:{format:s,status:_,usesBrowserPrint:b,actionLabel:S,command:C,footerDescription:w},exportRequest:{format:s,options:r,sourceFilename:mr(l,n),available:_.available,usesBrowserPrint:b,progressLabel:te},selectFormat:e=>{vn(e)&&(c(e),o(e))},updateOptions:(e,t)=>{i(n=>{let r={...n};return r[e]={...n[e],...t},r})},canInstall:v,isInstalling:f,installRequirements:async()=>{if(!(!v||f||s===`png`)){p(!0);try{let e=await u.installExportRequirements({format:s});m.setData(e)}catch{}finally{p(!1)}}}}}async function _r(e){let t=document.getElementById(`App`);if(!t){let e=`The current app view could not be captured.`;throw ht({title:`Failed to download as PNG`,description:e,variant:`danger`}),Error(e)}let n=e?.style.visibility,r=e?.classList.contains(`print:hidden`);if(!await _e({element:t,filename:document.title,prepare:()=>{let t=ve();return e&&(e.classList.add(`print:hidden`),e.style.visibility=`hidden`),()=>{t(),e&&(r||e.classList.remove(`print:hidden`),e.style.visibility=n??``)}}}))throw Error(`Failed to capture the current app view.`)}function vr(e){e(),requestAnimationFrame(()=>{setTimeout(()=>{window.print()},0)})}function yr({format:e,options:t,sourceFilename:n,available:r,usesBrowserPrint:i,progressLabel:a,onClose:o}){let s=J(),c=Rt(),[l,u]=(0,Y.useState)(!1),d=(0,Y.useRef)(null),f=(0,Y.useRef)(!0);(0,Y.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]);let p=async e=>{await zt({takeScreenshots:()=>c({progress:e}),updateCellOutputs:s.updateCellOutputs})},m=async()=>{await R(()=>_r(d.current?.parentElement??null))};return{dialogRef:d,isExporting:l,submit:async()=>{if(!(!r||l)){if(i){vr(o);return}u(!0);try{await ge(`Exporting ${a}…`,async r=>{await dr({format:e,options:t,requests:s,sourceFilename:n,htmlFiles:Ne.INSTANCE.filenames(),getLayout:Pe,captureOutputs:()=>p(r),capturePNG:m,downloadFile:he})}),f.current&&o()}catch(e){M.error(`Export failed`,e)}finally{f.current&&u(!1)}}}}}function br(e){let t=(0,X.c)(15),{initialFormat:n,onClose:r}=e,i=gr(n),a,o,s;t[0]===i?(a=t[1],o=t[2],s=t[3]):({exportRequest:a,selectFormat:o,...s}=i,t[0]=i,t[1]=a,t[2]=o,t[3]=s);let c;t[4]!==a||t[5]!==r?(c={...a,onClose:r},t[4]=a,t[5]=r,t[6]=c):c=t[6];let l=yr(c),u;t[7]!==l||t[8]!==o||t[9]!==s?(u=e=>{!l.isExporting&&!s.isInstalling&&o(e)},t[7]=l,t[8]=o,t[9]=s,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==s||t[13]!==u?(d={...s,...l,selectFormat:u},t[11]=l,t[12]=s,t[13]=u,t[14]=d):d=t[14],d}var xr=`(min-width: 640px)`,Sr=e=>{let t=(0,X.c)(75),{initialFormat:n,onClose:r,returnFocusRef:i}=e,a;t[0]!==n||t[1]!==r?(a={initialFormat:n,onClose:r},t[0]=n,t[1]=r,t[2]=a):a=t[2];let{dialogRef:o,isExporting:s,isInstalling:c,canInstall:l,formats:u,options:d,selected:f,selectFormat:p,updateOptions:m,installRequirements:h,submit:g}=br(a),_=s||c,v=ce(xr),{format:y,status:b,usesBrowserPrint:x,actionLabel:ee,command:S,footerDescription:te}=f,C=Fn[y],w=C.Options,ne;t[3]===i?ne=t[4]:(ne=i?{onCloseAutoFocus:e=>{e.preventDefault(),i.current?.focus()}}:{},t[3]=i,t[4]=ne);let T=ne,re;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,Z.jsxs)(st,{className:`border-b px-5 py-4 pr-12`,children:[(0,Z.jsx)(dt,{children:`Export notebook`}),(0,Z.jsx)(ct,{children:`Choose a format and adjust its options.`})]}),t[5]=re):re=t[5];let E=v?`vertical`:`horizontal`,D;if(t[6]!==u||t[7]!==_){let e;t[9]===_?e=t[10]:(e=e=>{let{format:t,status:n}=e,r=Fn[t];return(0,Z.jsxs)(be,{value:t,disabled:_,className:`min-w-0 justify-start gap-2 px-2.5 py-2 text-xs data-[state=active]:shadow-xs sm:w-full sm:text-sm`,"data-testid":`export-format-${t}`,children:[(0,Z.jsx)(r.Icon,{className:`size-3.5 shrink-0`,strokeWidth:1.5}),(0,Z.jsx)(`span`,{className:`truncate`,children:r.label}),(0,Z.jsx)(Qn,{status:n})]},t)},t[9]=_,t[10]=e),D=u.map(e),t[6]=u,t[7]=_,t[8]=D}else D=t[8];let O;t[11]===D?O=t[12]:(O=(0,Z.jsx)(Se,{"aria-label":`Export format`,className:`grid max-h-none shrink-0 grid-cols-2 items-stretch justify-start gap-1 overflow-auto rounded-none border-b bg-muted/20 p-2 min-[360px]:grid-cols-3 sm:flex sm:h-full sm:flex-col sm:border-b-0 sm:border-r`,children:D}),t[11]=D,t[12]=O);let k;if(t[13]!==w||t[14]!==l||t[15]!==C.description||t[16]!==C.label||t[17]!==y||t[18]!==u||t[19]!==h||t[20]!==_||t[21]!==c||t[22]!==d||t[23]!==b||t[24]!==m||t[25]!==x){let e;t[27]!==w||t[28]!==l||t[29]!==C.description||t[30]!==C.label||t[31]!==y||t[32]!==h||t[33]!==_||t[34]!==c||t[35]!==d||t[36]!==b||t[37]!==m||t[38]!==x?(e=e=>{let{format:t}=e;return(0,Z.jsxs)(xe,{value:t,className:`mt-0 min-h-0 min-w-0 overflow-y-auto px-4 py-3`,children:[(0,Z.jsxs)(`div`,{className:`mb-3`,children:[(0,Z.jsx)(`h3`,{className:`text-base font-semibold`,children:C.label}),(0,Z.jsx)(`p`,{className:`mt-0.5 text-sm text-muted-foreground`,children:C.description})]}),(0,Z.jsx)($n,{format:y,formatLabel:C.label,status:b,onInstall:l?h:void 0,isInstalling:c}),x?null:(0,Z.jsx)(w,{options:d,updateOptions:m,disabled:_})]},t)},t[27]=w,t[28]=l,t[29]=C.description,t[30]=C.label,t[31]=y,t[32]=h,t[33]=_,t[34]=c,t[35]=d,t[36]=b,t[37]=m,t[38]=x,t[39]=e):e=t[39],k=u.map(e),t[13]=w,t[14]=l,t[15]=C.description,t[16]=C.label,t[17]=y,t[18]=u,t[19]=h,t[20]=_,t[21]=c,t[22]=d,t[23]=b,t[24]=m,t[25]=x,t[26]=k}else k=t[26];let A;t[40]!==y||t[41]!==p||t[42]!==E||t[43]!==O||t[44]!==k?(A=(0,Z.jsxs)(Ce,{value:y,onValueChange:p,orientation:E,className:`flex min-h-0 min-w-0 flex-col overflow-hidden sm:grid sm:grid-cols-[168px_minmax(0,1fr)]`,children:[O,k]}),t[40]=y,t[41]=p,t[42]=E,t[43]=O,t[44]=k,t[45]=A):A=t[45];let j;t[46]===S?j=t[47]:(j=S?(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border bg-background px-2.5 py-2 font-mono text-xs`,children:[(0,Z.jsx)(`span`,{className:`select-none text-muted-foreground`,"aria-hidden":!0,children:`$`}),(0,Z.jsx)(`code`,{className:`min-w-0 flex-1 overflow-x-auto whitespace-nowrap`,"data-testid":`export-cli-command`,"aria-label":`Equivalent POSIX shell command`,children:S}),(0,Z.jsx)(gt,{value:S,className:`size-3.5`,buttonClassName:U(we({variant:`ghost`,size:`icon`}),`shrink-0`),tooltip:`Copy POSIX shell command`,ariaLabel:`Copy POSIX shell command`,toastTitle:`Command copied`})]}):null,t[46]=S,t[47]=j);let M=S&&`mt-3`,N;t[48]===M?N=t[49]:(N=U(`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,M),t[48]=M,t[49]=N);let P;t[50]===te?P=t[51]:(P=te?(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:te}):null,t[50]=te,t[51]=P);let F=!b.available||_,I=!te&&`sm:ml-auto`,L;t[52]===I?L=t[53]:(L=U(`border-(--blue-11) bg-(--blue-11) hover:border-(--blue-12) hover:bg-(--blue-12) sm:min-w-36 dark:border-(--blue-7) dark:bg-(--blue-5) dark:text-(--blue-12) dark:hover:border-(--blue-8) dark:hover:bg-(--blue-6)`,I),t[52]=I,t[53]=L);let R;t[54]===s?R=t[55]:(R=s&&(0,Z.jsx)(rt,{size:`small`,className:`mr-2`,"aria-hidden":!0}),t[54]=s,t[55]=R);let ie=x?`Print to PDF`:ee,z;t[56]!==s||t[57]!==g||t[58]!==F||t[59]!==L||t[60]!==R||t[61]!==ie?(z=(0,Z.jsxs)(K,{type:`button`,disabled:F,"aria-busy":s,onClick:g,className:L,"data-testid":`export-submit`,children:[R,ie]}),t[56]=s,t[57]=g,t[58]=F,t[59]=L,t[60]=R,t[61]=ie,t[62]=z):z=t[62];let B;t[63]!==N||t[64]!==P||t[65]!==z?(B=(0,Z.jsxs)(`div`,{className:N,children:[P,z]}),t[63]=N,t[64]=P,t[65]=z,t[66]=B):B=t[66];let V;t[67]!==B||t[68]!==j?(V=(0,Z.jsxs)(`footer`,{className:`min-w-0 border-t bg-muted/20 px-4 py-3`,children:[j,B]}),t[67]=B,t[68]=j,t[69]=V):V=t[69];let H;return t[70]!==o||t[71]!==T||t[72]!==V||t[73]!==A?(H=(0,Z.jsxs)(lt,{ref:o,className:`grid h-dvh max-h-[760px] min-w-0 w-[calc(100vw-2rem)] grid-rows-[auto_minmax(0,1fr)_auto] gap-0 overflow-hidden p-0 sm:top-[5vh] sm:h-[90vh] sm:max-h-[640px] sm:max-w-3xl`,"data-testid":`export-dialog`,...T,children:[re,A,V]}),t[70]=o,t[71]=T,t[72]=V,t[73]=A,t[74]=H):H=t[74],H};function Cr(e){let t=(0,X.c)(5),{openPrompt:n,closeModal:r}=nt(),{sendCopy:i}=J(),a;return t[0]!==r||t[1]!==n||t[2]!==i||t[3]!==e?(a=()=>{if(!e)return null;let t=ke.guessDeliminator(e),a=De.basename(e);n({title:`Copy notebook`,description:`Enter a new filename for the notebook copy.`,defaultValue:`_${a}`,confirmText:`Copy notebook`,spellCheck:!1,onConfirm:n=>{let a=t.join(De.dirname(e),n);i({source:e,destination:a}).then(()=>{r(),ht({title:`Notebook copied`,description:`A copy of the notebook has been created.`}),Lt(a)})}})},t[0]=r,t[1]=n,t[2]=i,t[3]=e,t[4]=a):a=t[4],a}var wr=new y,Tr=e=>wr.isSupported(e)?`markdown`:`code`,Er=()=>{let e=(0,X.c)(3),{updateCellConfig:t}=o(),{saveCellConfig:n}=J(),r;return e[0]!==n||e[1]!==t?(r=async(e,r)=>{let i=b(),a={};for(let t of i.cellIds.inOrderIds){let n=i.cellData[t];n!==void 0&&n.config.hide_code!==e&&Tr(n.code)===r&&(a[t]={hide_code:e})}let o=N.entries(a);if(o.length!==0){await n({configs:a});for(let[e,n]of o)t({cellId:e,config:n})}},e[0]=n,e[1]=t,e[2]=r):r=e[2],r};function Dr(e,t){let n={};for(let r of e.cellIds.inOrderIds){let i=e.cellData[r];i!==void 0&&(i.config.expand_output??!1)!==t&&(We(e.cellRuntime[r]?.output)||(n[r]={expand_output:t}))}return n}var Or=()=>{let e=(0,X.c)(3),{updateCellConfig:t}=o(),{saveCellConfig:n}=J(),r;return e[0]!==n||e[1]!==t?(r=async e=>{let r=Dr(b(),e),i=N.entries(r);if(i.length!==0){await n({configs:r});for(let[e,n]of i)t({cellId:e,config:n})}},e[0]=n,e[1]=t,e[2]=r):r=e[2],r},kr=e=>{e?.preventDefault(),e?.stopPropagation()};function Ar(e){let n=(0,X.c)(44),a;n[0]===e?a=n[1]:(a=e===void 0?{}:e,n[0]=e,n[1]=a);let{exportDialogReturnFocusRef:m}=a,g=kt(),{openModal:_,closeModal:v}=nt(),{toggleApplication:y}=d(),{selectedPanel:x}=te(),[T]=t(B),E=r(ie),D=Er(),O=Or(),[k]=A(),M=r(c),P=r(j),{updateCellConfig:I,undoDeleteCell:L,clearAllCellOutputs:R,addSetupCellIfDoesntExist:z,collapseAllCells:H,expandAllCells:U}=o(),ae=Ct(),ce=St(),le=Cr(g),ue=i(sn),de=i(Le),{handleClick:fe}=Re(),pe=i(Fe),me=i(wn),{readCode:W,saveCellConfig:he}=J(),ge=re(`database`),G=re(`storage`),_e=f(),ve=r(h),ye=r(ne),be=r(s),{selectedLayout:xe}=at(),{setLayoutView:Se}=it(),Ce=on(),we=k.sharing?.html??!0,K=k.sharing?.wasm??!0,q=k.sharing?.molab??!0,De=xe===`slides`,ke;if(n[2]!==_e||n[3]!==z||n[4]!==P||n[5]!==ye||n[6]!==M||n[7]!==R||n[8]!==v||n[9]!==H||n[10]!==le||n[11]!==ge||n[12]!==G||n[13]!==U||n[14]!==m||n[15]!==g||n[16]!==ve||n[17]!==De||n[18]!==E||n[19]!==_||n[20]!==fe||n[21]!==W||n[22]!==ae||n[23]!==ce||n[24]!==he||n[25]!==xe||n[26]!==x||n[27]!==D||n[28]!==ue||n[29]!==me||n[30]!==pe||n[31]!==Se||n[32]!==O||n[33]!==de||n[34]!==we||n[35]!==q||n[36]!==K||n[37]!==y||n[38]!==Ce||n[39]!==L||n[40]!==be||n[41]!==I||n[42]!==T.mode){let e=[`db`,`sql`,...Mt],t=[`bucket`,`object storage`,...Pt],r=Gr,i=(e,t)=>{t&&me(e=>xn(e,t)),_((0,Z.jsx)(Sr,{initialFormat:e,onClose:v,returnFocusRef:m}))};ke=[{icon:(0,Z.jsx)(oe,{size:14,strokeWidth:1.5}),label:`Export…`,additionalKeywords:[`download`,`html`,`markdown`,`ipynb`,`pdf`,`script`,`png`],handle:()=>i()},{icon:(0,Z.jsx)(oe,{size:14,strokeWidth:1.5}),label:`Download`,redundant:!0,handle:kr,dropdown:[{icon:(0,Z.jsx)(Me,{size:14,strokeWidth:1.5}),label:`Download as HTML`,handle:()=>i(`html`,{html:{includeCode:!0}})},{icon:(0,Z.jsx)(Me,{size:14,strokeWidth:1.5}),label:`Download as HTML (exclude code)`,handle:()=>i(`html`,{html:{includeCode:!1}})},{icon:(0,Z.jsx)(At,{strokeWidth:1.5,style:{width:14,height:14}}),label:`Download as Markdown`,handle:()=>i(`markdown`)},{icon:(0,Z.jsx)(Yt,{size:14,strokeWidth:1.5}),label:`Download as ipynb`,handle:()=>i(`ipynb`)},{icon:(0,Z.jsx)(Ge,{size:14,strokeWidth:1.5}),label:`Download notebook source`,handle:()=>i(`script`,{script:{type:`source`}})},{icon:(0,Z.jsx)(Ge,{size:14,strokeWidth:1.5}),label:`Download flat script`,handle:()=>i(`script`,{script:{type:`flat`}})},{divider:!0,icon:(0,Z.jsx)(tt,{size:14,strokeWidth:1.5}),label:`Download as PNG`,handle:()=>i(`png`)},De?{divider:!0,icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Download as PDF`,handle:kr,dropdown:[{icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Document Layout`,handle:()=>i(`pdf`,{pdf:{preset:`document`}})},{icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Slides Layout`,hidden:V(),rightElement:(0,Z.jsx)(`span`,{className:`ml-3 shrink-0 rounded-full border border-emerald-200 bg-emerald-50 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-emerald-700`,children:`Recommended`}),handle:()=>i(`pdf`,{pdf:{preset:`slides`}})}]}:{divider:!0,icon:(0,Z.jsx)(Je,{size:14,strokeWidth:1.5}),label:`Download as PDF`,handle:()=>i(`pdf`,{pdf:{preset:`document`}})}]},{icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Connect your agent`,hidden:V(),handle:async()=>{_((0,Z.jsx)(Ie,{onClose:v}))},additionalKeywords:[`connect`]},{icon:(0,Z.jsx)(Qt,{size:14,strokeWidth:1.5}),label:`Share`,handle:kr,hidden:!we&&!K&&!q,dropdown:[{icon:(0,Z.jsx)(Ye,{size:14,strokeWidth:1.5}),label:`Publish HTML to web`,hidden:!we,handle:async()=>{_((0,Z.jsx)(nn,{onClose:v}))}},{icon:(0,Z.jsx)(Be,{size:14,strokeWidth:1.5}),label:`Create WebAssembly link`,hidden:!K,handle:async()=>{let e=await W(),t=wt({code:e.contents});await mt(t),ht({title:`Copied`,description:`Link copied to clipboard.`})}},{icon:(0,Z.jsx)(It,{size:14,strokeWidth:1.5}),label:`Create molab notebook`,hidden:!q,handle:async()=>{let e=await W(),t=wt({code:e.contents,baseUrl:`${F.molab}/new`});window.open(t,`_blank`)}}]},{icon:(0,Z.jsx)(Xt,{size:14,strokeWidth:1.5}),label:`Helper panel`,redundant:!0,handle:kr,dropdown:l.flatMap(e=>{let t=e.type===`ai`&&!P;if(p({panel:e,capabilities:M,aiEnabled:P})&&!t)return[];let{type:n,Icon:i,additionalKeywords:a}=e;return{label:yt.startCase(n),rightElement:r(x===n),icon:(0,Z.jsx)(i,{size:14,strokeWidth:1.5}),handle:()=>{if(t){fe(`ai`,`ai-features`);return}y(n)},additionalKeywords:a}})},{icon:(0,Z.jsx)(Zt,{size:14,strokeWidth:1.5}),label:`Present as`,handle:kr,dropdown:[{icon:T.mode===`present`?(0,Z.jsx)(u,{size:14,strokeWidth:1.5}):(0,Z.jsx)(Ae,{size:14,strokeWidth:1.5}),label:`Toggle app view`,hotkey:`global.hideCode`,handle:()=>{Ce()}},...ot.map((e,t)=>{let n=un(e);return{divider:t===0,label:dn(e),icon:(0,Z.jsx)(n,{size:14,strokeWidth:1.5}),rightElement:(0,Z.jsx)(`div`,{className:`w-8 flex justify-end`,children:xe===e&&(0,Z.jsx)(ze,{size:14})}),handle:()=>{Se(e),T.mode===`edit`&&Ce()}}})]},{icon:(0,Z.jsx)(Kt,{size:14,strokeWidth:1.5}),label:`Duplicate notebook`,hidden:!g||V(),handle:le},{icon:(0,Z.jsx)(se,{size:14,strokeWidth:1.5}),label:`Copy code to clipboard`,hidden:!g,handle:async()=>{let e=await W();await mt(e.contents),ht({title:`Copied`,description:`Code copied to clipboard.`})}},{icon:(0,Z.jsx)(Ve,{size:14,strokeWidth:1.5}),label:`Enable all cells`,hidden:!ve||E,handle:async()=>{let e=b(),t=C(e),n=N.fromEntries(t.map(Wr));await he({configs:n});for(let e of t)I({cellId:e,config:{disabled:!1}})}},{divider:!0,icon:(0,Z.jsx)(Wt,{size:14,strokeWidth:1.5}),label:`Add setup cell`,handle:()=>{z({})}},{icon:(0,Z.jsx)(Ee,{size:14,strokeWidth:1.5}),label:`Add database connection`,additionalKeywords:e,handle:()=>{_((0,Z.jsx)(Nt,{onClose:v}))},dropdown:ge.length===0?void 0:[...ge.map(e=>({icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Add ${e.displayName}`,description:`Detected in your environment`,handle:()=>_e(e)})),{divider:!0,icon:(0,Z.jsx)(Ee,{size:14,strokeWidth:1.5}),label:`Browse all connections`,additionalKeywords:e,handle:()=>{_((0,Z.jsx)(Nt,{onClose:v}))}}]},{icon:(0,Z.jsx)($e,{size:14,strokeWidth:1.5}),label:`Add remote storage`,additionalKeywords:t,handle:()=>{_((0,Z.jsx)(Nt,{defaultTab:`storage`,onClose:v}))},dropdown:G.length===0?void 0:[...G.map(e=>({icon:(0,Z.jsx)(S,{size:14,strokeWidth:1.5}),label:`Add ${e.displayName}`,description:`Detected in your environment`,handle:()=>_e(e)})),{divider:!0,icon:(0,Z.jsx)($e,{size:14,strokeWidth:1.5}),label:`Browse all connections`,additionalKeywords:t,handle:()=>{_((0,Z.jsx)(Nt,{defaultTab:`storage`,onClose:v}))}}]},{icon:(0,Z.jsx)(en,{size:14,strokeWidth:1.5}),label:be,hidden:!ye||E,handle:()=>{L()}},{icon:(0,Z.jsx)($t,{size:14,strokeWidth:1.5}),label:`Restart kernel`,variant:`danger`,handle:ae,additionalKeywords:[`reset`,`reload`,`restart`]},{icon:(0,Z.jsx)(Gt,{size:14,strokeWidth:1.5}),label:`Re-run all cells`,redundant:!0,hotkey:`global.runAll`,handle:async()=>{ce()}},{icon:(0,Z.jsx)(ee,{size:14,strokeWidth:1.5}),label:`Clear all outputs`,redundant:!0,handle:()=>{R()}},{icon:(0,Z.jsx)(w,{size:14,strokeWidth:1.5}),label:`Show all code`,hotkey:`global.showAllCode`,handle:()=>D(!1,`code`),redundant:!0},{icon:(0,Z.jsx)(Ke,{size:14,strokeWidth:1.5}),label:`Hide all code`,hotkey:`global.hideAllCode`,handle:()=>D(!0,`code`),redundant:!0},{icon:(0,Z.jsx)(w,{size:14,strokeWidth:1.5}),label:`Show all markdown code`,hotkey:`global.showAllMarkdownCode`,handle:()=>D(!1,`markdown`),redundant:!0},{icon:(0,Z.jsx)(Ke,{size:14,strokeWidth:1.5}),label:`Hide all markdown code`,hotkey:`global.hideAllMarkdownCode`,handle:()=>D(!0,`markdown`),redundant:!0},{icon:(0,Z.jsx)(Ue,{size:14,strokeWidth:1.5}),label:`Expand all outputs`,hotkey:`global.expandAllOutputs`,hidden:T.mode!==`edit`,handle:()=>O(!0),redundant:!0},{icon:(0,Z.jsx)(He,{size:14,strokeWidth:1.5}),label:`Clamp all outputs`,hotkey:`global.clampAllOutputs`,hidden:T.mode!==`edit`,handle:()=>O(!1),redundant:!0},{icon:(0,Z.jsx)(Vt,{size:14,strokeWidth:1.5}),label:`Collapse all sections`,hotkey:`global.collapseAllSections`,handle:H,redundant:!0},{icon:(0,Z.jsx)(Bt,{size:14,strokeWidth:1.5}),label:`Expand all sections`,hotkey:`global.expandAllSections`,handle:U,redundant:!0},{divider:!0,icon:(0,Z.jsx)(Ut,{size:14,strokeWidth:1.5}),label:`Command palette`,hotkey:`global.commandPalette`,handle:()=>ue(Ur)},{icon:(0,Z.jsx)(je,{size:14,strokeWidth:1.5}),label:`Keyboard shortcuts`,hotkey:`global.showHelp`,handle:()=>pe(Hr)},{icon:(0,Z.jsx)(ft,{size:14,strokeWidth:1.5}),label:`User settings`,handle:()=>de(Vr),redundant:!0,additionalKeywords:[`preferences`,`options`,`configuration`]},{icon:(0,Z.jsx)(Jt,{size:14,strokeWidth:1.5}),label:`Report an issue`,additionalKeywords:[`feedback`,`bug`,`issue`,`report`,`diagnostics`],handle:()=>_((0,Z.jsx)(jt,{onClose:v}))},{icon:(0,Z.jsx)(qe,{size:14,strokeWidth:1.5}),label:`Resources`,handle:kr,dropdown:[{icon:(0,Z.jsx)(Te,{size:14,strokeWidth:1.5}),label:`Documentation`,handle:Br},{icon:(0,Z.jsx)(Ft,{className:`h-3.5 w-3.5`}),label:`GitHub`,handle:zr},{icon:(0,Z.jsx)(Xe,{size:14,strokeWidth:1.5}),label:`Discord Community`,handle:Rr},{icon:(0,Z.jsx)(Qe,{className:`h-3.5 w-3.5`}),label:`YouTube`,handle:Lr},{icon:(0,Z.jsx)(Oe,{size:14,strokeWidth:1.5}),label:`Changelog`,handle:Ir}]},{divider:!0,icon:(0,Z.jsx)(et,{size:14,strokeWidth:1.5}),label:`Open home`,hidden:!location.search.includes(`file`),handle:Fr},{icon:(0,Z.jsx)(It,{size:14,strokeWidth:1.5}),label:`New notebook`,hidden:!location.search.includes(`file`),handle:Pr}].filter(Nr).map(jr),n[2]=_e,n[3]=z,n[4]=P,n[5]=ye,n[6]=M,n[7]=R,n[8]=v,n[9]=H,n[10]=le,n[11]=ge,n[12]=G,n[13]=U,n[14]=m,n[15]=g,n[16]=ve,n[17]=De,n[18]=E,n[19]=_,n[20]=fe,n[21]=W,n[22]=ae,n[23]=ce,n[24]=he,n[25]=xe,n[26]=x,n[27]=D,n[28]=ue,n[29]=me,n[30]=pe,n[31]=Se,n[32]=O,n[33]=de,n[34]=we,n[35]=q,n[36]=K,n[37]=y,n[38]=Ce,n[39]=L,n[40]=be,n[41]=I,n[42]=T.mode,n[43]=ke}else ke=n[43];return ke}function jr(e){return e.dropdown?{...e,dropdown:e.dropdown.filter(Mr)}:e}function Mr(e){return!e.hidden}function Nr(e){return!e.hidden}function Pr(){let e=z();window.open(e,`_blank`)}function Fr(){let e=document.baseURI.split(`?`)[0];window.open(e,`_blank`,`noopener`)}function Ir(){window.open(F.releasesPage,`_blank`)}function Lr(){window.open(F.youtube,`_blank`)}function Rr(){window.open(F.discordLink,`_blank`)}function zr(){window.open(F.githubPage,`_blank`)}function Br(){window.open(F.docsPage,`_blank`)}function Vr(e){return!e}function Hr(e){return!e}function Ur(e){return!e}function Wr(e){return[e,{disabled:!1}]}function Gr(e){return(0,Z.jsx)(`div`,{className:`w-8 flex justify-end`,children:e&&(0,Z.jsx)(ze,{size:14})})}export{sn as a,Jt as c,Ht as d,cn as i,Wt as l,Or as n,on as o,Er as r,en as s,Ar as t,Ut as u};
|
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-0pnwTVch.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-B0Z9INg1.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/react-DVplv7_D.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/compiler-runtime-BrajqUja.js">
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
<link rel="modulepreload" crossorigin href="./assets/table-vrvqpuKJ.js">
|
|
208
208
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-Dbe0MrFr.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="./assets/useStateForKey-CGMJQT8x.js">
|
|
210
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
210
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-DryOywaN.js">
|
|
211
211
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-C4_v6fQW.js">
|
|
212
212
|
<link rel="modulepreload" crossorigin href="./assets/square-function-_W_Lo0P4.js">
|
|
213
213
|
<link rel="modulepreload" crossorigin href="./assets/spec-uCpVvaAR.js">
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-DeBED4OB.js">
|
|
226
226
|
<link rel="modulepreload" crossorigin href="./assets/data-grid-types-DgHVN_Zz.js">
|
|
227
227
|
<link rel="modulepreload" crossorigin href="./assets/glide-utils-HFqhvWHI.js">
|
|
228
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
228
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-CqFSXTtf.js">
|
|
229
229
|
<link rel="modulepreload" crossorigin href="./assets/square-BPmgQFnh.js">
|
|
230
230
|
<link rel="modulepreload" crossorigin href="./assets/triangle-alert-DmIqR8sY.js">
|
|
231
231
|
<link rel="modulepreload" crossorigin href="./assets/prop-types-Djf4O40e.js">
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
<link rel="stylesheet" crossorigin href="./assets/cells-0PFKL3SH.css">
|
|
243
243
|
<link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DjIHoF9Z.css">
|
|
244
244
|
<link rel="stylesheet" crossorigin href="./assets/JsonOutput-B0GmlMnR.css">
|
|
245
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
245
|
+
<link rel="stylesheet" crossorigin href="./assets/index-BnhSnwvB.css">
|
|
246
246
|
</head>
|
|
247
247
|
<body>
|
|
248
248
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
renderCellValue,
|
|
15
15
|
} from "../columns";
|
|
16
16
|
import { getMimeValues, isMimeValue, MimeCell } from "../mime-cell";
|
|
17
|
+
import { buildHighlightPattern } from "../search-highlight";
|
|
17
18
|
import type { FieldTypesWithExternalType } from "../types";
|
|
18
19
|
import { uniformSample } from "../uniformSample";
|
|
19
20
|
import { UrlDetector } from "../url-detector";
|
|
@@ -240,6 +241,7 @@ describe("generateColumns", () => {
|
|
|
240
241
|
// "age" is a number column — should auto right-align
|
|
241
242
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
242
243
|
const cell = (columns[1].cell as any)({
|
|
244
|
+
table: { options: { meta: {} } },
|
|
243
245
|
column: {
|
|
244
246
|
columnDef: columns[1],
|
|
245
247
|
},
|
|
@@ -251,6 +253,7 @@ describe("generateColumns", () => {
|
|
|
251
253
|
// "name" is a string column — should remain left-aligned
|
|
252
254
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
253
255
|
const nameCell = (columns[0].cell as any)({
|
|
256
|
+
table: { options: { meta: {} } },
|
|
254
257
|
column: {
|
|
255
258
|
columnDef: columns[0],
|
|
256
259
|
},
|
|
@@ -271,6 +274,7 @@ describe("generateColumns", () => {
|
|
|
271
274
|
// "age" is numeric but explicitly set to left
|
|
272
275
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
273
276
|
const cell = (columns[1].cell as any)({
|
|
277
|
+
table: { options: { meta: {} } },
|
|
274
278
|
column: {
|
|
275
279
|
columnDef: columns[1],
|
|
276
280
|
},
|
|
@@ -311,6 +315,7 @@ describe("generateColumns", () => {
|
|
|
311
315
|
// Assuming getCellStyleClass is a function that returns a class name
|
|
312
316
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
313
317
|
const cell = (columns[0].cell as any)({
|
|
318
|
+
table: { options: { meta: {} } },
|
|
314
319
|
column: {
|
|
315
320
|
columnDef: columns[0],
|
|
316
321
|
},
|
|
@@ -1359,3 +1364,103 @@ test("column_widths sets fixed size and meta.width", () => {
|
|
|
1359
1364
|
expect(b?.size).toBeUndefined();
|
|
1360
1365
|
expect(b?.meta?.width).toBeUndefined();
|
|
1361
1366
|
});
|
|
1367
|
+
|
|
1368
|
+
describe("renderCellValue with highlightPattern", () => {
|
|
1369
|
+
const createColumn = (
|
|
1370
|
+
dataType: "string" | "number" | "boolean" | "date",
|
|
1371
|
+
dtype = "object",
|
|
1372
|
+
) =>
|
|
1373
|
+
({
|
|
1374
|
+
id: "col",
|
|
1375
|
+
columnDef: { meta: { dataType, dtype } },
|
|
1376
|
+
getColumnFormatting: () => undefined,
|
|
1377
|
+
getColumnWrapping: () => undefined,
|
|
1378
|
+
applyColumnFormatting: (value: unknown) => value,
|
|
1379
|
+
}) as unknown as Column<unknown>;
|
|
1380
|
+
|
|
1381
|
+
const renderCell = (
|
|
1382
|
+
column: Column<unknown>,
|
|
1383
|
+
value: unknown,
|
|
1384
|
+
highlightQuery: string,
|
|
1385
|
+
) =>
|
|
1386
|
+
render(
|
|
1387
|
+
<I18nProvider locale="en-US">
|
|
1388
|
+
<TooltipProvider>
|
|
1389
|
+
{renderCellValue({
|
|
1390
|
+
column,
|
|
1391
|
+
renderValue: () => value,
|
|
1392
|
+
getValue: () => value,
|
|
1393
|
+
selectCell: undefined,
|
|
1394
|
+
cellStyles: "",
|
|
1395
|
+
highlightPattern: buildHighlightPattern(highlightQuery),
|
|
1396
|
+
})}
|
|
1397
|
+
</TooltipProvider>
|
|
1398
|
+
</I18nProvider>,
|
|
1399
|
+
);
|
|
1400
|
+
|
|
1401
|
+
const markTexts = (container: HTMLElement) =>
|
|
1402
|
+
[...container.querySelectorAll("mark")].map((m) => m.textContent);
|
|
1403
|
+
|
|
1404
|
+
it("marks a match in a string cell", () => {
|
|
1405
|
+
const { container } = renderCell(
|
|
1406
|
+
createColumn("string"),
|
|
1407
|
+
"Alice Smith",
|
|
1408
|
+
"smi",
|
|
1409
|
+
);
|
|
1410
|
+
expect(markTexts(container)).toEqual(["Smi"]);
|
|
1411
|
+
});
|
|
1412
|
+
|
|
1413
|
+
it("marks only the middle text when the string has edge whitespace", () => {
|
|
1414
|
+
const { container } = renderCell(createColumn("string"), " a b ", " ");
|
|
1415
|
+
expect(markTexts(container)).toEqual([" "]);
|
|
1416
|
+
const edgeMarkers = container.querySelectorAll("span[aria-label]");
|
|
1417
|
+
expect(edgeMarkers).toHaveLength(2);
|
|
1418
|
+
for (const marker of edgeMarkers) {
|
|
1419
|
+
expect(marker.querySelector("mark")).toBeNull();
|
|
1420
|
+
}
|
|
1421
|
+
});
|
|
1422
|
+
|
|
1423
|
+
it("marks a match in the locale display of a number", () => {
|
|
1424
|
+
const { container } = renderCell(createColumn("number"), 1234.5, "234");
|
|
1425
|
+
expect(markTexts(container)).toEqual(["234"]);
|
|
1426
|
+
expect(container.textContent).toBe("1,234.5");
|
|
1427
|
+
});
|
|
1428
|
+
|
|
1429
|
+
it("does not mark a number when the locale display hides the raw match", () => {
|
|
1430
|
+
const { container } = renderCell(createColumn("number"), 1234, "1234");
|
|
1431
|
+
expect(markTexts(container)).toEqual([]);
|
|
1432
|
+
expect(container.textContent).toBe("1,234");
|
|
1433
|
+
});
|
|
1434
|
+
|
|
1435
|
+
it("marks a boolean cell", () => {
|
|
1436
|
+
const { container } = renderCell(createColumn("boolean"), false, "false");
|
|
1437
|
+
expect(markTexts(container)).toEqual(["False"]);
|
|
1438
|
+
});
|
|
1439
|
+
|
|
1440
|
+
it("marks a date cell by its display string", () => {
|
|
1441
|
+
const { container } = renderCell(
|
|
1442
|
+
createColumn("date", "date"),
|
|
1443
|
+
new Date(2026, 0, 15),
|
|
1444
|
+
"2026",
|
|
1445
|
+
);
|
|
1446
|
+
expect(markTexts(container)).toEqual(["2026"]);
|
|
1447
|
+
});
|
|
1448
|
+
|
|
1449
|
+
it("renders no mark for an empty query", () => {
|
|
1450
|
+
for (const [column, value] of [
|
|
1451
|
+
[createColumn("string"), "Alice"],
|
|
1452
|
+
[createColumn("number"), 12],
|
|
1453
|
+
[createColumn("boolean"), false],
|
|
1454
|
+
[createColumn("date", "date"), new Date(2026, 0, 15)],
|
|
1455
|
+
] as const) {
|
|
1456
|
+
const { container } = renderCell(column, value, "");
|
|
1457
|
+
expect(markTexts(container)).toEqual([]);
|
|
1458
|
+
}
|
|
1459
|
+
});
|
|
1460
|
+
|
|
1461
|
+
it("renders no mark in the trigger of a long-string popout", () => {
|
|
1462
|
+
const value = "x".repeat(60);
|
|
1463
|
+
const { container } = renderCell(createColumn("string"), value, "xxx");
|
|
1464
|
+
expect(markTexts(container)).toEqual([]);
|
|
1465
|
+
});
|
|
1466
|
+
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { render } from "@testing-library/react";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import {
|
|
5
|
+
buildHighlightPattern,
|
|
6
|
+
findMatchRanges,
|
|
7
|
+
highlightMatches,
|
|
8
|
+
highlightRanges,
|
|
9
|
+
} from "../search-highlight";
|
|
10
|
+
|
|
11
|
+
function highlight(text: string, query: string) {
|
|
12
|
+
return highlightMatches(text, buildHighlightPattern(query));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function marksOf(node: React.ReactNode) {
|
|
16
|
+
const { container } = render(<span>{node}</span>);
|
|
17
|
+
return {
|
|
18
|
+
container,
|
|
19
|
+
marks: [...container.querySelectorAll("mark")].map((m) => m.textContent),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe("buildHighlightPattern", () => {
|
|
24
|
+
it("returns undefined for an empty or missing query", () => {
|
|
25
|
+
expect(buildHighlightPattern("")).toBeUndefined();
|
|
26
|
+
expect(buildHighlightPattern(undefined)).toBeUndefined();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("escapes regex metacharacters so the query matches literally", () => {
|
|
30
|
+
const { marks } = marksOf(highlight("a.b a-b (x)", ".b"));
|
|
31
|
+
expect(marks).toEqual([".b"]);
|
|
32
|
+
expect(marksOf(highlight("f(x)", "(x)")).marks).toEqual(["(x)"]);
|
|
33
|
+
expect(marksOf(highlight("C and C++", "c++")).marks).toEqual(["C++"]);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe("highlightMatches", () => {
|
|
38
|
+
it("returns the input unchanged without a pattern", () => {
|
|
39
|
+
expect(highlightMatches("Alice Smith", undefined)).toBe("Alice Smith");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("returns the input unchanged when there is no match", () => {
|
|
43
|
+
expect(highlight("Alice Smith", "zzz")).toBe("Alice Smith");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("returns the input unchanged when the query is longer than the text", () => {
|
|
47
|
+
expect(highlight("ab", "abc")).toBe("ab");
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("wraps a single match and keeps the surrounding text", () => {
|
|
51
|
+
const { container, marks } = marksOf(highlight("Alice Smith", "ce S"));
|
|
52
|
+
expect(marks).toEqual(["ce S"]);
|
|
53
|
+
expect(container.textContent).toBe("Alice Smith");
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("matches case-insensitively and keeps the original casing", () => {
|
|
57
|
+
const { marks } = marksOf(highlight("Alice Smith", "smi"));
|
|
58
|
+
expect(marks).toEqual(["Smi"]);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("wraps every occurrence", () => {
|
|
62
|
+
const { container, marks } = marksOf(highlight("a-A-a", "a"));
|
|
63
|
+
expect(marks).toEqual(["a", "A", "a"]);
|
|
64
|
+
expect(container.textContent).toBe("a-A-a");
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("produces no empty segments for matches at the edges", () => {
|
|
68
|
+
const segments = highlight("xax", "x") as React.ReactNode[];
|
|
69
|
+
expect(Array.isArray(segments)).toBe(true);
|
|
70
|
+
expect(segments).toHaveLength(3);
|
|
71
|
+
expect(segments[1]).toBe("a");
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it("is safe to reuse one global pattern across calls", () => {
|
|
75
|
+
const pattern = buildHighlightPattern("a");
|
|
76
|
+
expect(marksOf(highlightMatches("aa", pattern)).marks).toEqual(["a", "a"]);
|
|
77
|
+
expect(marksOf(highlightMatches("aa", pattern)).marks).toEqual(["a", "a"]);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe("Unicode case folding", () => {
|
|
82
|
+
it("folds the Kelvin sign to k like the backend engines", () => {
|
|
83
|
+
expect(marksOf(highlight("K", "k")).marks).toEqual(["K"]);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("folds every Greek sigma form", () => {
|
|
87
|
+
expect(marksOf(highlight("ΟΣ ος οσ", "σ")).marks).toEqual(["Σ", "ς", "σ"]);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe("highlightRanges", () => {
|
|
92
|
+
it("applies shared ranges to a segment at an offset", () => {
|
|
93
|
+
const ranges = findMatchRanges(
|
|
94
|
+
"see https://x",
|
|
95
|
+
buildHighlightPattern("see https"),
|
|
96
|
+
);
|
|
97
|
+
expect(ranges).toEqual([[0, 9]]);
|
|
98
|
+
const { marks: textMarks } = marksOf(highlightRanges("see ", ranges, 0));
|
|
99
|
+
expect(textMarks).toEqual(["see "]);
|
|
100
|
+
const { marks: linkMarks } = marksOf(
|
|
101
|
+
highlightRanges("https://x", ranges, 4),
|
|
102
|
+
);
|
|
103
|
+
expect(linkMarks).toEqual(["https"]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("returns the segment unchanged when no range overlaps it", () => {
|
|
107
|
+
expect(highlightRanges("zzz", [[10, 12]], 0)).toBe("zzz");
|
|
108
|
+
});
|
|
109
|
+
});
|