@marimo-team/frontend 0.22.5-dev2 → 0.22.5-dev21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/assets/{CellStatus-HZQ0Twqj.js → CellStatus-CP1jrQ3A.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-C9jSHm_Y.js → ConnectedDataExplorerComponent-CfU-ThkK.js} +1 -1
  3. package/dist/assets/{ImperativeModal-Ka_MU6gk.js → ImperativeModal-DoGv2BXV.js} +1 -1
  4. package/dist/assets/JsonOutput-Bk2by9qo.js +49 -0
  5. package/dist/assets/{LazyAnyLanguageCodeMirror-Bb2dITRz.js → LazyAnyLanguageCodeMirror-CoYqQxHb.js} +2 -2
  6. package/dist/assets/MarimoErrorOutput-Cyd8ikG3.js +7 -0
  7. package/dist/assets/RSPContexts-LWFBF00h.js +1 -0
  8. package/dist/assets/{RenderHTML-Cyj8OBbz.js → RenderHTML-BOW_1WUn.js} +1 -1
  9. package/dist/assets/{add-cell-with-ai-BccDsMLb.js → add-cell-with-ai-DUq7Y523.js} +9 -9
  10. package/dist/assets/{add-connection-dialog-BO_nxLQi.js → add-connection-dialog-20N0EHLl.js} +1 -1
  11. package/dist/assets/{agent-panel-BMTl3Cgd.js → agent-panel-DEza5aFa.js} +3 -3
  12. package/dist/assets/{ai-model-dropdown-CS5ryevV.js → ai-model-dropdown-B-sbS07W.js} +4 -4
  13. package/dist/assets/{any-language-editor-BKxF_o5k.js → any-language-editor-DYgTL8eG.js} +1 -1
  14. package/dist/assets/app-config-button-CJFpYJ_2.js +1 -0
  15. package/dist/assets/{cache-panel-PA0cVzei.js → cache-panel-8E_Y5OSb.js} +1 -1
  16. package/dist/assets/{cell-editor-qLPKK49y.js → cell-editor-DLL6kX__.js} +11 -11
  17. package/dist/assets/{cell-link-CY7i_e4O.js → cell-link-Dtonmtv_.js} +1 -1
  18. package/dist/assets/{cells-CuaAKcwV.js → cells-BVG4a-Qn.js} +42 -42
  19. package/dist/assets/{chat-display-BLYrUQhO.js → chat-display-DsIGz-Wy.js} +1 -1
  20. package/dist/assets/{chat-panel-w9jaKRAD.js → chat-panel-aXOgktdv.js} +2 -2
  21. package/dist/assets/{chat-ui-BqpUGrwS.js → chat-ui-C--RApyx.js} +4 -4
  22. package/dist/assets/{column-preview-Dk6-wUK-.js → column-preview-CB_HZPdz.js} +1 -1
  23. package/dist/assets/{command-DkwDd6Ey.js → command-DvF_4mQa.js} +1 -1
  24. package/dist/assets/{command-palette-C0hZrhup.js → command-palette-DLKNdcX_.js} +1 -1
  25. package/dist/assets/{common-CL1iSwod.js → common-CLVI2BhO.js} +1 -1
  26. package/dist/assets/{components-CBihADZo.js → components-CGwwQ0Y4.js} +1 -1
  27. package/dist/assets/{components-CtOW1DR4.js → components-DiALLQRt.js} +1 -1
  28. package/dist/assets/{copy-icon-n6r2uyq3.js → copy-icon-BGs1Pbai.js} +1 -1
  29. package/dist/assets/{datasource-DwmhT5-D.js → datasource-BzTPyEw3.js} +1 -1
  30. package/dist/assets/{dependency-graph-panel-3AdEtWPZ.js → dependency-graph-panel-Pxmnzmd4.js} +1 -1
  31. package/dist/assets/{diagram-PSM6KHXK-D6nw8Fvd.js → diagram-PSM6KHXK-UdiW7QQb.js} +1 -1
  32. package/dist/assets/{documentation-panel-CVIUk8ga.js → documentation-panel-bgaPBvan.js} +1 -1
  33. package/dist/assets/{download-pkTDt-sj.js → download-QIfZjflb.js} +3 -3
  34. package/dist/assets/{edit-page-6Fpl3Fez.js → edit-page-DB_go-vo.js} +7 -7
  35. package/dist/assets/{error-banner-Bfe6BopK.js → error-banner-bXc_9BBZ.js} +1 -1
  36. package/dist/assets/{error-panel-Cy3_isDL.js → error-panel-DfHzC7q-.js} +1 -1
  37. package/dist/assets/{field-CXDGiU3T.js → field-DTzXkFLZ.js} +1 -1
  38. package/dist/assets/{file-explorer-panel-qM-Iflzm.js → file-explorer-panel-CEd-m832.js} +3 -3
  39. package/dist/assets/{file-icons-DaGma7HH.js → file-icons-ma7AC7Pi.js} +1 -1
  40. package/dist/assets/{floating-outline-oPCmn9_F.js → floating-outline-BluCz3vD.js} +1 -1
  41. package/dist/assets/{focus-B524Cy57.js → focus-BHXzPxK_.js} +1 -1
  42. package/dist/assets/{form-IHIhviLb.js → form-C0W8wa3f.js} +1 -1
  43. package/dist/assets/{formats-DC_7w22O.js → formats-BQHP_yQk.js} +1 -1
  44. package/dist/assets/{formatting-Dw_0ktP1.js → formatting-BCAZDWQ0.js} +1 -1
  45. package/dist/assets/{gallery-page-DCkpFwYi.js → gallery-page-XSrY7bw_.js} +1 -1
  46. package/dist/assets/{ganttDiagram-JELNMOA3-BC4H0xrj.js → ganttDiagram-JELNMOA3-KWj06bYC.js} +1 -1
  47. package/dist/assets/{glide-data-editor-BkvzN8Tk.js → glide-data-editor-Bd4FOxvW.js} +1 -1
  48. package/dist/assets/{home-page-bB7oHRxE.js → home-page-nNrKA7jH.js} +2 -2
  49. package/dist/assets/{hooks-DmeHnl8J.js → hooks-C7qnb_ft.js} +1 -1
  50. package/dist/assets/{html-to-image-C-c-Hfuw.js → html-to-image-B3VySJ1_.js} +1 -1
  51. package/dist/assets/index-CLnKZIHZ.js +42 -0
  52. package/dist/assets/index-DBs2il8a.css +2 -0
  53. package/dist/assets/input-Bg12i6qY.js +1 -0
  54. package/dist/assets/{kiosk-mode-CnJjuo6B.js → kiosk-mode-BSY8y4kL.js} +1 -1
  55. package/dist/assets/{layout-Ce-vzLs_.js → layout-V4eTNc4M.js} +3 -3
  56. package/dist/assets/{linear-bY7qDnP9.js → linear-BICTUQLW.js} +1 -1
  57. package/dist/assets/{logs-panel-CzlMq5La.js → logs-panel-B1AysC8S.js} +1 -1
  58. package/dist/assets/{markdown-renderer-B4-BiMy9.js → markdown-renderer-BiKTlki_.js} +1 -1
  59. package/dist/assets/{mermaid-DDNZ06H7.js → mermaid-BJFSZcG6.js} +3 -3
  60. package/dist/assets/{name-cell-input-CUG9-cgv.js → name-cell-input-BA5B0KJl.js} +1 -1
  61. package/dist/assets/{outline-panel-BXefyCJ4.js → outline-panel-BfGPA_Sj.js} +1 -1
  62. package/dist/assets/{packages-panel-Bc42thuF.js → packages-panel-BgoT3rrV.js} +1 -1
  63. package/dist/assets/{panels-xqtEg2DV.js → panels-BeW4RaML.js} +1 -1
  64. package/dist/assets/{pieDiagram-ADFJNKIX-BeLuFsHa.js → pieDiagram-ADFJNKIX-ixj1Ihpk.js} +1 -1
  65. package/dist/assets/{precisionRound-D8yxZYIF.js → precisionRound-CU2C3Vxx.js} +1 -1
  66. package/dist/assets/{process-output-C-VBRULx.js → process-output-MnxG8jwi.js} +1 -1
  67. package/dist/assets/{quadrantDiagram-AYHSOK5B-7-MiutmN.js → quadrantDiagram-AYHSOK5B-DAgQxEHI.js} +1 -1
  68. package/dist/assets/{react-vega-LNfJwi6n.js → react-vega-BVBnH7ue.js} +1 -1
  69. package/dist/assets/react-vega-BfEZWy9T.js +1 -0
  70. package/dist/assets/{readonly-python-code-DinZuT8P.js → readonly-python-code-DuH_nOq_.js} +1 -1
  71. package/dist/assets/{run-page-GmVLTzzU.js → run-page-kI3bwb2R.js} +1 -1
  72. package/dist/assets/{sankeyDiagram-TZEHDZUN-DuPJkvrj.js → sankeyDiagram-TZEHDZUN-DAWWzAvZ.js} +1 -1
  73. package/dist/assets/{scratchpad-panel-CnzHN40A.js → scratchpad-panel-617FvSKA.js} +1 -1
  74. package/dist/assets/{secrets-panel-DxBoNgTM.js → secrets-panel-C6X5jB8Q.js} +1 -1
  75. package/dist/assets/{session-panel-CpeJADG_.js → session-panel-D6Sf5vhq.js} +1 -1
  76. package/dist/assets/snippets-panel-DfWq0wh2.js +1 -0
  77. package/dist/assets/{state-9-n7I_Bo.js → state-BgrGQPFs.js} +1 -1
  78. package/dist/assets/{state-DuVk71Dw.js → state-Blw6taKi.js} +1 -1
  79. package/dist/assets/{state-oW8A8maF.js → state-urfwd716.js} +2 -2
  80. package/dist/assets/{terminal-bXHNLBHU.js → terminal-BBTjIXBz.js} +3 -3
  81. package/dist/assets/{textarea-CI3yaazO.js → textarea-B5p9_myy.js} +1 -1
  82. package/dist/assets/{time-BdrzW2P6.js → time-DLcLlk0u.js} +1 -1
  83. package/dist/assets/{tracing-BRo4IXxX.js → tracing-CazNvlp4.js} +1 -1
  84. package/dist/assets/{tracing-panel-7QrwywKQ.js → tracing-panel-Bj0Bx8ZJ.js} +2 -2
  85. package/dist/assets/{useAddCell-BMYemCZ-.js → useAddCell-g3zSMJKs.js} +1 -1
  86. package/dist/assets/{useAsyncData-CaAFMbY9.js → useAsyncData-aCoWDe-l.js} +1 -1
  87. package/dist/assets/useBoolean-ugd5JdXd.js +1 -0
  88. package/dist/assets/{useCellActionButton-DMySRby1.js → useCellActionButton-DdsVswP2.js} +1 -1
  89. package/dist/assets/{useDateFormatter-BBQkEV05.js → useDateFormatter-BEz9SEXo.js} +1 -1
  90. package/dist/assets/{useDeleteCell-6SLN_jZa.js → useDeleteCell-CIdiI4Pk.js} +1 -1
  91. package/dist/assets/{useDependencyPanelTab-DRoK7Mvg.js → useDependencyPanelTab-DhXqfAqL.js} +1 -1
  92. package/dist/assets/{useNotebookActions-SGiWvk1I.js → useNotebookActions-ULfiGMMl.js} +1 -1
  93. package/dist/assets/{useNumberFormatter-DIM21HH4.js → useNumberFormatter-wQU1z0W_.js} +1 -1
  94. package/dist/assets/{usePress-CLNv4Iws.js → usePress-BXMIcLWP.js} +3 -3
  95. package/dist/assets/{useRunCells-a5YC9YVQ.js → useRunCells-q5CA-QoL.js} +1 -1
  96. package/dist/assets/{useSplitCell-Dn4N4Evl.js → useSplitCell-B0jDwUEM.js} +1 -1
  97. package/dist/assets/{utils-BaSt_0sN.js → utils-BZwMGX81.js} +1 -1
  98. package/dist/assets/{vega-component-B_GT243z.js → vega-component-B2_J2GQq.js} +1 -1
  99. package/dist/assets/{vega-loader.browser-DLukqq1q.js → vega-loader.browser-DXARUlxo.js} +1 -1
  100. package/dist/assets/{write-secret-modal-C87c9nwO.js → write-secret-modal-CHfFN0H8.js} +1 -1
  101. package/dist/assets/{xychartDiagram-PRI3JC2R-BRVF_pwk.js → xychartDiagram-PRI3JC2R-DgjhbmH4.js} +1 -1
  102. package/dist/index.html +52 -51
  103. package/package.json +2 -2
  104. package/src/components/data-table/__tests__/columns.test.tsx +92 -13
  105. package/src/components/data-table/column-header.tsx +81 -56
  106. package/src/components/data-table/columns.tsx +25 -32
  107. package/src/components/data-table/data-table.tsx +8 -1
  108. package/src/components/data-table/renderers.tsx +19 -6
  109. package/src/components/data-table/types.ts +4 -0
  110. package/src/components/editor/errors/traceback-modal.tsx +6 -5
  111. package/src/components/editor/output/MarimoErrorOutput.tsx +7 -14
  112. package/src/components/editor/output/MarimoTracebackOutput.tsx +4 -3
  113. package/src/core/cells/document-changes.ts +12 -0
  114. package/src/core/saving/file-state.ts +16 -0
  115. package/src/hooks/useAsyncData.ts +1 -1
  116. package/src/mount.tsx +17 -1
  117. package/src/plugins/impl/DataTablePlugin.tsx +1 -1
  118. package/src/plugins/impl/plotly/__tests__/selection.test.ts +22 -0
  119. package/src/plugins/impl/plotly/selection.ts +1 -0
  120. package/dist/assets/JsonOutput-C0_rp6zm.js +0 -49
  121. package/dist/assets/MarimoErrorOutput-C3-dwG-M.js +0 -7
  122. package/dist/assets/VisuallyHidden-CuyBIaeU.js +0 -1
  123. package/dist/assets/app-config-button-2bbgrHC2.js +0 -1
  124. package/dist/assets/index-B2hkIK4p.js +0 -42
  125. package/dist/assets/index-BNN_F0CC.css +0 -2
  126. package/dist/assets/input-DfDSaPYh.js +0 -1
  127. package/dist/assets/react-vega-Bpff0f7C.js +0 -1
  128. package/dist/assets/snippets-panel-Z3fr4trp.js +0 -1
  129. package/dist/assets/useBoolean-Dsw5twOt.js +0 -1
  130. /package/dist/assets/{blob-Brr8JjWU.js → blob-CTort_or.js} +0 -0
  131. /package/dist/assets/{context-BoP98Msj.js → context-DGqo1TbK.js} +0 -0
  132. /package/dist/assets/{copy-Acb9G8ns.js → copy-Bizk-4hH.js} +0 -0
  133. /package/dist/assets/{defaultLocale-B8Omxjnr.js → defaultLocale-BLne0bXb.js} +0 -0
  134. /package/dist/assets/{defaultLocale-Cyhs3Xd2.js → defaultLocale-JieDVWC_.js} +0 -0
  135. /package/dist/assets/{dialog-Do1NuJPs.js → dialog-BYjetQgE.js} +0 -0
  136. /package/dist/assets/{errors-Dn17Z1-5.js → errors-CZb6hI2x.js} +0 -0
  137. /package/dist/assets/{numbers--q6KLqqK.js → numbers--nDjbAPa.js} +0 -0
  138. /package/dist/assets/{ordinal-CN_bk_zt.js → ordinal-DuTuuUgV.js} +0 -0
  139. /package/dist/assets/{range-BmYMHsC2.js → range-1DwpgXvM.js} +0 -0
  140. /package/dist/assets/{react-icons.esm-3sYgjjif.js → react-icons.esm-BUYTQ32a.js} +0 -0
  141. /package/dist/assets/{share-CkOka71S.js → share-0LPgOyiW.js} +0 -0
  142. /package/dist/assets/{useHotkey-CX3-tpiy.js → useHotkey-DALUNe8I.js} +0 -0
