@marimo-team/islands 0.23.9-dev3 → 0.23.9-dev4

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 (232) hide show
  1. package/dist/{ConnectedDataExplorerComponent-2lBNiUv6.js → ConnectedDataExplorerComponent-OzrfMM5L.js} +20 -20
  2. package/dist/ErrorBoundary-rULOrC_p.js +175 -0
  3. package/dist/{ImageComparisonComponent-CNHIsPDj.js → ImageComparisonComponent-CHrI72em.js} +1 -1
  4. package/dist/{Plot-4wn-lMVn.js → Plot-CAYS29h9.js} +1 -1
  5. package/dist/{_baseUniq-CxZRxRRo.js → _baseUniq-B_2Hw7zG.js} +3 -3
  6. package/dist/{any-language-editor-VWs_7v27.js → any-language-editor-DfdpyDv_.js} +23 -23
  7. package/dist/architecture-7HQA4BMR-Kyc44TmC.js +6 -0
  8. package/dist/{architectureDiagram-VXUJARFQ-CXVJxFhH.js → architectureDiagram-VXUJARFQ-CT2SuxNw.js} +15 -15
  9. package/dist/{arrays-CldYf7p7.js → arrays-sEtDRoG4.js} +1 -1
  10. package/dist/{blockDiagram-VD42YOAC-DGDaxR8I.js → blockDiagram-VD42YOAC-Dy7hlFla.js} +7 -7
  11. package/dist/{button-Dj4BTre0.js → button-C5K9fIPF.js} +2 -2
  12. package/dist/{c4Diagram-YG6GDRKO-C2hc6ne8.js → c4Diagram-YG6GDRKO-BXlAmZ8Z.js} +4 -4
  13. package/dist/{capabilities-C9rrYCzf.js → capabilities-BceAxrAW.js} +2 -2
  14. package/dist/{channel-BBoIVUrJ.js → channel-D_PHgcig.js} +1 -1
  15. package/dist/{chat-ui-D3XBept8.js → chat-ui-BDI3FMI8.js} +29 -29
  16. package/dist/{check-BcUIXnUT.js → check-DTbrK0zt.js} +1 -1
  17. package/dist/{chunk-4F5CHEZ2-BZq7Kom7.js → chunk-4F5CHEZ2-D9nGEHV8.js} +1 -1
  18. package/dist/{chunk-5FQGJX7Z-BOg95xG5.js → chunk-5FQGJX7Z-BNjes6Yx.js} +5 -5
  19. package/dist/{chunk-ABZYJK2D-D0cLy8Bb.js → chunk-ABZYJK2D-Dz0-H2B5.js} +1 -1
  20. package/dist/{chunk-ATLVNIR6-BXsEjlHF.js → chunk-ATLVNIR6-o0Z5MZLd.js} +1 -1
  21. package/dist/{chunk-B2363JML-D9-XOau1.js → chunk-B2363JML-KEJpLGGP.js} +1 -1
  22. package/dist/{chunk-B4BG7PRW-Q1usn6T3.js → chunk-B4BG7PRW-BL98U9B4.js} +4 -4
  23. package/dist/{chunk-DI55MBZ5-D1qLYNrb.js → chunk-DI55MBZ5-Dwkn0LWm.js} +4 -4
  24. package/dist/{chunk-EXTU4WIE-BKNXdLmD.js → chunk-EXTU4WIE-9sNjmQrB.js} +1 -1
  25. package/dist/{chunk-FRFDVMJY-BSBUAX7r.js → chunk-FRFDVMJY-DzQqMWrl.js} +1 -1
  26. package/dist/{chunk-JA3XYJ7Z-D6c6cOBG.js → chunk-JA3XYJ7Z-C32Y7Epf.js} +2 -2
  27. package/dist/{chunk-JZLCHNYA-BvsPHJmL.js → chunk-JZLCHNYA-C6ftyVMN.js} +4 -4
  28. package/dist/{chunk-N4CR4FBY-8ycT-O9a.js → chunk-N4CR4FBY-DUhGZhZs.js} +5 -5
  29. package/dist/{chunk-PL6DKKU2-B0MTXvyc.js → chunk-PL6DKKU2-D7km-08O.js} +1 -1
  30. package/dist/{chunk-QN33PNHL-Bb-eUBW3.js → chunk-QN33PNHL-0K6SDYn3.js} +1 -1
  31. package/dist/{chunk-QXUST7PY-DV8yRwBd.js → chunk-QXUST7PY-DMhsRpYK.js} +5 -5
  32. package/dist/{chunk-S3R3BYOJ-mQeCz5CE.js → chunk-S3R3BYOJ-oAe3dEbO.js} +3 -3
  33. package/dist/{chunk-SJTYNZTY-CEG4F0pB.js → chunk-SJTYNZTY-BkJrPRFC.js} +1 -1
  34. package/dist/{chunk-TCCFYFTB-d3HOqL2I.js → chunk-TCCFYFTB-D58KeXnC.js} +6 -6
  35. package/dist/{chunk-TQ3KTPDO-DiCtqVSi.js → chunk-TQ3KTPDO-D_yA_wAb.js} +1 -1
  36. package/dist/{chunk-TZMSLE5B-BqW10dHe.js → chunk-TZMSLE5B-yBKS_DQU.js} +1 -1
  37. package/dist/{chunk-UMXZTB3W-97iS1iEl.js → chunk-UMXZTB3W-D7uwvNjd.js} +1 -1
  38. package/dist/{classDiagram-2ON5EDUG--Yh__LHb.js → classDiagram-2ON5EDUG-QjoAcuFE.js} +10 -10
  39. package/dist/{classDiagram-v2-WZHVMYZB-BC7X7Xtc.js → classDiagram-v2-WZHVMYZB-bUCv4gu2.js} +10 -10
  40. package/dist/{clone-BuIIsfA8.js → clone-Q4Fqwn6q.js} +1 -1
  41. package/dist/{code-block-37QAKDTI-BsGy1AOJ.js → code-block-37QAKDTI-m92Yc8pv.js} +2 -2
  42. package/dist/{code-visibility-BKxrBMod.js → code-visibility-VZebNmSs.js} +7073 -7439
  43. package/dist/{constants-D0gkYoE2.js → constants-T20xxyNf.js} +2 -2
  44. package/dist/{copy-DLf4aN7I.js → copy-BuQpJEzp.js} +2 -2
  45. package/dist/{dagre-6UL2VRFP-DRBWoQUw.js → dagre-6UL2VRFP-J0JKgwOt.js} +11 -11
  46. package/dist/{dagre-VYEPqXIV.js → dagre-By_QsQgc.js} +11 -11
  47. package/dist/{data-grid-overlay-editor-efe5ZagF.js → data-grid-overlay-editor-mfEJ5475.js} +2 -2
  48. package/dist/{diagram-PSM6KHXK-H66ATWP2.js → diagram-PSM6KHXK-DYgJuNk9.js} +18 -18
  49. package/dist/{diagram-QEK2KX5R-DItl5Wns.js → diagram-QEK2KX5R-CKdBR2sb.js} +14 -14
  50. package/dist/{diagram-S2PKOQOG-CtuW_ZuL.js → diagram-S2PKOQOG-Dpi7mo5W.js} +14 -14
  51. package/dist/dist-0Fif7jnk.js +5 -0
  52. package/dist/{dist-Dh3wkoyH.js → dist-4j4c7bjm.js} +2 -2
  53. package/dist/{dist-CDFZi-QD.js → dist-B3P2fFpz.js} +1 -1
  54. package/dist/{dist-BNyrZfqT.js → dist-B3pZ0Ab6.js} +2 -2
  55. package/dist/dist-B5h_9sHB.js +6 -0
  56. package/dist/dist-B9M6R5ye.js +5 -0
  57. package/dist/dist-BCt3tnck.js +8 -0
  58. package/dist/{dist-BrBucRXs.js → dist-BTfv03uy.js} +2 -2
  59. package/dist/dist-BUIJwMwn.js +8 -0
  60. package/dist/{dist-CYEylvZA.js → dist-BbbIBDiQ.js} +1 -1
  61. package/dist/{dist-KnujRhFL.js → dist-BcuoonNH.js} +4 -4
  62. package/dist/{dist-DJ6zJQZ4.js → dist-Bde4a2kU.js} +2 -2
  63. package/dist/{dist-t_qL7eB8.js → dist-Bfwsv11D.js} +2 -2
  64. package/dist/{dist-CNtV21T_.js → dist-BhM8gdSO.js} +4 -4
  65. package/dist/{dist-nuW5EDYT.js → dist-BotSqB48.js} +2 -2
  66. package/dist/dist-BpquMd3k.js +5 -0
  67. package/dist/dist-BzJsqYfz.js +5 -0
  68. package/dist/{dist-D029TiHd.js → dist-Bz_sYWbr.js} +2 -2
  69. package/dist/{dist-D3ZI9nhS.js → dist-C1BYNeCR.js} +4 -4
  70. package/dist/{dist-Bc5pmZIw.js → dist-C5VC_yzu.js} +1 -1
  71. package/dist/dist-CA5ELXAf.js +6 -0
  72. package/dist/dist-CLBRs6Uv.js +5 -0
  73. package/dist/{dist-Dhk6FMb0.js → dist-CLJWPTX2.js} +3 -3
  74. package/dist/{dist-C34oIrQ9.js → dist-CLUtPrdy.js} +1 -1
  75. package/dist/dist-CStVCMbq.js +5 -0
  76. package/dist/{dist-B8RaFTRF.js → dist-CUCNs1ja.js} +2 -2
  77. package/dist/dist-CZRIEY3Y.js +8 -0
  78. package/dist/{dist-UcOPnRMa.js → dist-CcXxepx6.js} +3 -3
  79. package/dist/dist-CuUHbFD0.js +5 -0
  80. package/dist/{dist-B8BjrFUE.js → dist-Cy1WxgBD.js} +5 -5
  81. package/dist/{dist-WdPUFc56.js → dist-D4CewLk6.js} +1 -1
  82. package/dist/{dist-DMZNjfX4.js → dist-DRfcqpxJ.js} +2 -2
  83. package/dist/dist-DV7Iabxb.js +8 -0
  84. package/dist/{dist-usPCDYx8.js → dist-D_bzzWBm.js} +1 -1
  85. package/dist/{dist-BvCfQQQE.js → dist-DgnE8F-r.js} +1 -1
  86. package/dist/{dist-JEhxD_cn.js → dist-DhHh0jLg.js} +1 -1
  87. package/dist/{dist-DGAfI2rB.js → dist-DqAWR3CS.js} +2 -2
  88. package/dist/{dist--sWVZwjW.js → dist-Du8WkPuU.js} +1 -1
  89. package/dist/dist-DuEeHMvL.js +5 -0
  90. package/dist/{dist-BTyJtnNg.js → dist-DxvORzUR.js} +1 -1
  91. package/dist/{dist-B507mf_I.js → dist-RqXTaiir.js} +2 -2
  92. package/dist/{dist-Yrfc6L0I.js → dist-fQ0ViXGs.js} +3 -3
  93. package/dist/{dist-B4LJpMEg.js → dist-h2c8sZvT.js} +1 -1
  94. package/dist/{dist-C2ej4eOH.js → dist-luvabDEB.js} +2 -2
  95. package/dist/{dist-B52GXZbd.js → dist-p2qyWijU.js} +2 -2
  96. package/dist/{erDiagram-Q2GNP2WA--19X2kU5.js → erDiagram-Q2GNP2WA-BU-m41EQ.js} +10 -10
  97. package/dist/{error-banner-CVkfBUT3.js → error-banner-5bz0L9hS.js} +3 -3
  98. package/dist/{esm-CWp0KQeK.js → esm-BfhQmZjp.js} +4 -4
  99. package/dist/{esm-DjNnlmpf.js → esm-Duie8iU-.js} +23 -23
  100. package/dist/{extends-vAi97cpa.js → extends-BgdxCfYu.js} +6 -6
  101. package/dist/{flatten-CzBvFdvC.js → flatten-Bbw7g6-K.js} +1 -1
  102. package/dist/{flowDiagram-NV44I4VS-DQmWlo7f.js → flowDiagram-NV44I4VS-CRoXKjGq.js} +10 -10
  103. package/dist/{formats-Dsy9kkZu.js → formats-DQ5qjo_Q.js} +4 -4
  104. package/dist/{ganttDiagram-JELNMOA3-BOGXJ8Lk.js → ganttDiagram-JELNMOA3-7mq5f9cO.js} +7 -7
  105. package/dist/{gitGraph-G5XIXVHT-DGlbae5m.js → gitGraph-G5XIXVHT-DiniR35k.js} +3 -3
  106. package/dist/{gitGraphDiagram-V2S2FVAM-DjzxfF0P.js → gitGraphDiagram-V2S2FVAM-Dfuokq6w.js} +13 -13
  107. package/dist/{glide-data-editor-DucgdjRo.js → glide-data-editor-DqRY9naW.js} +557 -557
  108. package/dist/{graphlib-CVPKjKCS.js → graphlib-Ns7y5crs.js} +5 -5
  109. package/dist/{hasIn-COs6vImh.js → hasIn-Deg7jl_j.js} +3 -3
  110. package/dist/{html-to-image-CpggM7u1.js → html-to-image-CiSinpSR.js} +109 -109
  111. package/dist/{info-VBDWY6EO-D2lvLLw5.js → info-VBDWY6EO-DVZvGhkQ.js} +3 -3
  112. package/dist/{infoDiagram-HS3SLOUP-ChNufFsP.js → infoDiagram-HS3SLOUP-CEnzWruK.js} +13 -13
  113. package/dist/{input-D4kjoQUB.js → input-CZD2z6X2.js} +70 -67
  114. package/dist/{isEmpty-Dd8mx_WL.js → isEmpty-CJJMn-QP.js} +1 -1
  115. package/dist/{isSymbol-BvIfMnn6.js → isSymbol-CoUCgMCM.js} +1 -1
  116. package/dist/{journeyDiagram-XKPGCS4Q-BO_O4Ij1.js → journeyDiagram-XKPGCS4Q-8XYSU1GI.js} +3 -3
  117. package/dist/{kanban-definition-3W4ZIXB7-CPpiiiWk.js → kanban-definition-3W4ZIXB7--9pT9z1R.js} +7 -7
  118. package/dist/{label-BLqV33b1.js → label-LWtdw5i8.js} +3 -3
  119. package/dist/{linear-2NnK4cxi.js → linear-B5-AFRiR.js} +2 -2
  120. package/dist/{loader-Dr8Qem8p.js → loader-BWLPpjKK.js} +2 -2
  121. package/dist/main.js +1141 -987
  122. package/dist/{memoize-C9ltv0Cw.js → memoize-BOtf2yFf.js} +1 -1
  123. package/dist/{merge-CHn7Yx0N.js → merge-Be1CqGnU.js} +1 -1
  124. package/dist/mermaid-4DMBBIKO-DIdL224_.js +6 -0
  125. package/dist/{mermaid-DO-Daq7u.js → mermaid-IU93XzmY.js} +44 -44
  126. package/dist/{mermaid-parser.core-DreccfmS.js → mermaid-parser.core-C3XRsazI.js} +8 -8
  127. package/dist/{min-BNz2lZfk.js → min-Dtgc8txR.js} +4 -4
  128. package/dist/{mindmap-definition-VGOIOE7T-CC1_Vl0f.js → mindmap-definition-VGOIOE7T-B-4mnfFG.js} +9 -9
  129. package/dist/{now-Sgq5m3D-.js → now-Ch98bJO_.js} +2 -2
  130. package/dist/{number-overlay-editor-CpKi64Fy.js → number-overlay-editor-D-a0qCT8.js} +1 -1
  131. package/dist/{once-rJImu7SE.js → once-DPuqGUeo.js} +1 -1
  132. package/dist/{packet-DYOGHKS2-CmWtF3uO.js → packet-DYOGHKS2-34raHOiB.js} +3 -3
  133. package/dist/{pick-CRAXxDYn.js → pick-D1Qo8s2C.js} +4 -4
  134. package/dist/{pie-VRWISCQL-B6u8vus8.js → pie-VRWISCQL-BaLlzZa3.js} +3 -3
  135. package/dist/{pieDiagram-ADFJNKIX-Di34MOFQ.js → pieDiagram-ADFJNKIX-Cr3cNpZY.js} +15 -15
  136. package/dist/{precisionRound-CnHPY_5v.js → precisionRound-Tqb4mg-H.js} +1 -1
  137. package/dist/{process-output-X8TR20AK.js → process-output-5qJjMRKh.js} +4 -4
  138. package/dist/{quadrantDiagram-AYHSOK5B-B9kVk1ny.js → quadrantDiagram-AYHSOK5B-BuNL8Q93.js} +4 -4
  139. package/dist/{radar-ZZBFDIW7-XAmXSa8s.js → radar-ZZBFDIW7-Ci7bfoZa.js} +3 -3
  140. package/dist/{react-vega-Dh6-UKKe.js → react-vega-B0sAlDTL.js} +9 -9
  141. package/dist/react-vega-B6ncY2Tp.js +9 -0
  142. package/dist/{requirementDiagram-UZGBJVZJ-BxGfGYEx.js → requirementDiagram-UZGBJVZJ-BG2lLUN1.js} +9 -9
  143. package/dist/{reveal-component-BMyi2UMr.js → reveal-component-DZtPMEoM.js} +28 -28
  144. package/dist/{sankeyDiagram-TZEHDZUN-D09PBJ-n.js → sankeyDiagram-TZEHDZUN-DMal8sps.js} +3 -3
  145. package/dist/{sequenceDiagram-WL72ISMW-t_Dpemj0.js → sequenceDiagram-WL72ISMW-DT6Tk-Eo.js} +4 -4
  146. package/dist/{spec-hVaaZsY5.js → spec-a6DaqW__.js} +4 -4
  147. package/dist/{stateDiagram-FKZM4ZOC-B18gTP_j.js → stateDiagram-FKZM4ZOC-CB_lodq3.js} +12 -12
  148. package/dist/{stateDiagram-v2-4FDKWEC3-B6e_t14A.js → stateDiagram-v2-4FDKWEC3-E0RGjKsm.js} +10 -10
  149. package/dist/stex-KfRnSHzF.js +4 -0
  150. package/dist/{strings-BiIhGaI8.js → strings-Bu3vlb6W.js} +7 -7
  151. package/dist/style.css +1 -1
  152. package/dist/{swiper-component-DlD2GU2g.js → swiper-component-B2t5sN1q.js} +3 -3
  153. package/dist/{time-C1SGcFMH.js → time-CsmIF9YZ.js} +3 -3
  154. package/dist/{timeline-definition-IT6M3QCI-DJnh1ks5.js → timeline-definition-IT6M3QCI-NfSKRvH0.js} +2 -2
  155. package/dist/{toDate-CIpC_34u.js → toDate-ZVVIBmdk.js} +5 -5
  156. package/dist/{tooltip-DRaMBu06.js → tooltip-C5FYOpQc.js} +4 -4
  157. package/dist/{treemap-GDKQZRPO-Du95DV6u.js → treemap-GDKQZRPO-Cl6OQh8D.js} +3 -3
  158. package/dist/{types-Dzuoc3LN.js → types-CVvp1fKr.js} +2 -9
  159. package/dist/{useAsyncData-C56Khv_R.js → useAsyncData-C008zUPi.js} +2 -2
  160. package/dist/{useDateFormatter-B_9k85Ex.js → useDateFormatter-BA4FCquG.js} +2 -2
  161. package/dist/{useDeepCompareMemoize-Dt98v2ua.js → useDeepCompareMemoize-BrA3_n61.js} +1 -1
  162. package/dist/{useIframeCapabilities-BkYHTrss.js → useIframeCapabilities-C4JTXTIh.js} +1 -1
  163. package/dist/{useLifecycle-BF6-z62y.js → useLifecycle-BNaoJ5a4.js} +4 -4
  164. package/dist/{useTheme-DykuNHR2.js → useTheme-7O0YWlE5.js} +3 -3
  165. package/dist/{vega-component-cSdqoAxe.js → vega-component-DJNmOdUj.js} +18 -18
  166. package/dist/{vega-loader.browser-3_z8GoFC.js → vega-loader.browser-CZ-J8Py3.js} +3 -3
  167. package/dist/{xychartDiagram-PRI3JC2R-Dk2d_bX0.js → xychartDiagram-PRI3JC2R-BvwftqMA.js} +9 -9
  168. package/dist/{zod-BWkcDORu.js → zod-CoBiJ5v4.js} +3 -3
  169. package/package.json +1 -1
  170. package/src/components/data-table/__tests__/column-header.test.tsx +110 -277
  171. package/src/components/data-table/__tests__/date-filter-inputs.test.tsx +33 -0
  172. package/src/components/data-table/__tests__/filter-pill-editor.test.tsx +75 -38
  173. package/src/components/data-table/__tests__/filter-pills.test.tsx +287 -0
  174. package/src/components/data-table/__tests__/filter-test-utils.ts +47 -0
  175. package/src/components/data-table/__tests__/filters.test.ts +5 -5
  176. package/src/components/data-table/add-filter-button.tsx +85 -0
  177. package/src/components/data-table/column-header.tsx +92 -691
  178. package/src/components/data-table/context-menu.tsx +26 -12
  179. package/src/components/data-table/data-table.tsx +89 -57
  180. package/src/components/data-table/date-filter-inputs.tsx +13 -10
  181. package/src/components/data-table/filter-by-values-picker.tsx +13 -19
  182. package/src/components/data-table/filter-editor-context.tsx +34 -0
  183. package/src/components/data-table/filter-pill-editor.tsx +152 -175
  184. package/src/components/data-table/filter-pills.tsx +190 -153
  185. package/src/components/data-table/filters/builders.ts +102 -0
  186. package/src/components/data-table/filters/defaults.ts +31 -0
  187. package/src/components/data-table/filters/format.ts +131 -0
  188. package/src/components/data-table/filters/guards.ts +51 -0
  189. package/src/components/data-table/filters/index.ts +7 -0
  190. package/src/components/data-table/filters/operators.ts +76 -0
  191. package/src/components/data-table/filters/serialize.ts +186 -0
  192. package/src/components/data-table/filters/types.ts +33 -0
  193. package/src/components/data-table/header-items.tsx +6 -83
  194. package/src/components/data-table/value-chips.tsx +52 -0
  195. package/src/components/ui/number-field.tsx +13 -1
  196. package/src/utils/dates.ts +39 -0
  197. package/dist/ErrorBoundary-D3wrPNma.js +0 -167
  198. package/dist/architecture-7HQA4BMR-CS9jOrqM.js +0 -6
  199. package/dist/dist-21ButRCu.js +0 -8
  200. package/dist/dist-B--tLnAP.js +0 -5
  201. package/dist/dist-BoHGySTM.js +0 -5
  202. package/dist/dist-ByAz19Qc.js +0 -5
  203. package/dist/dist-C1Ap5CYU.js +0 -5
  204. package/dist/dist-C93EysN4.js +0 -5
  205. package/dist/dist-CY-lVor6.js +0 -8
  206. package/dist/dist-CYDuv4bR.js +0 -8
  207. package/dist/dist-Cfo5EE2t.js +0 -6
  208. package/dist/dist-CjivSDvN.js +0 -5
  209. package/dist/dist-Cqwx-MH7.js +0 -5
  210. package/dist/dist-DbpcoFAV.js +0 -6
  211. package/dist/dist-FUNenbiQ.js +0 -5
  212. package/dist/dist-zhSud5X3.js +0 -8
  213. package/dist/mermaid-4DMBBIKO-B7VQMwJx.js +0 -6
  214. package/dist/react-vega-Cavbrg4l.js +0 -9
  215. package/dist/stex-ChDHQs3R.js +0 -4
  216. package/src/components/data-table/__tests__/column-header.test.ts +0 -65
  217. package/src/components/data-table/filters.ts +0 -386
  218. /package/dist/{_baseFor-BGiY-cm1.js → _baseFor-4jw-lnCC.js} +0 -0
  219. /package/dist/{clsx-CyyyQ8Ue.js → clsx-CIWA5tNO.js} +0 -0
  220. /package/dist/{defaultLocale-DoeErsX2.js → defaultLocale-BoHTsDG6.js} +0 -0
  221. /package/dist/{defaultLocale-BpsHxBd7.js → defaultLocale-u-3osm0P.js} +0 -0
  222. /package/dist/{dist-CCADb07R.js → dist-DNdhYsgW.js} +0 -0
  223. /package/dist/{emotion-is-prop-valid.esm-DtW2o230.js → emotion-is-prop-valid.esm-DzSb5hsH.js} +0 -0
  224. /package/dist/{invariant-UcGKQEhF.js → invariant-wRzNXIsJ.js} +0 -0
  225. /package/dist/{jsx-runtime-COBk7ree.js → jsx-runtime-DebpN0FN.js} +0 -0
  226. /package/dist/{main-CThhXnXU.js → main-Tj_-QTyF.js} +0 -0
  227. /package/dist/{micromark-factory-space-CwHmg6iz.js → micromark-factory-space-DF2w36zS.js} +0 -0
  228. /package/dist/{ordinal-B43ZeR68.js → ordinal-ArJavP1Q.js} +0 -0
  229. /package/dist/{purify.es-DT70lfR0.js → purify.es-H92eMd9-.js} +0 -0
  230. /package/dist/{range-BOiA8qqU.js → range-C-rmrM1O.js} +0 -0
  231. /package/dist/{react-dom-BWRJ_g_k.js → react-dom-BTJzcVJ9.js} +0 -0
  232. /package/dist/{stex-DrxP7bb3.js → stex-BIsgBmK4.js} +0 -0
