@marimo-team/frontend 0.19.10-dev4 → 0.19.10-dev40
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/{CellStatus-CZlcjSUO.js → CellStatus-BAeLnQ68.js} +1 -1
- package/dist/assets/JsonOutput-CZpjHc50.js +46 -0
- package/dist/assets/{LazyAnyLanguageCodeMirror-DgZ8iknE.js → LazyAnyLanguageCodeMirror-BTO7DS3k.js} +2 -2
- package/dist/assets/{MarimoErrorOutput-Lf9P8Fhl.js → MarimoErrorOutput-C90djx1V.js} +1 -1
- package/dist/assets/Plot-DolV1EVq.js +3789 -0
- package/dist/assets/{RenderHTML-D-of_-s7.js → RenderHTML-ByTXWSgj.js} +1 -1
- package/dist/assets/{add-cell-with-ai-e_HMl7UU.js → add-cell-with-ai-CnyhGSdf.js} +2 -2
- package/dist/assets/{add-database-form-DvnhmpaG.js → add-database-form-DqVwhh_K.js} +1 -1
- package/dist/assets/{agent-panel-bOQya9ER.js → agent-panel-vT94Mpn2.js} +1 -1
- package/dist/assets/{ai-model-dropdown-Dk2SdB3C.js → ai-model-dropdown-C_pphOGv.js} +1 -1
- package/dist/assets/{any-language-editor-BODEG_5g.js → any-language-editor-BdrnE_3i.js} +1 -1
- package/dist/assets/{app-config-button-DMsJtN9b.js → app-config-button-BariZTN8.js} +1 -1
- package/dist/assets/{architecture-U656AL7Q-DENTsr7c.js → architecture-U656AL7Q-DQB1ihe9.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-CDeVogFv.js → architectureDiagram-VXUJARFQ-aV-hwsKI.js} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-Bol-uwBO.js → blockDiagram-VD42YOAC-CJeGIMJm.js} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-C-eNQ40H.js → c4Diagram-YG6GDRKO-aLqv1M3N.js} +1 -1
- package/dist/assets/{cell-editor-BW4w46wt.js → cell-editor-8s2G7FD2.js} +12 -12
- package/dist/assets/{cell-link-B9b7J8QK.js → cell-link-D46k36Xe.js} +1 -1
- package/dist/assets/{cells-DPp5cDaO.js → cells-DG7rjkOQ.js} +14 -14
- package/dist/assets/channel-C1Usuv02.js +1 -0
- package/dist/assets/{chat-display--jAB7huF.js → chat-display-hQ2Dy5fa.js} +1 -1
- package/dist/assets/{chat-panel-DzMwk8Wu.js → chat-panel-D4Bcz2Sv.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-KawmK-5L.js → chunk-4BX2VUAB-BP-RGZn9.js} +1 -1
- package/dist/assets/chunk-55IACEB6-DJOXjhUm.js +1 -0
- package/dist/assets/{chunk-ABZYJK2D-0jga8uiE.js → chunk-ABZYJK2D-CNf44YbG.js} +1 -1
- package/dist/assets/{chunk-ATLVNIR6-B17dg7Ry.js → chunk-ATLVNIR6-dMFR1SFQ.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-DoVbcCDm.js → chunk-B4BG7PRW-CtXWCWTB.js} +1 -1
- package/dist/assets/{chunk-CVBHYZKI-DU48rJVu.js → chunk-CVBHYZKI-Brsoob-W.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-rLpl7joX.js → chunk-DI55MBZ5-BAPPLtVz.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-Dmu97ZvI.js → chunk-EXTU4WIE-DhUL3hgE.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-CHJv683r.js → chunk-FMBD7UC4-kejklSRQ.js} +1 -1
- package/dist/assets/{chunk-HN2XXSSU-Bdbi3Mns.js → chunk-HN2XXSSU-BBxJMYrA.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-DOm8KfKa.js → chunk-JA3XYJ7Z-BBDBNwto.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-48QVgmR4.js → chunk-JZLCHNYA-BXs7PoCi.js} +1 -1
- package/dist/assets/{chunk-MI3HLSF2-n3vxgSbN.js → chunk-MI3HLSF2-D6we5Ftb.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-BNoQB557.js → chunk-N4CR4FBY-G8sTCjxn.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-BOQncxfy.js → chunk-QN33PNHL-BXnZwF56.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-DkCIa8tJ.js → chunk-QXUST7PY-DaTIHluG.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-Cp_TxrNJ.js → chunk-QZHKN3VN-DCq7JxLD.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-8loRaCFh.js → chunk-S3R3BYOJ-OezEEdUG.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-CPHBPwrM.js → chunk-TZMSLE5B-BUnfEuEz.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-DQZw7BDP.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-BBniC-qJ.js +1 -0
- package/dist/assets/{column-preview-CXjSXUhP.js → column-preview-CPvYaDNg.js} +1 -1
- package/dist/assets/{command-2ElA5IkO.js → command-Djb6VJ8T.js} +1 -1
- package/dist/assets/{command-palette-DrD2qhGV.js → command-palette-CENytI3Y.js} +1 -1
- package/dist/assets/{common-DSlhalAu.js → common-B9j0Q2gP.js} +1 -1
- package/dist/assets/{cose-bilkent-S5V4N54A-tFAvjCRW.js → cose-bilkent-S5V4N54A-BjwT10E5.js} +1 -1
- package/dist/assets/{dagre-6UL2VRFP-DOB6anec.js → dagre-6UL2VRFP-oY6KaDGH.js} +1 -1
- package/dist/assets/{datasource-CtyqtITR.js → datasource-w1NuMzfo.js} +1 -1
- package/dist/assets/dependency-graph-panel-DED_3Q6I.js +4 -0
- package/dist/assets/{diagram-PSM6KHXK-DpuCiAS7.js → diagram-PSM6KHXK-D3RUn56c.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-IlkvvuKX.js → diagram-QEK2KX5R-BDPgp5cV.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-DJt_T1Gq.js → diagram-S2PKOQOG-NhFH98y0.js} +1 -1
- package/dist/assets/dist--lWkNwLa.js +1 -0
- package/dist/assets/{dist-CRjEDsfC.js → dist-8qtC33as.js} +1 -1
- package/dist/assets/{dist-CsRJPnA9.js → dist-B0T008FI.js} +1 -1
- package/dist/assets/dist-B1Jd_IvQ.js +1 -0
- package/dist/assets/dist-B5vqrkGM.js +1 -0
- package/dist/assets/dist-BDTS_4tQ.js +1 -0
- package/dist/assets/{dist-C5H5qIvq.js → dist-BHxWJlYy.js} +1 -1
- package/dist/assets/{dist-sMh6mJ2d.js → dist-BNkRH34W.js} +2 -2
- package/dist/assets/{dist-tLOz534J.js → dist-BP9zs-JA.js} +1 -1
- package/dist/assets/dist-BeHHM5ER.js +1 -0
- package/dist/assets/dist-BkTLZYtq.js +1 -0
- package/dist/assets/dist-Bl-MdZlw.js +1 -0
- package/dist/assets/dist-Bouhdq2b.js +1 -0
- package/dist/assets/{dist-CtrmRz20.js → dist-BqBWjk9M.js} +3 -3
- package/dist/assets/{dist-Gqv0jSNr.js → dist-Bt3KRZho.js} +1 -1
- package/dist/assets/dist-BtnFSOCN.js +1 -0
- package/dist/assets/{dist-B62Xo7-b.js → dist-C0vFollF.js} +1 -1
- package/dist/assets/dist-CBgJfRVh.js +1 -0
- package/dist/assets/{dist-CEaOyZOW.js → dist-CCX32maQ.js} +1 -1
- package/dist/assets/dist-CDTDwVaL.js +1 -0
- package/dist/assets/dist-CF9gSfGe.js +2 -0
- package/dist/assets/{dist-BpuNldXk.js → dist-CShMY7yu.js} +1 -1
- package/dist/assets/{dist-CEEqzIVj.js → dist-CUeuuHG_.js} +1 -1
- package/dist/assets/dist-CY47RP0T.js +1 -0
- package/dist/assets/dist-D1HV0xoM.js +1 -0
- package/dist/assets/{dist-BZWmfQbq.js → dist-DDhEwFtR.js} +1 -1
- package/dist/assets/{dist-BXnpRw3d.js → dist-DDoTyiJg.js} +1 -1
- package/dist/assets/{dist-DLgWirXg.js → dist-DKmfcej2.js} +1 -1
- package/dist/assets/{dist-Dv0MupEh.js → dist-DPQdWUrU.js} +1 -1
- package/dist/assets/dist-DYjR2ilN.js +1 -0
- package/dist/assets/{dist-8kKeYgOg.js → dist-D_DbFqxl.js} +1 -1
- package/dist/assets/dist-DdDowPeI.js +1 -0
- package/dist/assets/{dist-B83wRp_v.js → dist-Dt1by2kD.js} +1 -1
- package/dist/assets/dist-Dt_gLA9L.js +1 -0
- package/dist/assets/dist-DxWb3aMV.js +13 -0
- package/dist/assets/dist-Dz922FNY.js +1 -0
- package/dist/assets/dist-GRPM_OuL.js +1 -0
- package/dist/assets/{dist-CF4gkF4y.js → dist-K8bI26Ke.js} +1 -1
- package/dist/assets/{dist-Btv5Rh1v.js → dist-LUpffRIq.js} +1 -1
- package/dist/assets/{dist-bBwmhqty.js → dist-MyTWYTLd.js} +4 -4
- package/dist/assets/dist-NOntBqny.js +1 -0
- package/dist/assets/{dist-Dcqqg9UU.js → dist-PzrizfuL.js} +1 -1
- package/dist/assets/{dist-CNW1zLeq.js → dist-dnoBqBf0.js} +1 -1
- package/dist/assets/{dist-CLc5WXWw.js → dist-kjrKkhgz.js} +1 -1
- package/dist/assets/{dist-CoCQUAeM.js → dist-maX8rbyb.js} +1 -1
- package/dist/assets/{documentation-panel-BDQNa1xE.js → documentation-panel-CG2t9UyE.js} +1 -1
- package/dist/assets/{download-os8QlW6l.js → download-B6duieQs.js} +1 -1
- package/dist/assets/{edit-page-Bx2U8f0j.js → edit-page-CI1wrWLw.js} +7 -7
- package/dist/assets/{erDiagram-Q2GNP2WA-CekwCx1v.js → erDiagram-Q2GNP2WA-DKwbR5cV.js} +1 -1
- package/dist/assets/{error-panel-B_234Lt3.js → error-panel-CDGOPmKx.js} +1 -1
- package/dist/assets/{esm-D82gQH1f.js → esm-BeuExXY6.js} +1 -1
- package/dist/assets/{esm-Bmu2DhPy.js → esm-BqiVbELQ.js} +1 -1
- package/dist/assets/{file-explorer-panel-T3oL7Bzx.js → file-explorer-panel-Bu9K_P9d.js} +1 -1
- package/dist/assets/{floating-outline-BtdqbkUq.js → floating-outline--UenxIj3.js} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-BhCyaqwV.js → flowDiagram-NV44I4VS-uysyk7eQ.js} +1 -1
- package/dist/assets/{focus-C1YokgL7.js → focus-n0WPxeOV.js} +1 -1
- package/dist/assets/{form-BidPUZUn.js → form-C59_eE2a.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-Ct2B_ci4.js → ganttDiagram-JELNMOA3-Dl5P96jD.js} +1 -1
- package/dist/assets/{gitGraph-F6HP7TQM-BwJPuiCH.js → gitGraph-F6HP7TQM-ULnyMCh9.js} +1 -1
- package/dist/assets/{gitGraphDiagram-NY62KEGX-DOBPUqeq.js → gitGraphDiagram-NY62KEGX-66npzzTR.js} +1 -1
- package/dist/assets/{glide-data-editor-D1ZoJKPr.js → glide-data-editor-DXeMF5KH.js} +3 -3
- package/dist/assets/{globals-BgACvYmr.js → globals-CP-h_Os3.js} +1 -1
- package/dist/assets/{home-page-DUMF8ZY4.js → home-page-DnqxPw6c.js} +1 -1
- package/dist/assets/{hooks-BGeojgid.js → hooks-DSgfibiE.js} +1 -1
- package/dist/assets/{html-to-image-CIQqSu-S.js → html-to-image-BXhYNOMC.js} +1 -1
- package/dist/assets/index-DG3GipFF.css +2 -0
- package/dist/assets/index-OSsO2iNY.js +38 -0
- package/dist/assets/{info-NVLQJR56-Ccg18Lpe.js → info-NVLQJR56-gsco60Pt.js} +1 -1
- package/dist/assets/{infoDiagram-WHAUD3N6-Cytag0-K.js → infoDiagram-WHAUD3N6-DneTtUPV.js} +1 -1
- package/dist/assets/{journeyDiagram-XKPGCS4Q-CPDnALH5.js → journeyDiagram-XKPGCS4Q-Cpn7DMNv.js} +1 -1
- package/dist/assets/{kanban-definition-3W4ZIXB7-D0-Tthpw.js → kanban-definition-3W4ZIXB7-Dt7HC9K8.js} +1 -1
- package/dist/assets/{kiosk-mode-WmM7aFkh.js → kiosk-mode-CPN0mq4M.js} +1 -1
- package/dist/assets/{layout-_O8thjaV.js → layout-C91DpyBS.js} +3 -3
- package/dist/assets/{logs-panel-C3cavnFO.js → logs-panel-CZIVXROt.js} +1 -1
- package/dist/assets/{markdown-renderer-DJy8ww5d.js → markdown-renderer-CnImn_qm.js} +1 -1
- package/dist/assets/{mermaid-y-IBDpJK.js → mermaid-8YdCU498.js} +3 -3
- package/dist/assets/{mermaid-parser.core-BLHYb13y.js → mermaid-parser.core-DWPZKg0k.js} +2 -2
- package/dist/assets/{mindmap-definition-VGOIOE7T-BflEJS3A.js → mindmap-definition-VGOIOE7T-D81SsTqK.js} +1 -1
- package/dist/assets/{mode-Bn7pdJvO.js → mode-a9XOBfse.js} +1 -1
- package/dist/assets/{name-cell-input-Bc7geMVf.js → name-cell-input-BhJdGpGA.js} +1 -1
- package/dist/assets/{outline-panel-Bxt_JABC.js → outline-panel-BGroTTXd.js} +1 -1
- package/dist/assets/{packages-panel-yEp7rAYf.js → packages-panel-CQGOcCdz.js} +1 -1
- package/dist/assets/{packet-BFZMPI3H-C_EwQwCX.js → packet-BFZMPI3H-CnHEXEVi.js} +1 -1
- package/dist/assets/{panels-DW8vF5Az.js → panels-Dx4knZNw.js} +1 -1
- package/dist/assets/{pie-7BOR55EZ-B2NFlNeo.js → pie-7BOR55EZ-C5Sp4r8f.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-DXRnX2TS.js → pieDiagram-ADFJNKIX-DhavwtGF.js} +1 -1
- package/dist/assets/{process-output-ByfLnk6j.js → process-output-C4GYMI00.js} +1 -1
- package/dist/assets/{quadrantDiagram-AYHSOK5B-e3OVACTV.js → quadrantDiagram-AYHSOK5B-DMBGpNwx.js} +1 -1
- package/dist/assets/{radar-NHE76QYJ-C3XGuwbG.js → radar-NHE76QYJ-DAElyE_r.js} +1 -1
- package/dist/assets/{readonly-python-code-WjTf6Pdd.js → readonly-python-code-BvJmyMxd.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-DMbzgjKI.js → requirementDiagram-UZGBJVZJ-Cjwe-82R.js} +1 -1
- package/dist/assets/{run-page-D4d7rFuk.js → run-page-CMS44SX5.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-B90PTMUW.js → sankeyDiagram-TZEHDZUN-5-vnnmzf.js} +1 -1
- package/dist/assets/{scratchpad-panel-C6thsU6k.js → scratchpad-panel-vqg3jZ3X.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-DKFGl_80.js → sequenceDiagram-WL72ISMW-Co6SHGCI.js} +1 -1
- package/dist/assets/{session-panel-3zs_-lnF.js → session-panel-pkllmhqQ.js} +1 -1
- package/dist/assets/{snippets-panel-Bbk7MFBI.js → snippets-panel-Dg7V8q_w.js} +1 -1
- package/dist/assets/{state-D4T75eZb.js → state-C-B637hX.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-Czf6mxbq.js → stateDiagram-FKZM4ZOC-Bhirefzg.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CJnByxam.js +1 -0
- package/dist/assets/{switch-dWLWbbtg.js → switch-B-UXYPJj.js} +1 -1
- package/dist/assets/{textarea-CRI7xDBj.js → textarea-gBSp2Bx0.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-Cr57imdX.js → timeline-definition-IT6M3QCI-C5mDI6KK.js} +1 -1
- package/dist/assets/{tracing-U3RlLbPJ.js → tracing-Dy8UdLvI.js} +1 -1
- package/dist/assets/{tracing-panel-D6GhZuLA.js → tracing-panel-BKDVrccB.js} +2 -2
- package/dist/assets/{treemap-KMMF4GRG-CQXdJ2ER.js → treemap-KMMF4GRG-Bf9yeA5X.js} +1 -1
- package/dist/assets/{types-BRfQN3HL.js → types-Cggdh96K.js} +1 -1
- package/dist/assets/{useAddCell-CmuX2hOk.js → useAddCell-CkxiWxI4.js} +1 -1
- package/dist/assets/{useCellActionButton-DUDHPTmq.js → useCellActionButton-BCYKogBW.js} +1 -1
- package/dist/assets/{useDeleteCell-DdRX94yC.js → useDeleteCell-CU4wVnMY.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-CeDmKn0Z.js → useDependencyPanelTab-Dc4i3G5R.js} +1 -1
- package/dist/assets/{useNotebookActions-BFGSBiOA.js → useNotebookActions-BiCGf528.js} +1 -1
- package/dist/assets/{useRunCells-D2HBb4DB.js → useRunCells-DnyQs7_N.js} +1 -1
- package/dist/assets/{useSplitCell-C4khe6eU.js → useSplitCell-CSr3as14.js} +1 -1
- package/dist/assets/utilities.esm-CqG5UDNh.js +3 -0
- package/dist/assets/{xychartDiagram-PRI3JC2R-DtYN6-1-.js → xychartDiagram-PRI3JC2R-BhdCuImZ.js} +1 -1
- package/dist/index.html +42 -42
- package/package.json +12 -13
- package/src/components/data-table/TableActions.tsx +8 -1
- package/src/components/data-table/__tests__/columns.test.tsx +47 -0
- package/src/components/data-table/column-header.tsx +3 -0
- package/src/components/data-table/columns.tsx +17 -2
- package/src/components/data-table/data-table.tsx +2 -0
- package/src/components/data-table/download-actions.tsx +6 -1
- package/src/components/dependency-graph/dependency-graph-tree.tsx +10 -1
- package/src/components/dependency-graph/dependency-graph.tsx +1 -0
- package/src/components/dependency-graph/elements.ts +20 -9
- package/src/components/dependency-graph/panels.tsx +27 -11
- package/src/components/dependency-graph/types.ts +1 -0
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +4 -1
- package/src/components/editor/package-alert.tsx +4 -4
- package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +3 -5
- package/src/core/codemirror/misc/__tests__/paste.test.ts +18 -0
- package/src/core/codemirror/misc/paste.ts +14 -10
- package/src/core/wasm/__tests__/store.test.ts +33 -0
- package/src/core/wasm/bridge.ts +2 -1
- package/src/core/wasm/store.ts +13 -1
- package/src/plugins/impl/DataTablePlugin.tsx +4 -0
- package/src/plugins/impl/chat/ChatPlugin.tsx +2 -0
- package/src/plugins/impl/chat/chat-ui.tsx +10 -1
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +4 -0
- package/src/plugins/impl/plotly/Plot.tsx +173 -0
- package/src/plugins/impl/plotly/PlotlyPlugin.tsx +41 -10
- package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +1 -0
- package/src/plugins/impl/plotly/__tests__/usePlotlyLayout.test.ts +2 -1
- package/src/plugins/impl/plotly/parse-from-template.ts +1 -0
- package/src/plugins/impl/plotly/usePlotlyLayout.ts +2 -1
- package/src/theme/ThemeProvider.tsx +2 -0
- package/dist/assets/JsonOutput-PE5ko4gi.js +0 -46
- package/dist/assets/channel-CdzZX-OR.js +0 -1
- package/dist/assets/chunk-55IACEB6-njZIr50E.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-CUlU7OLD.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-DAwrDtTO.js +0 -1
- package/dist/assets/dependency-graph-panel-Cbke_QgZ.js +0 -4
- package/dist/assets/dist-4mAhUzty.js +0 -1
- package/dist/assets/dist-5CXgzdUa.js +0 -1
- package/dist/assets/dist-B27MCO52.js +0 -1
- package/dist/assets/dist-Bc7uxGRW.js +0 -1
- package/dist/assets/dist-BtJZmWkg.js +0 -1
- package/dist/assets/dist-ByjGU_ag.js +0 -1
- package/dist/assets/dist-C-V6lvxH.js +0 -1
- package/dist/assets/dist-C6SivM7z.js +0 -1
- package/dist/assets/dist-C9k2RMmO.js +0 -1
- package/dist/assets/dist-ChS0Dc_R.js +0 -1
- package/dist/assets/dist-CtsanegT.js +0 -2
- package/dist/assets/dist-Cx8mOJOB.js +0 -1
- package/dist/assets/dist-DBwNzi3C.js +0 -13
- package/dist/assets/dist-DOZ8nmkC.js +0 -1
- package/dist/assets/dist-DUlOLsKi.js +0 -1
- package/dist/assets/dist-OlCHPNfN.js +0 -1
- package/dist/assets/dist-Z4EybR_c.js +0 -1
- package/dist/assets/dist-fO1a06Tp.js +0 -1
- package/dist/assets/dist-iXB2pOUD.js +0 -1
- package/dist/assets/dist-lTwzYaMX.js +0 -1
- package/dist/assets/dist-wS1s8MYb.js +0 -1
- package/dist/assets/index-CD6Gw4UH.js +0 -38
- package/dist/assets/index-CeUwN_0i.css +0 -2
- package/dist/assets/react-plotly-kw5W3sN8.js +0 -4030
- package/dist/assets/stateDiagram-v2-4FDKWEC3-DT577w6p.js +0 -1
- package/dist/assets/utilities.esm-dm9SQStE.js +0 -3
- /package/dist/assets/{asterisk-B04IJwAt.js → asterisk-Cy-53Fu-.js} +0 -0
- /package/dist/assets/{chunk-76Q3JFCE-BAZ3z-Fu.js → chunk-76Q3JFCE-B261Xkae.js} +0 -0
- /package/dist/assets/{chunk-FWNWRKHM-DzIkWreD.js → chunk-FWNWRKHM-C0b0DIG0.js} +0 -0
- /package/dist/assets/{chunk-LBM3YZW2-BRBe7ZaP.js → chunk-LBM3YZW2-D3uTpSOd.js} +0 -0
- /package/dist/assets/{chunk-LHMN2FUI-C4onQD9F.js → chunk-LHMN2FUI-2FK1AIwU.js} +0 -0
- /package/dist/assets/{chunk-O7ZBX7Z2-CFqB9i7k.js → chunk-O7ZBX7Z2-DoE29Zoe.js} +0 -0
- /package/dist/assets/{chunk-S6J4BHB3-C4KwSfr_.js → chunk-S6J4BHB3-Cvr0itXK.js} +0 -0
- /package/dist/assets/{chunk-T53DSG4Q-Bhd043Cg.js → chunk-T53DSG4Q-C7bPrBIt.js} +0 -0
- /package/dist/assets/{chunk-XAJISQIX-0gvwv13B.js → chunk-XAJISQIX-TwS9jXHm.js} +0 -0
- /package/dist/assets/{common-keywords-D6ImdZX8.js → common-keywords-CU-S2Vqm.js} +0 -0
- /package/dist/assets/{cytoscape.esm-BauVghWH.js → cytoscape.esm-BihqZ2_-.js} +0 -0
- /package/dist/assets/{data-grid-overlay-editor-D8lE4fym.js → data-grid-overlay-editor-lP_r54zS.js} +0 -0
- /package/dist/assets/{dist-C1VXabOr.js → dist-DxxvVPQH.js} +0 -0
- /package/dist/assets/{dockerfile-BmwSYxi2.js → dockerfile-Cq6vOmt3.js} +0 -0
- /package/dist/assets/{duckdb-keywords-5i8us9ML.js → duckdb-keywords-CR9f4wu5.js} +0 -0
- /package/dist/assets/{ebnf--2SLsnbd.js → ebnf-BdwTqLUx.js} +0 -0
- /package/dist/assets/{fcl-CcJxrJDr.js → fcl-BFWIADMy.js} +0 -0
- /package/dist/assets/{http-BBXW5Cu0.js → http-CgzOAOXj.js} +0 -0
- /package/dist/assets/{mhchem-ICopO0mb.js → mhchem-CJmb5HsA.js} +0 -0
- /package/dist/assets/{nginx-CiiHaY6Q.js → nginx-CFpObAqg.js} +0 -0
- /package/dist/assets/{node-sql-parser-Bzh-sm1v.js → node-sql-parser-UQ9Ur_LP.js} +0 -0
- /package/dist/assets/{number-overlay-editor-Dylprn80.js → number-overlay-editor-CY6Dxl9c.js} +0 -0
- /package/dist/assets/{solr-DYYuHZ7Q.js → solr-BkyoAXqg.js} +0 -0
- /package/dist/assets/{spreadsheet-hVThRh5Z.js → spreadsheet-7FZkhkVo.js} +0 -0
- /package/dist/assets/{sql-DG1AJQLP.js → sql-BNnXxKXA.js} +0 -0
- /package/dist/assets/{src-CsZby044.js → src-CmKhyEBC.js} +0 -0
- /package/dist/assets/{tiddlywiki-Dc8c_QaF.js → tiddlywiki-DE5lnTl3.js} +0 -0
- /package/dist/assets/{tiki-CwGnGueS.js → tiki-Dt9oCY2i.js} +0 -0
- /package/dist/assets/{vega-component-D4L27L4Y.js → vega-component-BxXt5fsA.js} +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type * as PlotlyTypes from "plotly.js";
|
|
4
|
+
// Import the pre-built dist bundle, not the source entry point.
|
|
5
|
+
// The source entry point requires Node.js polyfills (e.g. `buffer/`)
|
|
6
|
+
// that are unavailable in the browser/bundler environment.
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
|
+
// @ts-expect-error — no type declarations for dist path, we use PlotlyTypes above
|
|
9
|
+
import Plotly from "plotly.js/dist/plotly";
|
|
10
|
+
import { useEffect, useRef } from "react";
|
|
11
|
+
|
|
12
|
+
// Plotly attaches `on` and `removeListener` to the DOM element at runtime.
|
|
13
|
+
// The @types/plotly.js PlotlyHTMLElement type includes `on` and `removeAllListeners`
|
|
14
|
+
// but not the per-handler `removeListener`. We extend the type to include it.
|
|
15
|
+
interface PlotlyElement extends PlotlyTypes.PlotlyHTMLElement {
|
|
16
|
+
removeListener(event: string, handler: (...args: never[]) => void): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface Figure {
|
|
20
|
+
data: PlotlyTypes.Data[];
|
|
21
|
+
layout: Partial<PlotlyTypes.Layout>;
|
|
22
|
+
frames: PlotlyTypes.Frame[] | null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface PlotProps {
|
|
26
|
+
data: PlotlyTypes.Data[];
|
|
27
|
+
layout: Partial<PlotlyTypes.Layout>;
|
|
28
|
+
frames?: PlotlyTypes.Frame[];
|
|
29
|
+
config?: Partial<PlotlyTypes.Config>;
|
|
30
|
+
className?: string;
|
|
31
|
+
style?: React.CSSProperties;
|
|
32
|
+
useResizeHandler?: boolean;
|
|
33
|
+
divId?: string;
|
|
34
|
+
onRelayout?: (event: PlotlyTypes.PlotRelayoutEvent) => void;
|
|
35
|
+
onRelayouting?: (event: PlotlyTypes.PlotRelayoutEvent) => void;
|
|
36
|
+
onSelected?: (event: PlotlyTypes.PlotSelectionEvent) => void;
|
|
37
|
+
onDeselect?: () => void;
|
|
38
|
+
onClick?: (event: PlotlyTypes.PlotMouseEvent) => void;
|
|
39
|
+
onSunburstClick?: (event: PlotlyTypes.PlotMouseEvent) => void;
|
|
40
|
+
onTreemapClick?: (event: PlotlyTypes.PlotMouseEvent) => void;
|
|
41
|
+
onError?: (err: Error) => void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Plotly event name convention:
|
|
45
|
+
// - events are attached as `'plotly_' + name.toLowerCase()`
|
|
46
|
+
// - react props are `'on' + name`
|
|
47
|
+
const EVENT_NAMES = [
|
|
48
|
+
"Relayout",
|
|
49
|
+
"Relayouting",
|
|
50
|
+
"Selected",
|
|
51
|
+
"Deselect",
|
|
52
|
+
"Click",
|
|
53
|
+
"SunburstClick",
|
|
54
|
+
"TreemapClick",
|
|
55
|
+
] as const;
|
|
56
|
+
|
|
57
|
+
type EventName = (typeof EVENT_NAMES)[number];
|
|
58
|
+
|
|
59
|
+
function propName(event: EventName): keyof PlotProps {
|
|
60
|
+
return `on${event}` as keyof PlotProps;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function plotlyEventName(event: EventName): string {
|
|
64
|
+
return `plotly_${event.toLowerCase()}`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const Plot = (props: PlotProps) => {
|
|
68
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
69
|
+
|
|
70
|
+
const {
|
|
71
|
+
data,
|
|
72
|
+
layout,
|
|
73
|
+
config,
|
|
74
|
+
frames,
|
|
75
|
+
className,
|
|
76
|
+
style,
|
|
77
|
+
useResizeHandler,
|
|
78
|
+
divId,
|
|
79
|
+
onError,
|
|
80
|
+
} = props;
|
|
81
|
+
|
|
82
|
+
// Render / update the plot
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
const el = containerRef.current;
|
|
85
|
+
if (!el) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
Plotly.react(el, data, layout, config)
|
|
90
|
+
.then(() => {
|
|
91
|
+
if (frames && frames.length > 0) {
|
|
92
|
+
return Plotly.addFrames(el as unknown as PlotlyTypes.Root, frames);
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
.catch((error: Error) => {
|
|
96
|
+
onError?.(error);
|
|
97
|
+
});
|
|
98
|
+
}, [data, layout, config, frames, onError]);
|
|
99
|
+
|
|
100
|
+
// Sync event handlers
|
|
101
|
+
useEffect(
|
|
102
|
+
() => {
|
|
103
|
+
const el = containerRef.current;
|
|
104
|
+
if (!el) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const plotlyEl = el as unknown as PlotlyElement;
|
|
109
|
+
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/ban-types -- Plotly's event API uses generic function references
|
|
111
|
+
const attached: {
|
|
112
|
+
plotlyName: string;
|
|
113
|
+
handler: (...args: never[]) => void;
|
|
114
|
+
}[] = [];
|
|
115
|
+
|
|
116
|
+
for (const name of EVENT_NAMES) {
|
|
117
|
+
const handler = props[propName(name)];
|
|
118
|
+
if (typeof handler === "function") {
|
|
119
|
+
const plotlyName = plotlyEventName(name);
|
|
120
|
+
plotlyEl.on(plotlyName as never, handler as never);
|
|
121
|
+
attached.push({
|
|
122
|
+
plotlyName,
|
|
123
|
+
handler: handler as (...args: never[]) => void,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return () => {
|
|
129
|
+
for (const { plotlyName, handler } of attached) {
|
|
130
|
+
plotlyEl.removeListener(plotlyName, handler as never);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
// Re-sync whenever any event handler prop changes
|
|
134
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
135
|
+
},
|
|
136
|
+
EVENT_NAMES.map((name) => props[propName(name)]),
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
// Window resize handler
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
if (!useResizeHandler) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const el = containerRef.current;
|
|
146
|
+
if (!el) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const handler = () => {
|
|
151
|
+
Plotly.Plots.resize(el as unknown as PlotlyTypes.Root);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
window.addEventListener("resize", handler);
|
|
155
|
+
return () => {
|
|
156
|
+
window.removeEventListener("resize", handler);
|
|
157
|
+
};
|
|
158
|
+
}, [useResizeHandler]);
|
|
159
|
+
|
|
160
|
+
// Cleanup on unmount
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
const el = containerRef.current;
|
|
163
|
+
return () => {
|
|
164
|
+
if (el) {
|
|
165
|
+
Plotly.purge(el as unknown as PlotlyTypes.Root);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}, []);
|
|
169
|
+
|
|
170
|
+
return (
|
|
171
|
+
<div id={divId} className={className} style={style} ref={containerRef} />
|
|
172
|
+
);
|
|
173
|
+
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import type
|
|
3
|
+
import type * as Plotly from "plotly.js";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import type { IPlugin, IPluginProps, Setter } from "@/plugins/types";
|
|
6
6
|
import { Logger } from "@/utils/Logger";
|
|
7
|
+
import type { Figure } from "./Plot";
|
|
7
8
|
|
|
8
9
|
import "./plotly.css";
|
|
9
10
|
import "./mapbox.css";
|
|
@@ -70,13 +71,8 @@ interface PlotlyPluginProps extends Data {
|
|
|
70
71
|
host: HTMLElement;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
import("react-plotly.js").then((module) => {
|
|
76
|
-
return module.default as unknown as {
|
|
77
|
-
default: React.ComponentType<PlotParams>;
|
|
78
|
-
};
|
|
79
|
-
}),
|
|
74
|
+
const LazyPlot = lazy(() =>
|
|
75
|
+
import("./Plot").then((mod) => ({ default: mod.Plot })),
|
|
80
76
|
);
|
|
81
77
|
|
|
82
78
|
const SUNBURST_DATA_KEYS: (keyof Plotly.SunburstPlotDatum)[] = [
|
|
@@ -176,7 +172,6 @@ export const PlotlyComponent = memo(
|
|
|
176
172
|
};
|
|
177
173
|
});
|
|
178
174
|
})}
|
|
179
|
-
// @ts-expect-error We patched this prop here so it doesn't exist in the types
|
|
180
175
|
onTreemapClick={useEvent((evt: Readonly<Plotly.PlotMouseEvent>) => {
|
|
181
176
|
if (!evt) {
|
|
182
177
|
return;
|
|
@@ -198,6 +193,24 @@ export const PlotlyComponent = memo(
|
|
|
198
193
|
}));
|
|
199
194
|
})}
|
|
200
195
|
config={plotlyConfig}
|
|
196
|
+
onClick={useEvent((evt: Readonly<Plotly.PlotMouseEvent>) => {
|
|
197
|
+
if (!evt) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Only handle clicks for chart types where box/lasso selection
|
|
201
|
+
// (onSelected) doesn't work, such as heatmaps.
|
|
202
|
+
const isHeatmap = evt.points.some(
|
|
203
|
+
(point) => point.data?.type === "heatmap",
|
|
204
|
+
);
|
|
205
|
+
if (!isHeatmap) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
setValue((prev) => ({
|
|
209
|
+
...prev,
|
|
210
|
+
points: extractPoints(evt.points),
|
|
211
|
+
indices: evt.points.map((point) => point.pointIndex),
|
|
212
|
+
}));
|
|
213
|
+
})}
|
|
201
214
|
onSelected={useEvent((evt: Readonly<Plotly.PlotSelectionEvent>) => {
|
|
202
215
|
if (!evt) {
|
|
203
216
|
return;
|
|
@@ -215,7 +228,7 @@ export const PlotlyComponent = memo(
|
|
|
215
228
|
className="w-full"
|
|
216
229
|
useResizeHandler={true}
|
|
217
230
|
frames={figure.frames ?? undefined}
|
|
218
|
-
onError={useEvent((err) => {
|
|
231
|
+
onError={useEvent((err: Error) => {
|
|
219
232
|
Logger.error("PlotlyPlugin: ", err);
|
|
220
233
|
})}
|
|
221
234
|
/>
|
|
@@ -229,6 +242,17 @@ PlotlyComponent.displayName = "PlotlyComponent";
|
|
|
229
242
|
* instead of the ones that Plotly uses internally,
|
|
230
243
|
* by using the hovertemplate.
|
|
231
244
|
*/
|
|
245
|
+
const STANDARD_POINT_KEYS: string[] = [
|
|
246
|
+
"x",
|
|
247
|
+
"y",
|
|
248
|
+
"z",
|
|
249
|
+
"lat",
|
|
250
|
+
"lon",
|
|
251
|
+
"curveNumber",
|
|
252
|
+
"pointNumber",
|
|
253
|
+
"pointIndex",
|
|
254
|
+
];
|
|
255
|
+
|
|
232
256
|
function extractPoints(
|
|
233
257
|
points: Plotly.PlotDatum[],
|
|
234
258
|
): Record<AxisName, AxisDatum>[] {
|
|
@@ -243,6 +267,13 @@ function extractPoints(
|
|
|
243
267
|
const hovertemplate = Array.isArray(point.data.hovertemplate)
|
|
244
268
|
? point.data.hovertemplate[0]
|
|
245
269
|
: point.data.hovertemplate;
|
|
270
|
+
|
|
271
|
+
// For chart types with standard point keys (e.g. heatmaps),
|
|
272
|
+
// or when there's no hovertemplate, pick keys directly from the point.
|
|
273
|
+
if (!hovertemplate || point.data?.type === "heatmap") {
|
|
274
|
+
return pick(point, STANDARD_POINT_KEYS);
|
|
275
|
+
}
|
|
276
|
+
|
|
246
277
|
// Update or create a parser
|
|
247
278
|
parser = parser
|
|
248
279
|
? parser.update(hovertemplate)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import type
|
|
3
|
+
import type * as Plotly from "plotly.js";
|
|
4
4
|
import { describe, expect, it } from "vitest";
|
|
5
|
+
import type { Figure } from "../Plot";
|
|
5
6
|
import {
|
|
6
7
|
computeLayoutOnFigureChange,
|
|
7
8
|
computeLayoutUpdate,
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { usePrevious } from "@uidotdev/usehooks";
|
|
4
4
|
import { isEqual, pick } from "lodash-es";
|
|
5
|
+
import type * as Plotly from "plotly.js";
|
|
5
6
|
import { useEffect, useState } from "react";
|
|
6
|
-
import type { Figure } from "react-plotly.js";
|
|
7
7
|
import { Objects } from "@/utils/objects";
|
|
8
|
+
import type { Figure } from "./Plot";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Keys that are preserved across figure updates when set by user interaction.
|
|
@@ -10,8 +10,10 @@ export const ThemeProvider: React.FC<PropsWithChildren> = memo(
|
|
|
10
10
|
const { theme } = useTheme();
|
|
11
11
|
useLayoutEffect(() => {
|
|
12
12
|
document.body.classList.add(theme, `${theme}-theme`);
|
|
13
|
+
document.body.dataset.theme = theme;
|
|
13
14
|
return () => {
|
|
14
15
|
document.body.classList.remove(theme, `${theme}-theme`);
|
|
16
|
+
delete document.body.dataset.theme;
|
|
15
17
|
};
|
|
16
18
|
}, [theme]);
|
|
17
19
|
|