@@ -1 +1 @@
1
- import{s as V}from"./chunk-LvLJmgfZ.js";import{t as B}from"./react-Bj1aDYRI.js";import{t as G}from"./compiler-runtime-B3qBwwSJ.js";import{t as H}from"./jsx-runtime-Blw4afVn.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select--zcABebs.js";import{t as P}from"./label-C89F4v17.js";import{t as W}from"./button-BKVLeSTX.js";import{r as X}from"./requests-9-v2bhoi.js";import{r as D}from"./input-DfDSaPYh.js";import{t as E}from"./use-toast-BDYuj3zG.js";import{a as Z,c as $,i as ee,n as te,r as re}from"./dialog-Do1NuJPs.js";import{t as ae}from"./links-DOybeRem.js";import{r as L}from"./field-CXDGiU3T.js";var oe=G(),T=V(B(),1),t=V(H(),1);function ne(a){return a.toSorted((e,r)=>e.provider==="env"?1:r.provider==="env"?-1:0)}const le=a=>{let e=(0,oe.c)(43),{providerNames:r,onClose:A,onSuccess:F}=a,{writeSecret:Y}=X(),[o,M]=T.useState(""),[l,R]=T.useState(""),[n,z]=T.useState(r[0]),g;e[0]!==o||e[1]!==n||e[2]!==F||e[3]!==l||e[4]!==Y?(g=async i=>{if(i.preventDefault(),!n){E({title:"Error",description:"No location selected for the secret.",variant:"danger"});return}if(!o||!l||!n){E({title:"Error",description:"Please fill in all fields.",variant:"danger"});return}try{await Y({key:o,value:l,provider:"dotenv",name:n}),E({title:"Secret created",description:"The secret has been created successfully."}),F(o)}catch{E({title:"Error",description:"Failed to create secret. Please try again.",variant:"danger"})}},e[0]=o,e[1]=n,e[2]=F,e[3]=l,e[4]=Y,e[5]=g):g=e[5];let q=g,j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=(0,t.jsxs)(Z,{children:[(0,t.jsx)($,{children:"Add Secret"}),(0,t.jsx)(re,{children:"Add a new secret to your environment variables."})]}),e[6]=j):j=e[6];let y;e[7]===Symbol.for("react.memo_cache_sentinel")?(y=(0,t.jsx)(P,{htmlFor:"key",children:"Key"}),e[7]=y):y=e[7];let S;e[8]===Symbol.for("react.memo_cache_sentinel")?(S=i=>{M(ie(i.target.value))},e[8]=S):S=e[8];let s;e[9]===o?s=e[10]:(s=(0,t.jsxs)("div",{className:"grid gap-2",children:[y,(0,t.jsx)(D,{id:"key",value:o,onChange:S,placeholder:"MY_SECRET_KEY",required:!0})]}),e[9]=o,e[10]=s);let _;e[11]===Symbol.for("react.memo_cache_sentinel")?(_=(0,t.jsx)(P,{htmlFor:"value",children:"Value"}),e[11]=_):_=e[11];let b;e[12]===Symbol.for("react.memo_cache_sentinel")?(b=i=>R(i.target.value),e[12]=b):b=e[12];let c;e[13]===l?c=e[14]:(c=(0,t.jsx)(D,{id:"value",type:"password",value:l,onChange:b,required:!0,autoComplete:"off"}),e[13]=l,e[14]=c);let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=se()&&(0,t.jsx)(L,{children:"Note: You are sending this key over http."}),e[15]=C):C=e[15];let d;e[16]===c?d=e[17]:(d=(0,t.jsxs)("div",{className:"grid gap-2",children:[_,c,C]}),e[16]=c,e[17]=d);let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=(0,t.jsx)(P,{htmlFor:"location",children:"Location"}),e[18]=N):N=e[18];let m;e[19]===r.length?m=e[20]:(m=r.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No dotenv locations configured."}),e[19]=r.length,e[20]=m);let h;e[21]!==n||e[22]!==r?(h=r.length>0&&(0,t.jsxs)(U,{value:n,onValueChange:i=>z(i),children:[(0,t.jsx)(Q,{children:(0,t.jsx)(I,{placeholder:"Select a provider"})}),(0,t.jsx)(O,{children:r.map(ce)})]}),e[21]=n,e[22]=r,e[23]=h):h=e[23];let k;e[24]===Symbol.for("react.memo_cache_sentinel")?(k=(0,t.jsxs)(L,{children:["You can configure the location by setting the"," ",(0,t.jsx)(ae,{href:"https://links.marimo.app/dotenv",children:"dotenv configuration"}),"."]}),e[24]=k):k=e[24];let p;e[25]!==m||e[26]!==h?(p=(0,t.jsxs)("div",{className:"grid gap-2",children:[N,m,h,k]}),e[25]=m,e[26]=h,e[27]=p):p=e[27];let u;e[28]!==d||e[29]!==p||e[30]!==s?(u=(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[s,d,p]}),e[28]=d,e[29]=p,e[30]=s,e[31]=u):u=e[31];let f;e[32]===A?f=e[33]:(f=(0,t.jsx)(W,{type:"button",variant:"outline",onClick:A,children:"Cancel"}),e[32]=A,e[33]=f);let K=!o||!l||!n,v;e[34]===K?v=e[35]:(v=(0,t.jsx)(W,{type:"submit",disabled:K,children:"Add Secret"}),e[34]=K,e[35]=v);let x;e[36]!==f||e[37]!==v?(x=(0,t.jsxs)(ee,{children:[f,v]}),e[36]=f,e[37]=v,e[38]=x):x=e[38];let w;return e[39]!==q||e[40]!==u||e[41]!==x?(w=(0,t.jsx)(te,{children:(0,t.jsxs)("form",{onSubmit:q,children:[j,u,x]})}),e[39]=q,e[40]=u,e[41]=x,e[42]=w):w=e[42],w};function ie(a){return a.replaceAll(/\W/g,"_")}function se(){return window.location.href.startsWith("http://")}function ce(a){return(0,t.jsx)(J,{value:a,children:a},a)}export{ne as n,le as t};
1
+ import{s as V}from"./chunk-LvLJmgfZ.js";import{t as B}from"./react-Bj1aDYRI.js";import{t as G}from"./compiler-runtime-B3qBwwSJ.js";import{t as H}from"./jsx-runtime-Blw4afVn.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select--zcABebs.js";import{t as P}from"./label-C89F4v17.js";import{t as W}from"./button-BKVLeSTX.js";import{r as X}from"./requests-9-v2bhoi.js";import{r as D}from"./input-Bg12i6qY.js";import{t as E}from"./use-toast-BDYuj3zG.js";import{a as Z,c as $,i as ee,n as te,r as re}from"./dialog-BYjetQgE.js";import{t as ae}from"./links-DOybeRem.js";import{r as L}from"./field-DTzXkFLZ.js";var oe=G(),T=V(B(),1),t=V(H(),1);function ne(a){return a.toSorted((e,r)=>e.provider==="env"?1:r.provider==="env"?-1:0)}const le=a=>{let e=(0,oe.c)(43),{providerNames:r,onClose:A,onSuccess:F}=a,{writeSecret:Y}=X(),[o,M]=T.useState(""),[l,R]=T.useState(""),[n,z]=T.useState(r[0]),g;e[0]!==o||e[1]!==n||e[2]!==F||e[3]!==l||e[4]!==Y?(g=async i=>{if(i.preventDefault(),!n){E({title:"Error",description:"No location selected for the secret.",variant:"danger"});return}if(!o||!l||!n){E({title:"Error",description:"Please fill in all fields.",variant:"danger"});return}try{await Y({key:o,value:l,provider:"dotenv",name:n}),E({title:"Secret created",description:"The secret has been created successfully."}),F(o)}catch{E({title:"Error",description:"Failed to create secret. Please try again.",variant:"danger"})}},e[0]=o,e[1]=n,e[2]=F,e[3]=l,e[4]=Y,e[5]=g):g=e[5];let q=g,j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=(0,t.jsxs)(Z,{children:[(0,t.jsx)($,{children:"Add Secret"}),(0,t.jsx)(re,{children:"Add a new secret to your environment variables."})]}),e[6]=j):j=e[6];let y;e[7]===Symbol.for("react.memo_cache_sentinel")?(y=(0,t.jsx)(P,{htmlFor:"key",children:"Key"}),e[7]=y):y=e[7];let S;e[8]===Symbol.for("react.memo_cache_sentinel")?(S=i=>{M(ie(i.target.value))},e[8]=S):S=e[8];let s;e[9]===o?s=e[10]:(s=(0,t.jsxs)("div",{className:"grid gap-2",children:[y,(0,t.jsx)(D,{id:"key",value:o,onChange:S,placeholder:"MY_SECRET_KEY",required:!0})]}),e[9]=o,e[10]=s);let _;e[11]===Symbol.for("react.memo_cache_sentinel")?(_=(0,t.jsx)(P,{htmlFor:"value",children:"Value"}),e[11]=_):_=e[11];let b;e[12]===Symbol.for("react.memo_cache_sentinel")?(b=i=>R(i.target.value),e[12]=b):b=e[12];let c;e[13]===l?c=e[14]:(c=(0,t.jsx)(D,{id:"value",type:"password",value:l,onChange:b,required:!0,autoComplete:"off"}),e[13]=l,e[14]=c);let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=se()&&(0,t.jsx)(L,{children:"Note: You are sending this key over http."}),e[15]=C):C=e[15];let d;e[16]===c?d=e[17]:(d=(0,t.jsxs)("div",{className:"grid gap-2",children:[_,c,C]}),e[16]=c,e[17]=d);let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=(0,t.jsx)(P,{htmlFor:"location",children:"Location"}),e[18]=N):N=e[18];let m;e[19]===r.length?m=e[20]:(m=r.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No dotenv locations configured."}),e[19]=r.length,e[20]=m);let h;e[21]!==n||e[22]!==r?(h=r.length>0&&(0,t.jsxs)(U,{value:n,onValueChange:i=>z(i),children:[(0,t.jsx)(Q,{children:(0,t.jsx)(I,{placeholder:"Select a provider"})}),(0,t.jsx)(O,{children:r.map(ce)})]}),e[21]=n,e[22]=r,e[23]=h):h=e[23];let k;e[24]===Symbol.for("react.memo_cache_sentinel")?(k=(0,t.jsxs)(L,{children:["You can configure the location by setting the"," ",(0,t.jsx)(ae,{href:"https://links.marimo.app/dotenv",children:"dotenv configuration"}),"."]}),e[24]=k):k=e[24];let p;e[25]!==m||e[26]!==h?(p=(0,t.jsxs)("div",{className:"grid gap-2",children:[N,m,h,k]}),e[25]=m,e[26]=h,e[27]=p):p=e[27];let u;e[28]!==d||e[29]!==p||e[30]!==s?(u=(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[s,d,p]}),e[28]=d,e[29]=p,e[30]=s,e[31]=u):u=e[31];let f;e[32]===A?f=e[33]:(f=(0,t.jsx)(W,{type:"button",variant:"outline",onClick:A,children:"Cancel"}),e[32]=A,e[33]=f);let K=!o||!l||!n,v;e[34]===K?v=e[35]:(v=(0,t.jsx)(W,{type:"submit",disabled:K,children:"Add Secret"}),e[34]=K,e[35]=v);let x;e[36]!==f||e[37]!==v?(x=(0,t.jsxs)(ee,{children:[f,v]}),e[36]=f,e[37]=v,e[38]=x):x=e[38];let w;return e[39]!==q||e[40]!==u||e[41]!==x?(w=(0,t.jsx)(te,{children:(0,t.jsxs)("form",{onSubmit:q,children:[j,u,x]})}),e[39]=q,e[40]=u,e[41]=x,e[42]=w):w=e[42],w};function ie(a){return a.replaceAll(/\W/g,"_")}function se(){return window.location.href.startsWith("http://")}function ce(a){return(0,t.jsx)(J,{value:a,children:a},a)}export{ne as n,le as t};
@@ -1,4 +1,4 @@
1
- var j,Q,K,Z,q,J,tt,it,et,st;import"./purify.es-BFDc-_i_.js";import{t as zt}from"./linear-bY7qDnP9.js";import{n as ui}from"./ordinal-CN_bk_zt.js";import{t as xi}from"./range-BmYMHsC2.js";import"./defaultLocale-Cyhs3Xd2.js";import"./src-lJewPvdk.js";import{t as Ot}from"./line-BCZzhM6G.js";import{i as Wt}from"./chunk-S3R3BYOJ-QzFziHq0.js";import{n as di}from"./init-AtRnKt23.js";import{n,r as Ft}from"./src-DSbF9mby.js";import{B as pi,C as Xt,I as fi,T as mi,U as yi,_ as bi,a as Ai,c as Ci,d as wi,v as Si,y as mt,z as ki}from"./chunk-ABZYJK2D-C6__zbIg.js";import{t as _i}from"./chunk-EXTU4WIE-B_Um-dIN.js";import"./dist-D-j2KFQ4.js";import{t as Ti}from"./chunk-JA3XYJ7Z-WVXBR9gk.js";function yt(){var e=ui().unknown(void 0),t=e.domain,i=e.range,s=0,a=1,l,g,f=!1,p=0,_=0,L=.5;delete e.unknown;function w(){var b=t().length,v=a<s,D=v?a:s,P=v?s:a;l=(P-D)/Math.max(1,b-p+_*2),f&&(l=Math.floor(l)),D+=(P-D-l*(b-p))*L,g=l*(1-p),f&&(D=Math.round(D),g=Math.round(g));var E=xi(b).map(function(m){return D+l*m});return i(v?E.reverse():E)}return e.domain=function(b){return arguments.length?(t(b),w()):t()},e.range=function(b){return arguments.length?([s,a]=b,s=+s,a=+a,w()):[s,a]},e.rangeRound=function(b){return[s,a]=b,s=+s,a=+a,f=!0,w()},e.bandwidth=function(){return g},e.step=function(){return l},e.round=function(b){return arguments.length?(f=!!b,w()):f},e.padding=function(b){return arguments.length?(p=Math.min(1,_=+b),w()):p},e.paddingInner=function(b){return arguments.length?(p=Math.min(1,b),w()):p},e.paddingOuter=function(b){return arguments.length?(_=+b,w()):_},e.align=function(b){return arguments.length?(L=Math.max(0,Math.min(1,b)),w()):L},e.copy=function(){return yt(t(),[s,a]).round(f).paddingInner(p).paddingOuter(_).align(L)},di.apply(w(),arguments)}var bt=(function(){var e=n(function(h,A,x,u){for(x||(x={}),u=h.length;u--;x[h[u]]=A);return x},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],a=[1,5],l=[1,6],g=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],p=[1,25],_=[1,26],L=[1,28],w=[1,29],b=[1,30],v=[1,31],D=[1,32],P=[1,33],E=[1,34],m=[1,35],T=[1,36],r=[1,37],z=[1,43],O=[1,42],V=[1,47],S=[1,50],c=[1,10,12,14,16,18,19,21,23,34,35,36],M=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],y=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],Y=[1,64],U={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(h,A,x,u,k,o,at){var d=o.length-1;switch(k){case 5:u.setOrientation(o[d]);break;case 9:u.setDiagramTitle(o[d].text.trim());break;case 12:u.setLineData({text:"",type:"text"},o[d]);break;case 13:u.setLineData(o[d-1],o[d]);break;case 14:u.setBarData({text:"",type:"text"},o[d]);break;case 15:u.setBarData(o[d-1],o[d]);break;case 16:this.$=o[d].trim(),u.setAccTitle(this.$);break;case 17:case 18:this.$=o[d].trim(),u.setAccDescription(this.$);break;case 19:this.$=o[d-1];break;case 20:this.$=[Number(o[d-2]),...o[d]];break;case 21:this.$=[Number(o[d])];break;case 22:u.setXAxisTitle(o[d]);break;case 23:u.setXAxisTitle(o[d-1]);break;case 24:u.setXAxisTitle({type:"text",text:""});break;case 25:u.setXAxisBand(o[d]);break;case 26:u.setXAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 27:this.$=o[d-1];break;case 28:this.$=[o[d-2],...o[d]];break;case 29:this.$=[o[d]];break;case 30:u.setYAxisTitle(o[d]);break;case 31:u.setYAxisTitle(o[d-1]);break;case 32:u.setYAxisTitle({type:"text",text:""});break;case 33:u.setYAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 37:this.$={text:o[d],type:"text"};break;case 38:this.$={text:o[d],type:"text"};break;case 39:this.$={text:o[d],type:"markdown"};break;case 40:this.$=o[d];break;case 41:this.$=o[d-1]+""+o[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:a,35:l,36:g}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:a,35:l,36:g}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:l,36:g}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:a,35:l,36:g}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:a,35:l,36:g}),{11:23,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:39,13:38,24:z,27:O,29:40,30:41,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:45,15:44,27:V,33:46,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:49,17:48,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:52,17:51,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{20:[1,53]},{22:[1,54]},e(c,[2,18]),{1:[2,2]},e(c,[2,8]),e(c,[2,9]),e(M,[2,37],{40:55,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r}),e(M,[2,38]),e(M,[2,39]),e(y,[2,40]),e(y,[2,42]),e(y,[2,43]),e(y,[2,44]),e(y,[2,45]),e(y,[2,46]),e(y,[2,47]),e(y,[2,48]),e(y,[2,49]),e(y,[2,50]),e(y,[2,51]),e(c,[2,10]),e(c,[2,22],{30:41,29:56,24:z,27:O}),e(c,[2,24]),e(c,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,11]),e(c,[2,30],{33:60,27:V}),e(c,[2,32]),{31:[1,61]},e(c,[2,12]),{17:62,24:S},{25:63,27:Y},e(c,[2,14]),{17:65,24:S},e(c,[2,16]),e(c,[2,17]),e(y,[2,41]),e(c,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(c,[2,31]),{27:[1,69]},e(c,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(c,[2,15]),e(c,[2,26]),e(c,[2,27]),{11:59,32:72,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,33]),e(c,[2,19]),{25:73,27:Y},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(h,A){if(A.recoverable)this.trace(h);else{var x=Error(h);throw x.hash=A,x}},"parseError"),parse:n(function(h){var A=this,x=[0],u=[],k=[null],o=[],at=this.table,d="",rt=0,vt=0,Et=0,ri=2,Mt=1,li=o.slice.call(arguments,1),R=Object.create(this.lexer),X={yy:{}};for(var xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xt)&&(X.yy[xt]=this.yy[xt]);R.setInput(h,X.yy),X.yy.lexer=R,X.yy.parser=this,R.yylloc===void 0&&(R.yylloc={});var dt=R.yylloc;o.push(dt);var ci=R.options&&R.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gi(B){x.length-=2*B,k.length-=B,o.length-=B}n(gi,"popStack");function It(){var B=u.pop()||R.lex()||Mt;return typeof B!="number"&&(B instanceof Array&&(u=B,B=u.pop()),B=A.symbols_[B]||B),B}n(It,"lex");for(var I,pt,N,$,ft,H={},lt,W,$t,ct;;){if(N=x[x.length-1],this.defaultActions[N]?$=this.defaultActions[N]:(I??(I=It()),$=at[N]&&at[N][I]),$===void 0||!$.length||!$[0]){var Bt="";for(lt in ct=[],at[N])this.terminals_[lt]&&lt>ri&&ct.push("'"+this.terminals_[lt]+"'");Bt=R.showPosition?"Parse error on line "+(rt+1)+`:
1
+ var j,Q,K,Z,q,J,tt,it,et,st;import"./purify.es-BFDc-_i_.js";import{t as zt}from"./linear-BICTUQLW.js";import{n as ui}from"./ordinal-DuTuuUgV.js";import{t as xi}from"./range-1DwpgXvM.js";import"./defaultLocale-JieDVWC_.js";import"./src-lJewPvdk.js";import{t as Ot}from"./line-BCZzhM6G.js";import{i as Wt}from"./chunk-S3R3BYOJ-QzFziHq0.js";import{n as di}from"./init-AtRnKt23.js";import{n,r as Ft}from"./src-DSbF9mby.js";import{B as pi,C as Xt,I as fi,T as mi,U as yi,_ as bi,a as Ai,c as Ci,d as wi,v as Si,y as mt,z as ki}from"./chunk-ABZYJK2D-C6__zbIg.js";import{t as _i}from"./chunk-EXTU4WIE-B_Um-dIN.js";import"./dist-D-j2KFQ4.js";import{t as Ti}from"./chunk-JA3XYJ7Z-WVXBR9gk.js";function yt(){var e=ui().unknown(void 0),t=e.domain,i=e.range,s=0,a=1,l,g,f=!1,p=0,_=0,L=.5;delete e.unknown;function w(){var b=t().length,v=a<s,D=v?a:s,P=v?s:a;l=(P-D)/Math.max(1,b-p+_*2),f&&(l=Math.floor(l)),D+=(P-D-l*(b-p))*L,g=l*(1-p),f&&(D=Math.round(D),g=Math.round(g));var E=xi(b).map(function(m){return D+l*m});return i(v?E.reverse():E)}return e.domain=function(b){return arguments.length?(t(b),w()):t()},e.range=function(b){return arguments.length?([s,a]=b,s=+s,a=+a,w()):[s,a]},e.rangeRound=function(b){return[s,a]=b,s=+s,a=+a,f=!0,w()},e.bandwidth=function(){return g},e.step=function(){return l},e.round=function(b){return arguments.length?(f=!!b,w()):f},e.padding=function(b){return arguments.length?(p=Math.min(1,_=+b),w()):p},e.paddingInner=function(b){return arguments.length?(p=Math.min(1,b),w()):p},e.paddingOuter=function(b){return arguments.length?(_=+b,w()):_},e.align=function(b){return arguments.length?(L=Math.max(0,Math.min(1,b)),w()):L},e.copy=function(){return yt(t(),[s,a]).round(f).paddingInner(p).paddingOuter(_).align(L)},di.apply(w(),arguments)}var bt=(function(){var e=n(function(h,A,x,u){for(x||(x={}),u=h.length;u--;x[h[u]]=A);return x},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],a=[1,5],l=[1,6],g=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],p=[1,25],_=[1,26],L=[1,28],w=[1,29],b=[1,30],v=[1,31],D=[1,32],P=[1,33],E=[1,34],m=[1,35],T=[1,36],r=[1,37],z=[1,43],O=[1,42],V=[1,47],S=[1,50],c=[1,10,12,14,16,18,19,21,23,34,35,36],M=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],y=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],Y=[1,64],U={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(h,A,x,u,k,o,at){var d=o.length-1;switch(k){case 5:u.setOrientation(o[d]);break;case 9:u.setDiagramTitle(o[d].text.trim());break;case 12:u.setLineData({text:"",type:"text"},o[d]);break;case 13:u.setLineData(o[d-1],o[d]);break;case 14:u.setBarData({text:"",type:"text"},o[d]);break;case 15:u.setBarData(o[d-1],o[d]);break;case 16:this.$=o[d].trim(),u.setAccTitle(this.$);break;case 17:case 18:this.$=o[d].trim(),u.setAccDescription(this.$);break;case 19:this.$=o[d-1];break;case 20:this.$=[Number(o[d-2]),...o[d]];break;case 21:this.$=[Number(o[d])];break;case 22:u.setXAxisTitle(o[d]);break;case 23:u.setXAxisTitle(o[d-1]);break;case 24:u.setXAxisTitle({type:"text",text:""});break;case 25:u.setXAxisBand(o[d]);break;case 26:u.setXAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 27:this.$=o[d-1];break;case 28:this.$=[o[d-2],...o[d]];break;case 29:this.$=[o[d]];break;case 30:u.setYAxisTitle(o[d]);break;case 31:u.setYAxisTitle(o[d-1]);break;case 32:u.setYAxisTitle({type:"text",text:""});break;case 33:u.setYAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 37:this.$={text:o[d],type:"text"};break;case 38:this.$={text:o[d],type:"text"};break;case 39:this.$={text:o[d],type:"markdown"};break;case 40:this.$=o[d];break;case 41:this.$=o[d-1]+""+o[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:a,35:l,36:g}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:a,35:l,36:g}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:l,36:g}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:a,35:l,36:g}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:a,35:l,36:g}),{11:23,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:39,13:38,24:z,27:O,29:40,30:41,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:45,15:44,27:V,33:46,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:49,17:48,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:52,17:51,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{20:[1,53]},{22:[1,54]},e(c,[2,18]),{1:[2,2]},e(c,[2,8]),e(c,[2,9]),e(M,[2,37],{40:55,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r}),e(M,[2,38]),e(M,[2,39]),e(y,[2,40]),e(y,[2,42]),e(y,[2,43]),e(y,[2,44]),e(y,[2,45]),e(y,[2,46]),e(y,[2,47]),e(y,[2,48]),e(y,[2,49]),e(y,[2,50]),e(y,[2,51]),e(c,[2,10]),e(c,[2,22],{30:41,29:56,24:z,27:O}),e(c,[2,24]),e(c,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,11]),e(c,[2,30],{33:60,27:V}),e(c,[2,32]),{31:[1,61]},e(c,[2,12]),{17:62,24:S},{25:63,27:Y},e(c,[2,14]),{17:65,24:S},e(c,[2,16]),e(c,[2,17]),e(y,[2,41]),e(c,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(c,[2,31]),{27:[1,69]},e(c,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(c,[2,15]),e(c,[2,26]),e(c,[2,27]),{11:59,32:72,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,33]),e(c,[2,19]),{25:73,27:Y},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(h,A){if(A.recoverable)this.trace(h);else{var x=Error(h);throw x.hash=A,x}},"parseError"),parse:n(function(h){var A=this,x=[0],u=[],k=[null],o=[],at=this.table,d="",rt=0,vt=0,Et=0,ri=2,Mt=1,li=o.slice.call(arguments,1),R=Object.create(this.lexer),X={yy:{}};for(var xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xt)&&(X.yy[xt]=this.yy[xt]);R.setInput(h,X.yy),X.yy.lexer=R,X.yy.parser=this,R.yylloc===void 0&&(R.yylloc={});var dt=R.yylloc;o.push(dt);var ci=R.options&&R.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gi(B){x.length-=2*B,k.length-=B,o.length-=B}n(gi,"popStack");function It(){var B=u.pop()||R.lex()||Mt;return typeof B!="number"&&(B instanceof Array&&(u=B,B=u.pop()),B=A.symbols_[B]||B),B}n(It,"lex");for(var I,pt,N,$,ft,H={},lt,W,$t,ct;;){if(N=x[x.length-1],this.defaultActions[N]?$=this.defaultActions[N]:(I??(I=It()),$=at[N]&&at[N][I]),$===void 0||!$.length||!$[0]){var Bt="";for(lt in ct=[],at[N])this.terminals_[lt]&&lt>ri&&ct.push("'"+this.terminals_[lt]+"'");Bt=R.showPosition?"Parse error on line "+(rt+1)+`:
2
2
  `+R.showPosition()+`
3
3
  Expecting `+ct.join(", ")+", got '"+(this.terminals_[I]||I)+"'":"Parse error on line "+(rt+1)+": Unexpected "+(I==Mt?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(Bt,{text:R.match,token:this.terminals_[I]||I,line:R.yylineno,loc:dt,expected:ct})}if($[0]instanceof Array&&$.length>1)throw Error("Parse Error: multiple actions possible at state: "+N+", token: "+I);switch($[0]){case 1:x.push(I),k.push(R.yytext),o.push(R.yylloc),x.push($[1]),I=null,pt?(I=pt,pt=null):(vt=R.yyleng,d=R.yytext,rt=R.yylineno,dt=R.yylloc,Et>0&&Et--);break;case 2:if(W=this.productions_[$[1]][1],H.$=k[k.length-W],H._$={first_line:o[o.length-(W||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(W||1)].first_column,last_column:o[o.length-1].last_column},ci&&(H._$.range=[o[o.length-(W||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(H,[d,vt,rt,X.yy,$[1],k,o].concat(li)),ft!==void 0)return ft;W&&(x=x.slice(0,-1*W*2),k=k.slice(0,-1*W),o=o.slice(0,-1*W)),x.push(this.productions_[$[1]][0]),k.push(H.$),o.push(H._$),$t=at[x[x.length-2]][x[x.length-1]],x.push($t);break;case 3:return!0}}return!0},"parse")};U.lexer=(function(){return{EOF:1,parseError:n(function(h,A){if(this.yy.parser)this.yy.parser.parseError(h,A);else throw Error(h)},"parseError"),setInput:n(function(h,A){return this.yy=A||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var h=this._input[0];return this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h,h.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:n(function(h){var A=h.length,x=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-A),this.offset-=A;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),x.length-1&&(this.yylineno-=x.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:x?(x.length===u.length?this.yylloc.first_column:0)+u[u.length-x.length].length-x[0].length:this.yylloc.first_column-A},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-A]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(h){this.unput(this.match.slice(h))},"less"),pastInput:n(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var h=this.pastInput(),A=Array(h.length+1).join("-");return h+this.upcomingInput()+`
package/dist/index.html CHANGED
@@ -66,18 +66,18 @@
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-B2hkIK4p.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-CLnKZIHZ.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-D2MJg03u.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
73
73
  <link rel="modulepreload" crossorigin href="./assets/compiler-runtime-B3qBwwSJ.js">
74
74
  <link rel="modulepreload" crossorigin href="./assets/jsx-runtime-Blw4afVn.js">
75
75
  <link rel="modulepreload" crossorigin href="./assets/useEventListener-DGjKht0c.js">
76
- <link rel="modulepreload" crossorigin href="./assets/defaultLocale-Cyhs3Xd2.js">
77
- <link rel="modulepreload" crossorigin href="./assets/precisionRound-D8yxZYIF.js">
78
- <link rel="modulepreload" crossorigin href="./assets/defaultLocale-B8Omxjnr.js">
79
- <link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-DLukqq1q.js">
80
- <link rel="modulepreload" crossorigin href="./assets/utils-BaSt_0sN.js">
76
+ <link rel="modulepreload" crossorigin href="./assets/defaultLocale-JieDVWC_.js">
77
+ <link rel="modulepreload" crossorigin href="./assets/precisionRound-CU2C3Vxx.js">
78
+ <link rel="modulepreload" crossorigin href="./assets/defaultLocale-BLne0bXb.js">
79
+ <link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-DXARUlxo.js">
80
+ <link rel="modulepreload" crossorigin href="./assets/utils-BZwMGX81.js">
81
81
  <link rel="modulepreload" crossorigin href="./assets/clsx-XrBBnd7s.js">
82
82
  <link rel="modulepreload" crossorigin href="./assets/cn-DYvqRARy.js">
83
83
  <link rel="modulepreload" crossorigin href="./assets/badge-CwbVR_sO.js">
@@ -134,102 +134,103 @@
134
134
  <link rel="modulepreload" crossorigin href="./assets/debounce-BbSyBDA8.js">
135
135
  <link rel="modulepreload" crossorigin href="./assets/database-zap-BxfYZ6ML.js">
136
136
  <link rel="modulepreload" crossorigin href="./assets/main-BNL5rxQw.js">
137
- <link rel="modulepreload" crossorigin href="./assets/cells-CuaAKcwV.js">
137
+ <link rel="modulepreload" crossorigin href="./assets/cells-BVG4a-Qn.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-dxChUL02.js">
139
139
  <link rel="modulepreload" crossorigin href="./assets/kbd-BUtlbGdu.js">
140
140
  <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-CeM6oPsT.js">
141
141
  <link rel="modulepreload" crossorigin href="./assets/alert-dialog-CXspBRlP.js">
142
- <link rel="modulepreload" crossorigin href="./assets/dialog-Do1NuJPs.js">
142
+ <link rel="modulepreload" crossorigin href="./assets/dialog-BYjetQgE.js">
143
143
  <link rel="modulepreload" crossorigin href="./assets/useDebounce-LVL1r3-M.js">
144
- <link rel="modulepreload" crossorigin href="./assets/numbers--q6KLqqK.js">
144
+ <link rel="modulepreload" crossorigin href="./assets/numbers--nDjbAPa.js">
145
145
  <link rel="modulepreload" crossorigin href="./assets/SSRProvider-D3zWcDme.js">
146
- <link rel="modulepreload" crossorigin href="./assets/context-BoP98Msj.js">
147
- <link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-DIM21HH4.js">
148
- <link rel="modulepreload" crossorigin href="./assets/usePress-CLNv4Iws.js">
149
- <link rel="modulepreload" crossorigin href="./assets/input-DfDSaPYh.js">
150
- <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-Ka_MU6gk.js">
151
- <link rel="modulepreload" crossorigin href="./assets/cell-link-CY7i_e4O.js">
146
+ <link rel="modulepreload" crossorigin href="./assets/context-DGqo1TbK.js">
147
+ <link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-wQU1z0W_.js">
148
+ <link rel="modulepreload" crossorigin href="./assets/usePress-BXMIcLWP.js">
149
+ <link rel="modulepreload" crossorigin href="./assets/input-Bg12i6qY.js">
150
+ <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-DoGv2BXV.js">
151
+ <link rel="modulepreload" crossorigin href="./assets/cell-link-Dtonmtv_.js">
152
152
  <link rel="modulepreload" crossorigin href="./assets/multi-map-MSuUqmbC.js">
153
153
  <link rel="modulepreload" crossorigin href="./assets/alert-DF3HbVtk.js">
154
154
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-CgvDWFE3.js">
155
155
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-DrHAuMTb.js">
156
156
  <link rel="modulepreload" crossorigin href="./assets/links-DOybeRem.js">
157
- <link rel="modulepreload" crossorigin href="./assets/datasource-DwmhT5-D.js">
158
- <link rel="modulepreload" crossorigin href="./assets/state-DuVk71Dw.js">
159
- <link rel="modulepreload" crossorigin href="./assets/sparkles-B79Qf6ma.js">
160
- <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-C3-dwG-M.js">
161
- <link rel="modulepreload" crossorigin href="./assets/copy-Acb9G8ns.js">
157
+ <link rel="modulepreload" crossorigin href="./assets/useRunCells-q5CA-QoL.js">
158
+ <link rel="modulepreload" crossorigin href="./assets/copy-Bizk-4hH.js">
162
159
  <link rel="modulepreload" crossorigin href="./assets/copy-DFMsQ6MJ.js">
163
- <link rel="modulepreload" crossorigin href="./assets/copy-icon-n6r2uyq3.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/copy-icon-BGs1Pbai.js">
161
+ <link rel="modulepreload" crossorigin href="./assets/RenderHTML-BOW_1WUn.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/datasource-BzTPyEw3.js">
163
+ <link rel="modulepreload" crossorigin href="./assets/state-Blw6taKi.js">
164
+ <link rel="modulepreload" crossorigin href="./assets/sparkles-B79Qf6ma.js">
165
+ <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-Cyd8ikG3.js">
164
166
  <link rel="modulepreload" crossorigin href="./assets/spinner-C5wIpWgQ.js">
165
- <link rel="modulepreload" crossorigin href="./assets/html-to-image-C-c-Hfuw.js">
166
- <link rel="modulepreload" crossorigin href="./assets/focus-B524Cy57.js">
167
- <link rel="modulepreload" crossorigin href="./assets/useAsyncData-CaAFMbY9.js">
168
- <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-Bb2dITRz.js">
167
+ <link rel="modulepreload" crossorigin href="./assets/html-to-image-B3VySJ1_.js">
168
+ <link rel="modulepreload" crossorigin href="./assets/focus-BHXzPxK_.js">
169
+ <link rel="modulepreload" crossorigin href="./assets/useAsyncData-aCoWDe-l.js">
170
+ <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-CoYqQxHb.js">
169
171
  <link rel="modulepreload" crossorigin href="./assets/micromark-factory-space-DzSMahmM.js">
170
172
  <link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-Cyc7d5AB.js">
171
- <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-B4-BiMy9.js">
172
- <link rel="modulepreload" crossorigin href="./assets/command-DkwDd6Ey.js">
173
+ <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-BiKTlki_.js">
174
+ <link rel="modulepreload" crossorigin href="./assets/command-DvF_4mQa.js">
173
175
  <link rel="modulepreload" crossorigin href="./assets/popover-AtoFZ7i4.js">
174
- <link rel="modulepreload" crossorigin href="./assets/errors-Dn17Z1-5.js">
175
- <link rel="modulepreload" crossorigin href="./assets/download-pkTDt-sj.js">
176
- <link rel="modulepreload" crossorigin href="./assets/useRunCells-a5YC9YVQ.js">
177
- <link rel="modulepreload" crossorigin href="./assets/RenderHTML-Cyj8OBbz.js">
176
+ <link rel="modulepreload" crossorigin href="./assets/errors-CZb6hI2x.js">
177
+ <link rel="modulepreload" crossorigin href="./assets/download-QIfZjflb.js">
178
178
  <link rel="modulepreload" crossorigin href="./assets/table-B03CpBmt.js">
179
179
  <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-C8jvQ1Lj.js">
180
- <link rel="modulepreload" crossorigin href="./assets/error-banner-Bfe6BopK.js">
181
- <link rel="modulepreload" crossorigin href="./assets/formats-DC_7w22O.js">
180
+ <link rel="modulepreload" crossorigin href="./assets/error-banner-bXc_9BBZ.js">
181
+ <link rel="modulepreload" crossorigin href="./assets/formats-BQHP_yQk.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/en-US-JRtp5zfw.js">
183
183
  <link rel="modulepreload" crossorigin href="./assets/isValid-U-UFA9KI.js">
184
184
  <link rel="modulepreload" crossorigin href="./assets/dates-stqTIkXD.js">
185
185
  <link rel="modulepreload" crossorigin href="./assets/maps-B4xARV9R.js">
186
186
  <link rel="modulepreload" crossorigin href="./assets/extends-Co37_JfG.js">
187
187
  <link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-DYxi7n2b.js">
188
- <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-BBQkEV05.js">
189
- <link rel="modulepreload" crossorigin href="./assets/react-icons.esm-3sYgjjif.js">
188
+ <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-BEz9SEXo.js">
189
+ <link rel="modulepreload" crossorigin href="./assets/react-icons.esm-BUYTQ32a.js">
190
190
  <link rel="modulepreload" crossorigin href="./assets/toFinite-2vTWYoIX.js">
191
191
  <link rel="modulepreload" crossorigin href="./assets/range-D-0CV4c0.js">
192
192
  <link rel="modulepreload" crossorigin href="./assets/table-qC3alE1r.js">
193
+ <link rel="modulepreload" crossorigin href="./assets/ellipsis-DidENKDy.js">
193
194
  <link rel="modulepreload" crossorigin href="./assets/message-circle-DiHwtSG8.js">
194
195
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-BUNcfKXO.js">
195
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-C0_rp6zm.js">
196
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-Bk2by9qo.js">
196
197
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-CsXoiEZx.js">
197
198
  <link rel="modulepreload" crossorigin href="./assets/square-function-BecUoMho.js">
198
199
  <link rel="modulepreload" crossorigin href="./assets/spec-DqqZbNbU.js">
199
200
  <link rel="modulepreload" crossorigin href="./assets/ellipsis-vertical-DEH0lwkn.js">
200
201
  <link rel="modulepreload" crossorigin href="./assets/refresh-cw-CiOe0azG.js">
201
- <link rel="modulepreload" crossorigin href="./assets/components-CtOW1DR4.js">
202
- <link rel="modulepreload" crossorigin href="./assets/column-preview-Dk6-wUK-.js">
202
+ <link rel="modulepreload" crossorigin href="./assets/components-DiALLQRt.js">
203
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-CB_HZPdz.js">
203
204
  <link rel="modulepreload" crossorigin href="./assets/icons-DlzgV4KY.js">
204
- <link rel="modulepreload" crossorigin href="./assets/floating-outline-oPCmn9_F.js">
205
- <link rel="modulepreload" crossorigin href="./assets/useAddCell-BMYemCZ-.js">
205
+ <link rel="modulepreload" crossorigin href="./assets/floating-outline-BluCz3vD.js">
206
+ <link rel="modulepreload" crossorigin href="./assets/useAddCell-g3zSMJKs.js">
206
207
  <link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-smPWkHxB.js">
207
208
  <link rel="modulepreload" crossorigin href="./assets/esm-BqofWdD5.js">
208
209
  <link rel="modulepreload" crossorigin href="./assets/eye-off-DgRJ-xBZ.js">
209
210
  <link rel="modulepreload" crossorigin href="./assets/plus-BYq_Btg-.js">
210
- <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-DinZuT8P.js">
211
+ <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-DuH_nOq_.js">
211
212
  <link rel="modulepreload" crossorigin href="./assets/file-headphone-5_PGMxRL.js">
212
213
  <link rel="modulepreload" crossorigin href="./assets/file-l37OnSN4.js">
213
214
  <link rel="modulepreload" crossorigin href="./assets/image-BgkzrnsX.js">
214
- <link rel="modulepreload" crossorigin href="./assets/file-icons-DaGma7HH.js">
215
+ <link rel="modulepreload" crossorigin href="./assets/file-icons-ma7AC7Pi.js">
215
216
  <link rel="modulepreload" crossorigin href="./assets/switch-C2idsSNO.js">
216
217
  <link rel="modulepreload" crossorigin href="./assets/events-Qeh-bHlj.js">
217
218
  <link rel="modulepreload" crossorigin href="./assets/globals-Bh85lAn7.js">
218
- <link rel="modulepreload" crossorigin href="./assets/share-CkOka71S.js">
219
- <link rel="modulepreload" crossorigin href="./assets/blob-Brr8JjWU.js">
219
+ <link rel="modulepreload" crossorigin href="./assets/share-0LPgOyiW.js">
220
+ <link rel="modulepreload" crossorigin href="./assets/blob-CTort_or.js">
220
221
  <link rel="modulepreload" crossorigin href="./assets/memoize-BwAF2XN5.js">
221
222
  <link rel="modulepreload" crossorigin href="./assets/get-D7jeR2wg.js">
222
223
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-49dbm-yb.js">
223
- <link rel="modulepreload" crossorigin href="./assets/state-oW8A8maF.js">
224
+ <link rel="modulepreload" crossorigin href="./assets/state-urfwd716.js">
224
225
  <link rel="modulepreload" crossorigin href="./assets/label-C89F4v17.js">
225
- <link rel="modulepreload" crossorigin href="./assets/textarea-CI3yaazO.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/textarea-B5p9_myy.js">
226
227
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-CfYqAbmq.js">
227
228
  <link rel="modulepreload" crossorigin href="./assets/trash-2-DunI72kV.js">
228
- <link rel="modulepreload" crossorigin href="./assets/form-IHIhviLb.js">
229
+ <link rel="modulepreload" crossorigin href="./assets/form-C0W8wa3f.js">
229
230
  <link rel="modulepreload" crossorigin href="./assets/renderShortcut-DrDh2657.js">
230
- <link rel="modulepreload" crossorigin href="./assets/field-CXDGiU3T.js">
231
- <link rel="modulepreload" crossorigin href="./assets/VisuallyHidden-CuyBIaeU.js">
232
- <link rel="modulepreload" crossorigin href="./assets/useBoolean-Dsw5twOt.js">
231
+ <link rel="modulepreload" crossorigin href="./assets/field-DTzXkFLZ.js">
232
+ <link rel="modulepreload" crossorigin href="./assets/RSPContexts-LWFBF00h.js">
233
+ <link rel="modulepreload" crossorigin href="./assets/useBoolean-ugd5JdXd.js">
233
234
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-D0WTlCXt.js">
234
235
  <link rel="modulepreload" crossorigin href="./assets/types-BteCqkNg.js">
235
236
  <link rel="modulepreload" crossorigin href="./assets/fileToBase64-D7Ur9Qxq.js">
@@ -245,7 +246,7 @@
245
246
  <link rel="stylesheet" crossorigin href="./assets/cells-jmgGt1lS.css">
246
247
  <link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
247
248
  <link rel="stylesheet" crossorigin href="./assets/JsonOutput-B7vuddcd.css">
248
- <link rel="stylesheet" crossorigin href="./assets/index-BNN_F0CC.css">
249
+ <link rel="stylesheet" crossorigin href="./assets/index-DBs2il8a.css">
249
250
  </head>
250
251
  <body>
251
252
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.22.5-dev2",
3
+ "version": "0.22.5-dev21",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -120,7 +120,7 @@
120
120
  "marked": "^15.0.12",
121
121
  "mermaid": "^11.12.3",
122
122
  "partysocket": "1.1.10",
123
- "path-to-regexp": "^8.3.0",
123
+ "path-to-regexp": "^8.4.0",
124
124
  "plotly.js": "^3.3.1",
125
125
  "pyodide": "0.27.7",
126
126
  "react-arborist": "^3.4.3",
@@ -1,9 +1,9 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import type { Column } from "@tanstack/react-table";
4
- import { render } from "@testing-library/react";
4
+ import { fireEvent, render } from "@testing-library/react";
5
5
  import { I18nProvider } from "react-aria";
6
- import { describe, expect, it, test } from "vitest";
6
+ import { describe, expect, it, test, vi } from "vitest";
7
7
  import { TooltipProvider } from "@/components/ui/tooltip";
8
8
  import { parseContent } from "@/utils/url-parser";
9
9
  import {
@@ -312,7 +312,7 @@ describe("generateColumns", () => {
312
312
  expect(cell?.props.className).toContain("center");
313
313
  });
314
314
 
315
- it("should apply text justification to column header parents", () => {
315
+ it("should always left-align column headers regardless of text justification", () => {
316
316
  const columns = generateColumns({
317
317
  rowHeaders: [],
318
318
  selection: null,
@@ -330,33 +330,112 @@ describe("generateColumns", () => {
330
330
  columnDef: { meta: col.meta },
331
331
  });
332
332
 
333
- // Right-justified: parent wrapper should have items-end, sort/filter icons should flip to the left
333
+ // Even with right justification, header is left-aligned with sort + menu buttons
334
334
  const { container: rightContainer } = render(
335
335
  <TooltipProvider>
336
336
  {/* oxlint-disable-next-line typescript/no-explicit-any */}
337
337
  {(columns[0].header as any)({ column: mockColumn(columns[0]) })}
338
338
  </TooltipProvider>,
339
339
  );
340
+ expect(
341
+ rightContainer.querySelector("[data-testid='data-table-sort-button']"),
342
+ ).toBeTruthy();
343
+ expect(
344
+ rightContainer.querySelector(
345
+ "[data-testid='data-table-column-menu-button']",
346
+ ),
347
+ ).toBeTruthy();
348
+ // No flex-row-reverse or items-end on header
340
349
  const rightWrapper = rightContainer.firstElementChild;
341
- expect(rightWrapper?.className).toContain("items-end");
342
- const rightHeader = rightContainer.querySelector(
343
- "[data-testid='data-table-sort-button']",
344
- );
345
- expect(rightHeader?.className).toContain("flex-row-reverse");
350
+ expect(rightWrapper?.className).not.toContain("items-end");
351
+ expect(rightWrapper?.className).not.toContain("flex-row-reverse");
346
352
 
347
- // Center-justified: parent wrapper should have items-center, no flex-row-reverse
353
+ // Same for center-justified column
348
354
  const { container: centerContainer } = render(
349
355
  <TooltipProvider>
350
356
  {/* oxlint-disable-next-line typescript/no-explicit-any */}
351
357
  {(columns[1].header as any)({ column: mockColumn(columns[1]) })}
352
358
  </TooltipProvider>,
353
359
  );
360
+ expect(
361
+ centerContainer.querySelector("[data-testid='data-table-sort-button']"),
362
+ ).toBeTruthy();
363
+ expect(
364
+ centerContainer.querySelector(
365
+ "[data-testid='data-table-column-menu-button']",
366
+ ),
367
+ ).toBeTruthy();
354
368
  const centerWrapper = centerContainer.firstElementChild;
355
- expect(centerWrapper?.className).toContain("items-center");
356
- const centerHeader = centerContainer.querySelector(
369
+ expect(centerWrapper?.className).not.toContain("items-center");
370
+ expect(centerWrapper?.className).not.toContain("flex-row-reverse");
371
+ });
372
+
373
+ it("should cycle sort button through asc, desc, and clear on clicks", () => {
374
+ const columns = generateColumns({
375
+ rowHeaders: [],
376
+ selection: null,
377
+ fieldTypes,
378
+ });
379
+
380
+ const toggleSorting = vi.fn();
381
+ const clearSorting = vi.fn();
382
+ let sortDirection: false | "asc" | "desc" = false;
383
+
384
+ const mockColumn = (col: (typeof columns)[number]) => ({
385
+ id: col.id,
386
+ getCanSort: () => true,
387
+ getCanFilter: () => false,
388
+ getIsSorted: () => sortDirection,
389
+ getSortIndex: () => -1,
390
+ getFilterValue: () => undefined,
391
+ toggleSorting,
392
+ clearSorting,
393
+ columnDef: { meta: col.meta },
394
+ });
395
+
396
+ const mock = mockColumn(columns[0]);
397
+
398
+ const { container, rerender } = render(
399
+ <TooltipProvider>
400
+ {/* oxlint-disable-next-line typescript/no-explicit-any */}
401
+ {(columns[0].header as any)({ column: mock })}
402
+ </TooltipProvider>,
403
+ );
404
+
405
+ const sortButton = container.querySelector(
357
406
  "[data-testid='data-table-sort-button']",
358
407
  );
359
- expect(centerHeader?.className).not.toContain("flex-row-reverse");
408
+ expect(sortButton).toBeTruthy();
409
+
410
+ // first click unsorted > asc
411
+ fireEvent.click(sortButton!);
412
+ expect(toggleSorting).toHaveBeenCalledWith(false, true);
413
+
414
+ // Simulate asc state and re-render
415
+ sortDirection = "asc";
416
+ rerender(
417
+ <TooltipProvider>
418
+ {/* oxlint-disable-next-line typescript/no-explicit-any */}
419
+ {(columns[0].header as any)({ column: mock })}
420
+ </TooltipProvider>,
421
+ );
422
+
423
+ // second click asc >dsc
424
+ fireEvent.click(sortButton!);
425
+ expect(toggleSorting).toHaveBeenCalledWith(true, true);
426
+
427
+ // Simulate desc state and re-render
428
+ sortDirection = "desc";
429
+ rerender(
430
+ <TooltipProvider>
431
+ {/* oxlint-disable-next-line typescript/no-explicit-any */}
432
+ {(columns[0].header as any)({ column: mock })}
433
+ </TooltipProvider>,
434
+ );
435
+
436
+ // third click back to unsorted
437
+ fireEvent.click(sortButton!);
438
+ expect(clearSorting).toHaveBeenCalled();
360
439
  });
361
440
 
362
441
  it("should not include index column if it exists", () => {
@@ -2,7 +2,13 @@
2
2
  "use no memo";
3
3
 
4
4
  import type { Column, Table } from "@tanstack/react-table";
5
- import { FilterIcon, MinusIcon, TextIcon, XIcon } from "lucide-react";
5
+ import {
6
+ EllipsisIcon,
7
+ FilterIcon,
8
+ MinusIcon,
9
+ TextIcon,
10
+ XIcon,
11
+ } from "lucide-react";
6
12
  import { useMemo, useRef, useState } from "react";
7
13
  import { useLocale } from "react-aria";
8
14
  import {
@@ -69,7 +75,7 @@ interface DataTableColumnHeaderProps<
69
75
  > extends React.HTMLAttributes<HTMLDivElement> {
70
76
  column: Column<TData, TValue>;
71
77
  header: React.ReactNode;
72
- justify?: "left" | "center" | "right";
78
+ subheader?: React.ReactNode;
73
79
  calculateTopKRows?: CalculateTopKRows;
74
80
  table?: Table<TData>;
75
81
  }
@@ -77,7 +83,7 @@ interface DataTableColumnHeaderProps<
77
83
  export const DataTableColumnHeader = <TData, TValue>({
78
84
  column,
79
85
  header,
80
- justify,
86
+ subheader,
81
87
  className,
82
88
  calculateTopKRows,
83
89
  table,
@@ -92,49 +98,51 @@ export const DataTableColumnHeader = <TData, TValue>({
92
98
 
93
99
  // No sorting or filtering
94
100
  if (!column.getCanSort() && !column.getCanFilter()) {
95
- return <div className={cn(className)}>{header}</div>;
101
+ return (
102
+ <div className={cn(className)}>
103
+ {header}
104
+ {subheader}
105
+ </div>
106
+ );
96
107
  }
97
108
 
98
109
  const hasFilter = column.getFilterValue() !== undefined;
99
- const hideIcon = !column.getIsSorted() && !hasFilter;
100
110
 
101
111
  return (
102
112
  <>
103
- <DropdownMenu modal={false}>
104
- <DropdownMenuTrigger asChild={true}>
105
- <div
106
- className={cn(
107
- "group flex items-center my-1 space-between w-full select-none gap-2 border hover:border-border border-transparent hover:bg-(--slate-3) data-[state=open]:bg-(--slate-3) data-[state=open]:border-border rounded px-1 -mx-1",
108
- justify === "right" && "flex-row-reverse",
109
- className,
110
- )}
111
- data-testid="data-table-sort-button"
112
- >
113
- <span className="flex-1">{header}</span>
114
- <span
115
- className={cn(
116
- "h-5 py-1 px-1",
117
- hideIcon &&
118
- "invisible group-hover:visible data-[state=open]:visible",
119
- )}
120
- >
121
- {renderSortFilterIcon(column)}
122
- </span>
123
- </div>
124
- </DropdownMenuTrigger>
125
- <DropdownMenuContent align="start">
126
- {renderDataType(column)}
127
- {renderSorts(column, table)}
128
- {renderCopyColumn(column)}
129
- {renderColumnPinning(column)}
130
- {renderColumnWrapping(column)}
131
- {renderFormatOptions(column, locale)}
132
- <DropdownMenuSeparator />
133
- {renderMenuItemFilter(column)}
134
- {renderFilterByValues(column, setIsFilterValueOpen)}
135
- {hasFilter && <ClearFilterMenuItem column={column} />}
136
- </DropdownMenuContent>
137
- </DropdownMenu>
113
+ <div
114
+ className={cn("group flex flex-col my-1 w-full select-none", className)}
115
+ >
116
+ <div className="flex items-center gap-1">
117
+ <span>{header}</span>
118
+ {column.getCanSort() && <SortButton column={column} />}
119
+ <DropdownMenu modal={false}>
120
+ <DropdownMenuTrigger asChild={true}>
121
+ <button
122
+ type="button"
123
+ className="inline-flex items-center justify-center h-5 w-5 rounded hover:bg-(--slate-4) text-muted-foreground opacity-0 group-hover:opacity-100 focus:opacity-100 group-focus-within:opacity-100 data-[state=open]:opacity-100 data-[state=open]:text-accent-foreground"
124
+ aria-label="Column options"
125
+ data-testid="data-table-column-menu-button"
126
+ >
127
+ <EllipsisIcon className="h-3.5 w-3.5" />
128
+ </button>
129
+ </DropdownMenuTrigger>
130
+ <DropdownMenuContent align="start">
131
+ {renderDataType(column)}
132
+ {renderSorts(column, table)}
133
+ {renderCopyColumn(column)}
134
+ {renderColumnPinning(column)}
135
+ {renderColumnWrapping(column)}
136
+ {renderFormatOptions(column, locale)}
137
+ <DropdownMenuSeparator />
138
+ {renderMenuItemFilter(column)}
139
+ {renderFilterByValues(column, setIsFilterValueOpen)}
140
+ {hasFilter && <ClearFilterMenuItem column={column} />}
141
+ </DropdownMenuContent>
142
+ </DropdownMenu>
143
+ </div>
144
+ {subheader}
145
+ </div>
138
146
  {isFilterValueOpen && (
139
147
  <PopoverFilterByValues
140
148
  setIsFilterValueOpen={setIsFilterValueOpen}
@@ -146,28 +154,45 @@ export const DataTableColumnHeader = <TData, TValue>({
146
154
  );
147
155
  };
148
156
 
149
- export const DataTableColumnHeaderWithSummary = <TData, TValue>({
157
+ const SortButton = <TData, TValue>({
150
158
  column,
151
- header,
152
- summary,
153
- className,
154
- }: DataTableColumnHeaderProps<TData, TValue> & {
155
- summary: React.ReactNode;
159
+ }: {
160
+ column: Column<TData, TValue>;
156
161
  }) => {
162
+ const sortDirection = column.getIsSorted();
163
+
164
+ const handleClick = (e: React.MouseEvent) => {
165
+ e.stopPropagation();
166
+ if (!sortDirection) {
167
+ column.toggleSorting(false, true); // asc
168
+ } else if (sortDirection === "asc") {
169
+ column.toggleSorting(true, true); // desc
170
+ } else {
171
+ column.clearSorting();
172
+ }
173
+ };
174
+
157
175
  return (
158
- <div
176
+ <button
177
+ type="button"
178
+ onClick={handleClick}
159
179
  className={cn(
160
- "flex flex-col h-full pt-0.5 pb-3 justify-between items-start",
161
- className,
180
+ "inline-flex items-center justify-center h-5 w-5 rounded hover:bg-(--slate-4)",
181
+ sortDirection
182
+ ? "text-accent-foreground"
183
+ : "text-muted-foreground opacity-0 group-hover:opacity-100 focus:opacity-100 group-focus-within:opacity-100",
162
184
  )}
185
+ aria-label={
186
+ sortDirection === "asc"
187
+ ? "Sorted ascending, click to sort descending"
188
+ : sortDirection === "desc"
189
+ ? "Sorted descending, click to clear sort"
190
+ : "Sort column ascending"
191
+ }
192
+ data-testid="data-table-sort-button"
163
193
  >
164
- <DataTableColumnHeader
165
- column={column}
166
- header={header}
167
- className={className}
168
- />
169
- {summary}
170
- </div>
194
+ {renderSortFilterIcon(column)}
195
+ </button>
171
196
  );
172
197
  };
173
198