@@ -16,7 +16,11 @@ import {
16
16
  ContextMenuTrigger,
17
17
  } from "../ui/context-menu";
18
18
  import { DATA_CELL_ID } from "./cell-utils";
19
- import { Filter } from "./filters";
19
+ import {
20
+ Filter,
21
+ isMembershipFilterType,
22
+ type MembershipFilterType,
23
+ } from "./filters";
20
24
  import { selectedCellsAtom } from "./range-focus/atoms";
21
25
  import { getClipboardContent, getRawValue } from "./utils";
22
26
 
@@ -97,15 +101,21 @@ export const CellContextMenu = <TData,>({
97
101
  };
98
102
 
99
103
  const column = cell.column;
100
- const canFilter = column.getCanFilter() && column.columnDef.meta?.filterType;
104
+ const filterType = column.columnDef.meta?.filterType;
105
+ const membershipFilterType: MembershipFilterType | undefined =
106
+ column.getCanFilter() && filterType && isMembershipFilterType(filterType)
107
+ ? filterType
108
+ : undefined;
101
109
 
102
- const handleFilterCell = (operator: "in" | "not_in") => {
103
- column.setFilterValue(
104
- Filter.select({
105
- options: [rawValue],
106
- operator,
107
- }),
108
- );
110
+ const handleFilterCell = (
111
+ type: MembershipFilterType,
112
+ operator: "in" | "not_in",
113
+ ) => {
114
+ const filter =
115
+ type === "number"
116
+ ? Filter.number({ operator, values: [rawValue] })
117
+ : Filter.text({ operator, values: [rawValue] });
118
+ column.setFilterValue(filter);
109
119
  };
110
120
 
111
121
  return (
@@ -120,14 +130,18 @@ export const CellContextMenu = <TData,>({
120
130
  Copy selected cells
121
131
  </ContextMenuItem>
122
132
  )}
123
- {canFilter && (
133
+ {membershipFilterType && (
124
134
  <>
125
135
  <ContextMenuSeparator />
126
- <ContextMenuItem onClick={() => handleFilterCell("in")}>
136
+ <ContextMenuItem
137
+ onClick={() => handleFilterCell(membershipFilterType, "in")}
138
+ >
127
139
  <FilterIcon className="mo-dropdown-icon h-3 w-3" />
128
140
  Filter by this value
129
141
  </ContextMenuItem>
130
- <ContextMenuItem onClick={() => handleFilterCell("not_in")}>
142
+ <ContextMenuItem
143
+ onClick={() => handleFilterCell(membershipFilterType, "not_in")}
144
+ >
131
145
  <FilterIcon className="mo-dropdown-icon h-3 w-3" />
132
146
  Remove rows with this value
133
147
  </ContextMenuItem>
@@ -5,6 +5,7 @@
5
5
  // https://github.com/TanStack/table/issues/5567
6
6
 
7
7
  import {
8
+ type Column,
8
9
  type ColumnDef,
9
10
  type ColumnFiltersState,
10
11
  ColumnPinning,
@@ -41,7 +42,13 @@ import { ColumnFormattingFeature } from "./column-formatting/feature";
41
42
  import { ColumnWrappingFeature } from "./column-wrapping/feature";
42
43
  import { CopyColumnFeature } from "./copy-column/feature";
43
44
  import type { ExportActionProps } from "./export-actions";
45
+ import {
46
+ type AddFilterRequest,
47
+ FilterEditorProvider,
48
+ } from "./filter-editor-context";
49
+ import { buildEditorSnapshot } from "./filter-pill-editor";
44
50
  import { FilterPills } from "./filter-pills";
51
+ import type { Snapshot } from "./filters";
45
52
  import { FocusRowFeature } from "./focus-row/feature";
46
53
  import { useColumnPinning } from "./hooks/use-column-pinning";
47
54
  import { useScrollContainerHeight } from "./hooks/use-scroll-container-height";
@@ -289,67 +296,92 @@ const DataTableInternal = <TData,>({
289
296
 
290
297
  const tableRef = useScrollContainerHeight({ maxHeight, virtualize });
291
298
 
299
+ const [addFilterSnapshot, setAddFilterSnapshot] =
300
+ React.useState<Snapshot | null>(null);
301
+
302
+ // useMemo instead of useCallback because need to pass it as object
303
+ const filterEditor = React.useMemo(
304
+ () => ({
305
+ requestAddFilter: (request: AddFilterRequest) => {
306
+ const column = table.getColumn(request.columnId);
307
+ if (!column) {
308
+ return;
309
+ }
310
+ setAddFilterSnapshot(
311
+ buildEditorSnapshot(column as Column<unknown, unknown>, {
312
+ operator: request.operator,
313
+ }),
314
+ );
315
+ },
316
+ }),
317
+ [table],
318
+ );
319
+
292
320
  return (
293
- <div className={cn(wrapperClassName, "flex flex-col space-y-1")}>
294
- <FilterPills
295
- filters={filters}
296
- table={table}
297
- calculateTopKRows={calculateTopKRows}
298
- />
299
- <CellSelectionProvider>
300
- <div
301
- part="table-wrapper"
302
- className={cn(className || "rounded-md border overflow-hidden")}
303
- >
304
- <TableTopBar
305
- enableSearch={enableSearch}
306
- searchQuery={searchQuery}
307
- onSearchQueryChange={onSearchQueryChange}
308
- reloading={reloading}
309
- showChartBuilder={showChartBuilder}
310
- isChartBuilderOpen={isChartBuilderOpen}
311
- toggleDisplayHeader={toggleDisplayHeader}
312
- showTableExplorer={showTableExplorer}
313
- togglePanel={togglePanel}
314
- isAnyPanelOpen={isAnyPanelOpen}
315
- downloadAs={downloadAs}
316
- sizeBytes={sizeBytes}
317
- />
318
- <Table
319
- className={cn(
320
- "relative",
321
- columns.length <= AUTO_WIDTH_MAX_COLUMNS ? "w-auto" : "w-full",
322
- )}
323
- ref={tableRef}
321
+ <FilterEditorProvider value={filterEditor}>
322
+ <div className={cn(wrapperClassName, "flex flex-col space-y-1")}>
323
+ <FilterPills
324
+ filters={filters}
325
+ table={table}
326
+ calculateTopKRows={calculateTopKRows}
327
+ addFilterSnapshot={addFilterSnapshot}
328
+ onAddFilterSnapshotChange={setAddFilterSnapshot}
329
+ />
330
+ <CellSelectionProvider>
331
+ <div
332
+ part="table-wrapper"
333
+ className={cn(className || "rounded-md border overflow-hidden")}
324
334
  >
325
- {showLoadingBar && (
326
- <thead className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
327
- )}
328
- {renderTableHeader(table, virtualize || Boolean(maxHeight))}
329
- <DataTableBody
335
+ <TableTopBar
336
+ enableSearch={enableSearch}
337
+ searchQuery={searchQuery}
338
+ onSearchQueryChange={onSearchQueryChange}
339
+ reloading={reloading}
340
+ showChartBuilder={showChartBuilder}
341
+ isChartBuilderOpen={isChartBuilderOpen}
342
+ toggleDisplayHeader={toggleDisplayHeader}
343
+ showTableExplorer={showTableExplorer}
344
+ togglePanel={togglePanel}
345
+ isAnyPanelOpen={isAnyPanelOpen}
346
+ downloadAs={downloadAs}
347
+ sizeBytes={sizeBytes}
348
+ />
349
+ <Table
350
+ className={cn(
351
+ "relative",
352
+ columns.length <= AUTO_WIDTH_MAX_COLUMNS ? "w-auto" : "w-full",
353
+ )}
354
+ ref={tableRef}
355
+ >
356
+ {showLoadingBar && (
357
+ <thead className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
358
+ )}
359
+ {renderTableHeader(table, virtualize || Boolean(maxHeight))}
360
+ <DataTableBody
361
+ table={table}
362
+ columns={columns}
363
+ rowViewerPanelOpen={rowViewerPanelOpen}
364
+ getRowIndex={getPaginatedRowIndex}
365
+ viewedRowIdx={viewedRowIdx}
366
+ virtualize={virtualize}
367
+ />
368
+ </Table>
369
+ <TableBottomBar
370
+ part="table-footer"
371
+ className="pt-1.5 pb-0.5 border-t border-border"
372
+ totalColumns={totalColumns}
373
+ pagination={pagination}
374
+ selection={selection}
375
+ onRowSelectionChange={onRowSelectionChange}
330
376
  table={table}
331
- columns={columns}
332
- rowViewerPanelOpen={rowViewerPanelOpen}
333
- getRowIndex={getPaginatedRowIndex}
334
- viewedRowIdx={viewedRowIdx}
335
- virtualize={virtualize}
377
+ getRowIds={getRowIds}
378
+ showPageSizeSelector={showPageSizeSelector}
379
+ tableLoading={reloading}
336
380
  />
337
- </Table>
338
- <TableBottomBar
339
- part="table-footer"
340
- className="pt-1.5 pb-0.5 border-t border-border"
341
- totalColumns={totalColumns}
342
- pagination={pagination}
343
- selection={selection}
344
- onRowSelectionChange={onRowSelectionChange}
345
- table={table}
346
- getRowIds={getRowIds}
347
- showPageSizeSelector={showPageSizeSelector}
348
- tableLoading={reloading}
349
- />
350
- </div>
351
- </CellSelectionProvider>
352
- </div>
381
+ </div>
382
+ </CellSelectionProvider>
383
+ </div>
384
+ </FilterEditorProvider>
353
385
  );
354
386
  };
355
387
 
@@ -11,11 +11,11 @@ import type { DateValue, TimeValue } from "react-aria-components";
11
11
  import { TimeField } from "@/components/ui/date-input";
12
12
  import { DatePicker, DateRangePicker } from "@/components/ui/date-picker";
13
13
  import {
14
- dateToISODate,
15
- dateToISODateTime,
16
- dateToISOTime,
17
- type FilterType,
18
- } from "./filters";
14
+ dateToLocalISODate,
15
+ dateToLocalISODateTime,
16
+ dateToLocalISOTime,
17
+ } from "@/utils/dates";
18
+ import type { FilterType } from "./filters";
19
19
 
20
20
  export type DateLikeFilterType = Extract<
21
21
  FilterType,
@@ -28,11 +28,11 @@ function dateToAria(
28
28
  ): DateValue | TimeValue {
29
29
  switch (filterType) {
30
30
  case "date":
31
- return parseDate(dateToISODate(d));
31
+ return parseDate(dateToLocalISODate(d));
32
32
  case "datetime":
33
- return parseDateTime(dateToISODateTime(d));
33
+ return parseDateTime(dateToLocalISODateTime(d));
34
34
  case "time":
35
- return parseTime(dateToISOTime(d));
35
+ return parseTime(dateToLocalISOTime(d));
36
36
  }
37
37
  }
38
38
 
@@ -128,11 +128,11 @@ export function parsePastedDate(
128
128
  return parsed;
129
129
  }
130
130
 
131
- function parsePastedRange(
131
+ export function parsePastedRange(
132
132
  filterType: DateLikeFilterType,
133
133
  text: string,
134
134
  ): { min: Date; max: Date } | undefined {
135
- const parts = text.split(/\s+(?:-|–|—|to)\s+/i);
135
+ const parts = text.split(/\s+(?:-|–|—|to|and)\s+/i);
136
136
  if (parts.length === 2) {
137
137
  const min = parsePastedDate(filterType, parts[0]);
138
138
  const max = parsePastedDate(filterType, parts[1]);
@@ -194,6 +194,7 @@ export const DateLikeInput = ({
194
194
  key={seedKey}
195
195
  aria-label={ariaLabel}
196
196
  defaultValue={seedValue as Time | undefined}
197
+ hourCycle={24}
197
198
  onChange={handleChange}
198
199
  className={className}
199
200
  />
@@ -211,6 +212,7 @@ export const DateLikeInput = ({
211
212
  aria-label={ariaLabel}
212
213
  defaultValue={seedValue as CalendarDateTime | undefined}
213
214
  granularity="second"
215
+ hourCycle={24}
214
216
  onChange={handleChange}
215
217
  className={className}
216
218
  />
@@ -316,6 +318,7 @@ export const DateLikeRangeInput = ({
316
318
  | undefined
317
319
  }
318
320
  granularity="second"
321
+ hourCycle={24}
319
322
  onChange={handleChange}
320
323
  className={className}
321
324
  />
@@ -7,7 +7,6 @@ import { useMemo, useState } from "react";
7
7
  import { useAsyncData } from "@/hooks/useAsyncData";
8
8
  import { ErrorBanner } from "@/plugins/impl/common/error-banner";
9
9
  import type { CalculateTopKRows } from "@/plugins/impl/DataTablePlugin";
10
- import { cn } from "@/utils/cn";
11
10
  import { Logger } from "@/utils/Logger";
12
11
  import { Sets } from "@/utils/sets";
13
12
  import { smartMatch } from "@/utils/smartMatch";
@@ -24,6 +23,7 @@ import {
24
23
  import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
25
24
  import { SentinelCell } from "./sentinel-cell";
26
25
  import { detectSentinel, stringifyUnknownValue } from "./utils";
26
+ import { CompactChipRow } from "./value-chips";
27
27
 
28
28
  const TOP_K_ROWS = 30;
29
29
 
@@ -42,19 +42,14 @@ export const FilterByValuesPicker = <TData, TValue>({
42
42
  onChange,
43
43
  creatable = false,
44
44
  }: Props<TData, TValue>) => {
45
- const [open, setOpen] = useState(false);
45
+ const [open, setOpen] = useState(chosenValues.length === 0);
46
46
 
47
47
  const chosenValuesSet = useMemo(() => new Set(chosenValues), [chosenValues]);
48
48
 
49
- const selectedValuesStr = useMemo(() => {
50
- if (chosenValuesSet.size === 0) {
51
- return "Select values…";
52
- }
53
- const items = [...chosenValuesSet].map((v) =>
54
- stringifyUnknownValue({ value: v }),
55
- );
56
- return `[${items.join(", ")}]`;
57
- }, [chosenValuesSet]);
49
+ const displayItems = useMemo(
50
+ () => [...chosenValuesSet].map((v) => stringifyUnknownValue({ value: v })),
51
+ [chosenValuesSet],
52
+ );
58
53
 
59
54
  return (
60
55
  <Popover open={open} onOpenChange={setOpen}>
@@ -65,14 +60,13 @@ export const FilterByValuesPicker = <TData, TValue>({
65
60
  size="xs"
66
61
  className="h-6 mb-1 w-full justify-between font-normal"
67
62
  >
68
- <span
69
- className={cn(
70
- "truncate",
71
- chosenValuesSet.size === 0 && "text-muted-foreground",
72
- )}
73
- >
74
- {selectedValuesStr}
75
- </span>
63
+ {displayItems.length === 0 ? (
64
+ <span className="truncate text-muted-foreground">
65
+ Select values…
66
+ </span>
67
+ ) : (
68
+ <CompactChipRow items={displayItems} max={3} />
69
+ )}
76
70
  <ChevronDownIcon className="h-4 w-4 opacity-50 shrink-0" />
77
71
  </Button>
78
72
  </PopoverTrigger>
@@ -0,0 +1,34 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ /**
4
+ * Lets descendants of `DataTable` (column headers, etc.) ask the table to open
5
+ * the filter pill editor for a given column. The table owns the pending
6
+ * snapshot state and renders the editor anchored under the pills strip's
7
+ * `+` button; consumers only fire intent via `requestAddFilter`.
8
+ *
9
+ * `useFilterEditor()` returns `null` outside a provider, which callers treat as
10
+ * "filter editor not available" and hide the corresponding menu items.
11
+ */
12
+
13
+ import { createContext, useContext } from "react";
14
+ import type { OperatorType } from "@/plugins/impl/data-frames/utils/operators";
15
+
16
+ export interface AddFilterRequest {
17
+ columnId: string;
18
+ /** Pre-select an operator (e.g. `"in"` for "Filter by values"); defaults to the column dtype's default. */
19
+ operator?: OperatorType;
20
+ }
21
+
22
+ interface FilterEditorContextValue {
23
+ requestAddFilter: (request: AddFilterRequest) => void;
24
+ }
25
+
26
+ const FilterEditorContext = createContext<FilterEditorContextValue | null>(
27
+ null,
28
+ );
29
+
30
+ export const FilterEditorProvider = FilterEditorContext.Provider;
31
+
32
+ export function useFilterEditor(): FilterEditorContextValue | null {
33
+ return useContext(FilterEditorContext);
34
+ }