@marimo-team/frontend 0.23.11-dev27 → 0.23.11-dev29

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 (121) hide show
  1. package/dist/assets/{CellStatus-C52PsPYN.js → CellStatus-DG0T7bhO.js} +1 -1
  2. package/dist/assets/{ImperativeModal-CEtvKaPt.js → ImperativeModal-Da0ki2vE.js} +1 -1
  3. package/dist/assets/{JsonOutput-e5KwGs-t.js → JsonOutput-DJAO0jFq.js} +2 -2
  4. package/dist/assets/{LazyAnyLanguageCodeMirror-Cjh82vPC.js → LazyAnyLanguageCodeMirror-BzyBEXmN.js} +2 -2
  5. package/dist/assets/{MarimoErrorOutput-tWmQZh0O.js → MarimoErrorOutput-s6Xzn9tI.js} +1 -1
  6. package/dist/assets/{RSPContexts-DGcE_dt-.js → RSPContexts-CXtxUQv0.js} +1 -1
  7. package/dist/assets/{RenderHTML-CdzAncjW.js → RenderHTML-CpnOdUFq.js} +1 -1
  8. package/dist/assets/{RunButton-D1RSmpE5.js → RunButton-CzYEYNMZ.js} +1 -1
  9. package/dist/assets/{add-cell-with-ai-r88BQwnl.js → add-cell-with-ai-DDmDEBpR.js} +1 -1
  10. package/dist/assets/{add-connection-dialog-BqArtkaF.js → add-connection-dialog-CM_kt7C2.js} +1 -1
  11. package/dist/assets/{agent-panel-BFnSCM0u.js → agent-panel-4zQEW_a7.js} +1 -1
  12. package/dist/assets/{ai-model-dropdown-CKfMxi81.js → ai-model-dropdown-B85JK7Bd.js} +1 -1
  13. package/dist/assets/{any-language-editor-BR8fqP2S.js → any-language-editor-wjCa9vg4.js} +1 -1
  14. package/dist/assets/{app-config-button-DgAKqCJQ.js → app-config-button-DiMYoaj_.js} +1 -1
  15. package/dist/assets/{cache-panel-BojhFrT4.js → cache-panel-DBDBad7n.js} +1 -1
  16. package/dist/assets/{cell-editor-vk3YgY2w.js → cell-editor-BdOnyLVO.js} +1 -1
  17. package/dist/assets/{cell-link-BBWAKZ--.js → cell-link-pz786Lch.js} +1 -1
  18. package/dist/assets/{cells-D3EcEVTz.js → cells-B7nz4LNo.js} +1 -1
  19. package/dist/assets/chat-display-DvmXfrjc.js +1 -0
  20. package/dist/assets/chat-panel-BKRoCuOx.js +3 -0
  21. package/dist/assets/{chat-ui-LkKFatRU.js → chat-ui-Cn47YAI0.js} +4 -4
  22. package/dist/assets/{column-preview-93mkKGs1.js → column-preview-Dh5fJBal.js} +1 -1
  23. package/dist/assets/{command-Dzjey1r-.js → command-hJoUrc2W.js} +1 -1
  24. package/dist/assets/{command-palette-BIVH2C6k.js → command-palette-DARFAIVZ.js} +1 -1
  25. package/dist/assets/{common-Dc5W1wzl.js → common-snHJqSm6.js} +1 -1
  26. package/dist/assets/{components-CdfRUEBW.js → components-DkwTLclO.js} +1 -1
  27. package/dist/assets/{copy-icon-C8Cq0-V0.js → copy-icon-BFMtxrRP.js} +1 -1
  28. package/dist/assets/{datasource-BtJgopUR.js → datasource-D1L4FCps.js} +1 -1
  29. package/dist/assets/{dependency-graph-panel-TQ0py-Kw.js → dependency-graph-panel-BU50Zzq7.js} +1 -1
  30. package/dist/assets/{documentation-panel-LHZLKLAd.js → documentation-panel-BoOEY1b9.js} +1 -1
  31. package/dist/assets/{download-CYrhtDVp.js → download-D4lN2MwZ.js} +1 -1
  32. package/dist/assets/{edit-page-CdXZP-AI.js → edit-page-Dx6LoSdu.js} +4 -4
  33. package/dist/assets/{error-panel-CxcsWY8O.js → error-panel-CAP9Dd3X.js} +1 -1
  34. package/dist/assets/{field-DIHN6mSK.js → field-CDo_rvhD.js} +1 -1
  35. package/dist/assets/{file-explorer-panel-Ix3_ncoS.js → file-explorer-panel-Cwo8ZKc7.js} +1 -1
  36. package/dist/assets/{file-icons-CM-BO4Tc.js → file-icons-BAedxhF8.js} +1 -1
  37. package/dist/assets/{file-name-input-JcnL59-O.js → file-name-input-C4QhsTrc.js} +1 -1
  38. package/dist/assets/{floating-outline-DRRP5I8p.js → floating-outline-CbZinm9T.js} +1 -1
  39. package/dist/assets/{focus-EuWjxeHB.js → focus-BZmaIt_1.js} +1 -1
  40. package/dist/assets/{form-BAAziqSH.js → form-F1rvnx2z.js} +1 -1
  41. package/dist/assets/{gallery-page-BhgvTlLQ.js → gallery-page-CTs73lBw.js} +1 -1
  42. package/dist/assets/{glide-data-editor-CfPYm5Mc.js → glide-data-editor-DYfHd9aY.js} +1 -1
  43. package/dist/assets/{home-page-CV0Wger5.js → home-page-C6oKXYUU.js} +1 -1
  44. package/dist/assets/{hooks-CA6IH5Ny.js → hooks-C7xnEmmf.js} +1 -1
  45. package/dist/assets/{html-to-image-BMbVLGQG.js → html-to-image-C4EfBRTz.js} +1 -1
  46. package/dist/assets/{index-DUE0RSxW.js → index-sI3TGmYS.js} +4 -4
  47. package/dist/assets/{kiosk-mode-CHJ9OWcf.js → kiosk-mode-Ccj0LcCU.js} +1 -1
  48. package/dist/assets/{layout-Cpt95A_u.js → layout-B3JZ0wo2.js} +3 -3
  49. package/dist/assets/{logs-panel-DqMjHSxY.js → logs-panel-CHHx-jst.js} +1 -1
  50. package/dist/assets/{markdown-renderer-Ctc_BAzL.js → markdown-renderer-qOz3nDtd.js} +1 -1
  51. package/dist/assets/{name-cell-input-BUA6sZsk.js → name-cell-input-CQjKlesS.js} +1 -1
  52. package/dist/assets/{outline-panel-BTxBvW3K.js → outline-panel-CXXWnE52.js} +1 -1
  53. package/dist/assets/{packages-panel-CH6Jiyqt.js → packages-panel-BCgvituR.js} +1 -1
  54. package/dist/assets/{pair-with-agent-modal-CuwM9PX2.js → pair-with-agent-modal-BqOdnjR7.js} +1 -1
  55. package/dist/assets/{panels-C8IhLmTn.js → panels-ByU2RchZ.js} +1 -1
  56. package/dist/assets/{process-output-BD4gjuXh.js → process-output-VB_qPayj.js} +1 -1
  57. package/dist/assets/{radio-group-D-Tbwbga.js → radio-group-mrUpeS-s.js} +1 -1
  58. package/dist/assets/{readonly-python-code-CD37Ktr_.js → readonly-python-code-BcwZXLSu.js} +1 -1
  59. package/dist/assets/{request-registry-D6yN7WH-.js → request-registry-unC7eRnq.js} +1 -1
  60. package/dist/assets/{reveal-component-BaXkFbob.js → reveal-component-JI9duvxo.js} +1 -1
  61. package/dist/assets/{run-page-N0uXBlRc.js → run-page-DOm8XZ9M.js} +1 -1
  62. package/dist/assets/{scratchpad-panel-B5qpYDCP.js → scratchpad-panel-MTv_j3Jw.js} +1 -1
  63. package/dist/assets/{secrets-panel-DW36Nxci.js → secrets-panel-89_YFhgS.js} +1 -1
  64. package/dist/assets/{session-panel-BQbOiXTu.js → session-panel-TdcBmmLZ.js} +1 -1
  65. package/dist/assets/{snippets-panel-ngIQdZN-.js → snippets-panel-BdQrDQG8.js} +1 -1
  66. package/dist/assets/{state-a26U8Amw.js → state-B37Pwlpy.js} +1 -1
  67. package/dist/assets/{state-XBSJaDlj.js → state-CKbrzJT-.js} +1 -1
  68. package/dist/assets/{state-lfBdh7UT.js → state-ClRPM6Rk.js} +1 -1
  69. package/dist/assets/{terminal-zt3j3xY6.js → terminal-DlRITrt2.js} +1 -1
  70. package/dist/assets/{textarea-CIkM9ejr.js → textarea-BWLmfOrN.js} +1 -1
  71. package/dist/assets/{tracing-CvzDXfBi.js → tracing-BaCufmIv.js} +1 -1
  72. package/dist/assets/{tracing-panel-BSIiB4nQ.js → tracing-panel-DeB3GQ77.js} +2 -2
  73. package/dist/assets/{tree-actions-DOImIbet.js → tree-actions-fO1R5Ud_.js} +1 -1
  74. package/dist/assets/{useCellActionButton-D_GS6qfF.js → useCellActionButton-DfYBCG8b.js} +1 -1
  75. package/dist/assets/{useDeleteCell-R0cnbneF.js → useDeleteCell-BL1sT2ei.js} +1 -1
  76. package/dist/assets/{useDependencyPanelTab-1hFXraYl.js → useDependencyPanelTab-BpMHNBAO.js} +1 -1
  77. package/dist/assets/{useNotebookActions-CIfVqZq5.js → useNotebookActions-zmdBPNp-.js} +1 -1
  78. package/dist/assets/{useRunCells-DnS-CoD3.js → useRunCells-D-GyPuRn.js} +1 -1
  79. package/dist/assets/{useSplitCell-BZ8UVfk6.js → useSplitCell-DkyEaJF7.js} +1 -1
  80. package/dist/assets/{write-secret-modal-DONzgyYh.js → write-secret-modal-BEsGwBC8.js} +1 -1
  81. package/dist/index.html +47 -47
  82. package/package.json +1 -1
  83. package/src/components/chat/chat-display.tsx +5 -0
  84. package/src/components/chat/chat-panel.tsx +4 -0
  85. package/src/components/chat/tool-call/tool-call-view.tsx +4 -0
  86. package/src/components/chat/tool-call/tool-history-row.tsx +26 -5
  87. package/src/components/data-table/TableTopBar.tsx +4 -4
  88. package/src/components/data-table/__tests__/data-table.test.tsx +28 -0
  89. package/src/components/data-table/data-table.tsx +3 -3
  90. package/src/plugins/impl/DataTablePlugin.tsx +4 -5
  91. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +1 -1
  92. package/src/plugins/impl/chat/chat-ui.tsx +1 -0
  93. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +1 -1
  94. package/dist/assets/chat-display-C9WoxE6U.js +0 -1
  95. package/dist/assets/chat-panel-CFM1k9PV.js +0 -3
  96. /package/dist/assets/{DeferredRequestRegistry-CiquRdvU.js → DeferredRequestRegistry-EP9ZArpv.js} +0 -0
  97. /package/dist/assets/{clipboard-paste-Bvk41HSX.js → clipboard-paste-CXof_R04.js} +0 -0
  98. /package/dist/assets/{code-xml-CaRdRiek.js → code-xml-tqeFGeKJ.js} +0 -0
  99. /package/dist/assets/{copy-CFO636Td.js → copy-C6tO3NDV.js} +0 -0
  100. /package/dist/assets/{database-zap-CO_HxsuW.js → database-zap-DpKMaYZb.js} +0 -0
  101. /package/dist/assets/{ellipsis-iqVcpkRT.js → ellipsis-DesLDR9w.js} +0 -0
  102. /package/dist/assets/{external-link-mfK38Tpg.js → external-link-CRubBjqK.js} +0 -0
  103. /package/dist/assets/{eye-off-6RDlHoCz.js → eye-off-CFdFJ5Ma.js} +0 -0
  104. /package/dist/assets/{file-ZPWSptQF.js → file-CLyu7PSP.js} +0 -0
  105. /package/dist/assets/{file-headphone-D2bGq0xX.js → file-headphone-CY5S3y3b.js} +0 -0
  106. /package/dist/assets/{github-BZsqHbeC.js → github-CqonmEC7.js} +0 -0
  107. /package/dist/assets/{house-DTijHETb.js → house-DkdBWh44.js} +0 -0
  108. /package/dist/assets/{image-CzV694oU.js → image-jhXeQEgs.js} +0 -0
  109. /package/dist/assets/{input-DiAad2nt.js → input-BpT1_NFw.js} +0 -0
  110. /package/dist/assets/{link-D215MpkN.js → link-My4Pey3q.js} +0 -0
  111. /package/dist/assets/{message-circle-DzPHfj35.js → message-circle-D_YIPPZo.js} +0 -0
  112. /package/dist/assets/{package-Cxwiscky.js → package-BoMcg6sy.js} +0 -0
  113. /package/dist/assets/{plus-Dvg5FyTi.js → plus-CExKUszm.js} +0 -0
  114. /package/dist/assets/{refresh-ccw-AYso5mC6.js → refresh-ccw-CUkO1Vlo.js} +0 -0
  115. /package/dist/assets/{refresh-cw-hZ_ibJIl.js → refresh-cw-DcEasnos.js} +0 -0
  116. /package/dist/assets/{rotate-ccw-ChZ6LXqX.js → rotate-ccw-CBXqO1Fd.js} +0 -0
  117. /package/dist/assets/{save-BtZpvX_3.js → save-CGxzAyve.js} +0 -0
  118. /package/dist/assets/{settings-CP-IXCzQ.js → settings-Cn43l_vx.js} +0 -0
  119. /package/dist/assets/{spinner-BlJOg2gb.js → spinner-DTBVbtl-.js} +0 -0
  120. /package/dist/assets/{types-D9gLS68B.js → types-xF5uWODg.js} +0 -0
  121. /package/dist/assets/{youtube-DER9xpF0.js → youtube-B8SvzIo0.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-PbYoItBR.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select-sS-2VQvj.js";import{t as P}from"./label-BbRibkug.js";import{t as W}from"./button-Db07tdz7.js";import{r as X}from"./requests-KshNNAOp.js";import{r as D}from"./input-DiAad2nt.js";import{t as E}from"./use-toast-BH8bU9Xf.js";import{a as Z,c as $,i as ee,n as te,r as re}from"./dialog-CNmqslzW.js";import{t as ae}from"./links-DK7te6sJ.js";import{r as L}from"./field-DIHN6mSK.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-PbYoItBR.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select-sS-2VQvj.js";import{t as P}from"./label-BbRibkug.js";import{t as W}from"./button-Db07tdz7.js";import{r as X}from"./requests-KshNNAOp.js";import{r as D}from"./input-BpT1_NFw.js";import{t as E}from"./use-toast-BH8bU9Xf.js";import{a as Z,c as $,i as ee,n as te,r as re}from"./dialog-CNmqslzW.js";import{t as ae}from"./links-DK7te6sJ.js";import{r as L}from"./field-CDo_rvhD.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};
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-DUE0RSxW.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-sI3TGmYS.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-y72bE5iF.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
@@ -101,7 +101,7 @@
101
101
  <link rel="modulepreload" crossorigin href="./assets/utils-BGFUZat2.js">
