@marimo-team/frontend 0.25.2-dev3 → 0.25.2-dev30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ConnectedDataExplorerComponent-DJ5jwKfp.js → ConnectedDataExplorerComponent-Bli_Q2Pf.js} +1 -1
- package/dist/assets/{ErrorBoundary-BeE1cdgM.js → ErrorBoundary-Dx6lhNls.js} +2 -2
- package/dist/assets/{LazyAnyLanguageCodeMirror-B_IYTCX5.js → LazyAnyLanguageCodeMirror-CfdjWQov.js} +2 -2
- package/dist/assets/{RunButton-C2kFUhyO.js → RunButton-5jKnc29t.js} +2 -2
- package/dist/assets/__vite-browser-external-BgsHWynV.js +1 -0
- package/dist/assets/__vite-browser-external-DMJaCYJh.js +1 -0
- package/dist/assets/{abnfDiagram-VCTEODGH-CSPJSGaM.js → abnfDiagram-VCTEODGH-CS9VJ4IQ.js} +1 -1
- package/dist/assets/{add-cell-with-ai-BFgdVPaN.js → add-cell-with-ai-h_sx2HjG.js} +1 -1
- package/dist/assets/{agent-panel-Dh7yWh9P.js → agent-panel-C3MlqlHQ.js} +1 -1
- package/dist/assets/{ai-model-dropdown-DJ2elMLM.js → ai-model-dropdown-D_95EaOb.js} +1 -1
- package/dist/assets/{alert-dialog-CeE3i3Qa.js → alert-dialog-BsB0FYEL.js} +1 -1
- package/dist/assets/{any-language-editor-Cj_HzlZY.js → any-language-editor-DqrxopyM.js} +1 -1
- package/dist/assets/{app-config-button-DBCTefOX.js → app-config-button-AOmd3MSM.js} +1 -1
- package/dist/assets/architecture-7GRP2DOG-d-euXJif.js +1 -0
- package/dist/assets/{architectureDiagram-5GKGNRK7-7iukRoC9.js → architectureDiagram-5GKGNRK7-Cnq1OhHb.js} +1 -1
- package/dist/assets/{blockDiagram-I7D4REHJ-cuhpQB60.js → blockDiagram-I7D4REHJ-Belx_uSy.js} +1 -1
- package/dist/assets/{button-BoklZTGL.js → button-qFeU84ax.js} +1 -1
- package/dist/assets/{c4Diagram-7LVT6UL2-CMQEYn6T.js → c4Diagram-7LVT6UL2-B4RJxCU5.js} +1 -1
- package/dist/assets/{cache-panel-C0oB1kE2.js → cache-panel-ByvhZkRB.js} +1 -1
- package/dist/assets/{capabilities-Bj3s1hGN.js → capabilities-BqUNf14U.js} +1 -1
- package/dist/assets/{cells-CzugpTQu.js → cells-BXPymufT.js} +2 -2
- package/dist/assets/channel-CNw_DjeM.js +1 -0
- package/dist/assets/chat-display-Bl_cm4Bv.js +1 -0
- package/dist/assets/{chat-panel-BGw0bqDk.js → chat-panel-G5k-O9XI.js} +1 -1
- package/dist/assets/{chat-ui-CZZFGlZi.js → chat-ui-B9ojDwqD.js} +1 -1
- package/dist/assets/{chunk-4HAMMTFA-C6Tl7kEY.js → chunk-4HAMMTFA-BskE_kxl.js} +1 -1
- package/dist/assets/{chunk-75Z2AOVW-BzzYECN7.js → chunk-75Z2AOVW-BGGJQUsr.js} +1 -1
- package/dist/assets/{chunk-DU6HZSFF-BlpgvKzl.js → chunk-DU6HZSFF-BbUeHz2R.js} +1 -1
- package/dist/assets/{chunk-F27PBJKO-BVIgLGPF.js → chunk-F27PBJKO-BIJD5Wdq.js} +1 -1
- package/dist/assets/{chunk-GMAD6QVW-hv6IsAru.js → chunk-GMAD6QVW-De3yHY5A.js} +1 -1
- package/dist/assets/{chunk-GVQU2GXP-Duv4ZYb-.js → chunk-GVQU2GXP-CKFdw6Un.js} +1 -1
- package/dist/assets/{chunk-IMKFNOWR-BIILwBhp.js → chunk-IMKFNOWR-DaJnBQov.js} +1 -1
- package/dist/assets/{chunk-L3NEJ4N5-B2hafvRU.js → chunk-L3NEJ4N5-9WBGd7N9.js} +1 -1
- package/dist/assets/{chunk-OSK3NFVY-SNGRdtNA.js → chunk-OSK3NFVY-CawDZVpS.js} +1 -1
- package/dist/assets/{chunk-P2QGCYS3-_SeE0QXb.js → chunk-P2QGCYS3-C7JwFzl3.js} +1 -1
- package/dist/assets/{chunk-POPQ4Y6H-BB5NNJFE.js → chunk-POPQ4Y6H-B9wQmUAO.js} +1 -1
- package/dist/assets/{chunk-PWAF6VOD-BZoBqp8x.js → chunk-PWAF6VOD-D5iYVIst.js} +1 -1
- package/dist/assets/{chunk-SHT3W25Y-BtLGdeDB.js → chunk-SHT3W25Y-ChLuP8JP.js} +1 -1
- package/dist/assets/{chunk-SVP7TREG-B0UfxhUP.js → chunk-SVP7TREG-BZxpXOz-.js} +1 -1
- package/dist/assets/{chunk-TICWLB2K-BP7vel_P.js → chunk-TICWLB2K-WyejxyKe.js} +1 -1
- package/dist/assets/{chunk-YOKDWASO-CaoEAGJk.js → chunk-YOKDWASO-84E-_nIR.js} +4 -4
- package/dist/assets/{circle-CeQt3rdW.js → circle-CzTMKZwz.js} +1 -1
- package/dist/assets/classDiagram-ZZMXUADV-D3p0TN4D.js +1 -0
- package/dist/assets/classDiagram-v2-VYDZK3BY-D3p0TN4D.js +1 -0
- package/dist/assets/{code-visibility-BFNYI7hr.js → code-visibility-dpVhqYNL.js} +1 -1
- package/dist/assets/{command-palette-DN4JoOLD.js → command-palette-D6z9kPg7.js} +1 -1
- package/dist/assets/{common-DUCPhoyP.js → common-ByaXhTaS.js} +1 -1
- package/dist/assets/{components-DAmFBASm.js → components-Bg0jEPXR.js} +1 -1
- package/dist/assets/{components-CK7CeYlo.js → components-D5oqtiLg.js} +1 -1
- package/dist/assets/{config-B4VJJibu.js → config-2Nts63h2.js} +1 -1
- package/dist/assets/{config-BxZgoFvi.js → config-BdH5RvM0.js} +1 -1
- package/dist/assets/{config-DpGPGznL.js → config-D7CP5wR5.js} +1 -1
- package/dist/assets/{copy-BhJktFeI.js → copy-B--GzTEX.js} +1 -1
- package/dist/assets/{copy-icon-DFhUGBjO.js → copy-icon-DQuttmjH.js} +1 -1
- package/dist/assets/{createReducer-BPvK7C_R.js → createReducer-CI8rlZE9.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-DIiiykJg.js → cynefin-OW5HDTMX-GFKj4n0O.js} +1 -1
- package/dist/assets/{cynefinDiagram-5FMLGOSQ-BARZRQBb.js → cynefinDiagram-5FMLGOSQ-ADfRyIGN.js} +1 -1
- package/dist/assets/{dagre-DVyyr7Cb.js → dagre-BNpoWXcL.js} +1 -1
- package/dist/assets/{dagre-GXQ25YYZ-79s0lOP0.js → dagre-GXQ25YYZ-Diet3S0x.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-DPfnIudL.js → data-grid-overlay-editor-BEM-ieFB.js} +1 -1
- package/dist/assets/{dependency-graph-panel-BN4CLayU.js → dependency-graph-panel-CrensQ9d.js} +1 -1
- package/dist/assets/{diagram-S7CK7UJ4-BCviGhvd.js → diagram-S7CK7UJ4-CCX9feKM.js} +1 -1
- package/dist/assets/{diagram-UQ7AKVKN-Ds-BT46T.js → diagram-UQ7AKVKN-DMu2JraT.js} +1 -1
- package/dist/assets/{diagram-VSXAHHWV-CK4GkM-q.js → diagram-VSXAHHWV-Dtg7sh2B.js} +1 -1
- package/dist/assets/{diagram-VX7I27RA-BtL2eh0t.js → diagram-VX7I27RA-D3OGvedU.js} +1 -1
- package/dist/assets/{diagram-Z3DM3KII-C6SmbLBS.js → diagram-Z3DM3KII-MArsMIcf.js} +1 -1
- package/dist/assets/{dist-CyYN7zJg.js → dist-DFI04FfI.js} +1 -1
- package/dist/assets/{documentation-panel-CzRbXV5u.js → documentation-panel-DDYXbqvp.js} +1 -1
- package/dist/assets/{dropdown-menu-VuyoeQOD.js → dropdown-menu-Crx6knLg.js} +1 -1
- package/dist/assets/{ebnfDiagram-PWID7BFC-D_JU4cMQ.js → ebnfDiagram-PWID7BFC-vQJPmojo.js} +1 -1
- package/dist/assets/{edit-page-jGNYBqQo.js → edit-page-C7naRe4T.js} +45 -45
- package/dist/assets/{erDiagram-RLTQ6QDP-Z9MJ6X-r.js → erDiagram-RLTQ6QDP-DbMS_wVH.js} +1 -1
- package/dist/assets/{error-entries-CDSsy76p.js → error-entries-FCI5CEqR.js} +1 -1
- package/dist/assets/{error-panel-ABvjFG3p.js → error-panel-CgT73q4b.js} +1 -1
- package/dist/assets/eventmodeling-NTZA5JFV-C7Lb8MCA.js +1 -0
- package/dist/assets/{feedback-button-CZhLiwkO.js → feedback-button-B0hzbli5.js} +1 -1
- package/dist/assets/{file-explorer-panel-DTiEpmVE.js → file-explorer-panel-Dl3gX4fl.js} +1 -1
- package/dist/assets/{file-name-input-C1C8xrjA.js → file-name-input-CV0fYc67.js} +1 -1
- package/dist/assets/{filename-fxG7K_MU.js → filename-DZ9xkzQn.js} +1 -1
- package/dist/assets/flowDiagram-HODETNUW-C9M5c8rH.js +1 -0
- package/dist/assets/{fullscreen-BmzAqMKq.js → fullscreen-3wS6IaIC.js} +1 -1
- package/dist/assets/{gallery-page-Moi4ZdJ0.js → gallery-page-B6WMdce0.js} +1 -1
- package/dist/assets/{ganttDiagram-EL5Y4UJY-Cgy11k0G.js → ganttDiagram-EL5Y4UJY-DtBccFoD.js} +1 -1
- package/dist/assets/{gitGraph-4MIJSDKK-BlIdVC2G.js → gitGraph-4MIJSDKK-BZrVnUIX.js} +1 -1
- package/dist/assets/{gitGraphDiagram-WWUBYQGX-CVH8fay_.js → gitGraphDiagram-WWUBYQGX-BWNR7nHV.js} +1 -1
- package/dist/assets/{glide-data-editor-CbsCWu-K.js → glide-data-editor-qrXT33Qd.js} +4 -4
- package/dist/assets/{graphlib-3maKwbRO.js → graphlib-C-6pc4Zd.js} +1 -1
- package/dist/assets/has-DmAIW7kM.js +1 -0
- package/dist/assets/{highlighted-body-KPVGNVTW-D9V82ncH.js → highlighted-body-KPVGNVTW-DxcqwMAu.js} +1 -1
- package/dist/assets/{home-page-UAgVOkCZ.js → home-page-DsILx4TF.js} +1 -1
- package/dist/assets/{index--sT8xf-8.css → index-C4-iduJO.css} +1 -1
- package/dist/assets/{index-DafnX1Xx.js → index-DYVlDtsu.js} +11 -11
- package/dist/assets/{info-A6RAGUB7-BdPbe-lF.js → info-A6RAGUB7-u3lEx9f-.js} +1 -1
- package/dist/assets/{infoDiagram-27XIBGKW-Dk8U81nJ.js → infoDiagram-27XIBGKW-b4WMhbpt.js} +1 -1
- package/dist/assets/{input-BDakodZ2.js → input-D4bMj5Nb.js} +1 -1
- package/dist/assets/{ishikawaDiagram-5VMMS53U-CzHQlMUQ.js → ishikawaDiagram-5VMMS53U-DQxtMs4g.js} +1 -1
- package/dist/assets/{journeyDiagram-3NMN7TZE-DRc8ACzh.js → journeyDiagram-3NMN7TZE-yCIlrFH1.js} +1 -1
- package/dist/assets/{kanban-definition-UXKFOSKX-CVyVYiI6.js → kanban-definition-UXKFOSKX-rhD_vnwl.js} +1 -1
- package/dist/assets/{logs-panel-Bz5ysVX4.js → logs-panel-ByevEcIA.js} +1 -1
- package/dist/assets/{menu-items-BBdeXCvU.js → menu-items-D-vbZmqL.js} +1 -1
- package/dist/assets/{mermaid-D_jPUVqz.js → mermaid-B2ngFN0c.js} +4 -4
- package/dist/assets/mermaid-HWGCJPDP-Bk1fR60Q.js +1 -0
- package/dist/assets/{mermaid-parser.core-3RKOfUXB.js → mermaid-parser.core-BdlE0Iab.js} +3 -3
- package/dist/assets/{mindmap-definition-YA3MSWOX-D5t6Aq5Z.js → mindmap-definition-YA3MSWOX-D5hDBYDC.js} +1 -1
- package/dist/assets/{number-overlay-editor-FAD8sjFU.js → number-overlay-editor-BcElw1N2.js} +1 -1
- package/dist/assets/{numbers-DsgsDslU.js → numbers-DyJNv6Vk.js} +1 -1
- package/dist/assets/{outline-panel-85oiQ0XX.js → outline-panel-CHw9TjuQ.js} +1 -1
- package/dist/assets/{packages-panel-ClKIaP5S.js → packages-panel-CDb2_4Dc.js} +1 -1
- package/dist/assets/{packet-AYTQ26CC-st4ZYus8.js → packet-AYTQ26CC-BajGVcwf.js} +1 -1
- package/dist/assets/{panels-B48zp96D.js → panels-rdTyuwHQ.js} +3 -3
- package/dist/assets/{pegDiagram-XKGWAZYB-BTkTm4ej.js → pegDiagram-XKGWAZYB-D8QLsgnM.js} +1 -1
- package/dist/assets/{pie-WAS4IAKB-GwT5MHDl.js → pie-WAS4IAKB-8yOLd-eD.js} +1 -1
- package/dist/assets/{pieDiagram-E7YTZNPT-Bq6X88M1.js → pieDiagram-E7YTZNPT-DeJxGsNN.js} +1 -1
- package/dist/assets/{preload-helper-HclGiUj8.js → preload-helper-uBIymjUX.js} +1 -1
- package/dist/assets/{process-output-Cg2ta3vY.js → process-output-DqkSNdEt.js} +1 -1
- package/dist/assets/purify.es--06brOip.js +3 -0
- package/dist/assets/{quadrantDiagram-AXDQQJYC-D_wrOwLk.js → quadrantDiagram-AXDQQJYC-BOooPQcn.js} +1 -1
- package/dist/assets/{radar-RG4KPBEZ-h1Tdn-Oz.js → radar-RG4KPBEZ-CxHjJ3AF.js} +1 -1
- package/dist/assets/{railroad-74A4TZTK-r4Uf-msd.js → railroad-74A4TZTK-Bv_oZ8fK.js} +1 -1
- package/dist/assets/railroad-abnf-HS5TGJTU-fZMJYLPw.js +1 -0
- package/dist/assets/railroad-ebnf-LZEXJU2U-MXzdI5RK.js +1 -0
- package/dist/assets/railroad-peg-WCYAUIDC-9iJg5MJM.js +1 -0
- package/dist/assets/{railroadDiagram-O6MQD6OU-fv8HXW_g.js → railroadDiagram-O6MQD6OU-Cv1c_MPc.js} +1 -1
- package/dist/assets/{requirementDiagram-BXWQKSXE-DDOOMUfC.js → requirementDiagram-BXWQKSXE-C5vd9-4j.js} +1 -1
- package/dist/assets/{reveal-component-CR43gpTZ.js → reveal-component-Dctnn9_M.js} +1 -1
- package/dist/assets/{run-page-NR_KFWk8.js → run-page-BiThhUDc.js} +1 -1
- package/dist/assets/{sankeyDiagram-P5KCCOFB-CvvUY6tS.js → sankeyDiagram-P5KCCOFB-DpHoqt-1.js} +1 -1
- package/dist/assets/{save-worker-Dw8ybFWq.js → save-worker-C880NC3o.js} +5 -5
- package/dist/assets/{scratchpad-panel-DHc-oVb1.js → scratchpad-panel-C1fSG5vy.js} +1 -1
- package/dist/assets/{scroll-to-bottom-button-BSCkDXet.js → scroll-to-bottom-button-BLNi0TGS.js} +1 -1
- package/dist/assets/{secrets-panel-C-65ZjnM.js → secrets-panel-7_LH6R8A.js} +1 -1
- package/dist/assets/{select-BplWpfFo.js → select-CWHHoM53.js} +1 -1
- package/dist/assets/{sequenceDiagram-WJ2MYXX4-DdpBhQaS.js → sequenceDiagram-WJ2MYXX4-C22eqEIy.js} +1 -1
- package/dist/assets/{session-panel-DiwQqIbt.js → session-panel-DBsTbpC9.js} +1 -1
- package/dist/assets/{session-DXKMv4Bs.js → session-ztCnZJHI.js} +1 -1
- package/dist/assets/{snippets-panel-BLmXrneD.js → snippets-panel-ChI5aU42.js} +1 -1
- package/dist/assets/{state-Ozzur_f2.js → state-0NZOvqJz.js} +1 -1
- package/dist/assets/{stateDiagram-D77RDMKH-D3p19fac.js → stateDiagram-D77RDMKH-BRy9VFgk.js} +1 -1
- package/dist/assets/stateDiagram-v2-MP3YSRHH-CxpbMKE8.js +1 -0
- package/dist/assets/{strings-BHZPE0Mc.js → strings-LjhpYwmx.js} +1 -1
- package/dist/assets/{swimlanes-42K2YHIH-CLxCSvU4.js → swimlanes-42K2YHIH-CvQuAAYe.js} +1 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-CANFdBys.js +8 -0
- package/dist/assets/{swiper-component-rqJChT_P.js → swiper-component-CCQgW-CG.js} +1 -1
- package/dist/assets/{terminal-CY4h1UmO.js → terminal-Ct69I5Rq.js} +1 -1
- package/dist/assets/{timeline-definition-24CTP7MA-Cw2PY--x.js → timeline-definition-24CTP7MA-CtEY04jV.js} +1 -1
- package/dist/assets/{toast-KNfsFUiB.js → toast-DXkezxWI.js} +1 -1
- package/dist/assets/{tooltip-PLkI_UfK.js → tooltip-BQ9qHrrN.js} +1 -1
- package/dist/assets/{tooltip-DR2Z2N4w.js → tooltip-CamoSiGF.js} +1 -1
- package/dist/assets/{tracing-Q8NAdlrA.js → tracing-B6lz41O5.js} +1 -1
- package/dist/assets/{tracing-panel-Ci4kY4dr.js → tracing-panel-Hd5F5hNF.js} +2 -2
- package/dist/assets/{treeView-Q6P3EWNA-DwYCsGZ1.js → treeView-Q6P3EWNA-BJ6U0Bh6.js} +1 -1
- package/dist/assets/{treemap-WGGIJYW6-BH3CfKBr.js → treemap-WGGIJYW6-DU7UqE3x.js} +1 -1
- package/dist/assets/{use-restore-focus-B98SEiGc.js → use-restore-focus-D0UtBPD6.js} +1 -1
- package/dist/assets/{useCellActionButton-DpYtVfFe.js → useCellActionButton-OertTn-H.js} +1 -1
- package/dist/assets/{useEventListener-BdZUApHd.js → useEventListener-CUPWI_1X.js} +1 -1
- package/dist/assets/{useInterval-ChchS0Rl.js → useInterval-DluQa5sq.js} +1 -1
- package/dist/assets/{useTheme-DcnXlv0_.js → useTheme-CnWB5G1X.js} +1 -1
- package/dist/assets/{vega-component-BpoSew4K.js → vega-component-C72lP8OY.js} +1 -1
- package/dist/assets/{vega-embed-container-BOJG8mCA.js → vega-embed-container-C0Dphqkx.js} +1 -1
- package/dist/assets/{vennDiagram-4TSXK5OY-D8bN6lVl.js → vennDiagram-4TSXK5OY-B_OWiVKd.js} +1 -1
- package/dist/assets/{wardley-WFR3VGLG-Cr2mp5U6.js → wardley-WFR3VGLG-Rssn0VIa.js} +1 -1
- package/dist/assets/{wardleyDiagram-VM6X3IG4-CbZdo0SA.js → wardleyDiagram-VM6X3IG4-CvpCKTJQ.js} +1 -1
- package/dist/assets/{worker-ByzyDs4N.js → worker-B5tVfGoh.js} +6 -6
- package/dist/assets/{write-secret-modal-BiG2tahJ.js → write-secret-modal-wFgr-1dA.js} +1 -1
- package/dist/assets/{xychartDiagram-S5SC5T6Z-DUUQ9tau.js → xychartDiagram-S5SC5T6Z-CqU92eUd.js} +1 -1
- package/dist/assets/{youtube-A9VT7NHb.js → youtube-Ck_NlGi9.js} +1 -1
- package/dist/index.html +35 -35
- package/package.json +7 -7
- package/src/components/chat/tool-call/__tests__/tool-result.test.tsx +56 -0
- package/src/components/chat/tool-call/tool-result.tsx +3 -3
- package/src/components/data-table/charts/__tests__/schemas.test.ts +25 -0
- package/src/components/data-table/charts/__tests__/spec.test.ts +26 -23
- package/src/components/data-table/charts/constants.ts +11 -10
- package/src/components/data-table/charts/types.ts +1 -0
- package/src/components/editor/actions/__tests__/useSetOutputsExpanded.test.ts +42 -0
- package/src/components/editor/actions/useNotebookActions.tsx +20 -0
- package/src/components/editor/actions/useSetOutputsExpanded.ts +67 -0
- package/src/core/edit-app.tsx +16 -0
- package/src/core/hotkeys/hotkeys.ts +12 -0
- package/src/core/wasm/__tests__/bootstrap.test.ts +33 -1
- package/src/core/wasm/worker/bootstrap.ts +22 -3
- package/src/css/katex.min.css +145 -144
- package/src/plugins/impl/CheckboxPlugin.tsx +1 -1
- package/src/plugins/impl/DatePickerPlugin.tsx +5 -3
- package/src/plugins/impl/DateRangePlugin.tsx +5 -3
- package/src/plugins/impl/DateTimePickerPlugin.tsx +5 -3
- package/src/plugins/impl/DropdownPlugin.tsx +1 -1
- package/src/plugins/impl/FileBrowserPlugin.tsx +45 -15
- package/src/plugins/impl/MultiselectPlugin.tsx +1 -1
- package/src/plugins/impl/NumberPlugin.tsx +1 -1
- package/src/plugins/impl/RadioPlugin.tsx +5 -1
- package/src/plugins/impl/RangeSliderPlugin.tsx +1 -1
- package/src/plugins/impl/SearchableSelect.tsx +1 -1
- package/src/plugins/impl/SliderPlugin.tsx +1 -1
- package/src/plugins/impl/SwitchPlugin.tsx +6 -1
- package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +85 -2
- package/src/plugins/impl/__tests__/widget-labels.test.tsx +122 -0
- package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
- package/src/plugins/impl/common/labeled.tsx +9 -3
- package/dist/assets/__vite-browser-external-Cw9Ccr_O.js +0 -1
- package/dist/assets/__vite-browser-external-DBuuG05M.js +0 -1
- package/dist/assets/architecture-7GRP2DOG-D_jUzZ2f.js +0 -1
- package/dist/assets/channel-CGdeorQk.js +0 -1
- package/dist/assets/chat-display-DevO4F8W.js +0 -1
- package/dist/assets/classDiagram-ZZMXUADV-CoNXKNMZ.js +0 -1
- package/dist/assets/classDiagram-v2-VYDZK3BY-CoNXKNMZ.js +0 -1
- package/dist/assets/eventmodeling-NTZA5JFV-DqXXj9CO.js +0 -1
- package/dist/assets/flowDiagram-HODETNUW-ncLciK2K.js +0 -1
- package/dist/assets/has-cJsIKK9t.js +0 -1
- package/dist/assets/mermaid-HWGCJPDP-UrYE0_I-.js +0 -1
- package/dist/assets/purify.es-CYRiAeUx.js +0 -3
- package/dist/assets/railroad-abnf-HS5TGJTU-BOoktJ2s.js +0 -1
- package/dist/assets/railroad-ebnf-LZEXJU2U-BzJtHsBe.js +0 -1
- package/dist/assets/railroad-peg-WCYAUIDC-C3wGFTzw.js +0 -1
- package/dist/assets/stateDiagram-v2-MP3YSRHH-CplsDaDl.js +0 -1
- package/dist/assets/swimlanesDiagram-VR7AAH4N-DPoIFx8T.js +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { type CalendarDate, parseDate } from "@internationalized/date";
|
|
4
|
-
import type
|
|
4
|
+
import { type JSX, useId } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { DatePicker } from "@/components/ui/date-picker";
|
|
7
7
|
import type { IPlugin, IPluginProps, Setter } from "../types";
|
|
@@ -49,6 +49,7 @@ interface DatePickerProps extends Data {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
const DatePickerComponent = (props: DatePickerProps): JSX.Element => {
|
|
52
|
+
const labelId = useId();
|
|
52
53
|
const handleInput = (valueAsDate: CalendarDate | null) => {
|
|
53
54
|
if (!valueAsDate) {
|
|
54
55
|
return;
|
|
@@ -59,12 +60,13 @@ const DatePickerComponent = (props: DatePickerProps): JSX.Element => {
|
|
|
59
60
|
};
|
|
60
61
|
|
|
61
62
|
return (
|
|
62
|
-
<Labeled label={props.label} fullWidth={props.fullWidth}>
|
|
63
|
+
<Labeled labelId={labelId} label={props.label} fullWidth={props.fullWidth}>
|
|
63
64
|
<DatePicker
|
|
64
65
|
granularity="day"
|
|
65
66
|
value={parseDate(props.value)}
|
|
66
67
|
onChange={handleInput}
|
|
67
|
-
aria-
|
|
68
|
+
aria-labelledby={props.label ? labelId : undefined}
|
|
69
|
+
aria-label={props.label ? undefined : "date picker"}
|
|
68
70
|
minValue={parseDate(props.start)}
|
|
69
71
|
maxValue={parseDate(props.stop)}
|
|
70
72
|
isDisabled={props.disabled}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { type CalendarDate, parseDate } from "@internationalized/date";
|
|
4
|
-
import type
|
|
4
|
+
import { type JSX, useId } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { DateRangePicker } from "@/components/ui/date-picker";
|
|
7
7
|
import type { IPlugin, IPluginProps, Setter } from "../types";
|
|
@@ -48,6 +48,7 @@ interface DateRangePickerProps extends Data {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
const DateRangePickerComponent = (props: DateRangePickerProps): JSX.Element => {
|
|
51
|
+
const labelId = useId();
|
|
51
52
|
const handleInput = (
|
|
52
53
|
valueAsDateRange: {
|
|
53
54
|
start: CalendarDate;
|
|
@@ -64,7 +65,7 @@ const DateRangePickerComponent = (props: DateRangePickerProps): JSX.Element => {
|
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
return (
|
|
67
|
-
<Labeled label={props.label} fullWidth={props.fullWidth}>
|
|
68
|
+
<Labeled labelId={labelId} label={props.label} fullWidth={props.fullWidth}>
|
|
68
69
|
<DateRangePicker
|
|
69
70
|
granularity="day"
|
|
70
71
|
value={{
|
|
@@ -72,7 +73,8 @@ const DateRangePickerComponent = (props: DateRangePickerProps): JSX.Element => {
|
|
|
72
73
|
end: parseDate(props.value[1]),
|
|
73
74
|
}}
|
|
74
75
|
onChange={handleInput}
|
|
75
|
-
aria-
|
|
76
|
+
aria-labelledby={props.label ? labelId : undefined}
|
|
77
|
+
aria-label={props.label ? undefined : "date range picker"}
|
|
76
78
|
minValue={parseDate(props.start)}
|
|
77
79
|
maxValue={parseDate(props.stop)}
|
|
78
80
|
isDisabled={props.disabled}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { type CalendarDateTime, parseDateTime } from "@internationalized/date";
|
|
4
|
-
import type
|
|
4
|
+
import { type JSX, useId } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { DatePicker } from "@/components/ui/date-picker";
|
|
7
7
|
import type { IPlugin, IPluginProps, Setter } from "../types";
|
|
@@ -50,6 +50,7 @@ interface DateTimePickerProps extends Data {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const DateTimePickerComponent = (props: DateTimePickerProps): JSX.Element => {
|
|
53
|
+
const labelId = useId();
|
|
53
54
|
const handleInput = (valueAsDateTime: CalendarDateTime | null) => {
|
|
54
55
|
if (!valueAsDateTime) {
|
|
55
56
|
return;
|
|
@@ -63,12 +64,13 @@ const DateTimePickerComponent = (props: DateTimePickerProps): JSX.Element => {
|
|
|
63
64
|
const parsedValue = props.value ? parseDateTime(props.value) : undefined;
|
|
64
65
|
|
|
65
66
|
return (
|
|
66
|
-
<Labeled label={props.label} fullWidth={props.fullWidth}>
|
|
67
|
+
<Labeled labelId={labelId} label={props.label} fullWidth={props.fullWidth}>
|
|
67
68
|
<DatePicker
|
|
68
69
|
granularity={props.precision}
|
|
69
70
|
value={parsedValue}
|
|
70
71
|
onChange={handleInput}
|
|
71
|
-
aria-
|
|
72
|
+
aria-labelledby={props.label ? labelId : undefined}
|
|
73
|
+
aria-label={props.label ? undefined : "date time picker"}
|
|
72
74
|
minValue={parseDateTime(props.start)}
|
|
73
75
|
maxValue={parseDateTime(props.stop)}
|
|
74
76
|
isDisabled={props.disabled}
|
|
@@ -79,7 +79,7 @@ const Dropdown = (props: DropdownProps): JSX.Element => {
|
|
|
79
79
|
const singleValue = value.length === 0 ? defaultValue : value[0];
|
|
80
80
|
|
|
81
81
|
return (
|
|
82
|
-
<Labeled label={label}
|
|
82
|
+
<Labeled label={label} controlId={id} fullWidth={fullWidth}>
|
|
83
83
|
<NativeSelect
|
|
84
84
|
data-testid="marimo-plugin-dropdown"
|
|
85
85
|
onChange={(e) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import { type LucideIcon, CornerLeftUp } from "lucide-react";
|
|
3
|
+
import { type LucideIcon, ChevronRightIcon, CornerLeftUp } from "lucide-react";
|
|
4
4
|
import { type JSX, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import {
|
|
@@ -12,7 +12,6 @@ import { Spinner } from "@/components/icons/spinner";
|
|
|
12
12
|
import { Button } from "@/components/ui/button";
|
|
13
13
|
import { Checkbox } from "@/components/ui/checkbox";
|
|
14
14
|
import { Label } from "@/components/ui/label";
|
|
15
|
-
import { NativeSelect } from "@/components/ui/native-select";
|
|
16
15
|
import { Table, TableBody, TableCell, TableRow } from "@/components/ui/table";
|
|
17
16
|
import { toast } from "@/components/ui/use-toast";
|
|
18
17
|
import { RANDOM_ID_ATTR } from "@/core/dom/ui-element-constants";
|
|
@@ -472,12 +471,19 @@ export const FileBrowser = ({
|
|
|
472
471
|
//
|
|
473
472
|
// Assumes that path contains at least one delimiter, which is true
|
|
474
473
|
// only if this is an absolute path.
|
|
475
|
-
const { parentDirectories } = getProtocolAndParentDirectories({
|
|
474
|
+
const { protocol, parentDirectories } = getProtocolAndParentDirectories({
|
|
476
475
|
path,
|
|
477
476
|
delimiter,
|
|
478
477
|
initialPath,
|
|
479
478
|
restrictNavigation,
|
|
480
479
|
});
|
|
480
|
+
const breadcrumbs = parentDirectories.toReversed().map((dir) => ({
|
|
481
|
+
path: dir,
|
|
482
|
+
name:
|
|
483
|
+
dir === protocol
|
|
484
|
+
? protocol
|
|
485
|
+
: (dir.split(delimiter).findLast(Boolean) ?? dir),
|
|
486
|
+
}));
|
|
481
487
|
|
|
482
488
|
const selectionKindLabel =
|
|
483
489
|
selectionMode === "all"
|
|
@@ -515,18 +521,42 @@ export const FileBrowser = ({
|
|
|
515
521
|
<div>
|
|
516
522
|
{error && <Banner kind="danger">{error.message}</Banner>}
|
|
517
523
|
{renderHeader()}
|
|
518
|
-
<
|
|
519
|
-
className="
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
524
|
+
<nav aria-label="Current directory" className="mt-2">
|
|
525
|
+
<ol className="flex flex-wrap items-center gap-0.5 text-sm">
|
|
526
|
+
{breadcrumbs.map((crumb, index) => {
|
|
527
|
+
const isCurrent = index === breadcrumbs.length - 1;
|
|
528
|
+
return (
|
|
529
|
+
<li key={crumb.path} className="flex items-center gap-0.5">
|
|
530
|
+
{index > 0 && (
|
|
531
|
+
<ChevronRightIcon
|
|
532
|
+
size={14}
|
|
533
|
+
className="text-muted-foreground shrink-0"
|
|
534
|
+
aria-hidden={true}
|
|
535
|
+
/>
|
|
536
|
+
)}
|
|
537
|
+
<button
|
|
538
|
+
type="button"
|
|
539
|
+
title={crumb.path}
|
|
540
|
+
aria-current={isCurrent ? "page" : undefined}
|
|
541
|
+
onClick={() => {
|
|
542
|
+
if (!isCurrent) {
|
|
543
|
+
setNewPath(crumb.path);
|
|
544
|
+
}
|
|
545
|
+
}}
|
|
546
|
+
className={cn(
|
|
547
|
+
"rounded px-1 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",
|
|
548
|
+
isCurrent
|
|
549
|
+
? "font-medium cursor-default"
|
|
550
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
551
|
+
)}
|
|
552
|
+
>
|
|
553
|
+
{crumb.name}
|
|
554
|
+
</button>
|
|
555
|
+
</li>
|
|
556
|
+
);
|
|
557
|
+
})}
|
|
558
|
+
</ol>
|
|
559
|
+
</nav>
|
|
530
560
|
|
|
531
561
|
{data && typeof data.total_count === "number" && (
|
|
532
562
|
<div className="text-xs text-muted-foreground mt-1 px-1">
|
|
@@ -70,7 +70,7 @@ const NumberComponent = (props: NumberComponentProps): JSX.Element => {
|
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
return (
|
|
73
|
-
<Labeled label={props.label}
|
|
73
|
+
<Labeled label={props.label} controlId={id} fullWidth={props.fullWidth}>
|
|
74
74
|
<NumberField
|
|
75
75
|
data-testid="marimo-plugin-number-input"
|
|
76
76
|
className={cn("min-w-[3em]", props.fullWidth && "w-full")}
|
|
@@ -51,7 +51,11 @@ export const Radio = (props: RadioProps): JSX.Element => {
|
|
|
51
51
|
const id = useId();
|
|
52
52
|
|
|
53
53
|
return (
|
|
54
|
-
<Labeled
|
|
54
|
+
<Labeled
|
|
55
|
+
label={props.label}
|
|
56
|
+
controlId={id}
|
|
57
|
+
align={props.inline ? "left" : "top"}
|
|
58
|
+
>
|
|
55
59
|
<RadioGroup
|
|
56
60
|
data-testid="marimo-plugin-radio"
|
|
57
61
|
value={props.value ?? ""}
|
|
@@ -33,7 +33,7 @@ export const SearchableSelect = (props: SearchableSelectProps): JSX.Element => {
|
|
|
33
33
|
);
|
|
34
34
|
|
|
35
35
|
return (
|
|
36
|
-
<Labeled label={label}
|
|
36
|
+
<Labeled label={label} controlId={id} fullWidth={fullWidth}>
|
|
37
37
|
<SelectList<string>
|
|
38
38
|
id={id}
|
|
39
39
|
options={items}
|
|
@@ -34,7 +34,12 @@ const SwitchComponent = ({
|
|
|
34
34
|
const id = useId();
|
|
35
35
|
|
|
36
36
|
return (
|
|
37
|
-
<Labeled
|
|
37
|
+
<Labeled
|
|
38
|
+
label={data.label}
|
|
39
|
+
align="right"
|
|
40
|
+
controlId={id}
|
|
41
|
+
labelClassName="ml-1"
|
|
42
|
+
>
|
|
38
43
|
<Switch
|
|
39
44
|
data-testid="marimo-plugin-switch"
|
|
40
45
|
checked={value}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
fireEvent,
|
|
5
|
+
render,
|
|
6
|
+
screen,
|
|
7
|
+
waitFor,
|
|
8
|
+
within,
|
|
9
|
+
} from "@testing-library/react";
|
|
4
10
|
import { beforeAll, describe, expect, it, vi } from "vitest";
|
|
5
11
|
import { SetupMocks } from "@/__mocks__/common";
|
|
6
12
|
import { initialModeAtom } from "@/core/mode";
|
|
@@ -187,7 +193,7 @@ describe("FileBrowserPlugin keyboard accessibility", () => {
|
|
|
187
193
|
const docsRow = docs.closest('[role="row"]')!;
|
|
188
194
|
fireEvent.keyDown(docsRow, { key: "ArrowDown" }); // move active off the parent
|
|
189
195
|
fireEvent.click(docs); // navigate into "docs"
|
|
190
|
-
await screen.findByText("docs"); // listing reloads (mock returns same files)
|
|
196
|
+
await within(screen.getByRole("grid")).findByText("docs"); // listing reloads (mock returns same files)
|
|
191
197
|
const rows = screen.getAllByRole("row");
|
|
192
198
|
expect(rows[0]).toHaveAttribute("tabindex", "0");
|
|
193
199
|
// the focused row must match the only tabbable row
|
|
@@ -361,3 +367,80 @@ describe("FileBrowserPlugin keyboard accessibility", () => {
|
|
|
361
367
|
function rowFor(name: string): HTMLElement {
|
|
362
368
|
return screen.getByText(name).closest('[role="row"]') as HTMLElement;
|
|
363
369
|
}
|
|
370
|
+
|
|
371
|
+
describe("FileBrowserPlugin breadcrumbs", () => {
|
|
372
|
+
function breadcrumbs() {
|
|
373
|
+
return within(
|
|
374
|
+
screen.getByRole("navigation", { name: "Current directory" }),
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
it("renders a crumb per ancestor with the current directory last", async () => {
|
|
379
|
+
renderBrowser();
|
|
380
|
+
await screen.findByText("docs");
|
|
381
|
+
const items = breadcrumbs().getAllByRole("listitem");
|
|
382
|
+
expect(items.map((li) => li.textContent)).toEqual(["/", "home", "user"]);
|
|
383
|
+
expect(breadcrumbs().getByRole("button", { name: "user" })).toHaveAttribute(
|
|
384
|
+
"aria-current",
|
|
385
|
+
"page",
|
|
386
|
+
);
|
|
387
|
+
expect(
|
|
388
|
+
breadcrumbs().getByRole("button", { name: "home" }),
|
|
389
|
+
).not.toHaveAttribute("aria-current");
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
it("keeps focus on a crumb after navigating to it", async () => {
|
|
393
|
+
const { listDirectory } = renderBrowser();
|
|
394
|
+
await screen.findByText("docs");
|
|
395
|
+
const home = breadcrumbs().getByRole("button", { name: "home" });
|
|
396
|
+
home.focus();
|
|
397
|
+
fireEvent.click(home);
|
|
398
|
+
await waitFor(() =>
|
|
399
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/home" }),
|
|
400
|
+
);
|
|
401
|
+
const current = breadcrumbs().getByRole("button", { name: "home" });
|
|
402
|
+
expect(current).toHaveAttribute("aria-current", "page");
|
|
403
|
+
expect(current).toBe(home);
|
|
404
|
+
expect(current).toHaveFocus();
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it("does not reload when the current crumb is clicked", async () => {
|
|
408
|
+
const { listDirectory } = renderBrowser();
|
|
409
|
+
await screen.findByText("docs");
|
|
410
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "user" }));
|
|
411
|
+
expect(listDirectory).toHaveBeenCalledTimes(1);
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
it("navigates to an ancestor when a crumb is clicked", async () => {
|
|
415
|
+
const { listDirectory } = renderBrowser();
|
|
416
|
+
await screen.findByText("docs");
|
|
417
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "home" }));
|
|
418
|
+
await waitFor(() =>
|
|
419
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/home" }),
|
|
420
|
+
);
|
|
421
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "/" }));
|
|
422
|
+
await waitFor(() =>
|
|
423
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/" }),
|
|
424
|
+
);
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
it("hides ancestors outside the initial path when navigation is restricted", async () => {
|
|
428
|
+
render(
|
|
429
|
+
<FileBrowser
|
|
430
|
+
initialPath="/home/user"
|
|
431
|
+
filetypes={[]}
|
|
432
|
+
selectionMode="all"
|
|
433
|
+
multiple={true}
|
|
434
|
+
label={null}
|
|
435
|
+
restrictNavigation={true}
|
|
436
|
+
value={[]}
|
|
437
|
+
setValue={vi.fn()}
|
|
438
|
+
host={document.createElement("div")}
|
|
439
|
+
list_directory={mockListDirectory(FILES)}
|
|
440
|
+
/>,
|
|
441
|
+
);
|
|
442
|
+
await screen.findByText("docs");
|
|
443
|
+
const items = breadcrumbs().getAllByRole("listitem");
|
|
444
|
+
expect(items.map((li) => li.textContent)).toEqual(["user"]);
|
|
445
|
+
});
|
|
446
|
+
});
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { initialModeAtom } from "@/core/mode";
|
|
6
|
+
import { store } from "@/core/state/jotai";
|
|
7
|
+
import { DatePickerPlugin } from "../DatePickerPlugin";
|
|
8
|
+
import { DateRangePickerPlugin } from "../DateRangePlugin";
|
|
9
|
+
import { DateTimePickerPlugin } from "../DateTimePickerPlugin";
|
|
10
|
+
|
|
11
|
+
const sharedProps = () => ({
|
|
12
|
+
host: document.createElement("div"),
|
|
13
|
+
setValue: vi.fn(),
|
|
14
|
+
functions: {},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const widgets = [
|
|
18
|
+
{
|
|
19
|
+
name: "date",
|
|
20
|
+
role: "group",
|
|
21
|
+
fallback: "date picker",
|
|
22
|
+
render: (label: string | null, disabled = false) =>
|
|
23
|
+
new DatePickerPlugin().render({
|
|
24
|
+
...sharedProps(),
|
|
25
|
+
value: "2026-10-02",
|
|
26
|
+
data: {
|
|
27
|
+
label,
|
|
28
|
+
disabled,
|
|
29
|
+
start: "2026-01-01",
|
|
30
|
+
stop: "2026-12-31",
|
|
31
|
+
fullWidth: false,
|
|
32
|
+
},
|
|
33
|
+
}),
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "datetime",
|
|
37
|
+
role: "group",
|
|
38
|
+
fallback: "date time picker",
|
|
39
|
+
render: (label: string | null, disabled = false) =>
|
|
40
|
+
new DateTimePickerPlugin().render({
|
|
41
|
+
...sharedProps(),
|
|
42
|
+
value: "2026-10-02T12:00:00",
|
|
43
|
+
data: {
|
|
44
|
+
label,
|
|
45
|
+
disabled,
|
|
46
|
+
start: "2026-01-01T00:00:00",
|
|
47
|
+
stop: "2026-12-31T23:59:59",
|
|
48
|
+
precision: "minute",
|
|
49
|
+
fullWidth: false,
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "date range",
|
|
55
|
+
role: "group",
|
|
56
|
+
fallback: "date range picker",
|
|
57
|
+
render: (label: string | null, disabled = false) =>
|
|
58
|
+
new DateRangePickerPlugin().render({
|
|
59
|
+
...sharedProps(),
|
|
60
|
+
value: ["2026-10-02", "2026-10-03"],
|
|
61
|
+
data: {
|
|
62
|
+
label,
|
|
63
|
+
disabled,
|
|
64
|
+
start: "2026-01-01",
|
|
65
|
+
stop: "2026-12-31",
|
|
66
|
+
fullWidth: false,
|
|
67
|
+
},
|
|
68
|
+
}),
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
beforeEach(() => store.set(initialModeAtom, "edit"));
|
|
73
|
+
|
|
74
|
+
describe.each(widgets)("$name accessible labels", (widget) => {
|
|
75
|
+
it("uses rendered formatting and decoded entities, and follows label updates", () => {
|
|
76
|
+
const { getByRole, rerender } = render(
|
|
77
|
+
widget.render("<span>Visit <strong>date</strong> & time</span>"),
|
|
78
|
+
);
|
|
79
|
+
expect(getByRole(widget.role, { name: "Visit date & time" })).toBeTruthy();
|
|
80
|
+
rerender(widget.render("<span>Updated <em>label</em></span>"));
|
|
81
|
+
expect(getByRole(widget.role, { name: "Updated label" })).toBeTruthy();
|
|
82
|
+
rerender(widget.render(null));
|
|
83
|
+
expect(getByRole(widget.role, { name: widget.fallback })).toBeTruthy();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it.each([null, ""])("uses the fallback when label is %s", (label) => {
|
|
87
|
+
const { getByRole } = render(widget.render(label));
|
|
88
|
+
expect(getByRole(widget.role, { name: widget.fallback })).toBeTruthy();
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("names the calendar button and every editable segment", () => {
|
|
92
|
+
const { getByRole, getAllByRole } = render(
|
|
93
|
+
widget.render("<strong>Visit</strong> & time"),
|
|
94
|
+
);
|
|
95
|
+
expect(getByRole("button", { name: "Calendar Visit & time" })).toBeTruthy();
|
|
96
|
+
for (const segment of getAllByRole("spinbutton")) {
|
|
97
|
+
expect(segment).toHaveAccessibleName(/Visit & time/);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it("preserves disabled controls with a formatted label", () => {
|
|
102
|
+
const { getByRole, getAllByRole } = render(
|
|
103
|
+
widget.render("<strong>Visit</strong>", true),
|
|
104
|
+
);
|
|
105
|
+
expect(getByRole("button", { name: "Calendar Visit" })).toBeDisabled();
|
|
106
|
+
for (const segment of getAllByRole("spinbutton")) {
|
|
107
|
+
expect(segment).toHaveAttribute("aria-disabled", "true");
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("keeps labels distinct for multiple widgets", () => {
|
|
112
|
+
const { getByRole } = render(
|
|
113
|
+
<>
|
|
114
|
+
{widget.render("First")}
|
|
115
|
+
{widget.render("Second")}
|
|
116
|
+
</>,
|
|
117
|
+
);
|
|
118
|
+
expect(getByRole(widget.role, { name: "First" })).not.toBe(
|
|
119
|
+
getByRole(widget.role, { name: "Second" }),
|
|
120
|
+
);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
@@ -9,7 +9,8 @@ interface Props {
|
|
|
9
9
|
label: string | null | undefined;
|
|
10
10
|
className?: string;
|
|
11
11
|
labelClassName?: string;
|
|
12
|
-
|
|
12
|
+
labelId?: string;
|
|
13
|
+
controlId?: string;
|
|
13
14
|
fullWidth?: boolean;
|
|
14
15
|
/**
|
|
15
16
|
* Align the label to the top, left, or right of the component.
|
|
@@ -27,8 +28,9 @@ export const Labeled: React.FC<PropsWithChildren<Props>> = ({
|
|
|
27
28
|
align = "left",
|
|
28
29
|
className,
|
|
29
30
|
labelClassName,
|
|
31
|
+
labelId,
|
|
30
32
|
fullWidth,
|
|
31
|
-
|
|
33
|
+
controlId,
|
|
32
34
|
}) => {
|
|
33
35
|
// If fullWidth is true, force align to be "top"
|
|
34
36
|
if (fullWidth) {
|
|
@@ -45,7 +47,11 @@ export const Labeled: React.FC<PropsWithChildren<Props>> = ({
|
|
|
45
47
|
|
|
46
48
|
const labelElement = (
|
|
47
49
|
<div part="label" className="inline-flex items-center m-0 p-0">
|
|
48
|
-
<Label
|
|
50
|
+
<Label
|
|
51
|
+
id={labelId}
|
|
52
|
+
htmlFor={controlId}
|
|
53
|
+
className={cn("font-prose", labelClassName)}
|
|
54
|
+
>
|
|
49
55
|
{renderHTML({ html: label })}
|
|
50
56
|
</Label>
|
|
51
57
|
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./save-worker-Dw8ybFWq.js";var t=e(((e,t)=>{t.exports={}}));export default t();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./worker-ByzyDs4N.js";var t=e(((e,t)=>{t.exports={}}));export default t();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-FOHPRMQF-DHwB1DNv.js";import{M as e}from"./mermaid-parser.core-3RKOfUXB.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,it as t}from"./chunk-DU6HZSFF-BlpgvKzl.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./react-CUdNIagt.js";import{no as n,oo as r}from"./cells-CzugpTQu.js";import{D as i,P as a,S as o,b as s}from"./schemas-BL-NsLlF.js";import{t as c}from"./compiler-runtime-BQ9S8nyo.js";import{t as l}from"./isEmpty-BJso7_X0.js";import{at as u}from"./ai-model-dropdown-DJ2elMLM.js";import{g as d}from"./useEventListener-BdZUApHd.js";import{t as f}from"./cn-ldLVeaqm.js";import{t as p}from"./jsx-runtime-B74pBk57.js";import{a as m,i as h,o as g,r as _}from"./config-B4VJJibu.js";import{t as v}from"./button-BoklZTGL.js";import{t as y}from"./createLucideIcon-rHn2EdoM.js";import{r as b}from"./paths-CzfpItSz.js";import{Y as x,p as S,u as C}from"./add-cell-with-ai-BFgdVPaN.js";import{t as w}from"./bot-message-square-BfGaNy9r.js";import{a as T}from"./useNumberFormatter-C4-_TnkF.js";import{i as E}from"./strings-BHZPE0Mc.js";import{Cn as D,Ei as O,Ta as k,ha as A,ra as j}from"./index-DafnX1Xx.js";var M=y(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]),N=y(`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`}]]),P=`user_cancelled`;function F(e){if(e.type===`abort`)return e.reason}function I(e){return e.isAbort?e.streamReason||`user_cancelled`:null}function L(e){switch(e){case P:return`Generation stopped`;case`timeout`:return`Generation stopped: timed out`;default:return`Generation stopped: ${e}`}}var R=c(),z=e(t(),1),B=p(),V=e=>{let t=(0,R.c)(13),{reasoning:n,index:r,isStreaming:i}=e,a=r===void 0?0:r,o=i!==void 0&&i,[s,c]=z.useState(``);if(!n&&!o)return null;let l=o?`reasoning`:s,u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(w,{className:`h-3 w-3`}),t[0]=u):u=t[0];let d=o?`Thinking`:`View reasoning`,f=n.length>0&&` (${n.length} chars)`,p;t[1]!==d||t[2]!==f?(p=(0,B.jsx)(g,{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,B.jsxs)(`span`,{className:`flex items-center gap-2`,children:[u,d,f]})}),t[1]=d,t[2]=f,t[3]=p):p=t[3];let v;t[4]===n?v=t[5]:(v=(0,B.jsx)(h,{className:`pb-2 px-2`,children:(0,B.jsx)(`div`,{className:`bg-muted/30 border border-muted/50 rounded-md p-3 italic text-muted-foreground/90 relative`,children:(0,B.jsx)(`div`,{className:`pr-6`,children:(0,B.jsx)(D,{content:n})})})}),t[4]=n,t[5]=v);let y;t[6]!==p||t[7]!==v?(y=(0,B.jsxs)(m,{value:`reasoning`,className:`border-0`,children:[p,v]}),t[6]=p,t[7]=v,t[8]=y):y=t[8];let b;return t[9]!==a||t[10]!==l||t[11]!==y?(b=(0,B.jsx)(_,{type:`single`,collapsible:!0,className:`w-full mb-2`,value:l,onValueChange:c,children:y},a),t[9]=a,t[10]=l,t[11]=y,t[12]=b):b=t[12],b};function H(e){return e.replace(`tool-`,``)}var U=e=>{let t=(0,R.c)(9),{input:n,label:r}=e,i=r===void 0?`Tool Request`:r;if(n==null)return null;let a;t[0]===i?a=t[1]:(a=(0,B.jsx)(`h3`,{className:`text-xs font-semibold text-muted-foreground`,children:i}),t[0]=i,t[1]=a);let o;t[2]===n?o=t[3]:(o=JSON.stringify(n,null,2),t[2]=n,t[3]=o);let s;t[4]===o?s=t[5]:(s=(0,B.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:o}),t[4]=o,t[5]=s);let c;return t[6]!==a||t[7]!==s?(c=(0,B.jsxs)(`div`,{className:`space-y-2`,children:[a,s]}),t[6]=a,t[7]=s,t[8]=c):c=t[8],c},W=e=>{let t=(0,R.c)(27),{toolName:n,input:r,approval:i,onApprove:a,className:o}=e,s;t[0]===o?s=t[1]:(s=f(`rounded-md border border-(--amber-6) bg-(--amber-2) p-3 space-y-3`,o),t[0]=o,t[1]=s);let c;t[2]===n?c=t[3]:(c=H(n),t[2]=n,t[3]=c);let l=`Approval required for ${c}`,u;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(N,{className:`h-4 w-4 text-(--amber-11) mt-0.5 shrink-0`}),t[4]=u):u=t[4];let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(`span`,{className:`font-semibold`,children:`Approval required:`}),t[5]=d):d=t[5];let p;t[6]===n?p=t[7]:(p=H(n),t[6]=n,t[7]=p);let m;t[8]===p?m=t[9]:(m=(0,B.jsxs)(`div`,{className:`flex items-start gap-2`,children:[u,(0,B.jsxs)(`div`,{className:`text-xs text-(--amber-11) leading-relaxed`,children:[d,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:p})]})]}),t[8]=p,t[9]=m);let h;t[10]===r?h=t[11]:(h=(0,B.jsx)(U,{input:r}),t[10]=r,t[11]=h);let g;t[12]!==i.id||t[13]!==a?(g=(0,B.jsx)(v,{size:`xs`,variant:`outline`,onClick:()=>a({id:i.id,approved:!1}),children:`Deny`}),t[12]=i.id,t[13]=a,t[14]=g):g=t[14];let _;t[15]!==i.id||t[16]!==a?(_=(0,B.jsx)(v,{size:`xs`,onClick:()=>a({id:i.id,approved:!0}),children:`Approve`}),t[15]=i.id,t[16]=a,t[17]=_):_=t[17];let y;t[18]!==_||t[19]!==g?(y=(0,B.jsxs)(`div`,{className:`flex items-center justify-end gap-2`,children:[g,_]}),t[18]=_,t[19]=g,t[20]=y):y=t[20];let b;return t[21]!==s||t[22]!==y||t[23]!==l||t[24]!==m||t[25]!==h?(b=(0,B.jsxs)(`div`,{className:s,role:`alertdialog`,"aria-label":l,children:[m,h,y]}),t[21]=s,t[22]=y,t[23]=l,t[24]=m,t[25]=h,t[26]=b):b=t[26],b},G=e=>{let t=(0,R.c)(28),{toolName:n,input:i,errorText:a,isLive:o,className:s}=e,[c,l]=z.useState(o),u=z.useRef(o),d,p;t[0]===o?(d=t[1],p=t[2]):(d=()=>{u.current&&!o&&l(!1),u.current=o},p=[o],t[0]=o,t[1]=d,t[2]=p),z.useEffect(d,p);let m;t[3]===s?m=t[4]:(m=f(`rounded-md border border-(--red-6) bg-(--red-2)`,s),t[3]=s,t[4]=m);let h;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>l(K),t[5]=h):h=t[5];let g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,B.jsx)(r,{className:`h-3.5 w-3.5 shrink-0`}),t[6]=g):g=t[6];let _;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,B.jsx)(`span`,{className:`font-semibold`,children:`Failed:`}),t[7]=_):_=t[7];let v;t[8]===n?v=t[9]:(v=H(n),t[8]=n,t[9]=v);let y;t[10]===v?y=t[11]:(y=(0,B.jsxs)(`span`,{className:`flex-1 text-left`,children:[_,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:v})]}),t[10]=v,t[11]=y);let b=c&&`rotate-180`,x;t[12]===b?x=t[13]:(x=f(`h-3.5 w-3.5 shrink-0 transition-transform`,b),t[12]=b,t[13]=x);let S;t[14]===x?S=t[15]:(S=(0,B.jsx)(T,{className:x}),t[14]=x,t[15]=S);let C;t[16]!==c||t[17]!==S||t[18]!==y?(C=(0,B.jsxs)(`button`,{type:`button`,onClick:h,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":c,children:[g,y,S]}),t[16]=c,t[17]=S,t[18]=y,t[19]=C):C=t[19];let w;t[20]!==a||t[21]!==i||t[22]!==c?(w=c&&(0,B.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t border-(--red-6)/40 pt-3`,children:[(0,B.jsx)(U,{input:i}),a&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h3`,{className:`text-xs font-semibold text-(--red-11) mb-1`,children:`Error`}),(0,B.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:a})]})]}),t[20]=a,t[21]=i,t[22]=c,t[23]=w):w=t[23];let E;return t[24]!==C||t[25]!==w||t[26]!==m?(E=(0,B.jsxs)(`div`,{className:m,children:[C,w]}),t[24]=C,t[25]=w,t[26]=m,t[27]=E):E=t[27],E};function K(e){return!e}function q(e){return e==null||typeof e==`object`&&l(e)}var J=i({status:a().default(`success`),auth_required:o().default(!1),action_url:s(),next_steps:s(),meta:s(),message:a().nullish()}),Y=e=>{let t=(0,R.c)(12),{data:r}=e,i;if(t[0]!==r){let{status:e,auth_required:a,action_url:o,meta:s,next_steps:c,message:l,...u}=r,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(`h3`,{className:`text-xs font-semibold text-muted-foreground`,children:`Tool Result`}),t[2]=d):d=t[2];let f;t[3]===e?f=t[4]:(f=(0,B.jsx)(`span`,{className:`text-xs px-2 py-0.5 bg-(--grass-2) text-(--grass-11) rounded-full font-medium capitalize`,children:e}),t[3]=e,t[4]=f);let p;t[5]===a?p=t[6]:(p=a&&(0,B.jsx)(`span`,{className:`text-xs px-2 py-0.5 bg-(--amber-2) text-(--amber-11) rounded-full`,children:`Auth Required`}),t[5]=a,t[6]=p);let m;t[7]!==f||t[8]!==p?(m=(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[d,(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f,p]})]}),t[7]=f,t[8]=p,t[9]=m):m=t[9];let h;t[10]===l?h=t[11]:(h=l&&(0,B.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,B.jsx)(n,{className:`h-3 w-3 text-(--blue-11) mt-0.5 shrink-0`}),(0,B.jsx)(`div`,{className:`text-xs text-foreground`,children:l})]}),t[10]=l,t[11]=h),i=(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[m,h,u&&(0,B.jsx)(`div`,{className:`space-y-3`,children:Object.entries(u).map(Z)})]}),t[0]=r,t[1]=i}else i=t[1];return i},X=e=>{let t=(0,R.c)(8),{result:n}=e,r;t[0]===n?r=t[1]:(r=J.safeParse(n),t[0]=n,t[1]=r);let i=r;if(i.success){let e;return t[2]===i.data?e=t[3]:(e=(0,B.jsx)(Y,{data:i.data}),t[2]=i.data,t[3]=e),e}let a;t[4]===n?a=t[5]:(a=typeof n==`string`?n:JSON.stringify(n,null,2),t[4]=n,t[5]=a);let o;return t[6]===a?o=t[7]:(o=(0,B.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground mb-1 max-h-64 overflow-y-auto scrollbar-thin`,children:a}),t[6]=a,t[7]=o),o};function Z(e){let[t,n]=e;return q(n)?null:(0,B.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t}),(0,B.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(n,null,2)})]},t)}var ee={"input-streaming":`Generating`,"input-available":`Running`,"approval-responded":`Awaiting result`,"output-available":`Done`,"output-denied":`Denied`},te=new Set([`input-streaming`,`input-available`,`approval-responded`]),ne=e=>{let t=(0,R.c)(5),{state:n,interrupted:r}=e;if(r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(M,{className:`h-3 w-3 text-muted-foreground`}),t[0]=e):e=t[0],e}switch(n){case`input-streaming`:case`input-available`:case`approval-responded`:{let e;return t[1]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(A,{className:`h-3 w-3 animate-spin`}),t[1]=e):e=t[1],e}case`output-available`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(u,{className:`h-3 w-3 text-(--grass-11)`}),t[2]=e):e=t[2],e}case`output-denied`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(x,{className:`h-3 w-3 text-muted-foreground`}),t[3]=e):e=t[3],e}default:{E(n);let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,B.jsx)(j,{className:`h-3 w-3`}),t[4]=e):e=t[4],e}}};function re(e){switch(e){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 E(e),``}}var Q=e=>{let t=(0,R.c)(34),{toolName:n,state:r,input:i,result:a,approval:o,index:s,className:c,isActive:l}=e,u=s===void 0?0:s,d=l===void 0||l,p;t[0]!==d||t[1]!==r?(p=!d&&te.has(r),t[0]=d,t[1]=r,t[2]=p):p=t[2];let v=p,y=`tool-${u}`,b;t[3]===c?b=t[4]:(b=f(`w-full`,c),t[3]=c,t[4]=b);let x;t[5]!==v||t[6]!==r?(x=f(`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`,v?`text-muted-foreground`:re(r)),t[5]=v,t[6]=r,t[7]=x):x=t[7];let S;t[8]!==v||t[9]!==r?(S=(0,B.jsx)(ne,{state:r,interrupted:v}),t[8]=v,t[9]=r,t[10]=S):S=t[10];let C=v?`Interrupted`:ee[r],w;t[11]===n?w=t[12]:(w=H(n),t[11]=n,t[12]=w);let T;t[13]===w?T=t[14]:(T=(0,B.jsx)(`code`,{className:`font-mono text-xs`,children:w}),t[13]=w,t[14]=T);let E;t[15]!==T||t[16]!==S||t[17]!==C?(E=(0,B.jsxs)(`span`,{className:`flex items-center gap-1`,children:[S,C,`:`,T]}),t[15]=T,t[16]=S,t[17]=C,t[18]=E):E=t[18];let D;t[19]!==E||t[20]!==x?(D=(0,B.jsx)(g,{className:x,children:E}),t[19]=E,t[20]=x,t[21]=D):D=t[21];let O;t[22]!==o||t[23]!==i||t[24]!==a||t[25]!==r?(O=(0,B.jsx)(h,{className:`py-2 px-2`,children:(0,B.jsx)(ie,{state:r,input:i,result:a,approval:o})}),t[22]=o,t[23]=i,t[24]=a,t[25]=r,t[26]=O):O=t[26];let k;t[27]!==D||t[28]!==O?(k=(0,B.jsxs)(m,{value:`tool-call`,className:`border-0`,children:[D,O]}),t[27]=D,t[28]=O,t[29]=k):k=t[29];let A;return t[30]!==k||t[31]!==y||t[32]!==b?(A=(0,B.jsx)(_,{type:`single`,collapsible:!0,className:b,children:k},y),t[30]=k,t[31]=y,t[32]=b,t[33]=A):A=t[33],A},ie=e=>{let t=(0,R.c)(16),{state:n,input:r,result:i,approval:a}=e;switch(n){case`input-streaming`:case`input-available`:case`approval-responded`:{let e;return t[0]===r?e=t[1]:(e=(0,B.jsx)(U,{input:r}),t[0]=r,t[1]=e),e}case`output-available`:{let e;t[2]===r?e=t[3]:(e=(0,B.jsx)(U,{input:r}),t[2]=r,t[3]=e);let n;t[4]===i?n=t[5]:(n=i!=null&&(0,B.jsx)(X,{result:i}),t[4]=i,t[5]=n);let a;return t[6]!==e||t[7]!==n?(a=(0,B.jsxs)(`div`,{className:`space-y-3`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=a):a=t[8],a}case`output-denied`:{let e;t[9]===r?e=t[10]:(e=(0,B.jsx)(U,{input:r}),t[9]=r,t[10]=e);let n=a?.reason?`: ${a.reason}`:`.`,i;t[11]===n?i=t[12]:(i=(0,B.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]}),t[11]=n,t[12]=i);let o;return t[13]!==e||t[14]!==i?(o=(0,B.jsxs)(`div`,{className:`space-y-3`,children:[e,i]}),t[13]=e,t[14]=i,t[15]=o):o=t[15],o}default:return E(n),null}},$=e=>{let t=(0,R.c)(27),{toolName:n,state:r,result:i,errorText:a,input:o,approval:s,onApprove:c,index:l,className:u,isLive:d,isActive:f}=e,p=d===void 0||d,m=f===void 0||f;switch(r){case`approval-requested`:{if(s!=null&&c!=null){let e;return t[0]!==s||t[1]!==u||t[2]!==o||t[3]!==c||t[4]!==n?(e=(0,B.jsx)(W,{toolName:n,input:o,approval:s,onApprove:c,className:u}),t[0]=s,t[1]=u,t[2]=o,t[3]=c,t[4]=n,t[5]=e):e=t[5],e}let e;return t[6]!==u||t[7]!==l||t[8]!==o||t[9]!==m||t[10]!==n?(e=(0,B.jsx)(Q,{toolName:n,state:`input-available`,input:o,index:l,className:u,isActive:m}),t[6]=u,t[7]=l,t[8]=o,t[9]=m,t[10]=n,t[11]=e):e=t[11],e}case`output-error`:{let e;return t[12]!==u||t[13]!==a||t[14]!==o||t[15]!==p||t[16]!==n?(e=(0,B.jsx)(G,{toolName:n,input:o,errorText:a,isLive:p,className:u}),t[12]=u,t[13]=a,t[14]=o,t[15]=p,t[16]=n,t[17]=e):e=t[17],e}case`input-streaming`:case`input-available`:case`approval-responded`:case`output-available`:case`output-denied`:{let e;return t[18]!==s||t[19]!==u||t[20]!==l||t[21]!==o||t[22]!==m||t[23]!==i||t[24]!==r||t[25]!==n?(e=(0,B.jsx)(Q,{toolName:n,state:r,input:o,result:i,approval:s,index:l,className:u,isActive:m}),t[18]=s,t[19]=u,t[20]=l,t[21]=o,t[22]=m,t[23]=i,t[24]=r,t[25]=n,t[26]=e):e=t[26],e}default:return E(r),null}},ae=({message:e,isStreamingReasoning:t,isLast:n,isActive:r,addToolApprovalResponse:i})=>{return(0,B.jsx)(B.Fragment,{children:e.parts.map((e,t)=>a(e,t))});function a(a,o){if(oe(a))return(0,B.jsx)($,{index:o,toolName:a.type,result:a.output,errorText:a.state===`output-error`?a.errorText:void 0,className:`my-2`,state:a.state,input:a.input,approval:a.approval,onApprove:i,isLive:n,isActive:r},o);if(se(a))return d.debug(`Found data part`,a),null;switch(a.type){case`text`:return a.text.includes(`<marimo-`)?(0,B.jsx)(z.Fragment,{children:O({html:a.text})},o):(0,B.jsx)(D,{content:a.text},o);case`reasoning`:return(0,B.jsx)(V,{reasoning:a.text,index:o,isStreaming:t&&n&&o===(e.parts.length||0)-1},o);case`file`:return(0,B.jsx)(C,{attachment:a},o);case`reasoning-file`:return(0,B.jsx)(C,{attachment:{type:`file`,mediaType:a.mediaType,url:a.url}},o);case`dynamic-tool`:return(0,B.jsx)($,{toolName:a.toolName,result:a.output,errorText:a.state===`output-error`?a.errorText:void 0,state:a.state,input:a.input,approval:a.approval,onApprove:i,isLive:n,isActive:r},o);case`source-document`:return(0,B.jsx)(S,{icon:(0,B.jsx)(b,{className:`h-3 w-3 shrink-0`}),title:a.title,subtitle:a.filename},o);case`source-url`:return(0,B.jsx)(S,{icon:(0,B.jsx)(k,{className:`h-3 w-3 shrink-0`}),title:a.title??a.url,subtitle:a.title?a.url:void 0,href:a.url},o);case`custom`:return(0,B.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:a.kind},o);case`step-start`:return null;default:return E(a),null}}};function oe(e){return e.type.startsWith(`tool-`)}function se(e){return e.type.startsWith(`data-`)}export{I as i,L as n,F as r,ae as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-75Z2AOVW-BzzYECN7.js";import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Cyu5G-Tr.js";import"./chunk-DU6HZSFF-BlpgvKzl.js";import"./chunk-P2QGCYS3-_SeE0QXb.js";import"./chunk-PWAF6VOD-BZoBqp8x.js";import"./chunk-GMAD6QVW-hv6IsAru.js";import"./chunk-4HAMMTFA-C6Tl7kEY.js";import"./chunk-GVQU2GXP-Duv4ZYb-.js";import"./chunk-L3NEJ4N5-B2hafvRU.js";import"./chunk-OSK3NFVY-SNGRdtNA.js";import"./mermaid-D_jPUVqz.js";import"./chunk-F27PBJKO-BVIgLGPF.js";import"./chunk-XXDRQBXY-BwqwIlJV.js";import"./chunk-POPQ4Y6H-BB5NNJFE.js";import{i as t,n,r,t as i}from"./chunk-TICWLB2K-BP7vel_P.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-75Z2AOVW-BzzYECN7.js";import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-Cyu5G-Tr.js";import"./chunk-DU6HZSFF-BlpgvKzl.js";import"./chunk-P2QGCYS3-_SeE0QXb.js";import"./chunk-PWAF6VOD-BZoBqp8x.js";import"./chunk-GMAD6QVW-hv6IsAru.js";import"./chunk-4HAMMTFA-C6Tl7kEY.js";import"./chunk-GVQU2GXP-Duv4ZYb-.js";import"./chunk-L3NEJ4N5-B2hafvRU.js";import"./chunk-OSK3NFVY-SNGRdtNA.js";import"./mermaid-D_jPUVqz.js";import"./chunk-F27PBJKO-BVIgLGPF.js";import"./chunk-XXDRQBXY-BwqwIlJV.js";import"./chunk-POPQ4Y6H-BB5NNJFE.js";import{i as t,n,r,t as i}from"./chunk-TICWLB2K-BP7vel_P.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-FOHPRMQF-DHwB1DNv.js";import{O as e}from"./mermaid-parser.core-3RKOfUXB.js";export{e as createEventModelingServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-75Z2AOVW-BzzYECN7.js";import"./src-Cyu5G-Tr.js";import"./chunk-DU6HZSFF-BlpgvKzl.js";import"./chunk-P2QGCYS3-_SeE0QXb.js";import"./chunk-PWAF6VOD-BZoBqp8x.js";import"./chunk-GMAD6QVW-hv6IsAru.js";import"./chunk-4HAMMTFA-C6Tl7kEY.js";import"./chunk-GVQU2GXP-Duv4ZYb-.js";import"./chunk-L3NEJ4N5-B2hafvRU.js";import"./chunk-OSK3NFVY-SNGRdtNA.js";import"./mermaid-D_jPUVqz.js";import"./chunk-F27PBJKO-BVIgLGPF.js";import"./chunk-XXDRQBXY-BwqwIlJV.js";import"./chunk-POPQ4Y6H-BB5NNJFE.js";import{n as e}from"./chunk-SHT3W25Y-BtLGdeDB.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Wa as e}from"./index-DafnX1Xx.js";var t=Object.prototype.hasOwnProperty;function n(e,n){return e!=null&&t.call(e,n)}function r(t,r){return t!=null&&e(t,r,n)}export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./chunk-YOKDWASO-CaoEAGJk.js";export{e as Mermaid};
|