@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.
Files changed (509) hide show
  1. package/dist/{ConnectedDataExplorerComponent-P92i6wYx.js → ConnectedDataExplorerComponent-DShCAU06.js} +11 -11
  2. package/dist/{isArrayLikeObject-LXbTYiBa.js → _baseFor-6rr1p10t.js} +43 -215
  3. package/dist/_baseUniq-LxrBY6QK.js +380 -0
  4. package/dist/{any-language-editor-BCvLfvzI.js → any-language-editor-CtNfsWJh.js} +17 -17
  5. package/dist/apl-Y7yFAg6_.js +4 -0
  6. package/dist/{arc-DLJpPF9M.js → arc-CEWBr4jc.js} +2 -2
  7. package/dist/architecture-7HQA4BMR-CATq-AgL.js +6 -0
  8. package/dist/{architectureDiagram-VXUJARFQ-B3YQo9At.js → architectureDiagram-VXUJARFQ-DqqZsWn9.js} +19 -19
  9. package/dist/{arrays-beUWo8RF.js → arrays-Du-jRBAy.js} +1 -1
  10. package/dist/asciiarmor-Bl8b2p0w.js +4 -0
  11. package/dist/asn1-BF6cywqm.js +4 -0
  12. package/dist/{blockDiagram-VD42YOAC-CpQ3TKEN.js → blockDiagram-VD42YOAC-46RbsmrR.js} +53 -53
  13. package/dist/brainfuck-BuqydWe3.js +4 -0
  14. package/dist/{c4Diagram-YG6GDRKO-CZSU4uqU.js → c4Diagram-YG6GDRKO-DQhd8kxL.js} +6 -6
  15. package/dist/{capabilities-BwpUgo4S.js → capabilities-B6ae40r2.js} +1 -1
  16. package/dist/{channel-X3JKk8gE.js → channel-DR5iDSyR.js} +1 -1
  17. package/dist/{chat-ui-CNHw9Osh.js → chat-ui-CVKwVnwD.js} +18 -18
  18. package/dist/{chunk-4BX2VUAB-C2skOn1Z.js → chunk-4BX2VUAB-BChPAwlt.js} +1 -1
  19. package/dist/{chunk-4F5CHEZ2-D5mClyDv.js → chunk-4F5CHEZ2-Bt9N9Ox8.js} +1 -1
  20. package/dist/{chunk-55IACEB6-DRsSqxbU.js → chunk-55IACEB6-wWyiO7Qo.js} +1 -1
  21. package/dist/{chunk-5FQGJX7Z-VIref9gx.js → chunk-5FQGJX7Z-DDhYtPiB.js} +3 -3
  22. package/dist/{chunk-ABZYJK2D-CZYCCtLy.js → chunk-ABZYJK2D--T2L3L-f.js} +3 -3
  23. package/dist/{chunk-ATLVNIR6-DaOzLLgN.js → chunk-ATLVNIR6-CgKfvd-c.js} +2 -2
  24. package/dist/{chunk-B2363JML-Br0eA2T3.js → chunk-B2363JML-Db4oHCZ4.js} +1 -1
  25. package/dist/{chunk-B4BG7PRW-4BjV11Br.js → chunk-B4BG7PRW-J0s6wAkN.js} +7 -7
  26. package/dist/{chunk-CVBHYZKI-BXHgce-x.js → chunk-CVBHYZKI-DqdOZevv.js} +1 -1
  27. package/dist/{chunk-DI55MBZ5-DITY3EyP.js → chunk-DI55MBZ5-33PvMnN-.js} +6 -6
  28. package/dist/{chunk-EXTU4WIE-jUPSAk3i.js → chunk-EXTU4WIE-BspiJIuJ.js} +2 -2
  29. package/dist/{chunk-FMBD7UC4-BjIaI-XO.js → chunk-FMBD7UC4-WPL5C7Yr.js} +1 -1
  30. package/dist/{chunk-FRFDVMJY-DnEvEFRR.js → chunk-FRFDVMJY-DGahYT1S.js} +1 -1
  31. package/dist/{chunk-HN2XXSSU-DAhNp1ig.js → chunk-HN2XXSSU-GC9oeSst.js} +1 -1
  32. package/dist/{chunk-JA3XYJ7Z-BcPEfxk_.js → chunk-JA3XYJ7Z-DCohPV-J.js} +3 -3
  33. package/dist/{chunk-JZLCHNYA-2bnLL3xL.js → chunk-JZLCHNYA-B5kMsVU0.js} +6 -6
  34. package/dist/{chunk-MI3HLSF2-AKwFNP3m.js → chunk-MI3HLSF2-CAUClZTk.js} +1 -1
  35. package/dist/{chunk-N4CR4FBY-CpZSuGSU.js → chunk-N4CR4FBY-DJggWRjm.js} +7 -7
  36. package/dist/{chunk-PL6DKKU2-DnId6G-x.js → chunk-PL6DKKU2-CoF4omiN.js} +1 -1
  37. package/dist/{chunk-QN33PNHL-B9p5ojHB.js → chunk-QN33PNHL-B1NgkDCq.js} +2 -2
  38. package/dist/{chunk-QXUST7PY-Ch6F5Obl.js → chunk-QXUST7PY-CpxfBz2U.js} +10 -10
  39. package/dist/{chunk-QZHKN3VN-BK9tlbfw.js → chunk-QZHKN3VN-cTJMhkeY.js} +1 -1
  40. package/dist/{chunk-S3R3BYOJ-B0UOFJwq.js → chunk-S3R3BYOJ-DYg3yWKI.js} +8 -8
  41. package/dist/{chunk-SJTYNZTY-BsBZnJUj.js → chunk-SJTYNZTY-dW9OU4qd.js} +1 -1
  42. package/dist/{chunk-TCCFYFTB-Clbl-fTg.js → chunk-TCCFYFTB-vYPbT9fw.js} +1552 -345
  43. package/dist/{chunk-TQ3KTPDO-CFkSQ30e.js → chunk-TQ3KTPDO-Dykudlbk.js} +1 -1
  44. package/dist/{chunk-TZMSLE5B-D45397J2.js → chunk-TZMSLE5B-JAnY0w_r.js} +3 -3
  45. package/dist/{chunk-UMXZTB3W-D-A834Bq.js → chunk-UMXZTB3W-BVL6vS7M.js} +1 -1
  46. package/dist/classDiagram-2ON5EDUG-Be541Bqx.js +30 -0
  47. package/dist/classDiagram-v2-WZHVMYZB-CFtNZ66L.js +30 -0
  48. package/dist/{clike-B90WKs4D.js → clike-D8Yzpo0X.js} +1 -1
  49. package/dist/clojure-CAHAWK5H.js +4 -0
  50. package/dist/{clone-DZFQCtFJ.js → clone-0b7yW5QV.js} +1 -1
  51. package/dist/cmake-BogDc4GF.js +4 -0
  52. package/dist/cobol-DRnpeU4u.js +4 -0
  53. package/dist/{code-block-37QAKDTI-FQEoMOU1.js → code-block-37QAKDTI-DP_hitFg.js} +1 -1
  54. package/dist/coffeescript-9MgX7RN8.js +4 -0
  55. package/dist/commonlisp-CVz2KONN.js +4 -0
  56. package/dist/{constants-CvyfaCvs.js → constants-C2U1Bmny.js} +4 -4
  57. package/dist/{cose-bilkent-S5V4N54A-DvCk1aXi.js → cose-bilkent-S5V4N54A-CFYo67PX.js} +2 -2
  58. package/dist/crystal-td8mwLG5.js +4 -0
  59. package/dist/css-BK451dBn.js +4 -0
  60. package/dist/cypher-DuNPR6Ie.js +4 -0
  61. package/dist/d-DL6oP_-2.js +4 -0
  62. package/dist/{dagre-6UL2VRFP-OMItEBnY.js → dagre-6UL2VRFP-On1-AgLm.js} +102 -103
  63. package/dist/{dagre-QVd-lCXU.js → dagre-Bc6NAu6c.js} +105 -39
  64. package/dist/{data-grid-overlay-editor-C_sKPpLu.js → data-grid-overlay-editor-B1mPZ5v3.js} +2 -2
  65. package/dist/{diagram-PSM6KHXK-CkKbohWI.js → diagram-PSM6KHXK-B2x0d9iz.js} +22 -22
  66. package/dist/{diagram-QEK2KX5R-DjUMpVcx.js → diagram-QEK2KX5R-C6yZT5O0.js} +17 -17
  67. package/dist/{diagram-S2PKOQOG-b-c0d-wZ.js → diagram-S2PKOQOG-DDohjXNG.js} +17 -17
  68. package/dist/diff-D9CplOBj.js +4 -0
  69. package/dist/{dist-Doy0mQDg.js → dist-4BuWWZtg.js} +2 -2
  70. package/dist/{dist-DlSUOIm9.js → dist-5VO3ibto.js} +1 -1
  71. package/dist/dist-B9hNC-E9.js +5 -0
  72. package/dist/{dist-DJKubHDd.js → dist-BH67T-KO.js} +1 -1
  73. package/dist/{dist-CNF0QBLR.js → dist-BI11IEaj.js} +1 -1
  74. package/dist/dist-BK1_hXFC.js +5 -0
  75. package/dist/{dist-ej6AQKaS.js → dist-BKGmoFSu.js} +1 -1
  76. package/dist/{dist-CTwGwcQ8.js → dist-BKKbDTix.js} +2 -2
  77. package/dist/dist-BSGRbj-N.js +8 -0
  78. package/dist/{dist-VqF3W_ue.js → dist-BVdq25Pp.js} +2 -2
  79. package/dist/{dist-BvhGByxL.js → dist-BWmwgyyt.js} +4 -4
  80. package/dist/{dist-DUFd1bhm.js → dist-BmkybMad.js} +1 -1
  81. package/dist/{dist-DbnBiLNH.js → dist-Bo8Q2NZ6.js} +3 -3
  82. package/dist/{dist-DJ9F1eHs.js → dist-BrRkENbS.js} +2 -2
  83. package/dist/{dist-DFK94vuS.js → dist-C-Mi2f2L.js} +2 -2
  84. package/dist/dist-C5i3bD88.js +5 -0
  85. package/dist/dist-C9mOdSQc.js +5 -0
  86. package/dist/{dist--6TSlp8H.js → dist-CM55yvVz.js} +1 -1
  87. package/dist/{dist-CIB8w0Fl.js → dist-CWin4kuc.js} +2 -2
  88. package/dist/{dist-Ci0CXEFt.js → dist-Cf1__Ezo.js} +1 -1
  89. package/dist/{dist-CcMfr7jD.js → dist-ChYkaQZ9.js} +1 -1
  90. package/dist/{dist-CFKdzOIu.js → dist-Cil0kZOw.js} +2 -2
  91. package/dist/{dist-LhQNUe5A.js → dist-CjFd_clf.js} +3 -3
  92. package/dist/{dist-DD_cYHOl.js → dist-CtliEIOC.js} +2 -2
  93. package/dist/{dist-B43sbpd0.js → dist-CuT7pAjI.js} +3 -3
  94. package/dist/dist-DAmwszSZ.js +8 -0
  95. package/dist/dist-DGgzl61R.js +5 -0
  96. package/dist/{dist-DLafRu9s.js → dist-DH-coTYX.js} +2 -2
  97. package/dist/{dist-CxZvoNao.js → dist-DPAK3Dpl.js} +44 -31
  98. package/dist/{dist-DGNtjMZu.js → dist-DViRvB3t.js} +1 -1
  99. package/dist/{dist-m9tsXsFf.js → dist-DcB6g7XM.js} +2 -2
  100. package/dist/dist-DnGRs0FR.js +5 -0
  101. package/dist/dist-GBXFGpIo.js +8 -0
  102. package/dist/dist-H433csIN.js +8 -0
  103. package/dist/{dist-DpkJHKB8.js → dist-HNoCppvN.js} +2 -2
  104. package/dist/{dist-Bfp1XXWt.js → dist-I9ZUr7P2.js} +5 -5
  105. package/dist/dist-ItCg4aSC.js +6 -0
  106. package/dist/dist-Mi3Li5U2.js +6 -0
  107. package/dist/{dist-BrxqmS9Q.js → dist-QzlYe8XT.js} +4 -4
  108. package/dist/{dist-BjDuO5JW.js → dist-ZJ4KZJv-.js} +1 -1
  109. package/dist/dist-_-4VPi_T.js +5 -0
  110. package/dist/{dist-tGk0aZ--.js → dist-qpWXd9bI.js} +2 -2
  111. package/dist/{dist-DAfcmt-d.js → dist-rdefyFzZ.js} +2 -2
  112. package/dist/dist-tIur4wUM.js +5 -0
  113. package/dist/{dist-C4bq5Ioy.js → dist-vkjbtmSV.js} +2 -2
  114. package/dist/{dockerfile-DfXhjEUG.js → dockerfile-m9DOSpI5.js} +1 -1
  115. package/dist/dtd-Ce1c54UO.js +4 -0
  116. package/dist/dylan-B43wjIwg.js +4 -0
  117. package/dist/ecl-DK-fZmir.js +4 -0
  118. package/dist/eiffel-CNuvvPqD.js +4 -0
  119. package/dist/elm-DZEkBjgQ.js +4 -0
  120. package/dist/{erDiagram-Q2GNP2WA-CDhLaOZ1.js → erDiagram-Q2GNP2WA-C7-L36q5.js} +15 -15
  121. package/dist/erlang-Dw4PDZV_.js +4 -0
  122. package/dist/{esm-CDHI9cuO.js → esm-DGjaY9EX.js} +2 -2
  123. package/dist/{esm-CD1iby2n.js → esm-i3cb1Eej.js} +105 -105
  124. package/dist/factor-C9JRv63g.js +4 -0
  125. package/dist/{factor--4HHM8Rw.js → factor-Nva0iSXt.js} +1 -1
  126. package/dist/flatten-BOUk2Lcs.js +8 -0
  127. package/dist/{flowDiagram-NV44I4VS-BDi4O4CL.js → flowDiagram-NV44I4VS-CJW83FSj.js} +17 -17
  128. package/dist/forth-CKhoqn4e.js +4 -0
  129. package/dist/fortran-Do51bToK.js +4 -0
  130. package/dist/{ganttDiagram-JELNMOA3-BpZE6kVp.js → ganttDiagram-JELNMOA3-CwBjBQUx.js} +10 -10
  131. package/dist/gas-BZfL3Uwh.js +4 -0
  132. package/dist/gherkin-BwQh4ehw.js +4 -0
  133. package/dist/{gitGraph-G5XIXVHT-B_c6xFJv.js → gitGraph-G5XIXVHT-DTpIjETB.js} +3 -3
  134. package/dist/{gitGraphDiagram-V2S2FVAM-iQnXzbPM.js → gitGraphDiagram-V2S2FVAM-CmTxe2C4.js} +17 -17
  135. package/dist/{glide-data-editor-BFqEJGJW.js → glide-data-editor-BaAX1uv-.js} +8 -8
  136. package/dist/graphlib-DTP9cqCT.js +359 -0
  137. package/dist/groovy-CG5kCGiv.js +4 -0
  138. package/dist/{hasIn-DnfJcYpY.js → hasIn-MXhEnf0q.js} +3 -3
  139. package/dist/haskell-BKii9uTg.js +4 -0
  140. package/dist/haxe-Bsz30J8x.js +5 -0
  141. package/dist/idl-BlxgaPKj.js +4 -0
  142. package/dist/{info-VBDWY6EO-BTyzxmhr.js → info-VBDWY6EO-DcCsz2w_.js} +3 -3
  143. package/dist/infoDiagram-HS3SLOUP-Dz0ivKcB.js +30 -0
  144. package/dist/{input-CSVEkmaZ.js → input-L-W-RdiE.js} +4 -4
  145. package/dist/{isEmpty-B7FX9wKt.js → isEmpty-BkHRaD4A.js} +9 -9
  146. package/dist/{isSymbol-DCbjQG_U.js → isSymbol-DjQk-23F.js} +1 -1
  147. package/dist/javascript-SNhUvTcB.js +4 -0
  148. package/dist/{journeyDiagram-XKPGCS4Q-ClPC94aN.js → journeyDiagram-XKPGCS4Q-8XpEA5Ko.js} +7 -7
  149. package/dist/julia-CGZzaDyk.js +4 -0
  150. package/dist/{kanban-definition-3W4ZIXB7-DHEAKdZt.js → kanban-definition-3W4ZIXB7-C-sC72Q7.js} +12 -12
  151. package/dist/{katex-CkLtKXwv.js → katex-Ckd8lBne.js} +1 -1
  152. package/dist/{label-BebYlsDV.js → label-DAH3oYXB.js} +1 -1
  153. package/dist/{line-PAEmCpyD.js → line-LK_5q2B9.js} +3 -3
  154. package/dist/{linear-v57w-fIs.js → linear-CJ6ctpF3.js} +4 -4
  155. package/dist/livescript-Cj6cX-Ys.js +4 -0
  156. package/dist/{loader-ZFbGsMN1.js → loader-D9ktSJS7.js} +1 -1
  157. package/dist/lua-BcVHrD8f.js +4 -0
  158. package/dist/main.js +456 -361
  159. package/dist/mathematica-DLY8ZGoJ.js +4 -0
  160. package/dist/mbox-BNTsMWS5.js +4 -0
  161. package/dist/{memoize-CSTI9eOX.js → memoize-DxdGWSJ6.js} +1 -1
  162. package/dist/merge-BEePrO2O.js +222 -0
  163. package/dist/{mermaid-4DMBBIKO-BjtqcdX4.js → mermaid-4DMBBIKO-DRXAUrhi.js} +1 -1
  164. package/dist/{mermaid-BbhZNQeB.js → mermaid-DBH43AFh.js} +45 -45
  165. package/dist/{mermaid-parser.core-ntCgyx0x.js → mermaid-parser.core-Bn1MCv1H.js} +8 -8
  166. package/dist/{mhchem-BuY5LDSq.js → mhchem-DAXq6Zll.js} +1 -1
  167. package/dist/min-RKgAiXUl.js +38 -0
  168. package/dist/{mindmap-definition-VGOIOE7T-CxEUZZvY.js → mindmap-definition-VGOIOE7T-f-YOgrj9.js} +14 -14
  169. package/dist/mirc-oyeOBir2.js +4 -0
  170. package/dist/mllike-ByxznKQw.js +6 -0
  171. package/dist/modelica-DNLhoyD8.js +4 -0
  172. package/dist/mscgen-DkZltsli.js +6 -0
  173. package/dist/mumps-TTiQB1xv.js +4 -0
  174. package/dist/now-BUO7mCs3.js +31 -0
  175. package/dist/{nsis-B6EN9LWI.js → nsis-DgKbDAVQ.js} +1 -1
  176. package/dist/nsis-RT1O1Ph8.js +4 -0
  177. package/dist/ntriples-CxsCiZ7Z.js +4 -0
  178. package/dist/{number-overlay-editor-B02-t7Ar.js → number-overlay-editor-BbN3lvDI.js} +1 -1
  179. package/dist/octave-CkLh5tpW.js +4 -0
  180. package/dist/{once-C_TIu-kR.js → once-CZno0h-b.js} +1 -1
  181. package/dist/{ordinal-D7fa8Sey.js → ordinal-COPPjmMz.js} +1 -1
  182. package/dist/oz-yI7U9eVH.js +4 -0
  183. package/dist/{packet-DYOGHKS2-BhvnpoGi.js → packet-DYOGHKS2-BpYOwBIl.js} +3 -3
  184. package/dist/pascal-CQK8sfDe.js +4 -0
  185. package/dist/perl-BEG8-kZl.js +4 -0
  186. package/dist/pick-M816gWrv.js +43 -0
  187. package/dist/{pie-VRWISCQL-dILuA3iG.js → pie-VRWISCQL-narEdAtC.js} +3 -3
  188. package/dist/{pieDiagram-ADFJNKIX-U3LrUqAS.js → pieDiagram-ADFJNKIX-e7V1zvfH.js} +22 -22
  189. package/dist/pig-DLLCqQaR.js +4 -0
  190. package/dist/powershell-CtjMkVO_.js +4 -0
  191. package/dist/{precisionRound-CGLoV26P.js → precisionRound-Duzbr5ur.js} +1 -1
  192. package/dist/{process-output-Bekznt_B.js → process-output-BX1UfKIX.js} +2298 -2284
  193. package/dist/properties-Domeb57z.js +4 -0
  194. package/dist/protobuf-0yk85TV6.js +4 -0
  195. package/dist/pug-B-BiNkM-.js +4 -0
  196. package/dist/{pug-xrm7jQ2R.js → pug-CTpLcc1b.js} +1 -1
  197. package/dist/puppet-C0N4vevK.js +4 -0
  198. package/dist/python-BZFa8G3C.js +4 -0
  199. package/dist/q-gcj7dgJv.js +4 -0
  200. package/dist/{quadrantDiagram-AYHSOK5B-BVWuq-3R.js → quadrantDiagram-AYHSOK5B-DbJIgiah.js} +5 -5
  201. package/dist/r-DavzTuPU.js +4 -0
  202. package/dist/{radar-ZZBFDIW7-DwFrOJDj.js → radar-ZZBFDIW7-CZ6uVl9x.js} +3 -3
  203. package/dist/react-vega-BFLRzgl7.js +9 -0
  204. package/dist/{react-vega-DBwal82H.js → react-vega-Ov9UeJeF.js} +18 -18
  205. package/dist/{requirementDiagram-UZGBJVZJ-D0zpQnKC.js → requirementDiagram-UZGBJVZJ-DDTA2gwv.js} +14 -14
  206. package/dist/rpm-bPj31ya8.js +5 -0
  207. package/dist/ruby-3UzzijjE.js +4 -0
  208. package/dist/{sankeyDiagram-TZEHDZUN-CExy1joT.js → sankeyDiagram-TZEHDZUN-TOGeZF4f.js} +5 -5
  209. package/dist/sas-D9upmCP9.js +4 -0
  210. package/dist/scheme-DqWYzIFR.js +4 -0
  211. package/dist/{sequenceDiagram-WL72ISMW-D1BJxLjH.js → sequenceDiagram-WL72ISMW-XZ-vAxdG.js} +8 -8
  212. package/dist/shell-w63nkNmU.js +4 -0
  213. package/dist/sieve-Dz_ISrl6.js +4 -0
  214. package/dist/{slides-component-DLxprlqo.js → slides-component-B9NXzezL.js} +1 -1
  215. package/dist/smalltalk-BXZ14pkr.js +4 -0
  216. package/dist/sparql-Boyc0wkb.js +4 -0
  217. package/dist/{spec-3EPbPQZH.js → spec-Budha9Vn.js} +2 -2
  218. package/dist/{src-DbP20yFZ.js → src-szye8OCw.js} +1 -1
  219. package/dist/{stateDiagram-FKZM4ZOC-B1S8jGMn.js → stateDiagram-FKZM4ZOC-B72-jYlX.js} +19 -19
  220. package/dist/stateDiagram-v2-4FDKWEC3-Up7GUIPl.js +29 -0
  221. package/dist/{step-qd10PbTJ.js → step-1PmBKr2y.js} +1 -1
  222. package/dist/stex-CZyTRGVB.js +4 -0
  223. package/dist/stylus-m9L_f1X1.js +4 -0
  224. package/dist/swift-C4TGn99K.js +4 -0
  225. package/dist/tcl-D_L0cfYZ.js +4 -0
  226. package/dist/textile-BAofYdKN.js +4 -0
  227. package/dist/{time-Bdnxi22U.js → time-B8tcX_hU.js} +4 -4
  228. package/dist/{timeline-definition-IT6M3QCI-BDT9JAmn.js → timeline-definition-IT6M3QCI-CStBX2Oa.js} +4 -4
  229. package/dist/{toDate-B1AzlBoW.js → toDate-Cqrm-UC4.js} +2 -2
  230. package/dist/toml-DCDKACLL.js +4 -0
  231. package/dist/{treemap-GDKQZRPO-bx2ngsgN.js → treemap-GDKQZRPO-BxK9LkTz.js} +3 -3
  232. package/dist/troff-JHOU2VZK.js +4 -0
  233. package/dist/ttcn-Cxhng3qq.js +4 -0
  234. package/dist/ttcn-cfg-DJgUIu5n.js +4 -0
  235. package/dist/turtle-DKYkKZjV.js +4 -0
  236. package/dist/{types-pwjdK009.js → types-DEY2byth.js} +1 -1
  237. package/dist/{useAsyncData-BL98MPIy.js → useAsyncData-B1v_9k4L.js} +2 -2
  238. package/dist/{useDeepCompareMemoize-CsyOnnjc.js → useDeepCompareMemoize-ToNUMW7X.js} +3 -3
  239. package/dist/{useIframeCapabilities-CsTUYYj7.js → useIframeCapabilities-WKJHoHW-.js} +1 -1
  240. package/dist/{useLifecycle-DrGGIsgp.js → useLifecycle-DdNGMIjn.js} +1 -1
  241. package/dist/{useTheme-CzwDokKe.js → useTheme-CfzcSQtz.js} +1 -1
  242. package/dist/vb-C9rpn9hN.js +4 -0
  243. package/dist/vbscript-BQ7rxQU0.js +4 -0
  244. package/dist/{vega-component-KBJXEDZz.js → vega-component-CQ88A9vN.js} +11 -11
  245. package/dist/{vega-loader.browser-DqEcFOPD.js → vega-loader.browser-hMqVC9bf.js} +3 -3
  246. package/dist/velocity-C8WXmzLz.js +4 -0
  247. package/dist/verilog-BUXJEyEq.js +4 -0
  248. package/dist/vhdl-C18YIXfF.js +4 -0
  249. package/dist/webidl-D97EKzDx.js +4 -0
  250. package/dist/xquery-BZM6yzG2.js +4 -0
  251. package/dist/{xychartDiagram-PRI3JC2R-CuAZiqHS.js → xychartDiagram-PRI3JC2R-DCtrGSHF.js} +13 -13
  252. package/dist/yacas-CXKck-Ok.js +4 -0
  253. package/dist/z80-BbF6ykWc.js +4 -0
  254. package/package.json +2 -2
  255. package/src/components/data-table/TableBottomBar.tsx +5 -1
  256. package/src/components/data-table/__tests__/filters.test.ts +304 -0
  257. package/src/components/data-table/__tests__/pagination.test.tsx +46 -132
  258. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +1 -1
  259. package/src/components/data-table/filters.ts +87 -33
  260. package/src/components/data-table/pagination.tsx +189 -76
  261. package/src/components/data-table/types.ts +0 -4
  262. package/src/components/editor/Output.tsx +1 -1
  263. package/src/components/editor/actions/useNotebookActions.tsx +12 -0
  264. package/src/components/editor/cell/code/cell-editor.tsx +1 -0
  265. package/src/core/cells/__tests__/apply-transaction.test.ts +42 -0
  266. package/src/core/cells/__tests__/logs.test.ts +101 -0
  267. package/src/core/cells/logs.ts +9 -1
  268. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +4 -14
  269. package/src/core/codemirror/cells/extensions.ts +0 -4
  270. package/src/core/codemirror/keymaps/keymaps.ts +69 -2
  271. package/src/core/codemirror/language/languages/python.ts +9 -9
  272. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +8 -1
  273. package/src/core/codemirror/lsp/federated-lsp.ts +2 -2
  274. package/src/core/codemirror/lsp/notebook-lsp.ts +2 -2
  275. package/src/core/codemirror/lsp/utils.ts +21 -6
  276. package/src/core/constants.ts +1 -0
  277. package/src/plugins/impl/DataTablePlugin.tsx +7 -20
  278. package/src/plugins/impl/TabsPlugin.tsx +18 -12
  279. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +4 -4
  280. package/src/plugins/impl/data-frames/schema.ts +41 -9
  281. package/src/plugins/impl/data-frames/utils/operators.ts +2 -0
  282. package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +16 -0
  283. package/dist/_basePickBy-Sow3pJjS.js +0 -41
  284. package/dist/_baseUniq-C87CckHL.js +0 -518
  285. package/dist/apl-C1bki_dE.js +0 -4
  286. package/dist/architecture-7HQA4BMR-BHdkAMvZ.js +0 -6
  287. package/dist/asciiarmor-BdlkCCRr.js +0 -4
  288. package/dist/asn1-CvE30hox.js +0 -4
  289. package/dist/brainfuck-BalwWy1a.js +0 -4
  290. package/dist/classDiagram-2ON5EDUG-C8-zE3Zv.js +0 -30
  291. package/dist/classDiagram-v2-WZHVMYZB-DrmbGANl.js +0 -30
  292. package/dist/clojure-CUC2I1hM.js +0 -4
  293. package/dist/cmake-8PcMxXnB.js +0 -4
  294. package/dist/cobol-DkkkDz5v.js +0 -4
  295. package/dist/coffeescript-CCupxOZf.js +0 -4
  296. package/dist/commonlisp-DhUfGX6b.js +0 -4
  297. package/dist/crystal-DSaw6rFQ.js +0 -4
  298. package/dist/css-D4QDewkG.js +0 -4
  299. package/dist/cypher-CrYVqw_F.js +0 -4
  300. package/dist/d-Cr3H3pPx.js +0 -4
  301. package/dist/diff-ODiZJGls.js +0 -4
  302. package/dist/dist-7K5doRvB.js +0 -6
  303. package/dist/dist-B6I_A2-E.js +0 -8
  304. package/dist/dist-BEQsmaZY.js +0 -5
  305. package/dist/dist-BasY2RHp.js +0 -8
  306. package/dist/dist-Bosc00dY.js +0 -5
  307. package/dist/dist-CQMZOn-_.js +0 -8
  308. package/dist/dist-CViQhWZ8.js +0 -5
  309. package/dist/dist-Cz6rLfwY.js +0 -5
  310. package/dist/dist-D8eq8st3.js +0 -6
  311. package/dist/dist-DM1UDXdl.js +0 -5
  312. package/dist/dist-DNrtWPgS.js +0 -5
  313. package/dist/dist-V7q2qnpA.js +0 -5
  314. package/dist/dist-a5_hPgu2.js +0 -8
  315. package/dist/dist-uVyZcV1-.js +0 -5
  316. package/dist/dtd-C-t2Rk7F.js +0 -4
  317. package/dist/dylan-B4ctBLGp.js +0 -4
  318. package/dist/ecl-DqWfymni.js +0 -4
  319. package/dist/eiffel-DjBKKAr7.js +0 -4
  320. package/dist/elm--fxeC0FV.js +0 -4
  321. package/dist/erlang-CaKXCX6H.js +0 -4
  322. package/dist/factor-DlLO5EFS.js +0 -4
  323. package/dist/forth-rOO6LVj_.js +0 -4
  324. package/dist/fortran-CUg15VGR.js +0 -4
  325. package/dist/gas-BMRJspiW.js +0 -4
  326. package/dist/gherkin-DRxzijZU.js +0 -4
  327. package/dist/graphlib-BV1_gi0C.js +0 -226
  328. package/dist/groovy-BmrQ8pUP.js +0 -4
  329. package/dist/haskell-BuaYfKOz.js +0 -4
  330. package/dist/haxe-DcH9eA0a.js +0 -5
  331. package/dist/idl-DGlcm4Ls.js +0 -4
  332. package/dist/infoDiagram-HS3SLOUP-OYrX6uO3.js +0 -30
  333. package/dist/javascript-CeTk7rzr.js +0 -4
  334. package/dist/julia-BoP_q1gm.js +0 -4
  335. package/dist/livescript-B7IMN-ba.js +0 -4
  336. package/dist/lua-q1InavKb.js +0 -4
  337. package/dist/mathematica-DvR8-_EI.js +0 -4
  338. package/dist/mbox-7h5MNBS_.js +0 -4
  339. package/dist/merge-CVhG7q_o.js +0 -51
  340. package/dist/min-Ds3gG0Ff.js +0 -96
  341. package/dist/mirc-D-XM8A5c.js +0 -4
  342. package/dist/mllike-BQGkkbmf.js +0 -6
  343. package/dist/modelica-D_yRj_WU.js +0 -4
  344. package/dist/mscgen-B-rltAjp.js +0 -6
  345. package/dist/mumps-2kh8TU2b.js +0 -4
  346. package/dist/now-nrrrOr01.js +0 -7
  347. package/dist/nsis-CtusEqwb.js +0 -4
  348. package/dist/ntriples-BdAXw6zV.js +0 -4
  349. package/dist/octave-CsNFmVp5.js +0 -4
  350. package/dist/oz-odIXCrKd.js +0 -4
  351. package/dist/pascal-B9Mfk3Fo.js +0 -4
  352. package/dist/perl-C48inLcz.js +0 -4
  353. package/dist/pig-uwRtAssU.js +0 -4
  354. package/dist/powershell-CXqlca-i.js +0 -4
  355. package/dist/properties-D6Zu1rpK.js +0 -4
  356. package/dist/protobuf-BlNNWZaR.js +0 -4
  357. package/dist/pug-DytcK7bv.js +0 -4
  358. package/dist/puppet-lJ8Ok3iY.js +0 -4
  359. package/dist/python-cMaF7kUp.js +0 -4
  360. package/dist/q-Dgt2HYQh.js +0 -4
  361. package/dist/r-Bm4S4awf.js +0 -4
  362. package/dist/range-fJeId9Ri.js +0 -30
  363. package/dist/react-vega-BkjdpVsR.js +0 -9
  364. package/dist/rpm-_8LbzMVc.js +0 -5
  365. package/dist/ruby-Cr8IJ5VZ.js +0 -4
  366. package/dist/sas-CFcSfo2_.js +0 -4
  367. package/dist/scheme-N4XRoKgc.js +0 -4
  368. package/dist/shell-B4L7f_ds.js +0 -4
  369. package/dist/sieve-UI6J3Gm0.js +0 -4
  370. package/dist/smalltalk-BuaPZAZU.js +0 -4
  371. package/dist/sparql-1rKrq463.js +0 -4
  372. package/dist/stateDiagram-v2-4FDKWEC3-BH5ozUbc.js +0 -29
  373. package/dist/stex-CQDv3aS8.js +0 -4
  374. package/dist/stylus-DvSovJEP.js +0 -4
  375. package/dist/swift-D-_E7Yyb.js +0 -4
  376. package/dist/tcl-Di5sAVHN.js +0 -4
  377. package/dist/textile-Benwt66z.js +0 -4
  378. package/dist/toNumber-55tjPCWr.js +0 -28
  379. package/dist/toml-CeOvPOkY.js +0 -4
  380. package/dist/troff-DJN9hfgu.js +0 -4
  381. package/dist/ttcn-DQW2Psjf.js +0 -4
  382. package/dist/ttcn-cfg-zFG_MNpg.js +0 -4
  383. package/dist/turtle-DHRyNlSc.js +0 -4
  384. package/dist/vb-CXWH9DD-.js +0 -4
  385. package/dist/vbscript-qr8qVck5.js +0 -4
  386. package/dist/velocity-C_9pUJRx.js +0 -4
  387. package/dist/verilog-DxBstgBa.js +0 -4
  388. package/dist/vhdl-odUxAbE6.js +0 -4
  389. package/dist/webidl-Dfn5Rku4.js +0 -4
  390. package/dist/xquery-CrJs6SXr.js +0 -4
  391. package/dist/yacas-B-uDDLZe.js +0 -4
  392. package/dist/z80-51gxgAXE.js +0 -4
  393. /package/dist/{ImageComparisonComponent-HF4AY8_n.js → ImageComparisonComponent-BV1jHxOP.js} +0 -0
  394. /package/dist/{Plot-CK0oVgQL.js → Plot-DsEy3ro_.js} +0 -0
  395. /package/dist/{apl-Oc3bL26_.js → apl-BqjtmlWW.js} +0 -0
  396. /package/dist/{array-ByIS7m3B.js → array-D7wW5QoO.js} +0 -0
  397. /package/dist/{asciiarmor-DTbPh2VI.js → asciiarmor-D9C9bbeV.js} +0 -0
  398. /package/dist/{asn1-CGhwu1Ri.js → asn1-D_zR1ubK.js} +0 -0
  399. /package/dist/{asterisk-BApaB_8m.js → asterisk-B0dLLA8Z.js} +0 -0
  400. /package/dist/{brainfuck-CA0L8lRq.js → brainfuck-79SC7EYA.js} +0 -0
  401. /package/dist/{chunk-DR5Q36YT-C40cYcy5.js → chunk-DR5Q36YT-BxPcQ21t.js} +0 -0
  402. /package/dist/{click-outside-container-D3t6KDni.js → click-outside-container-BHqXZnKi.js} +0 -0
  403. /package/dist/{clike-CEtUBPHD.js → clike-DFDX2jWq.js} +0 -0
  404. /package/dist/{clojure-BszjvdGo.js → clojure-Bb3Od9By.js} +0 -0
  405. /package/dist/{cmake-B2Gvps8b.js → cmake-DYGUYEtU.js} +0 -0
  406. /package/dist/{cobol-DuMch8nn.js → cobol-CcWmcAFT.js} +0 -0
  407. /package/dist/{coffeescript-L9aKXVsJ.js → coffeescript-BVa1qoL6.js} +0 -0
  408. /package/dist/{colors-IJ-2cn2o.js → colors-6DRQ0kEF.js} +0 -0
  409. /package/dist/{common-keywords-CsU75Ked.js → common-keywords-Bz8dNfWa.js} +0 -0
  410. /package/dist/{commonlisp-CrtdssxB.js → commonlisp-zi51jgUH.js} +0 -0
  411. /package/dist/{crystal-vvNY0LpY.js → crystal-QjpegJHM.js} +0 -0
  412. /package/dist/{css-B1GdzqT1.js → css-B_GfJtcK.js} +0 -0
  413. /package/dist/{cypher-BtZvV7bW.js → cypher-BVuYJpGf.js} +0 -0
  414. /package/dist/{cytoscape.esm-CRfNlsPy.js → cytoscape.esm-BYAuS6uS.js} +0 -0
  415. /package/dist/{d-B0UN3V-Z.js → d-BT97RiQI.js} +0 -0
  416. /package/dist/{defaultLocale-Bxoo2-30.js → defaultLocale-B_A76Zpk.js} +0 -0
  417. /package/dist/{defaultLocale-qS7DaAmi.js → defaultLocale-DjFHq3Xk.js} +0 -0
  418. /package/dist/{diff-DOpgjj1W.js → diff-CHd93v7L.js} +0 -0
  419. /package/dist/{dist-BjWd_Ei9.js → dist-CqR8FBcH.js} +0 -0
  420. /package/dist/{dtd-Ctnjxrle.js → dtd-akLFIRuZ.js} +0 -0
  421. /package/dist/{duckdb-keywords-DjrZdCO2.js → duckdb-keywords-CQAIHMbC.js} +0 -0
  422. /package/dist/{dylan-DFXkoaZy.js → dylan-Iy-rgNOc.js} +0 -0
  423. /package/dist/{ebnf-XJCIl_em.js → ebnf-CTkZpZPT.js} +0 -0
  424. /package/dist/{ecl-C1NExZip.js → ecl-BhUXC_aR.js} +0 -0
  425. /package/dist/{eiffel-uXVGgleg.js → eiffel-DIRAlWPD.js} +0 -0
  426. /package/dist/{elm-CBOFnnib.js → elm-BDgVzkJ4.js} +0 -0
  427. /package/dist/{emotion-is-prop-valid.esm-CJVjyntJ.js → emotion-is-prop-valid.esm-DdzHpbbG.js} +0 -0
  428. /package/dist/{erlang-DMnrT8XK.js → erlang-Djcs_NwB.js} +0 -0
  429. /package/dist/{esm-D4gzqVRq.js → esm-BRwAuUu2.js} +0 -0
  430. /package/dist/{fcl-fh4Mj0bc.js → fcl-OXoT8w4k.js} +0 -0
  431. /package/dist/{forth-DDpxS4nw.js → forth-c_NTahPv.js} +0 -0
  432. /package/dist/{fortran-B6uYqQMz.js → fortran-Bpxt27dn.js} +0 -0
  433. /package/dist/{gas-BKnWzuFz.js → gas-RVBts6ZK.js} +0 -0
  434. /package/dist/{gherkin-pBt0wT4X.js → gherkin-Hf6PTauh.js} +0 -0
  435. /package/dist/{groovy-DKsn4ppB.js → groovy-CKjO-cRi.js} +0 -0
  436. /package/dist/{haskell-BJVBJQcy.js → haskell-DC1Gan6v.js} +0 -0
  437. /package/dist/{haxe-rLN5UZU5.js → haxe-Bpne--ot.js} +0 -0
  438. /package/dist/{http-CbJFDV7c.js → http-CPVO27fZ.js} +0 -0
  439. /package/dist/{idl-B4mwMAo-.js → idl-GRIbMIEq.js} +0 -0
  440. /package/dist/{init-Cge3yl4r.js → init-BfRhston.js} +0 -0
  441. /package/dist/{invariant-e8eBgdux.js → invariant-D4hPsZFI.js} +0 -0
  442. /package/dist/{javascript-Hf2NLNC0.js → javascript-nS0zxWNO.js} +0 -0
  443. /package/dist/{julia-GGpx21YN.js → julia-CQpdTxmO.js} +0 -0
  444. /package/dist/{katex-CQ_cP8Uu.js → katex-Dg42UEnr.js} +0 -0
  445. /package/dist/{livescript-CSvXMspZ.js → livescript-D5kqrQol.js} +0 -0
  446. /package/dist/{lua-CVMR5LMW.js → lua-CKifrpGK.js} +0 -0
  447. /package/dist/{main-XimWhSi_.js → main-CvkAPtaq.js} +0 -0
  448. /package/dist/{math-CEWMqgbD.js → math-BbMyrONz.js} +0 -0
  449. /package/dist/{mathematica-JENNt-p4.js → mathematica-CxT3f_fi.js} +0 -0
  450. /package/dist/{mbox-mzifoc8E.js → mbox-C2_n_I9h.js} +0 -0
  451. /package/dist/{micromark-factory-space-BHslBP9f.js → micromark-factory-space-YUxUai1y.js} +0 -0
  452. /package/dist/{mirc-BXoiItvN.js → mirc-BTQeASBH.js} +0 -0
  453. /package/dist/{mllike-H-KR9OuH.js → mllike-BxO6Hl5N.js} +0 -0
  454. /package/dist/{modelica-B6Hm3mMl.js → modelica-DuivZReX.js} +0 -0
  455. /package/dist/{mscgen-D8TF_Hei.js → mscgen-DwD83FOm.js} +0 -0
  456. /package/dist/{mumps-CD-kNPt4.js → mumps-CdVjp3OE.js} +0 -0
  457. /package/dist/{nginx-9EZQIKsh.js → nginx-Bi9TuNqb.js} +0 -0
  458. /package/dist/{node-sql-parser-DIe6Cq_-.js → node-sql-parser-Bet3kHkt.js} +0 -0
  459. /package/dist/{ntriples-DgnpxU40.js → ntriples-DBS60qLp.js} +0 -0
  460. /package/dist/{octave-CkobqyVm.js → octave-BL0tQUFC.js} +0 -0
  461. /package/dist/{oz-ChDLd9tS.js → oz-DBrG4vwi.js} +0 -0
  462. /package/dist/{pascal-CvlkwK7E.js → pascal-BWV9h8yS.js} +0 -0
  463. /package/dist/{path-B-82hpi8.js → path-C_x2ySFi.js} +0 -0
  464. /package/dist/{perl-BNEFTNbM.js → perl-Bm5a83JW.js} +0 -0
  465. /package/dist/{pig-Cd1DMS7P.js → pig-CbJDoHaE.js} +0 -0
  466. /package/dist/{powershell-CPxA0zpc.js → powershell-tG44m5Cy.js} +0 -0
  467. /package/dist/{properties-BaFBm-Xa.js → properties-DUZGzdb1.js} +0 -0
  468. /package/dist/{protobuf-BQV_-X0H.js → protobuf-CcoKXY0d.js} +0 -0
  469. /package/dist/{puppet-LXLST0mx.js → puppet-BH73L_Gw.js} +0 -0
  470. /package/dist/{purify.es-hTCfRGdl.js → purify.es-ukiMXY-F.js} +0 -0
  471. /package/dist/{python-DLjLzX4k.js → python-NJIxLTZp.js} +0 -0
  472. /package/dist/{q-DswTX1Y9.js → q-MotBNA65.js} +0 -0
  473. /package/dist/{r-CO7NpMwE.js → r-BUgBPae7.js} +0 -0
  474. /package/dist/{range-BYuZFTbA.js → range-DwpxnYuB.js} +0 -0
  475. /package/dist/{rpm-BlmEDT6r.js → rpm-C_PaGodG.js} +0 -0
  476. /package/dist/{ruby-BTPKgeZZ.js → ruby-DFLM2XD8.js} +0 -0
  477. /package/dist/{sas-DTDTiNO8.js → sas-BMyyu8oO.js} +0 -0
  478. /package/dist/{scheme-UzAAg4GJ.js → scheme-Qet9zYAe.js} +0 -0
  479. /package/dist/{shell-DQ0hQCsB.js → shell-BKHx4Jjo.js} +0 -0
  480. /package/dist/{sieve-BVyYIx9u.js → sieve-CVo7dc4j.js} +0 -0
  481. /package/dist/{simple-mode-Dryu-fC9.js → simple-mode-CVFBIo6d.js} +0 -0
  482. /package/dist/{smalltalk-DAdMAHTu.js → smalltalk-BHr2nCth.js} +0 -0
  483. /package/dist/{solr-Bn6k51kO.js → solr-Bt9XtM2H.js} +0 -0
  484. /package/dist/{sparql-Bi7quYgw.js → sparql-QSu0ZCcc.js} +0 -0
  485. /package/dist/{spreadsheet-UpVklYg7.js → spreadsheet-BWfuwc0V.js} +0 -0
  486. /package/dist/{sql-qyORs189.js → sql-BdV3YOCG.js} +0 -0
  487. /package/dist/{stex-D887Ylhf.js → stex-Ze8D4R_5.js} +0 -0
  488. /package/dist/{stylus-jhpzcQ6Y.js → stylus-CLZH9-Ps.js} +0 -0
  489. /package/dist/{swift-BrO8qThZ.js → swift-JNDJdNIE.js} +0 -0
  490. /package/dist/{tcl-s5QI5gv3.js → tcl-J5aE7aj5.js} +0 -0
  491. /package/dist/{textile-ClhvJrxM.js → textile-6Hn05XQM.js} +0 -0
  492. /package/dist/{tiddlywiki-CmAAqw9M.js → tiddlywiki-BWn8rSwJ.js} +0 -0
  493. /package/dist/{tiki-DzCRe_s0.js → tiki-XORjA1c3.js} +0 -0
  494. /package/dist/{timer-BPKOAfmx.js → timer-pEiW44EO.js} +0 -0
  495. /package/dist/{toml-TFa3EJQE.js → toml-BceyeuiF.js} +0 -0
  496. /package/dist/{treemap-CmLtUuWe.js → treemap-BzS5cW_6.js} +0 -0
  497. /package/dist/{troff-SqLg0heF.js → troff-DeMyd5Pf.js} +0 -0
  498. /package/dist/{ttcn-Cfrap7HJ.js → ttcn-DurvvcB-.js} +0 -0
  499. /package/dist/{ttcn-cfg-Dopc-iwE.js → ttcn-cfg-BuYui6Rv.js} +0 -0
  500. /package/dist/{turtle-Dt52DvVH.js → turtle-CD8Qf-tp.js} +0 -0
  501. /package/dist/{vb-D1pAvfDe.js → vb-BklM-Nqk.js} +0 -0
  502. /package/dist/{vbscript-DZ7RBxn5.js → vbscript-DbMEEX0d.js} +0 -0
  503. /package/dist/{velocity-Csau7eZy.js → velocity-CERL-_vq.js} +0 -0
  504. /package/dist/{verilog-gXlZACs5.js → verilog-BD6jNce6.js} +0 -0
  505. /package/dist/{vhdl-NaUWbI1B.js → vhdl-U-1_N98i.js} +0 -0
  506. /package/dist/{webidl-BJmPjW01.js → webidl-IUn0dzoa.js} +0 -0
  507. /package/dist/{xquery-CJIPsC0g.js → xquery-QeeHdSO2.js} +0 -0
  508. /package/dist/{yacas-8f2Vjiiz.js → yacas-C9XcEPAJ.js} +0 -0
  509. /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 { ConditionType } from "@/plugins/impl/data-frames/schema";
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
- ): ConditionType[] | ConditionType {
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
- column_id: columnId,
96
- operator: filter.operator,
97
- value: undefined,
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: ConditionType[] = [];
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
- column_id: columnId,
123
- operator: filter.operator,
124
- value: filter.text,
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: ConditionType[] = [];
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: ConditionType[] = [];
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: ConditionType[] = [];
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
- column_id: columnId,
184
- operator: "is_true",
185
- value: undefined,
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
- column_id: columnId,
191
- operator: "is_false",
192
- value: undefined,
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"; // default to in operator
238
+ operator = "in";
204
239
  }