102
102
  <link rel="modulepreload" crossorigin href="./assets/Deferred-CfyqLOPG.js">
103
103
  <link rel="modulepreload" crossorigin href="./assets/uuid-BukULOeS.js">
104
- <link rel="modulepreload" crossorigin href="./assets/DeferredRequestRegistry-CiquRdvU.js">
104
+ <link rel="modulepreload" crossorigin href="./assets/DeferredRequestRegistry-EP9ZArpv.js">
105
105
  <link rel="modulepreload" crossorigin href="./assets/constants-B9JJ72XE.js">
106
106
  <link rel="modulepreload" crossorigin href="./assets/session-DF0gSADo.js">
107
107
  <link rel="modulepreload" crossorigin href="./assets/config-B00Uc1a3.js">
@@ -131,9 +131,9 @@
131
131
  <link rel="modulepreload" crossorigin href="./assets/isSymbol-BT6B8Bon.js">
132
132
  <link rel="modulepreload" crossorigin href="./assets/now-CsYTPAhW.js">
133
133
  <link rel="modulepreload" crossorigin href="./assets/debounce-OiXznToA.js">
134
- <link rel="modulepreload" crossorigin href="./assets/database-zap-CO_HxsuW.js">
134
+ <link rel="modulepreload" crossorigin href="./assets/database-zap-DpKMaYZb.js">
135
135
  <link rel="modulepreload" crossorigin href="./assets/main-DmhaVp6Y.js">
