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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/{ConnectedDataExplorerComponent-2lBNiUv6.js → ConnectedDataExplorerComponent-MJy-Ll40.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/assets/__vite-browser-external-BBEFRPue.js +1 -0
  11. package/dist/assets/{worker-CpBbwbQo.js → worker-BoAkAmaG.js} +2 -2
  12. package/dist/{blockDiagram-VD42YOAC-DGDaxR8I.js → blockDiagram-VD42YOAC-Dy7hlFla.js} +7 -7
  13. package/dist/{button-Dj4BTre0.js → button-C5K9fIPF.js} +2 -2
  14. package/dist/{c4Diagram-YG6GDRKO-C2hc6ne8.js → c4Diagram-YG6GDRKO-BXlAmZ8Z.js} +4 -4
  15. package/dist/{capabilities-C9rrYCzf.js → capabilities-BceAxrAW.js} +2 -2
  16. package/dist/{channel-BBoIVUrJ.js → channel-D_PHgcig.js} +1 -1
  17. package/dist/{chat-ui-D3XBept8.js → chat-ui-CpX2YcGy.js} +3084 -3057
  18. package/dist/{check-BcUIXnUT.js → check-DTbrK0zt.js} +1 -1
  19. package/dist/{chunk-4F5CHEZ2-BZq7Kom7.js → chunk-4F5CHEZ2-D9nGEHV8.js} +1 -1
  20. package/dist/{chunk-5FQGJX7Z-BOg95xG5.js → chunk-5FQGJX7Z-BNjes6Yx.js} +5 -5
  21. package/dist/{chunk-ABZYJK2D-D0cLy8Bb.js → chunk-ABZYJK2D-Dz0-H2B5.js} +1 -1
  22. package/dist/{chunk-ATLVNIR6-BXsEjlHF.js → chunk-ATLVNIR6-o0Z5MZLd.js} +1 -1
  23. package/dist/{chunk-B2363JML-D9-XOau1.js → chunk-B2363JML-KEJpLGGP.js} +1 -1
  24. package/dist/{chunk-B4BG7PRW-Q1usn6T3.js → chunk-B4BG7PRW-BL98U9B4.js} +4 -4
  25. package/dist/{chunk-DI55MBZ5-D1qLYNrb.js → chunk-DI55MBZ5-Dwkn0LWm.js} +4 -4
  26. package/dist/{chunk-EXTU4WIE-BKNXdLmD.js → chunk-EXTU4WIE-9sNjmQrB.js} +1 -1
  27. package/dist/{chunk-FRFDVMJY-BSBUAX7r.js → chunk-FRFDVMJY-DzQqMWrl.js} +1 -1
  28. package/dist/{chunk-JA3XYJ7Z-D6c6cOBG.js → chunk-JA3XYJ7Z-C32Y7Epf.js} +2 -2
  29. package/dist/{chunk-JZLCHNYA-BvsPHJmL.js → chunk-JZLCHNYA-C6ftyVMN.js} +4 -4
  30. package/dist/{chunk-N4CR4FBY-8ycT-O9a.js → chunk-N4CR4FBY-DUhGZhZs.js} +5 -5
  31. package/dist/{chunk-PL6DKKU2-B0MTXvyc.js → chunk-PL6DKKU2-D7km-08O.js} +1 -1
  32. package/dist/{chunk-QN33PNHL-Bb-eUBW3.js → chunk-QN33PNHL-0K6SDYn3.js} +1 -1
  33. package/dist/{chunk-QXUST7PY-DV8yRwBd.js → chunk-QXUST7PY-DMhsRpYK.js} +5 -5
  34. package/dist/{chunk-S3R3BYOJ-mQeCz5CE.js → chunk-S3R3BYOJ-oAe3dEbO.js} +3 -3
  35. package/dist/{chunk-SJTYNZTY-CEG4F0pB.js → chunk-SJTYNZTY-BkJrPRFC.js} +1 -1
  36. package/dist/{chunk-TCCFYFTB-d3HOqL2I.js → chunk-TCCFYFTB-D58KeXnC.js} +6 -6
  37. package/dist/{chunk-TQ3KTPDO-DiCtqVSi.js → chunk-TQ3KTPDO-D_yA_wAb.js} +1 -1
  38. package/dist/{chunk-TZMSLE5B-BqW10dHe.js → chunk-TZMSLE5B-yBKS_DQU.js} +1 -1
  39. package/dist/{chunk-UMXZTB3W-97iS1iEl.js → chunk-UMXZTB3W-D7uwvNjd.js} +1 -1
  40. package/dist/{classDiagram-2ON5EDUG--Yh__LHb.js → classDiagram-2ON5EDUG-QjoAcuFE.js} +10 -10
  41. package/dist/{classDiagram-v2-WZHVMYZB-BC7X7Xtc.js → classDiagram-v2-WZHVMYZB-bUCv4gu2.js} +10 -10
  42. package/dist/{clone-BuIIsfA8.js → clone-Q4Fqwn6q.js} +1 -1
  43. package/dist/{code-block-37QAKDTI-BsGy1AOJ.js → code-block-37QAKDTI-m92Yc8pv.js} +2 -2
  44. package/dist/{code-visibility-BKxrBMod.js → code-visibility-DYjjXY63.js} +8425 -8595
  45. package/dist/{constants-D0gkYoE2.js → constants-T20xxyNf.js} +2 -2
  46. package/dist/{copy-DLf4aN7I.js → copy-BuQpJEzp.js} +2 -2
  47. package/dist/{dagre-6UL2VRFP-DRBWoQUw.js → dagre-6UL2VRFP-J0JKgwOt.js} +11 -11
  48. package/dist/{dagre-VYEPqXIV.js → dagre-By_QsQgc.js} +11 -11
  49. package/dist/{data-grid-overlay-editor-efe5ZagF.js → data-grid-overlay-editor-mfEJ5475.js} +2 -2
  50. package/dist/{diagram-PSM6KHXK-H66ATWP2.js → diagram-PSM6KHXK-DYgJuNk9.js} +18 -18
  51. package/dist/{diagram-QEK2KX5R-DItl5Wns.js → diagram-QEK2KX5R-CKdBR2sb.js} +14 -14
  52. package/dist/{diagram-S2PKOQOG-CtuW_ZuL.js → diagram-S2PKOQOG-Dpi7mo5W.js} +14 -14
  53. package/dist/dist-0Fif7jnk.js +5 -0
  54. package/dist/{dist-Dh3wkoyH.js → dist-4j4c7bjm.js} +2 -2
  55. package/dist/{dist-CDFZi-QD.js → dist-B3P2fFpz.js} +1 -1
  56. package/dist/{dist-BNyrZfqT.js → dist-B3pZ0Ab6.js} +2 -2
  57. package/dist/dist-B5h_9sHB.js +6 -0
  58. package/dist/dist-B9M6R5ye.js +5 -0
  59. package/dist/dist-BCt3tnck.js +8 -0
  60. package/dist/{dist-BrBucRXs.js → dist-BTfv03uy.js} +2 -2
  61. package/dist/dist-BUIJwMwn.js +8 -0
  62. package/dist/{dist-CYEylvZA.js → dist-BbbIBDiQ.js} +1 -1
  63. package/dist/{dist-KnujRhFL.js → dist-BcuoonNH.js} +4 -4
  64. package/dist/{dist-DJ6zJQZ4.js → dist-Bde4a2kU.js} +2 -2
  65. package/dist/{dist-t_qL7eB8.js → dist-Bfwsv11D.js} +2 -2
  66. package/dist/{dist-CNtV21T_.js → dist-BhM8gdSO.js} +4 -4
  67. package/dist/{dist-nuW5EDYT.js → dist-BotSqB48.js} +2 -2
  68. package/dist/dist-BpquMd3k.js +5 -0
  69. package/dist/dist-BzJsqYfz.js +5 -0
  70. package/dist/{dist-D029TiHd.js → dist-Bz_sYWbr.js} +2 -2
  71. package/dist/{dist-D3ZI9nhS.js → dist-C1BYNeCR.js} +4 -4
  72. package/dist/{dist-Bc5pmZIw.js → dist-C5VC_yzu.js} +1 -1
  73. package/dist/dist-CA5ELXAf.js +6 -0
  74. package/dist/dist-CLBRs6Uv.js +5 -0
  75. package/dist/{dist-Dhk6FMb0.js → dist-CLJWPTX2.js} +3 -3
  76. package/dist/{dist-C34oIrQ9.js → dist-CLUtPrdy.js} +1 -1
  77. package/dist/dist-CStVCMbq.js +5 -0
  78. package/dist/{dist-B8RaFTRF.js → dist-CUCNs1ja.js} +2 -2
  79. package/dist/dist-CZRIEY3Y.js +8 -0
  80. package/dist/{dist-UcOPnRMa.js → dist-CcXxepx6.js} +3 -3
  81. package/dist/dist-CuUHbFD0.js +5 -0
  82. package/dist/{dist-B8BjrFUE.js → dist-Cy1WxgBD.js} +5 -5
  83. package/dist/{dist-WdPUFc56.js → dist-D4CewLk6.js} +1 -1
  84. package/dist/{dist-DMZNjfX4.js → dist-DRfcqpxJ.js} +2 -2
  85. package/dist/dist-DV7Iabxb.js +8 -0
  86. package/dist/{dist-usPCDYx8.js → dist-D_bzzWBm.js} +1 -1
  87. package/dist/{dist-BvCfQQQE.js → dist-DgnE8F-r.js} +1 -1
  88. package/dist/{dist-JEhxD_cn.js → dist-DhHh0jLg.js} +1 -1
  89. package/dist/{dist-DGAfI2rB.js → dist-DqAWR3CS.js} +2 -2
  90. package/dist/{dist--sWVZwjW.js → dist-Du8WkPuU.js} +1 -1
  91. package/dist/dist-DuEeHMvL.js +5 -0
  92. package/dist/{dist-BTyJtnNg.js → dist-DxvORzUR.js} +1 -1
  93. package/dist/{dist-B507mf_I.js → dist-RqXTaiir.js} +2 -2
  94. package/dist/{dist-Yrfc6L0I.js → dist-fQ0ViXGs.js} +3 -3
  95. package/dist/{dist-B4LJpMEg.js → dist-h2c8sZvT.js} +1 -1
  96. package/dist/{dist-C2ej4eOH.js → dist-luvabDEB.js} +2 -2
  97. package/dist/{dist-B52GXZbd.js → dist-p2qyWijU.js} +2 -2
  98. package/dist/{erDiagram-Q2GNP2WA--19X2kU5.js → erDiagram-Q2GNP2WA-BU-m41EQ.js} +10 -10
  99. package/dist/{error-banner-CVkfBUT3.js → error-banner-5bz0L9hS.js} +3 -3
  100. package/dist/{esm-CWp0KQeK.js → esm-BfhQmZjp.js} +4 -4
  101. package/dist/{esm-DjNnlmpf.js → esm-Duie8iU-.js} +23 -23
  102. package/dist/{extends-vAi97cpa.js → extends-BgdxCfYu.js} +6 -6
  103. package/dist/{flatten-CzBvFdvC.js → flatten-Bbw7g6-K.js} +1 -1
  104. package/dist/{flowDiagram-NV44I4VS-DQmWlo7f.js → flowDiagram-NV44I4VS-CRoXKjGq.js} +10 -10
  105. package/dist/{formats-Dsy9kkZu.js → formats-BIKFEOlR.js} +4 -4
  106. package/dist/{ganttDiagram-JELNMOA3-BOGXJ8Lk.js → ganttDiagram-JELNMOA3-7mq5f9cO.js} +7 -7
  107. package/dist/{gitGraph-G5XIXVHT-DGlbae5m.js → gitGraph-G5XIXVHT-DiniR35k.js} +3 -3
  108. package/dist/{gitGraphDiagram-V2S2FVAM-DjzxfF0P.js → gitGraphDiagram-V2S2FVAM-Dfuokq6w.js} +13 -13
  109. package/dist/{glide-data-editor-DucgdjRo.js → glide-data-editor-DjQd6fKp.js} +557 -557
  110. package/dist/{graphlib-CVPKjKCS.js → graphlib-Ns7y5crs.js} +5 -5
  111. package/dist/{hasIn-COs6vImh.js → hasIn-Deg7jl_j.js} +3 -3
  112. package/dist/{html-to-image-CpggM7u1.js → html-to-image-QL7QveRm.js} +115 -110
  113. package/dist/{info-VBDWY6EO-D2lvLLw5.js → info-VBDWY6EO-DVZvGhkQ.js} +3 -3
  114. package/dist/{infoDiagram-HS3SLOUP-ChNufFsP.js → infoDiagram-HS3SLOUP-CEnzWruK.js} +13 -13
  115. package/dist/{input-D4kjoQUB.js → input-Dh0iMVFM.js} +70 -67
  116. package/dist/{isEmpty-Dd8mx_WL.js → isEmpty-CJJMn-QP.js} +1 -1
  117. package/dist/{isSymbol-BvIfMnn6.js → isSymbol-CoUCgMCM.js} +1 -1
  118. package/dist/{journeyDiagram-XKPGCS4Q-BO_O4Ij1.js → journeyDiagram-XKPGCS4Q-8XYSU1GI.js} +3 -3
  119. package/dist/{kanban-definition-3W4ZIXB7-CPpiiiWk.js → kanban-definition-3W4ZIXB7--9pT9z1R.js} +7 -7
  120. package/dist/{label-BLqV33b1.js → label-LWtdw5i8.js} +3 -3
  121. package/dist/{linear-2NnK4cxi.js → linear-B5-AFRiR.js} +2 -2
  122. package/dist/{loader-Dr8Qem8p.js → loader-BWLPpjKK.js} +2 -2
  123. package/dist/main.js +1688 -1569
  124. package/dist/{memoize-C9ltv0Cw.js → memoize-BOtf2yFf.js} +1 -1
  125. package/dist/{merge-CHn7Yx0N.js → merge-Be1CqGnU.js} +1 -1
  126. package/dist/mermaid-4DMBBIKO-DIdL224_.js +6 -0
  127. package/dist/{mermaid-DO-Daq7u.js → mermaid-CAibas-0.js} +44 -44
  128. package/dist/{mermaid-parser.core-DreccfmS.js → mermaid-parser.core-C3XRsazI.js} +8 -8
  129. package/dist/{min-BNz2lZfk.js → min-Dtgc8txR.js} +4 -4
  130. package/dist/{mindmap-definition-VGOIOE7T-CC1_Vl0f.js → mindmap-definition-VGOIOE7T-B-4mnfFG.js} +9 -9
  131. package/dist/{now-Sgq5m3D-.js → now-Ch98bJO_.js} +2 -2
  132. package/dist/{number-overlay-editor-CpKi64Fy.js → number-overlay-editor-D-a0qCT8.js} +1 -1
  133. package/dist/{once-rJImu7SE.js → once-DPuqGUeo.js} +1 -1
  134. package/dist/{packet-DYOGHKS2-CmWtF3uO.js → packet-DYOGHKS2-34raHOiB.js} +3 -3
  135. package/dist/{pick-CRAXxDYn.js → pick-D1Qo8s2C.js} +4 -4
  136. package/dist/{pie-VRWISCQL-B6u8vus8.js → pie-VRWISCQL-BaLlzZa3.js} +3 -3
  137. package/dist/{pieDiagram-ADFJNKIX-Di34MOFQ.js → pieDiagram-ADFJNKIX-Cr3cNpZY.js} +15 -15
  138. package/dist/{precisionRound-CnHPY_5v.js → precisionRound-Tqb4mg-H.js} +1 -1
  139. package/dist/{process-output-X8TR20AK.js → process-output-C657UH7t.js} +36 -28
  140. package/dist/{quadrantDiagram-AYHSOK5B-B9kVk1ny.js → quadrantDiagram-AYHSOK5B-BuNL8Q93.js} +4 -4
  141. package/dist/{radar-ZZBFDIW7-XAmXSa8s.js → radar-ZZBFDIW7-Ci7bfoZa.js} +3 -3
  142. package/dist/{react-vega-Dh6-UKKe.js → react-vega-B0sAlDTL.js} +9 -9
  143. package/dist/react-vega-B6ncY2Tp.js +9 -0
  144. package/dist/{requirementDiagram-UZGBJVZJ-BxGfGYEx.js → requirementDiagram-UZGBJVZJ-BG2lLUN1.js} +9 -9
  145. package/dist/{reveal-component-BMyi2UMr.js → reveal-component-COtLtzC0.js} +31 -31
  146. package/dist/{sankeyDiagram-TZEHDZUN-D09PBJ-n.js → sankeyDiagram-TZEHDZUN-DMal8sps.js} +3 -3
  147. package/dist/{sequenceDiagram-WL72ISMW-t_Dpemj0.js → sequenceDiagram-WL72ISMW-DT6Tk-Eo.js} +4 -4
  148. package/dist/{spec-hVaaZsY5.js → spec-BKuFJIDz.js} +4 -4
  149. package/dist/{stateDiagram-FKZM4ZOC-B18gTP_j.js → stateDiagram-FKZM4ZOC-CB_lodq3.js} +12 -12
  150. package/dist/{stateDiagram-v2-4FDKWEC3-B6e_t14A.js → stateDiagram-v2-4FDKWEC3-E0RGjKsm.js} +10 -10
  151. package/dist/stex-KfRnSHzF.js +4 -0
  152. package/dist/{strings-BiIhGaI8.js → strings-Bu3vlb6W.js} +7 -7
  153. package/dist/style.css +1 -1
  154. package/dist/{swiper-component-DlD2GU2g.js → swiper-component-B2t5sN1q.js} +3 -3
  155. package/dist/{time-C1SGcFMH.js → time-CsmIF9YZ.js} +3 -3
  156. package/dist/{timeline-definition-IT6M3QCI-DJnh1ks5.js → timeline-definition-IT6M3QCI-NfSKRvH0.js} +2 -2
  157. package/dist/{toDate-CIpC_34u.js → toDate-BeKbrOvs.js} +5 -5
  158. package/dist/{tooltip-DRaMBu06.js → tooltip-C5FYOpQc.js} +4 -4
  159. package/dist/{treemap-GDKQZRPO-Du95DV6u.js → treemap-GDKQZRPO-Cl6OQh8D.js} +3 -3
  160. package/dist/{types-Dzuoc3LN.js → types-CVvp1fKr.js} +2 -9
  161. package/dist/{useAsyncData-C56Khv_R.js → useAsyncData-yp6n17kh.js} +2 -2
  162. package/dist/{useDateFormatter-B_9k85Ex.js → useDateFormatter-BA4FCquG.js} +2 -2
  163. package/dist/{useDeepCompareMemoize-Dt98v2ua.js → useDeepCompareMemoize-DJvAHUIC.js} +1 -1
  164. package/dist/{useIframeCapabilities-BkYHTrss.js → useIframeCapabilities-C4JTXTIh.js} +1 -1
  165. package/dist/{useLifecycle-BF6-z62y.js → useLifecycle-CsYXf0Ln.js} +4 -4
  166. package/dist/{useTheme-DykuNHR2.js → useTheme-CK_R9Mn8.js} +24 -21
  167. package/dist/{vega-component-cSdqoAxe.js → vega-component-ikfBfkZO.js} +18 -18
  168. package/dist/{vega-loader.browser-3_z8GoFC.js → vega-loader.browser-CZ-J8Py3.js} +3 -3
  169. package/dist/{xychartDiagram-PRI3JC2R-Dk2d_bX0.js → xychartDiagram-PRI3JC2R-BvwftqMA.js} +9 -9
  170. package/dist/{zod-BWkcDORu.js → zod-CoBiJ5v4.js} +3 -3
  171. package/package.json +1 -1
  172. package/src/components/ai/__tests__/ai-utils.test.ts +43 -38
  173. package/src/components/ai/ai-model-dropdown.tsx +2 -2
  174. package/src/components/app-config/ai-config.tsx +73 -1
  175. package/src/components/app-config/user-config-form.tsx +37 -1
  176. package/src/components/chat/__tests__/chat-utils.test.ts +269 -0
  177. package/src/components/chat/chat-utils.ts +14 -58
  178. package/src/components/data-table/TableBottomBar.tsx +27 -6
  179. package/src/components/data-table/TableTopBar.tsx +7 -1
  180. package/src/components/data-table/__tests__/TableBottomBar.test.tsx +73 -0
  181. package/src/components/data-table/__tests__/column-explorer.test.tsx +128 -0
  182. package/src/components/data-table/__tests__/column-header.test.tsx +110 -277
  183. package/src/components/data-table/__tests__/data-table.test.tsx +52 -1
  184. package/src/components/data-table/__tests__/date-filter-inputs.test.tsx +33 -0
  185. package/src/components/data-table/__tests__/filter-pill-editor.test.tsx +75 -38
  186. package/src/components/data-table/__tests__/filter-pills.test.tsx +287 -0
  187. package/src/components/data-table/__tests__/filter-test-utils.ts +47 -0
  188. package/src/components/data-table/__tests__/filters.test.ts +5 -5
  189. package/src/components/data-table/__tests__/header-items.test.tsx +47 -1
  190. package/src/components/data-table/__tests__/useColumnVisibility.test.ts +42 -0
  191. package/src/components/data-table/add-filter-button.tsx +85 -0
  192. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +98 -26
  193. package/src/components/data-table/column-header.tsx +94 -691
  194. package/src/components/data-table/columns.tsx +3 -4
  195. package/src/components/data-table/context-menu.tsx +26 -12
  196. package/src/components/data-table/data-table.tsx +125 -56
  197. package/src/components/data-table/date-filter-inputs.tsx +13 -10
  198. package/src/components/data-table/export-actions.tsx +17 -6
  199. package/src/components/data-table/filter-by-values-picker.tsx +13 -19
  200. package/src/components/data-table/filter-editor-context.tsx +34 -0
  201. package/src/components/data-table/filter-pill-editor.tsx +152 -175
  202. package/src/components/data-table/filter-pills.tsx +190 -153
  203. package/src/components/data-table/filters/builders.ts +102 -0
  204. package/src/components/data-table/filters/defaults.ts +31 -0
  205. package/src/components/data-table/filters/format.ts +131 -0
  206. package/src/components/data-table/filters/guards.ts +51 -0
  207. package/src/components/data-table/filters/index.ts +7 -0
  208. package/src/components/data-table/filters/operators.ts +76 -0
  209. package/src/components/data-table/filters/serialize.ts +186 -0
  210. package/src/components/data-table/filters/types.ts +33 -0
  211. package/src/components/data-table/header-items.tsx +25 -85
  212. package/src/components/data-table/hooks/use-column-visibility.ts +56 -0
  213. package/src/components/data-table/pagination.tsx +16 -3
  214. package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +16 -6
  215. package/src/components/data-table/value-chips.tsx +52 -0
  216. package/src/components/databases/display.tsx +2 -0
  217. package/src/components/datasources/__tests__/utils.test.ts +82 -0
  218. package/src/components/datasources/utils.ts +16 -15
  219. package/src/components/editor/errors/mangled-local-chip.tsx +50 -0
  220. package/src/components/editor/output/MarimoErrorOutput.tsx +110 -27
  221. package/src/components/editor/output/MarimoTracebackOutput.tsx +51 -34
  222. package/src/components/ui/number-field.tsx +13 -1
  223. package/src/core/ai/__tests__/model-registry.test.ts +72 -60
  224. package/src/core/ai/model-registry.ts +33 -28
  225. package/src/core/cells/__tests__/actions.test.ts +48 -0
  226. package/src/core/cells/actions.ts +5 -6
  227. package/src/core/codemirror/__tests__/setup.test.ts +29 -0
  228. package/src/core/codemirror/cells/traceback-decorations.ts +1 -1
  229. package/src/core/codemirror/cm.ts +3 -2
  230. package/src/core/codemirror/format.ts +1 -0
  231. package/src/core/codemirror/keymaps/vim.ts +63 -0
  232. package/src/core/codemirror/language/languages/sql/sql.ts +1 -0
  233. package/src/core/codemirror/language/languages/sql/utils.ts +2 -0
  234. package/src/core/config/__tests__/config-schema.test.ts +2 -0
  235. package/src/core/config/config-schema.ts +2 -0
  236. package/src/css/app/Cell.css +0 -1
  237. package/src/plugins/impl/DataTablePlugin.tsx +94 -33
  238. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +1 -0
  239. package/src/plugins/impl/chat/ChatPlugin.tsx +7 -1
  240. package/src/plugins/impl/chat/__tests__/chat-ui.test.ts +278 -0
  241. package/src/plugins/impl/chat/chat-ui.tsx +106 -59
  242. package/src/plugins/impl/chat/types.ts +5 -0
  243. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +8 -6
  244. package/src/stories/dataframe.stories.tsx +1 -0
  245. package/src/utils/__tests__/local-variables.test.ts +132 -0
  246. package/src/utils/dates.ts +39 -0
  247. package/src/utils/local-variables.ts +67 -0
  248. package/dist/ErrorBoundary-D3wrPNma.js +0 -167
  249. package/dist/architecture-7HQA4BMR-CS9jOrqM.js +0 -6
  250. package/dist/assets/__vite-browser-external-CAdMKBac.js +0 -1
  251. package/dist/dist-21ButRCu.js +0 -8
  252. package/dist/dist-B--tLnAP.js +0 -5
  253. package/dist/dist-BoHGySTM.js +0 -5
  254. package/dist/dist-ByAz19Qc.js +0 -5
  255. package/dist/dist-C1Ap5CYU.js +0 -5
  256. package/dist/dist-C93EysN4.js +0 -5
  257. package/dist/dist-CY-lVor6.js +0 -8
  258. package/dist/dist-CYDuv4bR.js +0 -8
  259. package/dist/dist-Cfo5EE2t.js +0 -6
  260. package/dist/dist-CjivSDvN.js +0 -5
  261. package/dist/dist-Cqwx-MH7.js +0 -5
  262. package/dist/dist-DbpcoFAV.js +0 -6
  263. package/dist/dist-FUNenbiQ.js +0 -5
  264. package/dist/dist-zhSud5X3.js +0 -8
  265. package/dist/mermaid-4DMBBIKO-B7VQMwJx.js +0 -6
  266. package/dist/react-vega-Cavbrg4l.js +0 -9
  267. package/dist/stex-ChDHQs3R.js +0 -4
  268. package/src/components/data-table/__tests__/column-header.test.ts +0 -65
  269. package/src/components/data-table/filters.ts +0 -386
  270. /package/dist/{_baseFor-BGiY-cm1.js → _baseFor-4jw-lnCC.js} +0 -0
  271. /package/dist/{clsx-CyyyQ8Ue.js → clsx-CIWA5tNO.js} +0 -0
  272. /package/dist/{defaultLocale-DoeErsX2.js → defaultLocale-BoHTsDG6.js} +0 -0
  273. /package/dist/{defaultLocale-BpsHxBd7.js → defaultLocale-u-3osm0P.js} +0 -0
  274. /package/dist/{dist-CCADb07R.js → dist-DNdhYsgW.js} +0 -0
  275. /package/dist/{emotion-is-prop-valid.esm-DtW2o230.js → emotion-is-prop-valid.esm-DzSb5hsH.js} +0 -0
  276. /package/dist/{invariant-UcGKQEhF.js → invariant-wRzNXIsJ.js} +0 -0
  277. /package/dist/{jsx-runtime-COBk7ree.js → jsx-runtime-DebpN0FN.js} +0 -0
  278. /package/dist/{main-CThhXnXU.js → main-Tj_-QTyF.js} +0 -0
  279. /package/dist/{micromark-factory-space-CwHmg6iz.js → micromark-factory-space-DF2w36zS.js} +0 -0
  280. /package/dist/{ordinal-B43ZeR68.js → ordinal-ArJavP1Q.js} +0 -0
  281. /package/dist/{purify.es-DT70lfR0.js → purify.es-H92eMd9-.js} +0 -0
  282. /package/dist/{range-BOiA8qqU.js → range-C-rmrM1O.js} +0 -0
  283. /package/dist/{react-dom-BWRJ_g_k.js → react-dom-BTJzcVJ9.js} +0 -0
  284. /package/dist/{stex-DrxP7bb3.js → stex-BIsgBmK4.js} +0 -0
@@ -0,0 +1,132 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import { describe, expect, it } from "vitest";
3
+ import {
4
+ containsMangledLocal,
5
+ splitMangledLocals,
6
+ unmangleLocal,
7
+ } from "../local-variables";
8
+
9
+ describe("unmangleLocal", () => {
10
+ it("extracts the cell id and original name", () => {
11
+ expect(unmangleLocal("_cell_Hbol_a")).toEqual({
12
+ cellId: "Hbol",
13
+ name: "_a",
14
+ });
15
+ });
16
+
17
+ it("handles names with multiple underscore segments", () => {
18
+ expect(unmangleLocal("_cell_Hbol_a_b")).toEqual({
19
+ cellId: "Hbol",
20
+ name: "_a_b",
21
+ });
22
+ });
23
+
24
+ it("returns null for non-mangled strings", () => {
25
+ expect(unmangleLocal("just_a_variable")).toBeNull();
26
+ expect(unmangleLocal("_private")).toBeNull();
27
+ });
28
+
29
+ it("handles the single-underscore local", () => {
30
+ // `_` is a valid local name (variables.py:62-63), mangling to
31
+ // `_cell_<id>_` with no trailing suffix.
32
+ expect(unmangleLocal("_cell_Hbol_")).toEqual({
33
+ cellId: "Hbol",
34
+ name: "_",
35
+ });
36
+ });
37
+
38
+ it("handles UUID-style cell ids", () => {
39
+ // External / VSCode notebooks use `external_prefix()` which is a
40
+ // `uuid4()` (hyphenated).
41
+ expect(
42
+ unmangleLocal("_cell_c9bf9e57-1685-4c89-bafb-ff5af830be8a_a"),
43
+ ).toEqual({
44
+ cellId: "c9bf9e57-1685-4c89-bafb-ff5af830be8a",
45
+ name: "_a",
46
+ });
47
+ });
48
+
49
+ it("does not match marimo cell file paths", () => {
50
+ // The compiled cell file is `__marimo__cell_<id>_.py` (two leading
51
+ // underscores, trailing `_` with no name); it must not be confused with a
52
+ // mangled local.
53
+ expect(unmangleLocal("__marimo__cell_Hbol_.py")).toBeNull();
54
+ expect(unmangleLocal("/tmp/marimo_42/__marimo__cell_Hbol_.py")).toBeNull();
55
+ });
56
+ });
57
+
58
+ describe("splitMangledLocals", () => {
59
+ it("returns a single text segment when nothing matches", () => {
60
+ expect(splitMangledLocals("plain text")).toEqual(["plain text"]);
61
+ });
62
+
63
+ it("splits a NameError message", () => {
64
+ expect(splitMangledLocals("name '_cell_Hbol_a' is not defined")).toEqual([
65
+ "name '",
66
+ { cellId: "Hbol", name: "_a" },
67
+ "' is not defined",
68
+ ]);
69
+ });
70
+
71
+ it("handles multiple mangled names in one string", () => {
72
+ expect(splitMangledLocals("_cell_AAAA_x and _cell_BBBB_y")).toEqual([
73
+ { cellId: "AAAA", name: "_x" },
74
+ " and ",
75
+ { cellId: "BBBB", name: "_y" },
76
+ ]);
77
+ });
78
+
79
+ it("leaves the cell file path alone", () => {
80
+ const path = "/tmp/marimo_42/__marimo__cell_Hbol_.py";
81
+ expect(splitMangledLocals(path)).toEqual([path]);
82
+ });
83
+
84
+ it("ignores `_cell_...` substrings preceded by `_`", () => {
85
+ // Mirrors `(?<!_)` in `variables.py`: a leading `_` (e.g. inside
86
+ // `__marimo__cell_<id>_<...>`) means this is not a mangle the compiler
87
+ // produced, so we must not demangle it.
88
+ const text = "see __marimo__cell_Hbol_a for details";
89
+ expect(splitMangledLocals(text)).toEqual([text]);
90
+ });
91
+
92
+ it("splits a UUID-style cell id", () => {
93
+ expect(
94
+ splitMangledLocals(
95
+ "name '_cell_c9bf9e57-1685-4c89-bafb-ff5af830be8a_a' is not defined",
96
+ ),
97
+ ).toEqual([
98
+ "name '",
99
+ {
100
+ cellId: "c9bf9e57-1685-4c89-bafb-ff5af830be8a",
101
+ name: "_a",
102
+ },
103
+ "' is not defined",
104
+ ]);
105
+ });
106
+
107
+ it("splits the single-underscore local", () => {
108
+ expect(splitMangledLocals("name '_cell_Hbol_' is not defined")).toEqual([
109
+ "name '",
110
+ { cellId: "Hbol", name: "_" },
111
+ "' is not defined",
112
+ ]);
113
+ });
114
+ });
115
+
116
+ describe("containsMangledLocal", () => {
117
+ it("detects mangled names", () => {
118
+ expect(containsMangledLocal("name '_cell_Hbol_a' is not defined")).toBe(
119
+ true,
120
+ );
121
+ });
122
+
123
+ it("ignores the cell file path", () => {
124
+ expect(containsMangledLocal("/tmp/marimo_42/__marimo__cell_Hbol_.py")).toBe(
125
+ false,
126
+ );
127
+ });
128
+
129
+ it("ignores `_cell_...` substrings preceded by `_`", () => {
130
+ expect(containsMangledLocal("see __marimo__cell_Hbol_a")).toBe(false);
131
+ });
132
+ });
@@ -134,6 +134,45 @@ export function timeAgo(
134
134
  return value.toString();
135
135
  }
136
136
 
137
+ function pad2(n: number): string {
138
+ return n.toString().padStart(2, "0");
139
+ }
140
+
141
+ function pad4(n: number): string {
142
+ return n.toString().padStart(4, "0");
143
+ }
144
+
145
+ /**
146
+ * Format a Date as `YYYY-MM-DD` using the date's local-time fields.
147
+ *
148
+ * The output reflects what the user sees in their own timezone (the calendar
149
+ * day on their clock), not the UTC day. Use this when round-tripping values
150
+ * that originated from local-time inputs — date pickers, "filter on this
151
+ * day", calendar UI — so the displayed and serialized days agree.
152
+ *
153
+ * Not suitable for cross-timezone storage; use `Date.toISOString()` for that.
154
+ */
155
+ export function dateToLocalISODate(d: Date): string {
156
+ return `${pad4(d.getFullYear())}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;
157
+ }
158
+
159
+ /**
160
+ * Format a Date as `HH:MM:SS` using the date's local-time fields.
161
+ *
162
+ * See `dateToLocalISODate` for the rationale on local vs UTC.
163
+ */
164
+ export function dateToLocalISOTime(d: Date): string {
165
+ return `${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}`;
166
+ }
167
+
168
+ /**
169
+ * Format a Date as `YYYY-MM-DDTHH:MM:SS` (no timezone suffix) using local
170
+ * fields. See `dateToLocalISODate` for the rationale on local vs UTC.
171
+ */
172
+ export function dateToLocalISODateTime(d: Date): string {
173
+ return `${dateToLocalISODate(d)}T${dateToLocalISOTime(d)}`;
174
+ }
175
+
137
176
  export const supportedDateFormats = ["yyyy", "yyyy-MM", "yyyy-MM-dd"] as const;
138
177
  export type DateFormat = (typeof supportedDateFormats)[number];
139
178
 
@@ -0,0 +1,67 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import type { CellId } from "@/core/cells/ids";
3
+
4
+ /**
5
+ * The marimo compiler rewrites underscore-prefixed references inside a cell
6
+ * (which Python would treat as module-private) into `_cell_<cell_id>_<name>`
7
+ * so each cell gets its own private namespace. When such a reference fails at
8
+ * runtime (`NameError: name '_cell_Hbol_a' is not defined`), the mangled name
9
+ * leaks into the error UI. These helpers undo that mangling for display.
10
+ *
11
+ * Mirrors `marimo/_ast/variables.py`.
12
+ */
13
+
14
+ // Matches `_cell_<cell_id><name>` for normal ids and UUIDs. The `[\w-]`
15
+ // id class admits hyphens; the `_\w*` name group admits the bare `_`
16
+ // local; the `(?<!_)` lookbehind skips `__marimo__cell_...` paths.
17
+ // Mirrors `_MANGLED_LOCAL_IN_TEXT_RE` in `variables.py`.
18
+ const MANGLED_LOCAL_BODY = String.raw`_cell_([^\W_][\w-]*?)(_\w*)`;
19
+ const MANGLED_LOCAL_PATTERN = String.raw`(?<!_)${MANGLED_LOCAL_BODY}`;
20
+ // Strict (whole-string) form for `unmangleLocal`; the leading `^` makes the
21
+ // lookbehind trivially satisfied, so use the bare body.
22
+ const ANCHORED_RE = new RegExp(`^${MANGLED_LOCAL_BODY}$`);
23
+ const UNANCHORED_RE = new RegExp(MANGLED_LOCAL_PATTERN);
24
+ const GLOBAL_RE = new RegExp(MANGLED_LOCAL_PATTERN, "g");
25
+
26
+ export interface UnmangledLocal {
27
+ cellId: CellId;
28
+ /** The original underscore-prefixed name, e.g. "_a". */
29
+ name: string;
30
+ }
31
+
32
+ export function unmangleLocal(mangled: string): UnmangledLocal | null {
33
+ const match = ANCHORED_RE.exec(mangled);
34
+ if (!match) {
35
+ return null;
36
+ }
37
+ return { cellId: match[1] as CellId, name: match[2] };
38
+ }
39
+
40
+ export type MangledSegment = string | UnmangledLocal;
41
+
42
+ /**
43
+ * Split a plain text string into alternating literal text and unmangled-local
44
+ * segments, so callers can render mixed React content.
45
+ */
46
+ export function splitMangledLocals(text: string): MangledSegment[] {
47
+ const segments: MangledSegment[] = [];
48
+ GLOBAL_RE.lastIndex = 0;
49
+ let lastIndex = 0;
50
+ let match: RegExpExecArray | null = GLOBAL_RE.exec(text);
51
+ while (match !== null) {
52
+ if (match.index > lastIndex) {
53
+ segments.push(text.slice(lastIndex, match.index));
54
+ }
55
+ segments.push({ cellId: match[1] as CellId, name: match[2] });
56
+ lastIndex = match.index + match[0].length;
57
+ match = GLOBAL_RE.exec(text);
58
+ }
59
+ if (lastIndex < text.length) {
60
+ segments.push(text.slice(lastIndex));
61
+ }
62
+ return segments;
63
+ }
64
+
65
+ export function containsMangledLocal(text: string): boolean {
66
+ return UNANCHORED_RE.test(text);
67
+ }
@@ -1,167 +0,0 @@
1
- import { s as __toESM, t as __commonJSMin } from "./chunk-BNovOVIE.js";
2
- import { t as Button } from "./button-Dj4BTre0.js";
3
- import { t as require_react } from "./react-DA-nE2FX.js";
4
- import { t as require_compiler_runtime } from "./compiler-runtime-CEbnTgxf.js";
5
- import { t as require_jsx_runtime } from "./jsx-runtime-COBk7ree.js";
6
- import { n as Constants } from "./constants-D0gkYoE2.js";
7
- var require_ReactPropTypesSecret = /* @__PURE__ */ __commonJSMin(((e, u) => {
8
- u.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
9
- })), require_factoryWithThrowingShims = /* @__PURE__ */ __commonJSMin(((e, u) => {
10
- var d = require_ReactPropTypesSecret();
11
- function f() {
12
- }
13
- function p() {
14
- }
15
- p.resetWarningCache = f, u.exports = function() {
16
- function e2(e3, u3, f2, p2, m2, h) {
17
- if (h !== d) {
18
- var g = /* @__PURE__ */ Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");
19
- throw g.name = "Invariant Violation", g;
20
- }
21
- }
22
- e2.isRequired = e2;
23
- function u2() {
24
- return e2;
25
- }
26
- var m = {
27
- array: e2,
28
- bigint: e2,
29
- bool: e2,
30
- func: e2,
31
- number: e2,
32
- object: e2,
33
- string: e2,
34
- symbol: e2,
35
- any: e2,
36
- arrayOf: u2,
37
- element: e2,
38
- elementType: e2,
39
- instanceOf: u2,
40
- node: e2,
41
- objectOf: u2,
42
- oneOf: u2,
43
- oneOfType: u2,
44
- shape: u2,
45
- exact: u2,
46
- checkPropTypes: p,
47
- resetWarningCache: f
48
- };
49
- return m.PropTypes = m, m;
50
- };
51
- })), require_prop_types = /* @__PURE__ */ __commonJSMin(((e, u) => {
52
- u.exports = require_factoryWithThrowingShims()();
53
- })), import_react = /* @__PURE__ */ __toESM(require_react()), ErrorBoundaryContext = (0, import_react.createContext)(null), initialState = {
54
- didCatch: false,
55
- error: null
56
- }, ErrorBoundary = class extends import_react.Component {
57
- constructor(e) {
58
- super(e), this.resetErrorBoundary = this.resetErrorBoundary.bind(this), this.state = initialState;
59
- }
60
- static getDerivedStateFromError(e) {
61
- return {
62
- didCatch: true,
63
- error: e
64
- };
65
- }
66
- resetErrorBoundary() {
67
- let { error: e } = this.state;
68
- if (e !== null) {
69
- var u, d, f = [...arguments];
70
- (u = (d = this.props).onReset) == null || u.call(d, {
71
- args: f,
72
- reason: "imperative-api"
73
- }), this.setState(initialState);
74
- }
75
- }
76
- componentDidCatch(e, u) {
77
- var d, f;
78
- (d = (f = this.props).onError) == null || d.call(f, e, u);
79
- }
80
- componentDidUpdate(e, u) {
81
- let { didCatch: d } = this.state, { resetKeys: f } = this.props;
82
- if (d && u.error !== null && hasArrayChanged(e.resetKeys, f)) {
83
- var p, m;
84
- (p = (m = this.props).onReset) == null || p.call(m, {
85
- next: f,
86
- prev: e.resetKeys,
87
- reason: "keys"
88
- }), this.setState(initialState);
89
- }
90
- }
91
- render() {
92
- let { children: e, fallbackRender: u, FallbackComponent: d, fallback: f } = this.props, { didCatch: p, error: m } = this.state, h = e;
93
- if (p) {
94
- let e2 = {
95
- error: m,
96
- resetErrorBoundary: this.resetErrorBoundary
97
- };
98
- if (typeof u == "function") h = u(e2);
99
- else if (d) h = (0, import_react.createElement)(d, e2);
100
- else if (f !== void 0) h = f;
101
- else throw m;
102
- }
103
- return (0, import_react.createElement)(ErrorBoundaryContext.Provider, { value: {
104
- didCatch: p,
105
- error: m,
106
- resetErrorBoundary: this.resetErrorBoundary
107
- } }, h);
108
- }
109
- };
110
- function hasArrayChanged() {
111
- let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], u = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
112
- return e.length !== u.length || e.some((e2, d) => !Object.is(e2, u[d]));
113
- }
114
- var import_compiler_runtime = require_compiler_runtime(), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1);
115
- const ErrorBoundary$1 = (e) => {
116
- let u = (0, import_compiler_runtime.c)(2), d;
117
- return u[0] === e.children ? d = u[1] : (d = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ErrorBoundary, {
118
- FallbackComponent,
119
- children: e.children
120
- }), u[0] = e.children, u[1] = d), d;
121
- };
122
- var FallbackComponent = (e) => {
123
- var _a;
124
- let u = (0, import_compiler_runtime.c)(9), f;
125
- u[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (f = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
126
- className: "text-2xl font-bold",
127
- children: "Something went wrong"
128
- }), u[0] = f) : f = u[0];
129
- let p = (_a = e.error) == null ? void 0 : _a.message, m;
130
- u[1] === p ? m = u[2] : (m = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", {
131
- className: "text-xs bg-muted/40 border rounded-md p-4 max-w-[80%] whitespace-normal",
132
- children: p
133
- }), u[1] = p, u[2] = m);
134
- let g;
135
- u[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (g = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
136
- "If this is an issue with marimo, please report it on",
137
- " ",
138
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
139
- href: Constants.issuesPage,
140
- target: "_blank",
141
- className: "underline",
142
- children: "GitHub"
143
- }),
144
- "."
145
- ] }), u[3] = g) : g = u[3];
146
- let _;
147
- u[4] === e.resetErrorBoundary ? _ = u[5] : (_ = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
148
- "data-testid": "reset-error-boundary-button",
149
- onClick: e.resetErrorBoundary,
150
- variant: "outline",
151
- children: "Try again"
152
- }), u[4] = e.resetErrorBoundary, u[5] = _);
153
- let v;
154
- return u[6] !== m || u[7] !== _ ? (v = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
155
- className: "flex-1 flex items-center justify-center flex-col space-y-4 max-w-2xl mx-auto px-6",
156
- children: [
157
- f,
158
- m,
159
- g,
160
- _
161
- ]
162
- }), u[6] = m, u[7] = _, u[8] = v) : v = u[8], v;
163
- };
164
- export {
165
- require_prop_types as n,
166
- ErrorBoundary$1 as t
167
- };
@@ -1,6 +0,0 @@
1
- import "./chunk-TCCFYFTB-d3HOqL2I.js";
2
- import "./main-CThhXnXU.js";
3
- import { n as createArchitectureServices, t as ArchitectureModule } from "./chunk-UMXZTB3W-97iS1iEl.js";
4
- export {
5
- createArchitectureServices
6
- };
@@ -1 +0,0 @@
1
- import{t as e}from"./worker-CpBbwbQo.js";var t=e(((e,t)=>{t.exports={}}));export default t();
@@ -1,8 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-UcOPnRMa.js";
3
- import "./dist-BTyJtnNg.js";
4
- import "./dist-DGAfI2rB.js";
5
- import { i as jinjaLanguage, n as jinja, r as jinjaCompletionSource, t as closePercentBrace } from "./dist-BNyrZfqT.js";
6
- export {
7
- jinja
8
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { i as pythonLanguage, n as localCompletionSource, r as python, t as globalCompletion } from "./dist-nuW5EDYT.js";
3
- export {
4
- python
5
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as javaLanguage, t as java } from "./dist-BvCfQQQE.js";
3
- export {
4
- java
5
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as jsonLanguage, t as json } from "./dist-B4LJpMEg.js";
3
- export {
4
- json
5
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { i as defineCSSCompletionSource, n as cssCompletionSource, r as cssLanguage, t as css } from "./dist-BTyJtnNg.js";
3
- export {
4
- css
5
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as cppLanguage, t as cpp } from "./dist-C34oIrQ9.js";
3
- export {
4
- cpp
5
- };
@@ -1,8 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-UcOPnRMa.js";
3
- import "./dist-BTyJtnNg.js";
4
- import "./dist-DGAfI2rB.js";
5
- import { n as vueLanguage, t as vue } from "./dist-Dhk6FMb0.js";
6
- export {
7
- vue
8
- };
@@ -1,8 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-UcOPnRMa.js";
3
- import "./dist-BTyJtnNg.js";
4
- import "./dist-DGAfI2rB.js";
5
- import { i as liquidLanguage, n as liquid, r as liquidCompletionSource, t as closePercentBrace } from "./dist-Dh3wkoyH.js";
6
- export {
7
- liquid
8
- };
@@ -1,6 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-BTyJtnNg.js";
3
- import { n as sassCompletionSource, r as sassLanguage, t as sass } from "./dist-t_qL7eB8.js";
4
- export {
5
- sass
6
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as yamlLanguage, t as yaml } from "./dist-Bc5pmZIw.js";
3
- export {
4
- yaml
5
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as wastLanguage, t as wast } from "./dist-CYEylvZA.js";
3
- export {
4
- wast
5
- };
@@ -1,6 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-BTyJtnNg.js";
3
- import { n as lessCompletionSource, r as lessLanguage, t as less } from "./dist-C2ej4eOH.js";
4
- export {
5
- less
6
- };
@@ -1,5 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import { n as rustLanguage, t as rust } from "./dist-WdPUFc56.js";
3
- export {
4
- rust
5
- };
@@ -1,8 +0,0 @@
1
- import "./dist-CCADb07R.js";
2
- import "./dist-UcOPnRMa.js";
3
- import "./dist-BTyJtnNg.js";
4
- import "./dist-DGAfI2rB.js";
5
- import { n as phpLanguage, t as php } from "./dist-DJ6zJQZ4.js";
6
- export {
7
- php
8
- };
@@ -1,6 +0,0 @@
1
- import "./react-DA-nE2FX.js";
2
- import { a as tt } from "./chunk-5FQGJX7Z-BOg95xG5.js";
3
- import "./jsx-runtime-COBk7ree.js";
4
- export {
5
- tt as Mermaid
6
- };
@@ -1,9 +0,0 @@
1
- import "./react-DA-nE2FX.js";
2
- import "./jsx-runtime-COBk7ree.js";
3
- import "./vega-loader.browser-3_z8GoFC.js";
4
- import { n as q, t as j } from "./react-vega-Dh6-UKKe.js";
5
- import "./defaultLocale-BpsHxBd7.js";
6
- import "./defaultLocale-DoeErsX2.js";
7
- export {
8
- q as VegaEmbed
9
- };
@@ -1,4 +0,0 @@
1
- import { n as stexMath, t as stex } from "./stex-DrxP7bb3.js";
2
- export {
3
- stex
4
- };
@@ -1,65 +0,0 @@
1
- /* Copyright 2026 Marimo. All rights reserved. */
2
-
3
- import { describe, expect, it } from "vitest";
4
- import { seedFromFilter } from "../column-header";
5
- import { Filter } from "../filters";
6
-
7
- describe("seedFromFilter", () => {
8
- it("returns empty defaults when there is no filter", () => {
9
- expect(seedFromFilter(undefined)).toEqual({
10
- values: [],
11
- operator: "in",
12
- });
13
- });
14
-
15
- it("seeds values from an `in` select filter", () => {
16
- const filter = Filter.select({
17
- options: ["Flying", "Ground"],
18
- operator: "in",
19
- });
20
- expect(seedFromFilter(filter)).toEqual({
21
- values: ["Flying", "Ground"],
22
- operator: "in",
23
- });
24
- });
25
-
26
- it("preserves `not_in` so reapplying does not silently flip to `in`", () => {
27
- const filter = Filter.select({
28
- options: ["Fire"],
29
- operator: "not_in",
30
- });
31
- expect(seedFromFilter(filter)).toEqual({
32
- values: ["Fire"],
33
- operator: "not_in",
34
- });
35
- });
36
-
37
- it("returns a fresh array (callers may mutate without affecting the filter)", () => {
38
- const options = ["a", "b"];
39
- const filter = Filter.select({ options, operator: "in" });
40
- const seeded = seedFromFilter(filter);
41
- seeded.values.push("c");
42
- expect(options).toEqual(["a", "b"]);
43
- });
44
-
45
- it("ignores non-select filters and falls back to defaults", () => {
46
- expect(
47
- seedFromFilter(Filter.text({ text: "abc", operator: "equals" })),
48
- ).toEqual({
49
- values: [],
50
- operator: "in",
51
- });
52
- expect(
53
- seedFromFilter(Filter.number({ operator: "between", min: 0, max: 10 })),
54
- ).toEqual({
55
- values: [],
56
- operator: "in",
57
- });
58
- expect(
59
- seedFromFilter(Filter.boolean({ value: true, operator: "is_true" })),
60
- ).toEqual({
61
- values: [],
62
- operator: "in",
63
- });
64
- });
65
- });