205
- return {
206
- column_id: columnId,
207
- operator,
208
- value: filter.options,
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 { range } from "lodash-es";
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 pageRanges = React.useMemo(
204
- () => getPageRanges(currentPage, totalPages),
205
- [currentPage, totalPages],
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 open={totalPages > 1 ? open : false} onOpenChange={setOpen}>
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
- {pageRanges.map((item) =>
262
- item.type === "ellipsis" ? null : (
263
- <CommandItem
264
- key={item.page}
265
- value={String(item.page)}
266
- data-testid="page-option"
267
- className={cn(
268
- "text-xs cursor-pointer",
269
- item.page === currentPage && "font-semibold bg-accent",
270
- )}
271
- onSelect={() => handleSelect(item.page)}
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
- export function getPageRanges(
289
- currentPage: number,
290
- totalPages: number,
291
- ): PageRange[] {
292
- if (totalPages <= MAX_PAGES_BEFORE_CLAMPING) {
293
- return range(totalPages).map((i) => ({ type: "page", page: i + 1 }));
294
- }
295
-
296
- const middle = Math.floor(totalPages / 2);
297
-
298
- const items: PageRange[] = [];
299
- const addPages = (start: number, count: number) => {
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
- addPages(middle - 4, 10);
316
- items.push({ type: "ellipsis", key: "e2" });
376
+ const currentIndex = mapping.indexOfPage(currentPage);
317
377
 
318
- if (currentPage > middle + 5 && currentPage <= totalPages - 10) {
319
- items.push(
320
- { type: "page", page: currentPage },
321
- { type: "ellipsis", key: "e2b" },
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
- addPages(totalPages - 9, 10);
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 items;
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: number | "too_many",
336
- totalColumns: number,
337
- locale: string,
338
- ): string => {
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., for retina image rendering)
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
 
@@ -270,6 +270,7 @@ const CellEditorInternal = ({
270
270
  userConfig.language_servers,
271
271
  userConfig.display,
272
272
  userConfig.diagnostics,
273
+ userConfig.ai?.inline_tooltip,
273
274
  aiEnabled,
274
275
  theme,
275
276
  showPlaceholder,
@@ -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
  });