136
- <link rel="modulepreload" crossorigin href="./assets/cells-D3EcEVTz.js">
136
+ <link rel="modulepreload" crossorigin href="./assets/cells-B7nz4LNo.js">
137
137
  <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-clTdAaK7.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/kbd-BCXa3Ocm.js">
139
139
  <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-BaCdyZWe.js">
@@ -145,40 +145,40 @@
145
145
  <link rel="modulepreload" crossorigin href="./assets/context-DE_5rdOV.js">
146
146
  <link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-DCM-63YT.js">
147
147
  <link rel="modulepreload" crossorigin href="./assets/usePress-mjvipKvz.js">
148
- <link rel="modulepreload" crossorigin href="./assets/input-DiAad2nt.js">
149
- <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-CEtvKaPt.js">
150
- <link rel="modulepreload" crossorigin href="./assets/cell-link-BBWAKZ--.js">
148
+ <link rel="modulepreload" crossorigin href="./assets/input-BpT1_NFw.js">
149
+ <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-Da0ki2vE.js">
150
+ <link rel="modulepreload" crossorigin href="./assets/cell-link-pz786Lch.js">
151
151
  <link rel="modulepreload" crossorigin href="./assets/multi-map-DDbeVHF9.js">
152
152
  <link rel="modulepreload" crossorigin href="./assets/alert-DcAz54bD.js">
153
153
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-C7RH0Nc7.js">
154
154
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-BYGDVBcE.js">
155
155
  <link rel="modulepreload" crossorigin href="./assets/links-DK7te6sJ.js">
156
- <link rel="modulepreload" crossorigin href="./assets/useRunCells-DnS-CoD3.js">
156
+ <link rel="modulepreload" crossorigin href="./assets/useRunCells-D-GyPuRn.js">
157
157
  <link rel="modulepreload" crossorigin href="./assets/copy-DlC1PYY-.js">
158
- <link rel="modulepreload" crossorigin href="./assets/copy-CFO636Td.js">
159
- <link rel="modulepreload" crossorigin href="./assets/copy-icon-C8Cq0-V0.js">
160
- <link rel="modulepreload" crossorigin href="./assets/RenderHTML-CdzAncjW.js">
161
- <link rel="modulepreload" crossorigin href="./assets/datasource-BtJgopUR.js">
162
- <link rel="modulepreload" crossorigin href="./assets/state-a26U8Amw.js">
163
- <link rel="modulepreload" crossorigin href="./assets/package-Cxwiscky.js">
158
+ <link rel="modulepreload" crossorigin href="./assets/copy-C6tO3NDV.js">
159
+ <link rel="modulepreload" crossorigin href="./assets/copy-icon-BFMtxrRP.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/RenderHTML-CpnOdUFq.js">
161
+ <link rel="modulepreload" crossorigin href="./assets/datasource-D1L4FCps.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/state-B37Pwlpy.js">
163
+ <link rel="modulepreload" crossorigin href="./assets/package-BoMcg6sy.js">
164
164
  <link rel="modulepreload" crossorigin href="./assets/sparkles-DctOjjEz.js">
165
- <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-tWmQZh0O.js">
166
- <link rel="modulepreload" crossorigin href="./assets/eye-off-6RDlHoCz.js">
167
- <link rel="modulepreload" crossorigin href="./assets/refresh-cw-hZ_ibJIl.js">
168
- <link rel="modulepreload" crossorigin href="./assets/tree-actions-DOImIbet.js">
169
- <link rel="modulepreload" crossorigin href="./assets/spinner-BlJOg2gb.js">
170
- <link rel="modulepreload" crossorigin href="./assets/html-to-image-BMbVLGQG.js">
171
- <link rel="modulepreload" crossorigin href="./assets/focus-EuWjxeHB.js">
165
+ <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-s6Xzn9tI.js">
166
+ <link rel="modulepreload" crossorigin href="./assets/eye-off-CFdFJ5Ma.js">
167
+ <link rel="modulepreload" crossorigin href="./assets/refresh-cw-DcEasnos.js">
168
+ <link rel="modulepreload" crossorigin href="./assets/tree-actions-fO1R5Ud_.js">
169
+ <link rel="modulepreload" crossorigin href="./assets/spinner-DTBVbtl-.js">
170
+ <link rel="modulepreload" crossorigin href="./assets/html-to-image-C4EfBRTz.js">
171
+ <link rel="modulepreload" crossorigin href="./assets/focus-BZmaIt_1.js">
172
172
  <link rel="modulepreload" crossorigin href="./assets/useAsyncData-CT1LpOBD.js">
173
- <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-Cjh82vPC.js">
173
+ <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-BzyBEXmN.js">
174
174
  <link rel="modulepreload" crossorigin href="./assets/micromark-factory-space-P--XWZhg.js">
175
175
  <link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-D-AUn5sP.js">
176
- <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-Ctc_BAzL.js">
177
- <link rel="modulepreload" crossorigin href="./assets/command-Dzjey1r-.js">
178
- <link rel="modulepreload" crossorigin href="./assets/field-DIHN6mSK.js">
176
+ <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-qOz3nDtd.js">
177
+ <link rel="modulepreload" crossorigin href="./assets/command-hJoUrc2W.js">
178
+ <link rel="modulepreload" crossorigin href="./assets/field-CDo_rvhD.js">
179
179
  <link rel="modulepreload" crossorigin href="./assets/popover-D1IutFqN.js">
180
180
  <link rel="modulepreload" crossorigin href="./assets/errors-48KFPvCp.js">
181
- <link rel="modulepreload" crossorigin href="./assets/download-CYrhtDVp.js">
181
+ <link rel="modulepreload" crossorigin href="./assets/download-D4lN2MwZ.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/table-BEAxH5RS.js">
183
183
  <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-CJXRJK5V.js">
184
184
  <link rel="modulepreload" crossorigin href="./assets/error-banner-B4PMmgPV.js">
@@ -190,29 +190,29 @@
190
190
  <link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-DiQGBfwj.js">
191
191
  <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-CANi6nSX.js">
192
192
  <link rel="modulepreload" crossorigin href="./assets/react-icons.esm-C2u-_EAQ.js">
193
- <link rel="modulepreload" crossorigin href="./assets/RSPContexts-DGcE_dt-.js">
193
+ <link rel="modulepreload" crossorigin href="./assets/RSPContexts-CXtxUQv0.js">
194
194
  <link rel="modulepreload" crossorigin href="./assets/table-DxdydCSG.js">
195
- <link rel="modulepreload" crossorigin href="./assets/ellipsis-iqVcpkRT.js">
196
- <link rel="modulepreload" crossorigin href="./assets/external-link-mfK38Tpg.js">
197
- <link rel="modulepreload" crossorigin href="./assets/message-circle-DzPHfj35.js">
198
- <link rel="modulepreload" crossorigin href="./assets/plus-Dvg5FyTi.js">
195
+ <link rel="modulepreload" crossorigin href="./assets/ellipsis-DesLDR9w.js">
196
+ <link rel="modulepreload" crossorigin href="./assets/external-link-CRubBjqK.js">
197
+ <link rel="modulepreload" crossorigin href="./assets/message-circle-D_YIPPZo.js">
198
+ <link rel="modulepreload" crossorigin href="./assets/plus-CExKUszm.js">
199
199
  <link rel="modulepreload" crossorigin href="./assets/trash-2-CjPoUZCP.js">
