@marimo-team/islands 0.23.2-dev3 → 0.23.2-dev31
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/{ConnectedDataExplorerComponent-P92i6wYx.js → ConnectedDataExplorerComponent-DShCAU06.js} +11 -11
- package/dist/{isArrayLikeObject-LXbTYiBa.js → _baseFor-6rr1p10t.js} +43 -215
- package/dist/_baseUniq-LxrBY6QK.js +380 -0
- package/dist/{any-language-editor-BCvLfvzI.js → any-language-editor-CtNfsWJh.js} +17 -17
- package/dist/apl-Y7yFAg6_.js +4 -0
- package/dist/{arc-DLJpPF9M.js → arc-CEWBr4jc.js} +2 -2
- package/dist/architecture-7HQA4BMR-CATq-AgL.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-B3YQo9At.js → architectureDiagram-VXUJARFQ-DqqZsWn9.js} +19 -19
- package/dist/{arrays-beUWo8RF.js → arrays-Du-jRBAy.js} +1 -1
- package/dist/asciiarmor-Bl8b2p0w.js +4 -0
- package/dist/asn1-BF6cywqm.js +4 -0
- package/dist/{blockDiagram-VD42YOAC-CpQ3TKEN.js → blockDiagram-VD42YOAC-46RbsmrR.js} +53 -53
- package/dist/brainfuck-BuqydWe3.js +4 -0
- package/dist/{c4Diagram-YG6GDRKO-CZSU4uqU.js → c4Diagram-YG6GDRKO-DQhd8kxL.js} +6 -6
- package/dist/{capabilities-BwpUgo4S.js → capabilities-B6ae40r2.js} +1 -1
- package/dist/{channel-X3JKk8gE.js → channel-DR5iDSyR.js} +1 -1
- package/dist/{chat-ui-CNHw9Osh.js → chat-ui-CVKwVnwD.js} +18 -18
- package/dist/{chunk-4BX2VUAB-C2skOn1Z.js → chunk-4BX2VUAB-BChPAwlt.js} +1 -1
- package/dist/{chunk-4F5CHEZ2-D5mClyDv.js → chunk-4F5CHEZ2-Bt9N9Ox8.js} +1 -1
- package/dist/{chunk-55IACEB6-DRsSqxbU.js → chunk-55IACEB6-wWyiO7Qo.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-VIref9gx.js → chunk-5FQGJX7Z-DDhYtPiB.js} +3 -3
- package/dist/{chunk-ABZYJK2D-CZYCCtLy.js → chunk-ABZYJK2D--T2L3L-f.js} +3 -3
- package/dist/{chunk-ATLVNIR6-DaOzLLgN.js → chunk-ATLVNIR6-CgKfvd-c.js} +2 -2
- package/dist/{chunk-B2363JML-Br0eA2T3.js → chunk-B2363JML-Db4oHCZ4.js} +1 -1
- package/dist/{chunk-B4BG7PRW-4BjV11Br.js → chunk-B4BG7PRW-J0s6wAkN.js} +7 -7
- package/dist/{chunk-CVBHYZKI-BXHgce-x.js → chunk-CVBHYZKI-DqdOZevv.js} +1 -1
- package/dist/{chunk-DI55MBZ5-DITY3EyP.js → chunk-DI55MBZ5-33PvMnN-.js} +6 -6
- package/dist/{chunk-EXTU4WIE-jUPSAk3i.js → chunk-EXTU4WIE-BspiJIuJ.js} +2 -2
- package/dist/{chunk-FMBD7UC4-BjIaI-XO.js → chunk-FMBD7UC4-WPL5C7Yr.js} +1 -1
- package/dist/{chunk-FRFDVMJY-DnEvEFRR.js → chunk-FRFDVMJY-DGahYT1S.js} +1 -1
- package/dist/{chunk-HN2XXSSU-DAhNp1ig.js → chunk-HN2XXSSU-GC9oeSst.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-BcPEfxk_.js → chunk-JA3XYJ7Z-DCohPV-J.js} +3 -3
- package/dist/{chunk-JZLCHNYA-2bnLL3xL.js → chunk-JZLCHNYA-B5kMsVU0.js} +6 -6
- package/dist/{chunk-MI3HLSF2-AKwFNP3m.js → chunk-MI3HLSF2-CAUClZTk.js} +1 -1
- package/dist/{chunk-N4CR4FBY-CpZSuGSU.js → chunk-N4CR4FBY-DJggWRjm.js} +7 -7
- package/dist/{chunk-PL6DKKU2-DnId6G-x.js → chunk-PL6DKKU2-CoF4omiN.js} +1 -1
- package/dist/{chunk-QN33PNHL-B9p5ojHB.js → chunk-QN33PNHL-B1NgkDCq.js} +2 -2
- package/dist/{chunk-QXUST7PY-Ch6F5Obl.js → chunk-QXUST7PY-CpxfBz2U.js} +10 -10
- package/dist/{chunk-QZHKN3VN-BK9tlbfw.js → chunk-QZHKN3VN-cTJMhkeY.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-B0UOFJwq.js → chunk-S3R3BYOJ-DYg3yWKI.js} +8 -8
- package/dist/{chunk-SJTYNZTY-BsBZnJUj.js → chunk-SJTYNZTY-dW9OU4qd.js} +1 -1
- package/dist/{chunk-TCCFYFTB-Clbl-fTg.js → chunk-TCCFYFTB-vYPbT9fw.js} +1552 -345
- package/dist/{chunk-TQ3KTPDO-CFkSQ30e.js → chunk-TQ3KTPDO-Dykudlbk.js} +1 -1
- package/dist/{chunk-TZMSLE5B-D45397J2.js → chunk-TZMSLE5B-JAnY0w_r.js} +3 -3
- package/dist/{chunk-UMXZTB3W-D-A834Bq.js → chunk-UMXZTB3W-BVL6vS7M.js} +1 -1
- package/dist/classDiagram-2ON5EDUG-Be541Bqx.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-CFtNZ66L.js +30 -0
- package/dist/{clike-B90WKs4D.js → clike-D8Yzpo0X.js} +1 -1
- package/dist/clojure-CAHAWK5H.js +4 -0
- package/dist/{clone-DZFQCtFJ.js → clone-0b7yW5QV.js} +1 -1
- package/dist/cmake-BogDc4GF.js +4 -0
- package/dist/cobol-DRnpeU4u.js +4 -0
- package/dist/{code-block-37QAKDTI-FQEoMOU1.js → code-block-37QAKDTI-DP_hitFg.js} +1 -1
- package/dist/coffeescript-9MgX7RN8.js +4 -0
- package/dist/commonlisp-CVz2KONN.js +4 -0
- package/dist/{constants-CvyfaCvs.js → constants-C2U1Bmny.js} +4 -4
- package/dist/{cose-bilkent-S5V4N54A-DvCk1aXi.js → cose-bilkent-S5V4N54A-CFYo67PX.js} +2 -2
- package/dist/crystal-td8mwLG5.js +4 -0
- package/dist/css-BK451dBn.js +4 -0
- package/dist/cypher-DuNPR6Ie.js +4 -0
- package/dist/d-DL6oP_-2.js +4 -0
- package/dist/{dagre-6UL2VRFP-OMItEBnY.js → dagre-6UL2VRFP-On1-AgLm.js} +102 -103
- package/dist/{dagre-QVd-lCXU.js → dagre-Bc6NAu6c.js} +105 -39
- package/dist/{data-grid-overlay-editor-C_sKPpLu.js → data-grid-overlay-editor-B1mPZ5v3.js} +2 -2
- package/dist/{diagram-PSM6KHXK-CkKbohWI.js → diagram-PSM6KHXK-B2x0d9iz.js} +22 -22
- package/dist/{diagram-QEK2KX5R-DjUMpVcx.js → diagram-QEK2KX5R-C6yZT5O0.js} +17 -17
- package/dist/{diagram-S2PKOQOG-b-c0d-wZ.js → diagram-S2PKOQOG-DDohjXNG.js} +17 -17
- package/dist/diff-D9CplOBj.js +4 -0
- package/dist/{dist-Doy0mQDg.js → dist-4BuWWZtg.js} +2 -2
- package/dist/{dist-DlSUOIm9.js → dist-5VO3ibto.js} +1 -1
- package/dist/dist-B9hNC-E9.js +5 -0
- package/dist/{dist-DJKubHDd.js → dist-BH67T-KO.js} +1 -1
- package/dist/{dist-CNF0QBLR.js → dist-BI11IEaj.js} +1 -1
- package/dist/dist-BK1_hXFC.js +5 -0
- package/dist/{dist-ej6AQKaS.js → dist-BKGmoFSu.js} +1 -1
- package/dist/{dist-CTwGwcQ8.js → dist-BKKbDTix.js} +2 -2
- package/dist/dist-BSGRbj-N.js +8 -0
- package/dist/{dist-VqF3W_ue.js → dist-BVdq25Pp.js} +2 -2
- package/dist/{dist-BvhGByxL.js → dist-BWmwgyyt.js} +4 -4
- package/dist/{dist-DUFd1bhm.js → dist-BmkybMad.js} +1 -1
- package/dist/{dist-DbnBiLNH.js → dist-Bo8Q2NZ6.js} +3 -3
- package/dist/{dist-DJ9F1eHs.js → dist-BrRkENbS.js} +2 -2
- package/dist/{dist-DFK94vuS.js → dist-C-Mi2f2L.js} +2 -2
- package/dist/dist-C5i3bD88.js +5 -0
- package/dist/dist-C9mOdSQc.js +5 -0
- package/dist/{dist--6TSlp8H.js → dist-CM55yvVz.js} +1 -1
- package/dist/{dist-CIB8w0Fl.js → dist-CWin4kuc.js} +2 -2
- package/dist/{dist-Ci0CXEFt.js → dist-Cf1__Ezo.js} +1 -1
- package/dist/{dist-CcMfr7jD.js → dist-ChYkaQZ9.js} +1 -1
- package/dist/{dist-CFKdzOIu.js → dist-Cil0kZOw.js} +2 -2
- package/dist/{dist-LhQNUe5A.js → dist-CjFd_clf.js} +3 -3
- package/dist/{dist-DD_cYHOl.js → dist-CtliEIOC.js} +2 -2
- package/dist/{dist-B43sbpd0.js → dist-CuT7pAjI.js} +3 -3
- package/dist/dist-DAmwszSZ.js +8 -0
- package/dist/dist-DGgzl61R.js +5 -0
- package/dist/{dist-DLafRu9s.js → dist-DH-coTYX.js} +2 -2
- package/dist/{dist-CxZvoNao.js → dist-DPAK3Dpl.js} +44 -31
- package/dist/{dist-DGNtjMZu.js → dist-DViRvB3t.js} +1 -1
- package/dist/{dist-m9tsXsFf.js → dist-DcB6g7XM.js} +2 -2
- package/dist/dist-DnGRs0FR.js +5 -0
- package/dist/dist-GBXFGpIo.js +8 -0
- package/dist/dist-H433csIN.js +8 -0
- package/dist/{dist-DpkJHKB8.js → dist-HNoCppvN.js} +2 -2
- package/dist/{dist-Bfp1XXWt.js → dist-I9ZUr7P2.js} +5 -5
- package/dist/dist-ItCg4aSC.js +6 -0
- package/dist/dist-Mi3Li5U2.js +6 -0
- package/dist/{dist-BrxqmS9Q.js → dist-QzlYe8XT.js} +4 -4
- package/dist/{dist-BjDuO5JW.js → dist-ZJ4KZJv-.js} +1 -1
- package/dist/dist-_-4VPi_T.js +5 -0
- package/dist/{dist-tGk0aZ--.js → dist-qpWXd9bI.js} +2 -2
- package/dist/{dist-DAfcmt-d.js → dist-rdefyFzZ.js} +2 -2
- package/dist/dist-tIur4wUM.js +5 -0
- package/dist/{dist-C4bq5Ioy.js → dist-vkjbtmSV.js} +2 -2
- package/dist/{dockerfile-DfXhjEUG.js → dockerfile-m9DOSpI5.js} +1 -1
- package/dist/dtd-Ce1c54UO.js +4 -0
- package/dist/dylan-B43wjIwg.js +4 -0
- package/dist/ecl-DK-fZmir.js +4 -0
- package/dist/eiffel-CNuvvPqD.js +4 -0
- package/dist/elm-DZEkBjgQ.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-CDhLaOZ1.js → erDiagram-Q2GNP2WA-C7-L36q5.js} +15 -15
- package/dist/erlang-Dw4PDZV_.js +4 -0
- package/dist/{esm-CDHI9cuO.js → esm-DGjaY9EX.js} +2 -2
- package/dist/{esm-CD1iby2n.js → esm-i3cb1Eej.js} +105 -105
- package/dist/factor-C9JRv63g.js +4 -0
- package/dist/{factor--4HHM8Rw.js → factor-Nva0iSXt.js} +1 -1
- package/dist/flatten-BOUk2Lcs.js +8 -0
- package/dist/{flowDiagram-NV44I4VS-BDi4O4CL.js → flowDiagram-NV44I4VS-CJW83FSj.js} +17 -17
- package/dist/forth-CKhoqn4e.js +4 -0
- package/dist/fortran-Do51bToK.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-BpZE6kVp.js → ganttDiagram-JELNMOA3-CwBjBQUx.js} +10 -10
- package/dist/gas-BZfL3Uwh.js +4 -0
- package/dist/gherkin-BwQh4ehw.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-B_c6xFJv.js → gitGraph-G5XIXVHT-DTpIjETB.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-iQnXzbPM.js → gitGraphDiagram-V2S2FVAM-CmTxe2C4.js} +17 -17
- package/dist/{glide-data-editor-BFqEJGJW.js → glide-data-editor-BaAX1uv-.js} +8 -8
- package/dist/graphlib-DTP9cqCT.js +359 -0
- package/dist/groovy-CG5kCGiv.js +4 -0
- package/dist/{hasIn-DnfJcYpY.js → hasIn-MXhEnf0q.js} +3 -3
- package/dist/haskell-BKii9uTg.js +4 -0
- package/dist/haxe-Bsz30J8x.js +5 -0
- package/dist/idl-BlxgaPKj.js +4 -0
- package/dist/{info-VBDWY6EO-BTyzxmhr.js → info-VBDWY6EO-DcCsz2w_.js} +3 -3
- package/dist/infoDiagram-HS3SLOUP-Dz0ivKcB.js +30 -0
- package/dist/{input-CSVEkmaZ.js → input-L-W-RdiE.js} +4 -4
- package/dist/{isEmpty-B7FX9wKt.js → isEmpty-BkHRaD4A.js} +9 -9
- package/dist/{isSymbol-DCbjQG_U.js → isSymbol-DjQk-23F.js} +1 -1
- package/dist/javascript-SNhUvTcB.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-ClPC94aN.js → journeyDiagram-XKPGCS4Q-8XpEA5Ko.js} +7 -7
- package/dist/julia-CGZzaDyk.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-DHEAKdZt.js → kanban-definition-3W4ZIXB7-C-sC72Q7.js} +12 -12
- package/dist/{katex-CkLtKXwv.js → katex-Ckd8lBne.js} +1 -1
- package/dist/{label-BebYlsDV.js → label-DAH3oYXB.js} +1 -1
- package/dist/{line-PAEmCpyD.js → line-LK_5q2B9.js} +3 -3
- package/dist/{linear-v57w-fIs.js → linear-CJ6ctpF3.js} +4 -4
- package/dist/livescript-Cj6cX-Ys.js +4 -0
- package/dist/{loader-ZFbGsMN1.js → loader-D9ktSJS7.js} +1 -1
- package/dist/lua-BcVHrD8f.js +4 -0
- package/dist/main.js +456 -361
- package/dist/mathematica-DLY8ZGoJ.js +4 -0
- package/dist/mbox-BNTsMWS5.js +4 -0
- package/dist/{memoize-CSTI9eOX.js → memoize-DxdGWSJ6.js} +1 -1
- package/dist/merge-BEePrO2O.js +222 -0
- package/dist/{mermaid-4DMBBIKO-BjtqcdX4.js → mermaid-4DMBBIKO-DRXAUrhi.js} +1 -1
- package/dist/{mermaid-BbhZNQeB.js → mermaid-DBH43AFh.js} +45 -45
- package/dist/{mermaid-parser.core-ntCgyx0x.js → mermaid-parser.core-Bn1MCv1H.js} +8 -8
- package/dist/{mhchem-BuY5LDSq.js → mhchem-DAXq6Zll.js} +1 -1
- package/dist/min-RKgAiXUl.js +38 -0
- package/dist/{mindmap-definition-VGOIOE7T-CxEUZZvY.js → mindmap-definition-VGOIOE7T-f-YOgrj9.js} +14 -14
- package/dist/mirc-oyeOBir2.js +4 -0
- package/dist/mllike-ByxznKQw.js +6 -0
- package/dist/modelica-DNLhoyD8.js +4 -0
- package/dist/mscgen-DkZltsli.js +6 -0
- package/dist/mumps-TTiQB1xv.js +4 -0
- package/dist/now-BUO7mCs3.js +31 -0
- package/dist/{nsis-B6EN9LWI.js → nsis-DgKbDAVQ.js} +1 -1
- package/dist/nsis-RT1O1Ph8.js +4 -0
- package/dist/ntriples-CxsCiZ7Z.js +4 -0
- package/dist/{number-overlay-editor-B02-t7Ar.js → number-overlay-editor-BbN3lvDI.js} +1 -1
- package/dist/octave-CkLh5tpW.js +4 -0
- package/dist/{once-C_TIu-kR.js → once-CZno0h-b.js} +1 -1
- package/dist/{ordinal-D7fa8Sey.js → ordinal-COPPjmMz.js} +1 -1
- package/dist/oz-yI7U9eVH.js +4 -0
- package/dist/{packet-DYOGHKS2-BhvnpoGi.js → packet-DYOGHKS2-BpYOwBIl.js} +3 -3
- package/dist/pascal-CQK8sfDe.js +4 -0
- package/dist/perl-BEG8-kZl.js +4 -0
- package/dist/pick-M816gWrv.js +43 -0
- package/dist/{pie-VRWISCQL-dILuA3iG.js → pie-VRWISCQL-narEdAtC.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-U3LrUqAS.js → pieDiagram-ADFJNKIX-e7V1zvfH.js} +22 -22
- package/dist/pig-DLLCqQaR.js +4 -0
- package/dist/powershell-CtjMkVO_.js +4 -0
- package/dist/{precisionRound-CGLoV26P.js → precisionRound-Duzbr5ur.js} +1 -1
- package/dist/{process-output-Bekznt_B.js → process-output-BX1UfKIX.js} +2298 -2284
- package/dist/properties-Domeb57z.js +4 -0
- package/dist/protobuf-0yk85TV6.js +4 -0
- package/dist/pug-B-BiNkM-.js +4 -0
- package/dist/{pug-xrm7jQ2R.js → pug-CTpLcc1b.js} +1 -1
- package/dist/puppet-C0N4vevK.js +4 -0
- package/dist/python-BZFa8G3C.js +4 -0
- package/dist/q-gcj7dgJv.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-BVWuq-3R.js → quadrantDiagram-AYHSOK5B-DbJIgiah.js} +5 -5
- package/dist/r-DavzTuPU.js +4 -0
- package/dist/{radar-ZZBFDIW7-DwFrOJDj.js → radar-ZZBFDIW7-CZ6uVl9x.js} +3 -3
- package/dist/react-vega-BFLRzgl7.js +9 -0
- package/dist/{react-vega-DBwal82H.js → react-vega-Ov9UeJeF.js} +18 -18
- package/dist/{requirementDiagram-UZGBJVZJ-D0zpQnKC.js → requirementDiagram-UZGBJVZJ-DDTA2gwv.js} +14 -14
- package/dist/rpm-bPj31ya8.js +5 -0
- package/dist/ruby-3UzzijjE.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-CExy1joT.js → sankeyDiagram-TZEHDZUN-TOGeZF4f.js} +5 -5
- package/dist/sas-D9upmCP9.js +4 -0
- package/dist/scheme-DqWYzIFR.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-D1BJxLjH.js → sequenceDiagram-WL72ISMW-XZ-vAxdG.js} +8 -8
- package/dist/shell-w63nkNmU.js +4 -0
- package/dist/sieve-Dz_ISrl6.js +4 -0
- package/dist/{slides-component-DLxprlqo.js → slides-component-B9NXzezL.js} +1 -1
- package/dist/smalltalk-BXZ14pkr.js +4 -0
- package/dist/sparql-Boyc0wkb.js +4 -0
- package/dist/{spec-3EPbPQZH.js → spec-Budha9Vn.js} +2 -2
- package/dist/{src-DbP20yFZ.js → src-szye8OCw.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-B1S8jGMn.js → stateDiagram-FKZM4ZOC-B72-jYlX.js} +19 -19
- package/dist/stateDiagram-v2-4FDKWEC3-Up7GUIPl.js +29 -0
- package/dist/{step-qd10PbTJ.js → step-1PmBKr2y.js} +1 -1
- package/dist/stex-CZyTRGVB.js +4 -0
- package/dist/stylus-m9L_f1X1.js +4 -0
- package/dist/swift-C4TGn99K.js +4 -0
- package/dist/tcl-D_L0cfYZ.js +4 -0
- package/dist/textile-BAofYdKN.js +4 -0
- package/dist/{time-Bdnxi22U.js → time-B8tcX_hU.js} +4 -4
- package/dist/{timeline-definition-IT6M3QCI-BDT9JAmn.js → timeline-definition-IT6M3QCI-CStBX2Oa.js} +4 -4
- package/dist/{toDate-B1AzlBoW.js → toDate-Cqrm-UC4.js} +2 -2
- package/dist/toml-DCDKACLL.js +4 -0
- package/dist/{treemap-GDKQZRPO-bx2ngsgN.js → treemap-GDKQZRPO-BxK9LkTz.js} +3 -3
- package/dist/troff-JHOU2VZK.js +4 -0
- package/dist/ttcn-Cxhng3qq.js +4 -0
- package/dist/ttcn-cfg-DJgUIu5n.js +4 -0
- package/dist/turtle-DKYkKZjV.js +4 -0
- package/dist/{types-pwjdK009.js → types-DEY2byth.js} +1 -1
- package/dist/{useAsyncData-BL98MPIy.js → useAsyncData-B1v_9k4L.js} +2 -2
- package/dist/{useDeepCompareMemoize-CsyOnnjc.js → useDeepCompareMemoize-ToNUMW7X.js} +3 -3
- package/dist/{useIframeCapabilities-CsTUYYj7.js → useIframeCapabilities-WKJHoHW-.js} +1 -1
- package/dist/{useLifecycle-DrGGIsgp.js → useLifecycle-DdNGMIjn.js} +1 -1
- package/dist/{useTheme-CzwDokKe.js → useTheme-CfzcSQtz.js} +1 -1
- package/dist/vb-C9rpn9hN.js +4 -0
- package/dist/vbscript-BQ7rxQU0.js +4 -0
- package/dist/{vega-component-KBJXEDZz.js → vega-component-CQ88A9vN.js} +11 -11
- package/dist/{vega-loader.browser-DqEcFOPD.js → vega-loader.browser-hMqVC9bf.js} +3 -3
- package/dist/velocity-C8WXmzLz.js +4 -0
- package/dist/verilog-BUXJEyEq.js +4 -0
- package/dist/vhdl-C18YIXfF.js +4 -0
- package/dist/webidl-D97EKzDx.js +4 -0
- package/dist/xquery-BZM6yzG2.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-CuAZiqHS.js → xychartDiagram-PRI3JC2R-DCtrGSHF.js} +13 -13
- package/dist/yacas-CXKck-Ok.js +4 -0
- package/dist/z80-BbF6ykWc.js +4 -0
- package/package.json +2 -2
- package/src/components/data-table/TableBottomBar.tsx +5 -1
- package/src/components/data-table/__tests__/filters.test.ts +304 -0
- package/src/components/data-table/__tests__/pagination.test.tsx +46 -132
- package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
- package/src/components/data-table/filters.ts +87 -33
- package/src/components/data-table/pagination.tsx +189 -76
- package/src/components/data-table/types.ts +0 -4
- package/src/components/editor/Output.tsx +1 -1
- package/src/components/editor/actions/useNotebookActions.tsx +12 -0
- package/src/components/editor/cell/code/cell-editor.tsx +1 -0
- package/src/core/cells/__tests__/apply-transaction.test.ts +42 -0
- package/src/core/cells/__tests__/logs.test.ts +101 -0
- package/src/core/cells/logs.ts +9 -1
- package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +4 -14
- package/src/core/codemirror/cells/extensions.ts +0 -4
- package/src/core/codemirror/keymaps/keymaps.ts +69 -2
- package/src/core/codemirror/language/languages/python.ts +9 -9
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +8 -1
- package/src/core/codemirror/lsp/federated-lsp.ts +2 -2
- package/src/core/codemirror/lsp/notebook-lsp.ts +2 -2
- package/src/core/codemirror/lsp/utils.ts +21 -6
- package/src/core/constants.ts +1 -0
- package/src/plugins/impl/DataTablePlugin.tsx +7 -20
- package/src/plugins/impl/TabsPlugin.tsx +18 -12
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +4 -4
- package/src/plugins/impl/data-frames/schema.ts +41 -9
- package/src/plugins/impl/data-frames/utils/operators.ts +2 -0
- package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +16 -0
- package/dist/_basePickBy-Sow3pJjS.js +0 -41
- package/dist/_baseUniq-C87CckHL.js +0 -518
- package/dist/apl-C1bki_dE.js +0 -4
- package/dist/architecture-7HQA4BMR-BHdkAMvZ.js +0 -6
- package/dist/asciiarmor-BdlkCCRr.js +0 -4
- package/dist/asn1-CvE30hox.js +0 -4
- package/dist/brainfuck-BalwWy1a.js +0 -4
- package/dist/classDiagram-2ON5EDUG-C8-zE3Zv.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-DrmbGANl.js +0 -30
- package/dist/clojure-CUC2I1hM.js +0 -4
- package/dist/cmake-8PcMxXnB.js +0 -4
- package/dist/cobol-DkkkDz5v.js +0 -4
- package/dist/coffeescript-CCupxOZf.js +0 -4
- package/dist/commonlisp-DhUfGX6b.js +0 -4
- package/dist/crystal-DSaw6rFQ.js +0 -4
- package/dist/css-D4QDewkG.js +0 -4
- package/dist/cypher-CrYVqw_F.js +0 -4
- package/dist/d-Cr3H3pPx.js +0 -4
- package/dist/diff-ODiZJGls.js +0 -4
- package/dist/dist-7K5doRvB.js +0 -6
- package/dist/dist-B6I_A2-E.js +0 -8
- package/dist/dist-BEQsmaZY.js +0 -5
- package/dist/dist-BasY2RHp.js +0 -8
- package/dist/dist-Bosc00dY.js +0 -5
- package/dist/dist-CQMZOn-_.js +0 -8
- package/dist/dist-CViQhWZ8.js +0 -5
- package/dist/dist-Cz6rLfwY.js +0 -5
- package/dist/dist-D8eq8st3.js +0 -6
- package/dist/dist-DM1UDXdl.js +0 -5
- package/dist/dist-DNrtWPgS.js +0 -5
- package/dist/dist-V7q2qnpA.js +0 -5
- package/dist/dist-a5_hPgu2.js +0 -8
- package/dist/dist-uVyZcV1-.js +0 -5
- package/dist/dtd-C-t2Rk7F.js +0 -4
- package/dist/dylan-B4ctBLGp.js +0 -4
- package/dist/ecl-DqWfymni.js +0 -4
- package/dist/eiffel-DjBKKAr7.js +0 -4
- package/dist/elm--fxeC0FV.js +0 -4
- package/dist/erlang-CaKXCX6H.js +0 -4
- package/dist/factor-DlLO5EFS.js +0 -4
- package/dist/forth-rOO6LVj_.js +0 -4
- package/dist/fortran-CUg15VGR.js +0 -4
- package/dist/gas-BMRJspiW.js +0 -4
- package/dist/gherkin-DRxzijZU.js +0 -4
- package/dist/graphlib-BV1_gi0C.js +0 -226
- package/dist/groovy-BmrQ8pUP.js +0 -4
- package/dist/haskell-BuaYfKOz.js +0 -4
- package/dist/haxe-DcH9eA0a.js +0 -5
- package/dist/idl-DGlcm4Ls.js +0 -4
- package/dist/infoDiagram-HS3SLOUP-OYrX6uO3.js +0 -30
- package/dist/javascript-CeTk7rzr.js +0 -4
- package/dist/julia-BoP_q1gm.js +0 -4
- package/dist/livescript-B7IMN-ba.js +0 -4
- package/dist/lua-q1InavKb.js +0 -4
- package/dist/mathematica-DvR8-_EI.js +0 -4
- package/dist/mbox-7h5MNBS_.js +0 -4
- package/dist/merge-CVhG7q_o.js +0 -51
- package/dist/min-Ds3gG0Ff.js +0 -96
- package/dist/mirc-D-XM8A5c.js +0 -4
- package/dist/mllike-BQGkkbmf.js +0 -6
- package/dist/modelica-D_yRj_WU.js +0 -4
- package/dist/mscgen-B-rltAjp.js +0 -6
- package/dist/mumps-2kh8TU2b.js +0 -4
- package/dist/now-nrrrOr01.js +0 -7
- package/dist/nsis-CtusEqwb.js +0 -4
- package/dist/ntriples-BdAXw6zV.js +0 -4
- package/dist/octave-CsNFmVp5.js +0 -4
- package/dist/oz-odIXCrKd.js +0 -4
- package/dist/pascal-B9Mfk3Fo.js +0 -4
- package/dist/perl-C48inLcz.js +0 -4
- package/dist/pig-uwRtAssU.js +0 -4
- package/dist/powershell-CXqlca-i.js +0 -4
- package/dist/properties-D6Zu1rpK.js +0 -4
- package/dist/protobuf-BlNNWZaR.js +0 -4
- package/dist/pug-DytcK7bv.js +0 -4
- package/dist/puppet-lJ8Ok3iY.js +0 -4
- package/dist/python-cMaF7kUp.js +0 -4
- package/dist/q-Dgt2HYQh.js +0 -4
- package/dist/r-Bm4S4awf.js +0 -4
- package/dist/range-fJeId9Ri.js +0 -30
- package/dist/react-vega-BkjdpVsR.js +0 -9
- package/dist/rpm-_8LbzMVc.js +0 -5
- package/dist/ruby-Cr8IJ5VZ.js +0 -4
- package/dist/sas-CFcSfo2_.js +0 -4
- package/dist/scheme-N4XRoKgc.js +0 -4
- package/dist/shell-B4L7f_ds.js +0 -4
- package/dist/sieve-UI6J3Gm0.js +0 -4
- package/dist/smalltalk-BuaPZAZU.js +0 -4
- package/dist/sparql-1rKrq463.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-BH5ozUbc.js +0 -29
- package/dist/stex-CQDv3aS8.js +0 -4
- package/dist/stylus-DvSovJEP.js +0 -4
- package/dist/swift-D-_E7Yyb.js +0 -4
- package/dist/tcl-Di5sAVHN.js +0 -4
- package/dist/textile-Benwt66z.js +0 -4
- package/dist/toNumber-55tjPCWr.js +0 -28
- package/dist/toml-CeOvPOkY.js +0 -4
- package/dist/troff-DJN9hfgu.js +0 -4
- package/dist/ttcn-DQW2Psjf.js +0 -4
- package/dist/ttcn-cfg-zFG_MNpg.js +0 -4
- package/dist/turtle-DHRyNlSc.js +0 -4
- package/dist/vb-CXWH9DD-.js +0 -4
- package/dist/vbscript-qr8qVck5.js +0 -4
- package/dist/velocity-C_9pUJRx.js +0 -4
- package/dist/verilog-DxBstgBa.js +0 -4
- package/dist/vhdl-odUxAbE6.js +0 -4
- package/dist/webidl-Dfn5Rku4.js +0 -4
- package/dist/xquery-CrJs6SXr.js +0 -4
- package/dist/yacas-B-uDDLZe.js +0 -4
- package/dist/z80-51gxgAXE.js +0 -4
- /package/dist/{ImageComparisonComponent-HF4AY8_n.js → ImageComparisonComponent-BV1jHxOP.js} +0 -0
- /package/dist/{Plot-CK0oVgQL.js → Plot-DsEy3ro_.js} +0 -0
- /package/dist/{apl-Oc3bL26_.js → apl-BqjtmlWW.js} +0 -0
- /package/dist/{array-ByIS7m3B.js → array-D7wW5QoO.js} +0 -0
- /package/dist/{asciiarmor-DTbPh2VI.js → asciiarmor-D9C9bbeV.js} +0 -0
- /package/dist/{asn1-CGhwu1Ri.js → asn1-D_zR1ubK.js} +0 -0
- /package/dist/{asterisk-BApaB_8m.js → asterisk-B0dLLA8Z.js} +0 -0
- /package/dist/{brainfuck-CA0L8lRq.js → brainfuck-79SC7EYA.js} +0 -0
- /package/dist/{chunk-DR5Q36YT-C40cYcy5.js → chunk-DR5Q36YT-BxPcQ21t.js} +0 -0
- /package/dist/{click-outside-container-D3t6KDni.js → click-outside-container-BHqXZnKi.js} +0 -0
- /package/dist/{clike-CEtUBPHD.js → clike-DFDX2jWq.js} +0 -0
- /package/dist/{clojure-BszjvdGo.js → clojure-Bb3Od9By.js} +0 -0
- /package/dist/{cmake-B2Gvps8b.js → cmake-DYGUYEtU.js} +0 -0
- /package/dist/{cobol-DuMch8nn.js → cobol-CcWmcAFT.js} +0 -0
- /package/dist/{coffeescript-L9aKXVsJ.js → coffeescript-BVa1qoL6.js} +0 -0
- /package/dist/{colors-IJ-2cn2o.js → colors-6DRQ0kEF.js} +0 -0
- /package/dist/{common-keywords-CsU75Ked.js → common-keywords-Bz8dNfWa.js} +0 -0
- /package/dist/{commonlisp-CrtdssxB.js → commonlisp-zi51jgUH.js} +0 -0
- /package/dist/{crystal-vvNY0LpY.js → crystal-QjpegJHM.js} +0 -0
- /package/dist/{css-B1GdzqT1.js → css-B_GfJtcK.js} +0 -0
- /package/dist/{cypher-BtZvV7bW.js → cypher-BVuYJpGf.js} +0 -0
- /package/dist/{cytoscape.esm-CRfNlsPy.js → cytoscape.esm-BYAuS6uS.js} +0 -0
- /package/dist/{d-B0UN3V-Z.js → d-BT97RiQI.js} +0 -0
- /package/dist/{defaultLocale-Bxoo2-30.js → defaultLocale-B_A76Zpk.js} +0 -0
- /package/dist/{defaultLocale-qS7DaAmi.js → defaultLocale-DjFHq3Xk.js} +0 -0
- /package/dist/{diff-DOpgjj1W.js → diff-CHd93v7L.js} +0 -0
- /package/dist/{dist-BjWd_Ei9.js → dist-CqR8FBcH.js} +0 -0
- /package/dist/{dtd-Ctnjxrle.js → dtd-akLFIRuZ.js} +0 -0
- /package/dist/{duckdb-keywords-DjrZdCO2.js → duckdb-keywords-CQAIHMbC.js} +0 -0
- /package/dist/{dylan-DFXkoaZy.js → dylan-Iy-rgNOc.js} +0 -0
- /package/dist/{ebnf-XJCIl_em.js → ebnf-CTkZpZPT.js} +0 -0
- /package/dist/{ecl-C1NExZip.js → ecl-BhUXC_aR.js} +0 -0
- /package/dist/{eiffel-uXVGgleg.js → eiffel-DIRAlWPD.js} +0 -0
- /package/dist/{elm-CBOFnnib.js → elm-BDgVzkJ4.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-CJVjyntJ.js → emotion-is-prop-valid.esm-DdzHpbbG.js} +0 -0
- /package/dist/{erlang-DMnrT8XK.js → erlang-Djcs_NwB.js} +0 -0
- /package/dist/{esm-D4gzqVRq.js → esm-BRwAuUu2.js} +0 -0
- /package/dist/{fcl-fh4Mj0bc.js → fcl-OXoT8w4k.js} +0 -0
- /package/dist/{forth-DDpxS4nw.js → forth-c_NTahPv.js} +0 -0
- /package/dist/{fortran-B6uYqQMz.js → fortran-Bpxt27dn.js} +0 -0
- /package/dist/{gas-BKnWzuFz.js → gas-RVBts6ZK.js} +0 -0
- /package/dist/{gherkin-pBt0wT4X.js → gherkin-Hf6PTauh.js} +0 -0
- /package/dist/{groovy-DKsn4ppB.js → groovy-CKjO-cRi.js} +0 -0
- /package/dist/{haskell-BJVBJQcy.js → haskell-DC1Gan6v.js} +0 -0
- /package/dist/{haxe-rLN5UZU5.js → haxe-Bpne--ot.js} +0 -0
- /package/dist/{http-CbJFDV7c.js → http-CPVO27fZ.js} +0 -0
- /package/dist/{idl-B4mwMAo-.js → idl-GRIbMIEq.js} +0 -0
- /package/dist/{init-Cge3yl4r.js → init-BfRhston.js} +0 -0
- /package/dist/{invariant-e8eBgdux.js → invariant-D4hPsZFI.js} +0 -0
- /package/dist/{javascript-Hf2NLNC0.js → javascript-nS0zxWNO.js} +0 -0
- /package/dist/{julia-GGpx21YN.js → julia-CQpdTxmO.js} +0 -0
- /package/dist/{katex-CQ_cP8Uu.js → katex-Dg42UEnr.js} +0 -0
- /package/dist/{livescript-CSvXMspZ.js → livescript-D5kqrQol.js} +0 -0
- /package/dist/{lua-CVMR5LMW.js → lua-CKifrpGK.js} +0 -0
- /package/dist/{main-XimWhSi_.js → main-CvkAPtaq.js} +0 -0
- /package/dist/{math-CEWMqgbD.js → math-BbMyrONz.js} +0 -0
- /package/dist/{mathematica-JENNt-p4.js → mathematica-CxT3f_fi.js} +0 -0
- /package/dist/{mbox-mzifoc8E.js → mbox-C2_n_I9h.js} +0 -0
- /package/dist/{micromark-factory-space-BHslBP9f.js → micromark-factory-space-YUxUai1y.js} +0 -0
- /package/dist/{mirc-BXoiItvN.js → mirc-BTQeASBH.js} +0 -0
- /package/dist/{mllike-H-KR9OuH.js → mllike-BxO6Hl5N.js} +0 -0
- /package/dist/{modelica-B6Hm3mMl.js → modelica-DuivZReX.js} +0 -0
- /package/dist/{mscgen-D8TF_Hei.js → mscgen-DwD83FOm.js} +0 -0
- /package/dist/{mumps-CD-kNPt4.js → mumps-CdVjp3OE.js} +0 -0
- /package/dist/{nginx-9EZQIKsh.js → nginx-Bi9TuNqb.js} +0 -0
- /package/dist/{node-sql-parser-DIe6Cq_-.js → node-sql-parser-Bet3kHkt.js} +0 -0
- /package/dist/{ntriples-DgnpxU40.js → ntriples-DBS60qLp.js} +0 -0
- /package/dist/{octave-CkobqyVm.js → octave-BL0tQUFC.js} +0 -0
- /package/dist/{oz-ChDLd9tS.js → oz-DBrG4vwi.js} +0 -0
- /package/dist/{pascal-CvlkwK7E.js → pascal-BWV9h8yS.js} +0 -0
- /package/dist/{path-B-82hpi8.js → path-C_x2ySFi.js} +0 -0
- /package/dist/{perl-BNEFTNbM.js → perl-Bm5a83JW.js} +0 -0
- /package/dist/{pig-Cd1DMS7P.js → pig-CbJDoHaE.js} +0 -0
- /package/dist/{powershell-CPxA0zpc.js → powershell-tG44m5Cy.js} +0 -0
- /package/dist/{properties-BaFBm-Xa.js → properties-DUZGzdb1.js} +0 -0
- /package/dist/{protobuf-BQV_-X0H.js → protobuf-CcoKXY0d.js} +0 -0
- /package/dist/{puppet-LXLST0mx.js → puppet-BH73L_Gw.js} +0 -0
- /package/dist/{purify.es-hTCfRGdl.js → purify.es-ukiMXY-F.js} +0 -0
- /package/dist/{python-DLjLzX4k.js → python-NJIxLTZp.js} +0 -0
- /package/dist/{q-DswTX1Y9.js → q-MotBNA65.js} +0 -0
- /package/dist/{r-CO7NpMwE.js → r-BUgBPae7.js} +0 -0
- /package/dist/{range-BYuZFTbA.js → range-DwpxnYuB.js} +0 -0
- /package/dist/{rpm-BlmEDT6r.js → rpm-C_PaGodG.js} +0 -0
- /package/dist/{ruby-BTPKgeZZ.js → ruby-DFLM2XD8.js} +0 -0
- /package/dist/{sas-DTDTiNO8.js → sas-BMyyu8oO.js} +0 -0
- /package/dist/{scheme-UzAAg4GJ.js → scheme-Qet9zYAe.js} +0 -0
- /package/dist/{shell-DQ0hQCsB.js → shell-BKHx4Jjo.js} +0 -0
- /package/dist/{sieve-BVyYIx9u.js → sieve-CVo7dc4j.js} +0 -0
- /package/dist/{simple-mode-Dryu-fC9.js → simple-mode-CVFBIo6d.js} +0 -0
- /package/dist/{smalltalk-DAdMAHTu.js → smalltalk-BHr2nCth.js} +0 -0
- /package/dist/{solr-Bn6k51kO.js → solr-Bt9XtM2H.js} +0 -0
- /package/dist/{sparql-Bi7quYgw.js → sparql-QSu0ZCcc.js} +0 -0
- /package/dist/{spreadsheet-UpVklYg7.js → spreadsheet-BWfuwc0V.js} +0 -0
- /package/dist/{sql-qyORs189.js → sql-BdV3YOCG.js} +0 -0
- /package/dist/{stex-D887Ylhf.js → stex-Ze8D4R_5.js} +0 -0
- /package/dist/{stylus-jhpzcQ6Y.js → stylus-CLZH9-Ps.js} +0 -0
- /package/dist/{swift-BrO8qThZ.js → swift-JNDJdNIE.js} +0 -0
- /package/dist/{tcl-s5QI5gv3.js → tcl-J5aE7aj5.js} +0 -0
- /package/dist/{textile-ClhvJrxM.js → textile-6Hn05XQM.js} +0 -0
- /package/dist/{tiddlywiki-CmAAqw9M.js → tiddlywiki-BWn8rSwJ.js} +0 -0
- /package/dist/{tiki-DzCRe_s0.js → tiki-XORjA1c3.js} +0 -0
- /package/dist/{timer-BPKOAfmx.js → timer-pEiW44EO.js} +0 -0
- /package/dist/{toml-TFa3EJQE.js → toml-BceyeuiF.js} +0 -0
- /package/dist/{treemap-CmLtUuWe.js → treemap-BzS5cW_6.js} +0 -0
- /package/dist/{troff-SqLg0heF.js → troff-DeMyd5Pf.js} +0 -0
- /package/dist/{ttcn-Cfrap7HJ.js → ttcn-DurvvcB-.js} +0 -0
- /package/dist/{ttcn-cfg-Dopc-iwE.js → ttcn-cfg-BuYui6Rv.js} +0 -0
- /package/dist/{turtle-Dt52DvVH.js → turtle-CD8Qf-tp.js} +0 -0
- /package/dist/{vb-D1pAvfDe.js → vb-BklM-Nqk.js} +0 -0
- /package/dist/{vbscript-DZ7RBxn5.js → vbscript-DbMEEX0d.js} +0 -0
- /package/dist/{velocity-Csau7eZy.js → velocity-CERL-_vq.js} +0 -0
- /package/dist/{verilog-gXlZACs5.js → verilog-BD6jNce6.js} +0 -0
- /package/dist/{vhdl-NaUWbI1B.js → vhdl-U-1_N98i.js} +0 -0
- /package/dist/{webidl-BJmPjW01.js → webidl-IUn0dzoa.js} +0 -0
- /package/dist/{xquery-CJIPsC0g.js → xquery-QeeHdSO2.js} +0 -0
- /package/dist/{yacas-8f2Vjiiz.js → yacas-C9XcEPAJ.js} +0 -0
- /package/dist/{z80-s5Xk2hCP.js → z80-C-nD1oRy.js} +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
"use no memo";
|
|
3
3
|
|
|
4
|
-
import type { RowData } from "@tanstack/react-table";
|
|
4
|
+
import type { ColumnFiltersState, RowData } from "@tanstack/react-table";
|
|
5
5
|
import type { DataType } from "@/core/kernel/messages";
|
|
6
|
-
import type {
|
|
6
|
+
import type {
|
|
7
|
+
FilterConditionType,
|
|
8
|
+
FilterGroupType,
|
|
9
|
+
} from "@/plugins/impl/data-frames/schema";
|
|
7
10
|
import type { ColumnId } from "@/plugins/impl/data-frames/types";
|
|
8
11
|
import type { OperatorType } from "@/plugins/impl/data-frames/utils/operators";
|
|
9
12
|
import { assertNever } from "@/utils/assertNever";
|
|
@@ -84,28 +87,34 @@ export type ColumnFilterForType<T extends FilterType> = T extends FilterType
|
|
|
84
87
|
export function filterToFilterCondition(
|
|
85
88
|
columnIdString: string,
|
|
86
89
|
filter: ColumnFilterValue | undefined,
|
|
87
|
-
):
|
|
90
|
+
): FilterConditionType[] {
|
|
88
91
|
if (!filter) {
|
|
89
92
|
return [];
|
|
90
93
|
}
|
|
91
94
|
const columnId = columnIdString as ColumnId;
|
|
92
95
|
|
|
93
96
|
if (filter.operator === "is_null" || filter.operator === "is_not_null") {
|
|
94
|
-
return
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
column_id: columnId,
|
|
100
|
+
operator: filter.operator,
|
|
101
|
+
value: undefined,
|
|
102
|
+
type: "condition",
|
|
103
|
+
negate: false,
|
|
104
|
+
},
|
|
105
|
+
];
|
|
99
106
|
}
|
|
100
107
|
|
|
101
108
|
switch (filter.type) {
|
|
102
109
|
case "number": {
|
|
103
|
-
const conditions:
|
|
110
|
+
const conditions: FilterConditionType[] = [];
|
|
104
111
|
if (filter.min !== undefined) {
|
|
105
112
|
conditions.push({
|
|
106
113
|
column_id: columnId,
|
|
107
114
|
operator: ">=",
|
|
108
115
|
value: filter.min,
|
|
116
|
+
type: "condition",
|
|
117
|
+
negate: false,
|
|
109
118
|
});
|
|
110
119
|
}
|
|
111
120
|
if (filter.max !== undefined) {
|
|
@@ -113,23 +122,31 @@ export function filterToFilterCondition(
|
|
|
113
122
|
column_id: columnId,
|
|
114
123
|
operator: "<=",
|
|
115
124
|
value: filter.max,
|
|
125
|
+
type: "condition",
|
|
126
|
+
negate: false,
|
|
116
127
|
});
|
|
117
128
|
}
|
|
118
129
|
return conditions;
|
|
119
130
|
}
|
|
120
131
|
case "text":
|
|
121
|
-
return
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
return [
|
|
133
|
+
{
|
|
134
|
+
column_id: columnId,
|
|
135
|
+
operator: filter.operator,
|
|
136
|
+
value: filter.text,
|
|
137
|
+
type: "condition",
|
|
138
|
+
negate: false,
|
|
139
|
+
},
|
|
140
|
+
];
|
|
126
141
|
case "datetime": {
|
|
127
|
-
const conditions:
|
|
142
|
+
const conditions: FilterConditionType[] = [];
|
|
128
143
|
if (filter.min !== undefined) {
|
|
129
144
|
conditions.push({
|
|
130
145
|
column_id: columnId,
|
|
131
146
|
operator: ">=",
|
|
132
147
|
value: filter.min.toISOString(),
|
|
148
|
+
type: "condition",
|
|
149
|
+
negate: false,
|
|
133
150
|
});
|
|
134
151
|
}
|
|
135
152
|
if (filter.max !== undefined) {
|
|
@@ -137,17 +154,21 @@ export function filterToFilterCondition(
|
|
|
137
154
|
column_id: columnId,
|
|
138
155
|
operator: "<=",
|
|
139
156
|
value: filter.max.toISOString(),
|
|
157
|
+
type: "condition",
|
|
158
|
+
negate: false,
|
|
140
159
|
});
|
|
141
160
|
}
|
|
142
161
|
return conditions;
|
|
143
162
|
}
|
|
144
163
|
case "date": {
|
|
145
|
-
const conditions:
|
|
164
|
+
const conditions: FilterConditionType[] = [];
|
|
146
165
|
if (filter.min !== undefined) {
|
|
147
166
|
conditions.push({
|
|
148
167
|
column_id: columnId,
|
|
149
168
|
operator: ">=",
|
|
150
169
|
value: filter.min.toISOString(),
|
|
170
|
+
type: "condition",
|
|
171
|
+
negate: false,
|
|
151
172
|
});
|
|
152
173
|
}
|
|
153
174
|
if (filter.max !== undefined) {
|
|
@@ -155,17 +176,21 @@ export function filterToFilterCondition(
|
|
|
155
176
|
column_id: columnId,
|
|
156
177
|
operator: "<=",
|
|
157
178
|
value: filter.max.toISOString(),
|
|
179
|
+
type: "condition",
|
|
180
|
+
negate: false,
|
|
158
181
|
});
|
|
159
182
|
}
|
|
160
183
|
return conditions;
|
|
161
184
|
}
|
|
162
185
|
case "time": {
|
|
163
|
-
const conditions:
|
|
186
|
+
const conditions: FilterConditionType[] = [];
|
|
164
187
|
if (filter.min !== undefined) {
|
|
165
188
|
conditions.push({
|
|
166
189
|
column_id: columnId,
|
|
167
190
|
operator: ">=",
|
|
168
191
|
value: filter.min.toISOString(),
|
|
192
|
+
type: "condition",
|
|
193
|
+
negate: false,
|
|
169
194
|
});
|
|
170
195
|
}
|
|
171
196
|
if (filter.max !== undefined) {
|
|
@@ -173,24 +198,34 @@ export function filterToFilterCondition(
|
|
|
173
198
|
column_id: columnId,
|
|
174
199
|
operator: "<=",
|
|
175
200
|
value: filter.max.toISOString(),
|
|
201
|
+
type: "condition",
|
|
202
|
+
negate: false,
|
|
176
203
|
});
|
|
177
204
|
}
|
|
178
205
|
return conditions;
|
|
179
206
|
}
|
|
180
207
|
case "boolean":
|
|
181
208
|
if (filter.value) {
|
|
182
|
-
return
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
209
|
+
return [
|
|
210
|
+
{
|
|
211
|
+
column_id: columnId,
|
|
212
|
+
operator: "is_true",
|
|
213
|
+
value: undefined,
|
|
214
|
+
type: "condition",
|
|
215
|
+
negate: false,
|
|
216
|
+
},
|
|
217
|
+
];
|
|
187
218
|
}
|
|
188
219
|
if (!filter.value) {
|
|
189
|
-
return
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
220
|
+
return [
|
|
221
|
+
{
|
|
222
|
+
column_id: columnId,
|
|
223
|
+
operator: "is_false",
|
|
224
|
+
value: undefined,
|
|
225
|
+
type: "condition",
|
|
226
|
+
negate: false,
|
|
227
|
+
},
|
|
228
|
+
];
|
|
194
229
|
}
|
|
195
230
|
|
|
196
231
|
return [];
|
|
@@ -200,16 +235,35 @@ export function filterToFilterCondition(
|
|
|
200
235
|
Logger.warn("Invalid operator for select filter", {
|
|
201
236
|
operator: filter.operator,
|
|
202
237
|
});
|
|
203
|
-
operator = "in";
|
|
238
|
+
operator = "in";
|
|
204
239
|
}
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
240
|
+
return [
|
|
241
|
+
{
|
|
242
|
+
column_id: columnId,
|
|
243
|
+
operator,
|
|
244
|
+
value: filter.options,
|
|
245
|
+
type: "condition",
|
|
246
|
+
negate: false,
|
|
247
|
+
},
|
|
248
|
+
];
|
|
210
249
|
}
|
|
211
250
|
|
|
212
251
|
default:
|
|
213
252
|
assertNever(filter);
|
|
214
253
|
}
|
|
215
254
|
}
|
|
255
|
+
|
|
256
|
+
export function filtersToFilterGroup(
|
|
257
|
+
columnFilters: ColumnFiltersState,
|
|
258
|
+
): FilterGroupType {
|
|
259
|
+
const conditions = columnFilters.flatMap((filter) =>
|
|
260
|
+
filterToFilterCondition(filter.id, filter.value as ColumnFilterValue),
|
|
261
|
+
);
|
|
262
|
+
// To maintain existing behavior "and" all the conditions
|
|
263
|
+
return {
|
|
264
|
+
type: "group",
|
|
265
|
+
operator: "and",
|
|
266
|
+
children: conditions,
|
|
267
|
+
negate: false,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use no memo";
|
|
3
3
|
|
|
4
4
|
import type { Table } from "@tanstack/react-table";
|
|
5
|
-
import {
|
|
5
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
6
6
|
import {
|
|
7
7
|
ChevronDown,
|
|
8
8
|
ChevronLeft,
|
|
@@ -37,9 +37,6 @@ import { cn } from "@/utils/cn";
|
|
|
37
37
|
import { Events } from "@/utils/events";
|
|
38
38
|
import { prettyNumber } from "@/utils/numbers";
|
|
39
39
|
import { PluralWord } from "@/utils/pluralize";
|
|
40
|
-
import type { PageRange } from "./types";
|
|
41
|
-
|
|
42
|
-
const MAX_PAGES_BEFORE_CLAMPING = 100;
|
|
43
40
|
|
|
44
41
|
interface DataTablePaginationProps<TData> {
|
|
45
42
|
table: Table<TData>;
|
|
@@ -189,6 +186,81 @@ export const DataTablePagination = <TData,>({
|
|
|
189
186
|
);
|
|
190
187
|
};
|
|
191
188
|
|
|
189
|
+
const PAGE_ITEM_HEIGHT = 32;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Compute contiguous ranges of page numbers whose string starts with `prefix`,
|
|
193
|
+
* without scanning every page. O(log10(totalPages)).
|
|
194
|
+
*
|
|
195
|
+
* For prefix "5", totalPages=500: [[5,5], [50,59], [500,500]]
|
|
196
|
+
*/
|
|
197
|
+
export function matchingPageRanges(
|
|
198
|
+
prefix: string,
|
|
199
|
+
totalPages: number,
|
|
200
|
+
): [number, number][] {
|
|
201
|
+
const n = Number.parseInt(prefix, 10);
|
|
202
|
+
if (Number.isNaN(n) || n <= 0 || String(n) !== prefix) {
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
const ranges: [number, number][] = [];
|
|
207
|
+
let power = 1;
|
|
208
|
+
while (n * power <= totalPages) {
|
|
209
|
+
const start = n * power;
|
|
210
|
+
const end = Math.min((n + 1) * power - 1, totalPages);
|
|
211
|
+
ranges.push([start, end]);
|
|
212
|
+
power *= 10;
|
|
213
|
+
}
|
|
214
|
+
return ranges;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
interface PageMapping {
|
|
218
|
+
count: number;
|
|
219
|
+
pageAtIndex: (index: number) => number;
|
|
220
|
+
indexOfPage: (page: number) => number;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function createPageMapping(search: string, totalPages: number): PageMapping {
|
|
224
|
+
if (search === "") {
|
|
225
|
+
return {
|
|
226
|
+
count: totalPages,
|
|
227
|
+
pageAtIndex: (i) => i + 1,
|
|
228
|
+
indexOfPage: (p) => p - 1,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const ranges = matchingPageRanges(search, totalPages);
|
|
233
|
+
let count = 0;
|
|
234
|
+
for (const [s, e] of ranges) {
|
|
235
|
+
count += e - s + 1;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return {
|
|
239
|
+
count,
|
|
240
|
+
pageAtIndex: (i) => {
|
|
241
|
+
let offset = 0;
|
|
242
|
+
for (const [start, end] of ranges) {
|
|
243
|
+
const size = end - start + 1;
|
|
244
|
+
if (i < offset + size) {
|
|
245
|
+
return start + (i - offset);
|
|
246
|
+
}
|
|
247
|
+
offset += size;
|
|
248
|
+
}
|
|
249
|
+
return -1;
|
|
250
|
+
},
|
|
251
|
+
indexOfPage: (p) => {
|
|
252
|
+
let offset = 0;
|
|
253
|
+
for (const [start, end] of ranges) {
|
|
254
|
+
if (p >= start && p <= end) {
|
|
255
|
+
return offset + (p - start);
|
|
256
|
+
}
|
|
257
|
+
offset += end - start + 1;
|
|
258
|
+
}
|
|
259
|
+
return -1;
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
|
|
192
264
|
export const PageSelector = ({
|
|
193
265
|
currentPage,
|
|
194
266
|
totalPages,
|
|
@@ -199,19 +271,31 @@ export const PageSelector = ({
|
|
|
199
271
|
onPageChange: (page: number) => void;
|
|
200
272
|
}) => {
|
|
201
273
|
const [open, setOpen] = React.useState(false);
|
|
274
|
+
const [search, setSearch] = React.useState("");
|
|
202
275
|
|
|
203
|
-
const
|
|
204
|
-
() =>
|
|
205
|
-
[
|
|
276
|
+
const mapping = React.useMemo(
|
|
277
|
+
() => createPageMapping(search, totalPages),
|
|
278
|
+
[search, totalPages],
|
|
206
279
|
);
|
|
207
280
|
|
|
208
281
|
const handleSelect = (page: number) => {
|
|
209
282
|
onPageChange(page - 1);
|
|
283
|
+
setSearch("");
|
|
210
284
|
setOpen(false);
|
|
211
285
|
};
|
|
212
286
|
|
|
287
|
+
const listHeight = Math.min(mapping.count * PAGE_ITEM_HEIGHT, 240);
|
|
288
|
+
|
|
213
289
|
return (
|
|
214
|
-
<Popover
|
|
290
|
+
<Popover
|
|
291
|
+
open={totalPages > 1 ? open : false}
|
|
292
|
+
onOpenChange={(next) => {
|
|
293
|
+
setOpen(next);
|
|
294
|
+
if (!next) {
|
|
295
|
+
setSearch("");
|
|
296
|
+
}
|
|
297
|
+
}}
|
|
298
|
+
>
|
|
215
299
|
<PopoverTrigger asChild={true} disabled={totalPages <= 1}>
|
|
216
300
|
<button
|
|
217
301
|
type="button"
|
|
@@ -229,18 +313,15 @@ export const PageSelector = ({
|
|
|
229
313
|
</button>
|
|
230
314
|
</PopoverTrigger>
|
|
231
315
|
<PopoverContent className="w-36 p-0" align="center" sideOffset={6}>
|
|
232
|
-
<Command
|
|
233
|
-
shouldFilter={true}
|
|
234
|
-
filter={(value, search) => {
|
|
235
|
-
return value.startsWith(search) ? 1 : 0;
|
|
236
|
-
}}
|
|
237
|
-
>
|
|
316
|
+
<Command shouldFilter={false} value={String(currentPage)}>
|
|
238
317
|
<CommandInput
|
|
239
318
|
placeholder={`Page (1–${totalPages})`}
|
|
240
319
|
rootClassName="px-2 h-8"
|
|
241
320
|
className="text-xs h-8"
|
|
242
321
|
autoFocus={true}
|
|
243
322
|
icon={null}
|
|
323
|
+
value={search}
|
|
324
|
+
onValueChange={setSearch}
|
|
244
325
|
onKeyDown={(e) => {
|
|
245
326
|
// Allow navigation/editing keys, block non-numeric input
|
|
246
327
|
const allowed = [
|
|
@@ -248,6 +329,8 @@ export const PageSelector = ({
|
|
|
248
329
|
"Delete",
|
|
249
330
|
"ArrowLeft",
|
|
250
331
|
"ArrowRight",
|
|
332
|
+
"ArrowUp",
|
|
333
|
+
"ArrowDown",
|
|
251
334
|
"Tab",
|
|
252
335
|
"Enter",
|
|
253
336
|
"Escape",
|
|
@@ -257,27 +340,19 @@ export const PageSelector = ({
|
|
|
257
340
|
}
|
|
258
341
|
}}
|
|
259
342
|
/>
|
|
260
|
-
<CommandList className="max-h-60">
|
|
261
|
-
{
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
onMouseDown={Events.preventFocus}
|
|
273
|
-
>
|
|
274
|
-
{item.page}
|
|
275
|
-
</CommandItem>
|
|
276
|
-
),
|
|
343
|
+
<CommandList className="max-h-60 overflow-hidden">
|
|
344
|
+
{mapping.count === 0 ? (
|
|
345
|
+
<CommandEmpty className="py-2 text-center text-xs text-muted-foreground">
|
|
346
|
+
No matching page
|
|
347
|
+
</CommandEmpty>
|
|
348
|
+
) : (
|
|
349
|
+
<VirtualizedPageList
|
|
350
|
+
mapping={mapping}
|
|
351
|
+
currentPage={currentPage}
|
|
352
|
+
listHeight={listHeight}
|
|
353
|
+
onSelect={handleSelect}
|
|
354
|
+
/>
|
|
277
355
|
)}
|
|
278
|
-
<CommandEmpty className="py-2 text-center text-xs text-muted-foreground">
|
|
279
|
-
No matching page
|
|
280
|
-
</CommandEmpty>
|
|
281
356
|
</CommandList>
|
|
282
357
|
</Command>
|
|
283
358
|
</PopoverContent>
|
|
@@ -285,57 +360,95 @@ export const PageSelector = ({
|
|
|
285
360
|
);
|
|
286
361
|
};
|
|
287
362
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const
|
|
300
|
-
for (let i = 0; i < count; i++) {
|
|
301
|
-
items.push({ type: "page", page: start + i });
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
addPages(1, 10);
|
|
306
|
-
items.push({ type: "ellipsis", key: "e1" });
|
|
307
|
-
|
|
308
|
-
if (currentPage > 10 && currentPage <= middle - 5) {
|
|
309
|
-
items.push(
|
|
310
|
-
{ type: "page", page: currentPage },
|
|
311
|
-
{ type: "ellipsis", key: "e1b" },
|
|
312
|
-
);
|
|
313
|
-
}
|
|
363
|
+
const VirtualizedPageList = ({
|
|
364
|
+
mapping,
|
|
365
|
+
currentPage,
|
|
366
|
+
listHeight,
|
|
367
|
+
onSelect,
|
|
368
|
+
}: {
|
|
369
|
+
mapping: PageMapping;
|
|
370
|
+
currentPage: number;
|
|
371
|
+
listHeight: number;
|
|
372
|
+
onSelect: (page: number) => void;
|
|
373
|
+
}) => {
|
|
374
|
+
const parentRef = React.useRef<HTMLDivElement>(null);
|
|
314
375
|
|
|
315
|
-
|
|
316
|
-
items.push({ type: "ellipsis", key: "e2" });
|
|
376
|
+
const currentIndex = mapping.indexOfPage(currentPage);
|
|
317
377
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
378
|
+
const virtualizer = useVirtualizer({
|
|
379
|
+
count: mapping.count,
|
|
380
|
+
getScrollElement: () => parentRef.current,
|
|
381
|
+
estimateSize: () => PAGE_ITEM_HEIGHT,
|
|
382
|
+
overscan: 10,
|
|
383
|
+
initialOffset:
|
|
384
|
+
currentIndex > 0
|
|
385
|
+
? Math.max(0, currentIndex * PAGE_ITEM_HEIGHT - listHeight / 2)
|
|
386
|
+
: 0,
|
|
387
|
+
});
|
|
324
388
|
|
|
325
|
-
|
|
389
|
+
// Scroll to top when filtered results change (user is searching)
|
|
390
|
+
const prevCount = React.useRef(mapping.count);
|
|
391
|
+
React.useEffect(() => {
|
|
392
|
+
if (mapping.count !== prevCount.current) {
|
|
393
|
+
virtualizer.scrollToIndex(0);
|
|
394
|
+
prevCount.current = mapping.count;
|
|
395
|
+
}
|
|
396
|
+
}, [mapping.count, virtualizer]);
|
|
326
397
|
|
|
327
|
-
return
|
|
328
|
-
}
|
|
398
|
+
return (
|
|
399
|
+
<div ref={parentRef} style={{ height: listHeight, overflow: "auto" }}>
|
|
400
|
+
<div
|
|
401
|
+
style={{
|
|
402
|
+
height: virtualizer.getTotalSize(),
|
|
403
|
+
width: "100%",
|
|
404
|
+
position: "relative",
|
|
405
|
+
}}
|
|
406
|
+
>
|
|
407
|
+
{virtualizer.getVirtualItems().map((virtualItem) => {
|
|
408
|
+
const page = mapping.pageAtIndex(virtualItem.index);
|
|
409
|
+
return (
|
|
410
|
+
<CommandItem
|
|
411
|
+
key={page}
|
|
412
|
+
value={String(page)}
|
|
413
|
+
data-testid="page-option"
|
|
414
|
+
aria-selected={page === currentPage}
|
|
415
|
+
className={cn(
|
|
416
|
+
"text-xs cursor-pointer",
|
|
417
|
+
page === currentPage && "font-semibold bg-accent",
|
|
418
|
+
)}
|
|
419
|
+
style={{
|
|
420
|
+
position: "absolute",
|
|
421
|
+
top: 0,
|
|
422
|
+
left: 0,
|
|
423
|
+
width: "100%",
|
|
424
|
+
height: virtualItem.size,
|
|
425
|
+
transform: `translateY(${virtualItem.start}px)`,
|
|
426
|
+
}}
|
|
427
|
+
onSelect={() => onSelect(page)}
|
|
428
|
+
onMouseDown={Events.preventFocus}
|
|
429
|
+
>
|
|
430
|
+
{page}
|
|
431
|
+
</CommandItem>
|
|
432
|
+
);
|
|
433
|
+
})}
|
|
434
|
+
</div>
|
|
435
|
+
</div>
|
|
436
|
+
);
|
|
437
|
+
};
|
|
329
438
|
|
|
330
439
|
export function prettifyRowCount(rowCount: number, locale: string): string {
|
|
331
440
|
return `${prettyNumber(rowCount, locale)} ${new PluralWord("row").pluralize(rowCount)}`;
|
|
332
441
|
}
|
|
333
442
|
|
|
334
|
-
export const prettifyRowColumnCount = (
|
|
335
|
-
numRows
|
|
336
|
-
totalColumns
|
|
337
|
-
locale
|
|
338
|
-
|
|
443
|
+
export const prettifyRowColumnCount = ({
|
|
444
|
+
numRows,
|
|
445
|
+
totalColumns,
|
|
446
|
+
locale,
|
|
447
|
+
}: {
|
|
448
|
+
numRows: number | "too_many";
|
|
449
|
+
totalColumns: number;
|
|
450
|
+
locale: string;
|
|
451
|
+
}): string => {
|
|
339
452
|
const rowsLabel =
|
|
340
453
|
numRows === "too_many" ? "Unknown" : prettifyRowCount(numRows, locale);
|
|
341
454
|
const columnsLabel = `${prettyNumber(totalColumns, locale)} ${new PluralWord("column").pluralize(totalColumns)}`;
|
|
@@ -105,7 +105,3 @@ export function extractTimezone(dtype: string | undefined): string | undefined {
|
|
|
105
105
|
const match = /^datetime(?:64)?\[[^,]+,([^,]+)]$/.exec(dtype);
|
|
106
106
|
return match?.[1]?.trim();
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
export type PageRange =
|
|
110
|
-
| { type: "page"; page: number }
|
|
111
|
-
| { type: "ellipsis"; key: string };
|
|
@@ -263,7 +263,7 @@ const MimeBundleOutputRenderer: React.FC<{
|
|
|
263
263
|
const { mode } = useAtomValue(viewStateAtom);
|
|
264
264
|
const appView = mode === "present" || mode === "read";
|
|
265
265
|
|
|
266
|
-
// Extract metadata if present (e.g.,
|
|
266
|
+
// Extract metadata if present (e.g., to maintain a constant display size regardless of DPI/PPI)
|
|
267
267
|
const metadata = mimebundle[METADATA_KEY];
|
|
268
268
|
|
|
269
269
|
// Filter out metadata from the mime entries and type narrow
|
|
@@ -381,6 +381,18 @@ export function useNotebookActions() {
|
|
|
381
381
|
});
|
|
382
382
|
},
|
|
383
383
|
},
|
|
384
|
+
{
|
|
385
|
+
icon: <MarimoPlusIcon size={14} strokeWidth={1.5} />,
|
|
386
|
+
label: "Create molab notebook",
|
|
387
|
+
handle: async () => {
|
|
388
|
+
const code = await readCode();
|
|
389
|
+
const url = createShareableLink({
|
|
390
|
+
code: code.contents,
|
|
391
|
+
baseUrl: `${Constants.molab}/new`,
|
|
392
|
+
});
|
|
393
|
+
window.open(url, "_blank");
|
|
394
|
+
},
|
|
395
|
+
},
|
|
384
396
|
],
|
|
385
397
|
},
|
|
386
398
|
|
|
@@ -305,4 +305,46 @@ describe("applyTransactionChanges edge cases", () => {
|
|
|
305
305
|
"
|
|
306
306
|
`);
|
|
307
307
|
});
|
|
308
|
+
|
|
309
|
+
it("set-code updates the mounted editor view's document", () => {
|
|
310
|
+
// Existing tests only check cellData.code — this covers the editor
|
|
311
|
+
// view side, so regressions in the reducer's imperative sync (or in
|
|
312
|
+
// the CellEditor useEffect that backs it up) don't go unnoticed.
|
|
313
|
+
setup('x = "BEFORE"');
|
|
314
|
+
const [a] = state.cellIds.inOrderIds;
|
|
315
|
+
const editorView = state.cellHandles[a].current?.editorViewOrNull;
|
|
316
|
+
expect(editorView?.state.doc.toString()).toBe('x = "BEFORE"');
|
|
317
|
+
|
|
318
|
+
apply([{ type: "set-code", cellId: a, code: 'x = "AFTER"' }]);
|
|
319
|
+
|
|
320
|
+
expect(state.cellData[a].code).toBe('x = "AFTER"');
|
|
321
|
+
expect(editorView?.state.doc.toString()).toBe('x = "AFTER"');
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
it("create-cell then set-code on same cell updates editor", () => {
|
|
325
|
+
// Mirrors the code_mode flow that exposed marimo-pair#27: create_cell
|
|
326
|
+
// in one batch, edit_cell in a second batch, each arriving as a
|
|
327
|
+
// separate transaction.
|
|
328
|
+
setup();
|
|
329
|
+
apply([
|
|
330
|
+
{
|
|
331
|
+
type: "create-cell",
|
|
332
|
+
cellId: cellId("repro"),
|
|
333
|
+
code: 'x = "BEFORE"',
|
|
334
|
+
name: "repro_bug",
|
|
335
|
+
config: {},
|
|
336
|
+
},
|
|
337
|
+
]);
|
|
338
|
+
const editorView =
|
|
339
|
+
state.cellHandles[cellId("repro")].current?.editorViewOrNull;
|
|
340
|
+
expect(editorView?.state.doc.toString()).toBe('x = "BEFORE"');
|
|
341
|
+
|
|
342
|
+
apply([
|
|
343
|
+
{ type: "set-code", cellId: cellId("repro"), code: 'x = "AFTER"' },
|
|
344
|
+
{ type: "reorder-cells", cellIds: [cellId("repro")] },
|
|
345
|
+
]);
|
|
346
|
+
|
|
347
|
+
expect(state.cellData[cellId("repro")].code).toBe('x = "AFTER"');
|
|
348
|
+
expect(editorView?.state.doc.toString()).toBe('x = "AFTER"');
|
|
349
|
+
});
|
|
308
350
|
});
|