200
200
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-CgWOEYeG.js">
201
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-e5KwGs-t.js">
201
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-DJAO0jFq.js">
202
202
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-DVEV2j1H.js">
203
203
  <link rel="modulepreload" crossorigin href="./assets/square-function-CPbVtjKW.js">
204
204
  <link rel="modulepreload" crossorigin href="./assets/spec-RgR7OB72.js">
205
- <link rel="modulepreload" crossorigin href="./assets/column-preview-93mkKGs1.js">
205
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-Dh5fJBal.js">
206
206
  <link rel="modulepreload" crossorigin href="./assets/icons-D3YFXNmD.js">
207
- <link rel="modulepreload" crossorigin href="./assets/radio-group-D-Tbwbga.js">
208
- <link rel="modulepreload" crossorigin href="./assets/floating-outline-DRRP5I8p.js">
207
+ <link rel="modulepreload" crossorigin href="./assets/radio-group-mrUpeS-s.js">
208
+ <link rel="modulepreload" crossorigin href="./assets/floating-outline-CbZinm9T.js">
209
209
  <link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-Msf1n32r.js">
210
210
  <link rel="modulepreload" crossorigin href="./assets/esm-DSv-aO_T.js">
211
- <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CD37Ktr_.js">
212
- <link rel="modulepreload" crossorigin href="./assets/file-headphone-D2bGq0xX.js">
213
- <link rel="modulepreload" crossorigin href="./assets/file-ZPWSptQF.js">
214
- <link rel="modulepreload" crossorigin href="./assets/image-CzV694oU.js">
215
- <link rel="modulepreload" crossorigin href="./assets/file-icons-CM-BO4Tc.js">
211
+ <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-BcwZXLSu.js">
212
+ <link rel="modulepreload" crossorigin href="./assets/file-headphone-CY5S3y3b.js">
213
+ <link rel="modulepreload" crossorigin href="./assets/file-CLyu7PSP.js">
214
+ <link rel="modulepreload" crossorigin href="./assets/image-jhXeQEgs.js">
215
+ <link rel="modulepreload" crossorigin href="./assets/file-icons-BAedxhF8.js">
216
216
  <link rel="modulepreload" crossorigin href="./assets/switch-LzzmbPXe.js">
217
217
  <link rel="modulepreload" crossorigin href="./assets/events-BRbNg7Li.js">
218
218
  <link rel="modulepreload" crossorigin href="./assets/globals-CBDJBT8O.js">
@@ -221,15 +221,15 @@
221
221
  <link rel="modulepreload" crossorigin href="./assets/memoize-Tp7rARFe.js">
222
222
  <link rel="modulepreload" crossorigin href="./assets/get-C-qh_et5.js">
223
223
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-CsW0tABf.js">
224
- <link rel="modulepreload" crossorigin href="./assets/state-XBSJaDlj.js">
224
+ <link rel="modulepreload" crossorigin href="./assets/state-CKbrzJT-.js">
225
225
  <link rel="modulepreload" crossorigin href="./assets/label-BbRibkug.js">
226
- <link rel="modulepreload" crossorigin href="./assets/textarea-CIkM9ejr.js">
227
- <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-AYso5mC6.js">
228
- <link rel="modulepreload" crossorigin href="./assets/form-BAAziqSH.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/textarea-BWLmfOrN.js">
227
+ <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-CUkO1Vlo.js">
228
+ <link rel="modulepreload" crossorigin href="./assets/form-F1rvnx2z.js">
229
229
  <link rel="modulepreload" crossorigin href="./assets/renderShortcut-BV7Qf4L2.js">
230
230
  <link rel="modulepreload" crossorigin href="./assets/useBoolean-BqfyqCpr.js">
231
231
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-zUHU--0D.js">
232
- <link rel="modulepreload" crossorigin href="./assets/types-D9gLS68B.js">
232
+ <link rel="modulepreload" crossorigin href="./assets/types-xF5uWODg.js">
233
233
  <link rel="modulepreload" crossorigin href="./assets/semaphore-FlZezxaf.js">
234
234
  <link rel="modulepreload" crossorigin href="./assets/fileToBase64-Doh9J-g6.js">
235
235
  <link rel="modulepreload" crossorigin href="./assets/pathUtils-ANiMIEDI.js">
@@ -239,8 +239,8 @@
239
239
  <link rel="modulepreload" crossorigin href="./assets/hasIn-CSsM95b1.js">
240
240
  <link rel="modulepreload" crossorigin href="./assets/flatten-Bd5tsfm_.js">
241
241
  <link rel="modulepreload" crossorigin href="./assets/pick-D1xb4gl6.js">
242
- <link rel="modulepreload" crossorigin href="./assets/code-xml-CaRdRiek.js">
243
- <link rel="modulepreload" crossorigin href="./assets/house-DTijHETb.js">
242
+ <link rel="modulepreload" crossorigin href="./assets/code-xml-tqeFGeKJ.js">
243
+ <link rel="modulepreload" crossorigin href="./assets/house-DkdBWh44.js">
244
244
  <link rel="modulepreload" crossorigin href="./assets/square-DPWHdF_-.js">
245
245
  <link rel="modulepreload" crossorigin href="./assets/triangle-alert-CV7pqa1o.js">
246
246
  <link rel="modulepreload" crossorigin href="./assets/bundle.esm-BULc9l6b.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.23.11-dev27",
3
+ "version": "0.23.11-dev29",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -20,11 +20,14 @@ export const renderUIMessage = ({
20
20
  message,
21
21
  isStreamingReasoning,
22
22
  isLast,
23
+ isActive,
23
24
  addToolApprovalResponse,
24
25
  }: {
25
26
  message: UIMessage;
26
27
  isStreamingReasoning: boolean;
27
28
  isLast: boolean;
29
+ /** Whether the chat is currently streaming/submitting a response. */
30
+ isActive: boolean;
28
31
  addToolApprovalResponse?: ChatAddToolApproveResponseFunction;
29
32
  }) => {
30
33
  return (
@@ -49,6 +52,7 @@ export const renderUIMessage = ({
49
52
  approval={part.approval}
50
53
  onApprove={addToolApprovalResponse}
51
54
  isLive={isLast}
55
+ isActive={isActive}
52
56
  />
53
57
  );
54
58
  }
@@ -102,6 +106,7 @@ export const renderUIMessage = ({
102
106
  approval={part.approval}
103
107
  onApprove={addToolApprovalResponse}
104
108
  isLive={isLast}
109
+ isActive={isActive}
105
110
  />
106
111
  );
107
112
  case "source-document":
@@ -143,6 +143,7 @@ interface ChatMessageProps {
143
143
  onEdit: (index: number, newValue: string) => void;
144
144
  isStreamingReasoning: boolean;
145
145
  isLast: boolean;
146
+ isActive: boolean;
146
147
  addToolApprovalResponse?: ChatAddToolApproveResponseFunction;
147
148
  }
148
149
 
@@ -153,6 +154,7 @@ const ChatMessageDisplay: React.FC<ChatMessageProps> = memo(
153
154
  onEdit,
154
155
  isStreamingReasoning,
155
156
  isLast,
157
+ isActive,
156
158
  addToolApprovalResponse,
157
159
  }) => {
158
160
  const renderUserMessage = (message: UIMessage) => {
@@ -205,6 +207,7 @@ const ChatMessageDisplay: React.FC<ChatMessageProps> = memo(
205
207
  message,
206
208
  isStreamingReasoning,
207
209
  isLast,
210
+ isActive,
208
211
  addToolApprovalResponse,
209
212
  })}
210
213
  </div>
@@ -780,6 +783,7 @@ const ChatPanelBody = () => {
780
783
  onEdit={handleMessageEdit}
781
784
  isStreamingReasoning={isStreamingReasoning}
782
785
  isLast={idx === messages.length - 1}
786
+ isActive={isLoading}
783
787
  addToolApprovalResponse={addToolApprovalResponse}
784
788
  />
785
789
  ))}
@@ -24,6 +24,7 @@ interface ToolCallViewProps {
24
24
  * (the user has moved on).
25
25
  */
26
26
  isLive?: boolean;
27
+ isActive?: boolean;
27
28
  }
28
29
 
29
30
  export const ToolCallView: React.FC<ToolCallViewProps> = ({
@@ -37,6 +38,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
37
38
  index,
38
39
  className,
39
40
  isLive = true,
41
+ isActive = true,
40
42
  }) => {
41
43
  switch (state) {
42
44
  case "approval-requested":
@@ -61,6 +63,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
61
63
  input={input}
62
64
  index={index}
63
65
  className={className}
66
+ isActive={isActive}
64
67
  />
65
68
  );
66
69
 
@@ -89,6 +92,7 @@ export const ToolCallView: React.FC<ToolCallViewProps> = ({
89
92
  approval={approval}
90
93
  index={index}
91
94
  className={className}
95
+ isActive={isActive}
92
96
  />
93
97
  );
94
98
 
@@ -1,6 +1,12 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- import { BanIcon, CheckCircleIcon, Loader2, WrenchIcon } from "lucide-react";
3
+ import {
4
+ BanIcon,
5
+ CheckCircleIcon,
6
+ CircleSlashIcon,
7
+ Loader2,
8
+ WrenchIcon,
9
+ } from "lucide-react";
4
10
  import React from "react";
5
11
  import {
6
12
  Accordion,
@@ -29,7 +35,19 @@ const STATUS_LABEL: Record<HistoryState, string> = {
29
35
  "output-denied": "Denied",
30
36
  };
31
37
 
32
- const StatusIcon: React.FC<{ state: HistoryState }> = ({ state }) => {
38
+ const PENDING_STATES = new Set<HistoryState>([
39
+ "input-streaming",
40
+ "input-available",
41
+ "approval-responded",
42
+ ]);
43
+
44
+ const StatusIcon: React.FC<{ state: HistoryState; interrupted: boolean }> = ({
45
+ state,
46
+ interrupted,
47
+ }) => {
48
+ if (interrupted) {
49
+ return <CircleSlashIcon className="h-3 w-3 text-muted-foreground" />;
50
+ }
33
51
  switch (state) {
34
52
  case "input-streaming":
35
53
  case "input-available":
@@ -69,6 +87,7 @@ interface ToolHistoryRowProps {
69
87
  approval?: ToolApproval;
70
88
  index?: number;
71
89
  className?: string;
90
+ isActive?: boolean;
72
91
  }
73
92
 
74
93
  export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
@@ -79,7 +98,9 @@ export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
79
98
  approval,
80
99
  index = 0,
81
100
  className,
101
+ isActive = true,
82
102
  }) => {
103
+ const interrupted = !isActive && PENDING_STATES.has(state);
83
104
  return (
84
105
  <Accordion
85
106
  key={`tool-${index}`}
@@ -91,12 +112,12 @@ export const ToolHistoryRow: React.FC<ToolHistoryRowProps> = ({
91
112
  <AccordionTrigger
92
113
  className={cn(
93
114
  "h-6 text-xs border-border shadow-none! ring-0! bg-muted/60 hover:bg-muted py-0 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180 hover:no-underline",
94
- getTriggerToneClass(state),
115
+ interrupted ? "text-muted-foreground" : getTriggerToneClass(state),
95
116
  )}
96
117
  >
97
118
  <span className="flex items-center gap-1">
98
- <StatusIcon state={state} />
99
- {STATUS_LABEL[state]}:
119
+ <StatusIcon state={state} interrupted={interrupted} />
120
+ {interrupted ? "Interrupted" : STATUS_LABEL[state]}:
100
121
  <code className="font-mono text-xs">
101
122
  {formatToolName(toolName)}
102
123
  </code>
@@ -27,7 +27,7 @@ const NOOP_ON_SEARCH = () => {
27
27
 
28
28
  interface TableTopBarProps<TData> extends Partial<ExportActionProps> {
29
29
  table: Table<TData>;
30
- enableSearch: boolean;
30
+ showSearch: boolean;
31
31
  searchQuery?: string;
32
32
  onSearchQueryChange?: (query: string) => void;
33
33
  reloading?: boolean;
@@ -43,7 +43,7 @@ interface TableTopBarProps<TData> extends Partial<ExportActionProps> {
43
43
 
44
44
  export const TableTopBar = <TData,>({
45
45
  table,
46
- enableSearch,
46
+ showSearch,
47
47
  searchQuery,
48
48
  onSearchQueryChange,
49
49
  reloading,
@@ -68,7 +68,7 @@ export const TableTopBar = <TData,>({
68
68
 
69
69
  return (
70
70
  <div className="flex items-center h-10 px-2 border-b gap-2">
71
- {onSearchQueryChange && enableSearch && (
71
+ {onSearchQueryChange && showSearch && (
72
72
  <div className="flex flex-1 items-center gap-1 px-2 rounded-sm focus-within:ring-1 focus-within:ring-border transition-shadow">
73
73
  <SearchIcon className="w-4 h-4 text-muted-foreground shrink-0" />
74
74
  <input
@@ -99,7 +99,7 @@ export const TableTopBar = <TData,>({
99
99
  </div>
100
100
  )}
101
101
 
102
- <div className="flex items-center shrink-0">
102
+ <div className="flex items-center shrink-0 ml-auto">
103
103
  <ColumnVisibilityDropdown table={table} />
104
104
  {showChartBuilder && (
105
105
  <Button
@@ -69,6 +69,34 @@ describe("DataTable", () => {
69
69
  expect(commonProps.rowSelection).toEqual(initialRowSelection);
70
70
  });
71
71
 
72
+ it("hides the search bar when showSearch is false", () => {
73
+ const columns: ColumnDef<TestData>[] = [
74
+ { accessorKey: "name", header: "Name" },
75
+ ];
76
+ const commonProps = {
77
+ data: [{ id: 1, name: "Test 1" }] as TestData[],
78
+ columns,
79
+ totalRows: 1,
80
+ totalColumns: 1,
81
+ pagination: false,
82
+ onSearchQueryChange: () => {},
83
+ };
84
+
85
+ const { rerender } = render(
86
+ <TooltipProvider>
87
+ <DataTable {...commonProps} showSearch={true} />
88
+ </TooltipProvider>,
89
+ );
90
+ expect(screen.queryByPlaceholderText("Search...")).not.toBeNull();
91
+
92
+ rerender(
93
+ <TooltipProvider>
94
+ <DataTable {...commonProps} showSearch={false} />
95
+ </TooltipProvider>,
96
+ );
97
+ expect(screen.queryByPlaceholderText("Search...")).toBeNull();
98
+ });
99
+
72
100
  it("shows the hoverTemplate text as a styled tooltip on hover", async () => {
73
101
  vi.useFakeTimers();
74
102
  interface RowData {
@@ -104,7 +104,7 @@ interface DataTableProps<TData> extends Partial<ExportActionProps> {
104
104
  onCellSelectionChange?: OnChangeFn<CellSelectionState>;
105
105
  getRowIds?: GetRowIds;
106
106
  // Search
107
- enableSearch?: boolean;
107
+ showSearch?: boolean;
108
108
  searchQuery?: string;
109
109
  onSearchQueryChange?: (query: string) => void;
110
110
  showFilters?: boolean;
@@ -159,7 +159,7 @@ const DataTableInternal = <TData,>({
159
159
  onRowSelectionChange,
160
160
  onCellSelectionChange,
161
161
  getRowIds,
162
- enableSearch = false,
162
+ showSearch = false,
163
163
  searchQuery,
164
164
  onSearchQueryChange,
165
165
  showFilters = false,
@@ -357,7 +357,7 @@ const DataTableInternal = <TData,>({
357
357
  >
358
358
  <TableTopBar
359
359
  table={table}
360
- enableSearch={enableSearch}
360
+ showSearch={showSearch}
361
361
  searchQuery={searchQuery}
362
362
  onSearchQueryChange={onSearchQueryChange}
363
363
  reloading={reloading}
@@ -181,6 +181,7 @@ interface Data<T> {
181
181
  maxHeight?: number;
182
182
  selection: DataTableSelection;
183
183
  showDownload: boolean;
184
+ showSearch: boolean;
184
185
  showFilters: boolean;
185
186
  showColumnSummaries: boolean | "stats" | "chart";
186
187
  showDataTypes: boolean;
@@ -267,6 +268,7 @@ export const DataTablePlugin = createPlugin<S>("marimo-table")
267
268
  showColumnExplorer: z.boolean().default(true),
268
269
  showRowExplorer: z.boolean().default(true),
269
270
  showChartBuilder: z.boolean().default(true),
271
+ showSearch: z.boolean().default(true),
270
272
  rowHeaders: columnToFieldTypesSchema,
271
273
  freezeColumnsLeft: z.array(z.string()).optional(),
272
274
  freezeColumnsRight: z.array(z.string()).optional(),
@@ -385,7 +387,6 @@ export const DataTablePlugin = createPlugin<S>("marimo-table")
385
387
  {...props.data}
386
388
  {...props.functions}
387
389
  host={props.host}
388
- enableSearch={true}
389
390
  data={props.data.data}
390
391
  value={props.value}
391
392
  setValue={props.setValue}
@@ -470,8 +471,6 @@ interface DataTableProps<T> extends Data<T>, DataTableFunctions {
470
471
  // Selection
471
472
  value: S;
472
473
  setValue: (value: S) => void;
473
- // Search
474
- enableSearch: boolean;
475
474
  // Filters
476
475
  enableFilters?: boolean;
477
476
  cellStyles?: CellStyleState | null;
@@ -841,7 +840,7 @@ const DataTableComponent = ({
841
840
  setValue,
842
841
  sorting,
843
842
  setSorting,
844
- enableSearch,
843
+ showSearch,
845
844
  searchQuery,
846
845
  setSearchQuery,
847
846
  filters,
@@ -1146,7 +1145,7 @@ const DataTableComponent = ({
1146
1145
  hoverTemplate={hoverTemplate}
1147
1146
  cellHoverTexts={cellHoverTexts}
1148
1147
  downloadAs={showDownload ? downloadAs : undefined}
1149
- enableSearch={enableSearch}
1148
+ showSearch={showSearch}
1150
1149
  searchQuery={searchQuery}
1151
1150
  onSearchQueryChange={setSearchQuery}
1152
1151
  showFilters={showFilters}
@@ -94,7 +94,7 @@ describe("LoadingDataTableComponent", () => {
94
94
  hasStableRowId: false,
95
95
  lazy: false,
96
96
  host,
97
- enableSearch: true,
97
+ showSearch: true,
98
98
  value: [] as (number | string | { rowId: string; columnName?: string })[],
99
99
  setValue,
100
100
  download_as: vi.fn() as DownloadAsArgs,
@@ -445,6 +445,7 @@ export const Chatbot: React.FC<Props> = (props) => {
445
445
  message,
446
446
  isStreamingReasoning: status === "streaming",
447
447
  isLast,
448
+ isActive: isLoading,
448
449
  addToolApprovalResponse: isLast
449
450
  ? addToolApprovalResponse
450
451
  : undefined,
@@ -338,7 +338,7 @@ export const DataFrameComponent = memo(
338
338
  showDownload={showDownload}
339
339
  download_as={download_as}
340
340
  get_size_bytes={get_size_bytes}
341
- enableSearch={false}
341
+ showSearch={false}
342
342
  showFilters={false}
343
343
  search={search}
344
344
  showColumnSummaries={false}
@@ -1 +0,0 @@
1
- import{s as z}from"./chunk-LvLJmgfZ.js";import{t as X}from"./react-Bj1aDYRI.js";import{Cr as B,_r as H,vr as I}from"./cells-D3EcEVTz.js";import{A as K,C as R,R as F,T as Q}from"./zod-H_cgTO0M.js";import{t as y}from"./compiler-runtime-B3qBwwSJ.js";import{t as U}from"./isEmpty-CXeoXbuc.js";import{X as Y}from"./ai-model-dropdown-CKfMxi81.js";import{_ as Z}from"./useEventListener-BfYriKqt.js";import{t as S}from"./cn-X2M2usMq.js";import{t as ee}from"./jsx-runtime-PbYoItBR.js";import{a as O,i as $,n as D,r as E}from"./multi-map-DDbeVHF9.js";import{t as J}from"./button-Db07tdz7.js";import{i as T}from"./strings-B-yaq2o7.js";import{t as te}from"./createLucideIcon-BTp1tQDO.js";import{t as se}from"./ban-CttLZK8l.js";import{t as re}from"./bot-message-square-AslRbAeb.js";import{r as ae}from"./x-9vLEgLY6.js";import{t as M}from"./markdown-renderer-Ctc_BAzL.js";import{f as V,l as le}from"./add-cell-with-ai-r88BQwnl.js";import{t as ne}from"./external-link-mfK38Tpg.js";import{n as oe}from"./spinner-BlJOg2gb.js";import{c as ie}from"./datasource-BtJgopUR.js";import{t as ce}from"./RenderHTML-CdzAncjW.js";var de=te("shield-question-mark",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),ue=y(),k=z(X(),1),t=z(ee(),1);const me=c=>{let e=(0,ue.c)(13),{reasoning:l,index:a,isStreaming:i}=c,s=a===void 0?0:a,r=i===void 0?!1:i,[n,u]=k.useState("");if(!l&&!r)return null;let x=r?"reasoning":n,d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=(0,t.jsx)(re,{className:"h-3 w-3"}),e[0]=d):d=e[0];let h=r?"Thinking":"View reasoning",m=l.length>0&&` (${l.length} chars)`,o;e[1]!==h||e[2]!==m?(o=(0,t.jsx)(O,{className:"text-xs text-muted-foreground hover:bg-muted/50 px-2 py-1 h-auto rounded-sm [&[data-state=open]>svg]:rotate-180",children:(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[d,h,m]})}),e[1]=h,e[2]=m,e[3]=o):o=e[3];let p;e[4]===l?p=e[5]:(p=(0,t.jsx)(E,{className:"pb-2 px-2",children:(0,t.jsx)("div",{className:"bg-muted/30 border border-muted/50 rounded-md p-3 italic text-muted-foreground/90 relative",children:(0,t.jsx)("div",{className:"pr-6",children:(0,t.jsx)(M,{content:l})})})}),e[4]=l,e[5]=p);let f;e[6]!==o||e[7]!==p?(f=(0,t.jsxs)($,{value:"reasoning",className:"border-0",children:[o,p]}),e[6]=o,e[7]=p,e[8]=f):f=e[8];let v;return e[9]!==s||e[10]!==x||e[11]!==f?(v=(0,t.jsx)(D,{type:"single",collapsible:!0,className:"w-full mb-2",value:x,onValueChange:u,children:f},s),e[9]=s,e[10]=x,e[11]=f,e[12]=v):v=e[12],v};function q(c){return c.replace("tool-","")}var pe=y();const A=c=>{let e=(0,pe.c)(9),{input:l,label:a}=c,i=a===void 0?"Tool Request":a;if(l==null)return null;let s;e[0]===i?s=e[1]:(s=(0,t.jsx)("h3",{className:"text-xs font-semibold text-muted-foreground",children:i}),e[0]=i,e[1]=s);let r;e[2]===l?r=e[3]:(r=JSON.stringify(l,null,2),e[2]=l,e[3]=r);let n;e[4]===r?n=e[5]:(n=(0,t.jsx)("pre",{className:"bg-(--slate-2) p-2 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64",children:r}),e[4]=r,e[5]=n);let u;return e[6]!==s||e[7]!==n?(u=(0,t.jsxs)("div",{className:"space-y-2",children:[s,n]}),e[6]=s,e[7]=n,e[8]=u):u=e[8],u};var xe=y();const he=c=>{let e=(0,xe.c)(25),{toolName:l,input:a,approval:i,onApprove:s,className:r}=c,n;e[0]===r?n=e[1]:(n=S("rounded-md border border-(--amber-6) bg-(--amber-2) p-3 space-y-3",r),e[0]=r,e[1]=n);let u=`Approval required for ${q(l)}`,x;e[2]===Symbol.for("react.memo_cache_sentinel")?(x=(0,t.jsx)(de,{className:"h-4 w-4 text-(--amber-11) mt-0.5 shrink-0"}),e[2]=x):x=e[2];let d;e[3]===Symbol.for("react.memo_cache_sentinel")?(d=(0,t.jsx)("span",{className:"font-semibold",children:"Approval required:"}),e[3]=d):d=e[3];let h;e[4]===l?h=e[5]:(h=q(l),e[4]=l,e[5]=h);let m;e[6]===h?m=e[7]:(m=(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[x,(0,t.jsxs)("div",{className:"text-xs text-(--amber-11) leading-relaxed",children:[d," ",(0,t.jsx)("code",{className:"font-mono",children:h})]})]}),e[6]=h,e[7]=m);let o;e[8]===a?o=e[9]:(o=(0,t.jsx)(A,{input:a}),e[8]=a,e[9]=o);let p;e[10]!==i.id||e[11]!==s?(p=(0,t.jsx)(J,{size:"xs",variant:"outline",onClick:()=>s({id:i.id,approved:!1}),children:"Deny"}),e[10]=i.id,e[11]=s,e[12]=p):p=e[12];let f;e[13]!==i.id||e[14]!==s?(f=(0,t.jsx)(J,{size:"xs",onClick:()=>s({id:i.id,approved:!0}),children:"Approve"}),e[13]=i.id,e[14]=s,e[15]=f):f=e[15];let v;e[16]!==p||e[17]!==f?(v=(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[p,f]}),e[16]=p,e[17]=f,e[18]=v):v=e[18];let b;return e[19]!==n||e[20]!==v||e[21]!==u||e[22]!==m||e[23]!==o?(b=(0,t.jsxs)("div",{className:n,role:"alertdialog","aria-label":u,children:[m,o,v]}),e[19]=n,e[20]=v,e[21]=u,e[22]=m,e[23]=o,e[24]=b):b=e[24],b};var fe=y();const ve=c=>{let e=(0,fe.c)(28),{toolName:l,input:a,errorText:i,isLive:s,className:r}=c,[n,u]=k.useState(s),x=k.useRef(s),d,h;e[0]===s?(d=e[1],h=e[2]):(d=()=>{x.current&&!s&&u(!1),x.current=s},h=[s],e[0]=s,e[1]=d,e[2]=h),k.useEffect(d,h);let m;e[3]===r?m=e[4]:(m=S("rounded-md border border-(--red-6) bg-(--red-2)",r),e[3]=r,e[4]=m);let o;e[5]===Symbol.for("react.memo_cache_sentinel")?(o=()=>u(be),e[5]=o):o=e[5];let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=(0,t.jsx)(B,{className:"h-3.5 w-3.5 shrink-0"}),e[6]=p):p=e[6];let f;e[7]===Symbol.for("react.memo_cache_sentinel")?(f=(0,t.jsx)("span",{className:"font-semibold",children:"Failed:"}),e[7]=f):f=e[7];let v;e[8]===l?v=e[9]:(v=q(l),e[8]=l,e[9]=v);let b;e[10]===v?b=e[11]:(b=(0,t.jsxs)("span",{className:"flex-1 text-left",children:[f," ",(0,t.jsx)("code",{className:"font-mono",children:v})]}),e[10]=v,e[11]=b);let N=n&&"rotate-180",j;e[12]===N?j=e[13]:(j=S("h-3.5 w-3.5 shrink-0 transition-transform",N),e[12]=N,e[13]=j);let g;e[14]===j?g=e[15]:(g=(0,t.jsx)(ae,{className:j}),e[14]=j,e[15]=g);let w;e[16]!==n||e[17]!==g||e[18]!==b?(w=(0,t.jsxs)("button",{type:"button",onClick:o,className:"w-full flex items-center gap-2 px-3 py-2 text-xs text-(--red-11) hover:bg-(--red-3) rounded-md transition-colors","aria-expanded":n,children:[p,b,g]}),e[16]=n,e[17]=g,e[18]=b,e[19]=w):w=e[19];let _;e[20]!==i||e[21]!==a||e[22]!==n?(_=n&&(0,t.jsxs)("div",{className:"px-3 pb-3 space-y-3 border-t border-(--red-6)/40 pt-3",children:[(0,t.jsx)(A,{input:a}),i&&(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-xs font-semibold text-(--red-11) mb-1",children:"Error"}),(0,t.jsx)("pre",{className:"bg-(--red-2) border border-(--red-6) rounded p-2 text-xs text-(--red-11) leading-relaxed overflow-auto scrollbar-thin max-h-64 whitespace-pre-wrap",children:i})]})]}),e[20]=i,e[21]=a,e[22]=n,e[23]=_):_=e[23];let C;return e[24]!==w||e[25]!==_||e[26]!==m?(C=(0,t.jsxs)("div",{className:m,children:[w,_]}),e[24]=w,e[25]=_,e[26]=m,e[27]=C):C=e[27],C};function be(c){return!c}var W=y();function je(c){return c==null?!0:typeof c=="object"?U(c):!1}var ge=K({status:F().default("success"),auth_required:Q().default(!1),action_url:R(),next_steps:R(),meta:R(),message:F().nullish()}),Ne=c=>{let e=(0,W.c)(12),{data:l}=c,a;if(e[0]!==l){let{status:i,auth_required:s,action_url:r,meta:n,next_steps:u,message:x,...d}=l,h;e[2]===Symbol.for("react.memo_cache_sentinel")?(h=(0,t.jsx)("h3",{className:"text-xs font-semibold text-muted-foreground",children:"Tool Result"}),e[2]=h):h=e[2];let m;e[3]===i?m=e[4]:(m=(0,t.jsx)("span",{className:"text-xs px-2 py-0.5 bg-(--grass-2) text-(--grass-11) rounded-full font-medium capitalize",children:i}),e[3]=i,e[4]=m);let o;e[5]===s?o=e[6]:(o=s&&(0,t.jsx)("span",{className:"text-xs px-2 py-0.5 bg-(--amber-2) text-(--amber-11) rounded-full",children:"Auth Required"}),e[5]=s,e[6]=o);let p;e[7]!==m||e[8]!==o?(p=(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[h,(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[m,o]})]}),e[7]=m,e[8]=o,e[9]=p):p=e[9];let f;e[10]===x?f=e[11]:(f=x&&(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)(H,{className:"h-3 w-3 text-(--blue-11) mt-0.5 shrink-0"}),(0,t.jsx)("div",{className:"text-xs text-foreground",children:x})]}),e[10]=x,e[11]=f),a=(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[p,f,d&&(0,t.jsx)("div",{className:"space-y-3",children:Object.entries(d).map(we)})]}),e[0]=l,e[1]=a}else a=e[1];return a};const ye=c=>{let e=(0,W.c)(8),{result:l}=c,a;e[0]===l?a=e[1]:(a=ge.safeParse(l),e[0]=l,e[1]=a);let i=a;if(i.success){let n;return e[2]===i.data?n=e[3]:(n=(0,t.jsx)(Ne,{data:i.data}),e[2]=i.data,e[3]=n),n}let s;e[4]===l?s=e[5]:(s=typeof l=="string"?l:JSON.stringify(l,null,2),e[4]=l,e[5]=s);let r;return e[6]===s?r=e[7]:(r=(0,t.jsx)("div",{className:"text-xs font-medium text-muted-foreground mb-1 max-h-64 overflow-y-auto scrollbar-thin",children:s}),e[6]=s,e[7]=r),r};function we(c){let[e,l]=c;return je(l)?null:(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:e}),(0,t.jsx)("pre",{className:"bg-(--slate-2) p-2 text-muted-foreground border border-(--slate-4) rounded text-xs overflow-auto scrollbar-thin max-h-64",children:JSON.stringify(l,null,2)})]},e)}var L=y(),_e={"input-streaming":"Generating","input-available":"Running","approval-responded":"Awaiting result","output-available":"Done","output-denied":"Denied"},Se=c=>{let e=(0,L.c)(4),{state:l}=c;switch(l){case"input-streaming":case"input-available":case"approval-responded":{let a;return e[0]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(oe,{className:"h-3 w-3 animate-spin"}),e[0]=a):a=e[0],a}case"output-available":{let a;return e[1]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(Y,{className:"h-3 w-3 text-(--grass-11)"}),e[1]=a):a=e[1],a}case"output-denied":{let a;return e[2]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(se,{className:"h-3 w-3 text-muted-foreground"}),e[2]=a):a=e[2],a}default:{T(l);let a;return e[3]===Symbol.for("react.memo_cache_sentinel")?(a=(0,t.jsx)(ie,{className:"h-3 w-3"}),e[3]=a):a=e[3],a}}};function Te(c){switch(c){case"output-available":return"text-(--grass-11)/80";case"output-denied":return"text-muted-foreground";case"input-streaming":case"input-available":case"approval-responded":return"";default:return T(c),""}}const G=c=>{let e=(0,L.c)(29),{toolName:l,state:a,input:i,result:s,approval:r,index:n,className:u}=c,x=`tool-${n===void 0?0:n}`,d;e[0]===u?d=e[1]:(d=S("w-full",u),e[0]=u,e[1]=d);let h;e[2]===a?h=e[3]:(h=S("h-6 text-xs border-border shadow-none! ring-0! bg-muted/60 hover:bg-muted py-0 px-2 gap-1 rounded-sm [&[data-state=open]>svg]:rotate-180 hover:no-underline",Te(a)),e[2]=a,e[3]=h);let m;e[4]===a?m=e[5]:(m=(0,t.jsx)(Se,{state:a}),e[4]=a,e[5]=m);let o=_e[a],p;e[6]===l?p=e[7]:(p=q(l),e[6]=l,e[7]=p);let f;e[8]===p?f=e[9]:(f=(0,t.jsx)("code",{className:"font-mono text-xs",children:p}),e[8]=p,e[9]=f);let v;e[10]!==m||e[11]!==o||e[12]!==f?(v=(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[m,o,":",f]}),e[10]=m,e[11]=o,e[12]=f,e[13]=v):v=e[13];let b;e[14]!==h||e[15]!==v?(b=(0,t.jsx)(O,{className:h,children:v}),e[14]=h,e[15]=v,e[16]=b):b=e[16];let N;e[17]!==r||e[18]!==i||e[19]!==s||e[20]!==a?(N=(0,t.jsx)(E,{className:"py-2 px-2",children:(0,t.jsx)(ke,{state:a,input:i,result:s,approval:r})}),e[17]=r,e[18]=i,e[19]=s,e[20]=a,e[21]=N):N=e[21];let j;e[22]!==b||e[23]!==N?(j=(0,t.jsxs)($,{value:"tool-call",className:"border-0",children:[b,N]}),e[22]=b,e[23]=N,e[24]=j):j=e[24];let g;return e[25]!==j||e[26]!==x||e[27]!==d?(g=(0,t.jsx)(D,{type:"single",collapsible:!0,className:d,children:j},x),e[25]=j,e[26]=x,e[27]=d,e[28]=g):g=e[28],g};var ke=c=>{let e=(0,L.c)(16),{state:l,input:a,result:i,approval:s}=c;switch(l){case"input-streaming":case"input-available":case"approval-responded":{let r;return e[0]===a?r=e[1]:(r=(0,t.jsx)(A,{input:a}),e[0]=a,e[1]=r),r}case"output-available":{let r;e[2]===a?r=e[3]:(r=(0,t.jsx)(A,{input:a}),e[2]=a,e[3]=r);let n;e[4]===i?n=e[5]:(n=i!=null&&(0,t.jsx)(ye,{result:i}),e[4]=i,e[5]=n);let u;return e[6]!==r||e[7]!==n?(u=(0,t.jsxs)("div",{className:"space-y-3",children:[r,n]}),e[6]=r,e[7]=n,e[8]=u):u=e[8],u}case"output-denied":{let r;e[9]===a?r=e[10]:(r=(0,t.jsx)(A,{input:a}),e[9]=a,e[10]=r);let n=s!=null&&s.reason?`: ${s.reason}`:".",u;e[11]===n?u=e[12]:(u=(0,t.jsxs)("div",{className:"bg-muted/40 border border-border rounded-md p-3 text-xs text-muted-foreground leading-relaxed",children:["Tool execution was denied",n]}),e[11]=n,e[12]=u);let x;return e[13]!==r||e[14]!==u?(x=(0,t.jsxs)("div",{className:"space-y-3",children:[r,u]}),e[13]=r,e[14]=u,e[15]=x):x=e[15],x}default:return T(l),null}},Ae=y();const P=c=>{let e=(0,Ae.c)(25),{toolName:l,state:a,result:i,errorText:s,input:r,approval:n,onApprove:u,index:x,className:d,isLive:h}=c,m=h===void 0?!0:h;switch(a){case"approval-requested":{if(n!=null&&u!=null){let p;return e[0]!==n||e[1]!==d||e[2]!==r||e[3]!==u||e[4]!==l?(p=(0,t.jsx)(he,{toolName:l,input:r,approval:n,onApprove:u,className:d}),e[0]=n,e[1]=d,e[2]=r,e[3]=u,e[4]=l,e[5]=p):p=e[5],p}let o;return e[6]!==d||e[7]!==x||e[8]!==r||e[9]!==l?(o=(0,t.jsx)(G,{toolName:l,state:"input-available",input:r,index:x,className:d}),e[6]=d,e[7]=x,e[8]=r,e[9]=l,e[10]=o):o=e[10],o}case"output-error":{let o;return e[11]!==d||e[12]!==s||e[13]!==r||e[14]!==m||e[15]!==l?(o=(0,t.jsx)(ve,{toolName:l,input:r,errorText:s,isLive:m,className:d}),e[11]=d,e[12]=s,e[13]=r,e[14]=m,e[15]=l,e[16]=o):o=e[16],o}case"input-streaming":case"input-available":case"approval-responded":case"output-available":case"output-denied":{let o;return e[17]!==n||e[18]!==d||e[19]!==x||e[20]!==r||e[21]!==i||e[22]!==a||e[23]!==l?(o=(0,t.jsx)(G,{toolName:l,state:a,input:r,result:i,approval:n,index:x,className:d}),e[17]=n,e[18]=d,e[19]=x,e[20]=r,e[21]=i,e[22]=a,e[23]=l,e[24]=o):o=e[24],o}default:return T(a),null}},Ce=({message:c,isStreamingReasoning:e,isLast:l,addToolApprovalResponse:a})=>{return(0,t.jsx)(t.Fragment,{children:c.parts.map((s,r)=>i(s,r))});function i(s,r){if(qe(s))return(0,t.jsx)(P,{index:r,toolName:s.type,result:s.output,errorText:s.state==="output-error"?s.errorText:void 0,className:"my-2",state:s.state,input:s.input,approval:s.approval,onApprove:a,isLive:l},r);if(Re(s))return Z.debug("Found data part",s),null;switch(s.type){case"text":return s.text.includes("<marimo-")?(0,t.jsx)(k.Fragment,{children:ce({html:s.text})},r):(0,t.jsx)(M,{content:s.text},r);case"reasoning":return(0,t.jsx)(me,{reasoning:s.text,index:r,isStreaming:e&&l&&r===(c.parts.length||0)-1},r);case"file":return(0,t.jsx)(le,{attachment:s},r);case"dynamic-tool":return(0,t.jsx)(P,{toolName:s.toolName,result:s.output,errorText:s.state==="output-error"?s.errorText:void 0,state:s.state,input:s.input,approval:s.approval,onApprove:a,isLive:l},r);case"source-document":return(0,t.jsx)(V,{icon:(0,t.jsx)(I,{className:"h-3 w-3 shrink-0"}),title:s.title,subtitle:s.filename},r);case"source-url":return(0,t.jsx)(V,{icon:(0,t.jsx)(ne,{className:"h-3 w-3 shrink-0"}),title:s.title??s.url,subtitle:s.title?s.url:void 0,href:s.url},r);case"step-start":return null;default:return T(s),null}}};function qe(c){return c.type.startsWith("tool-")}function Re(c){return c.type.startsWith("data-")}export{Ce as t};