@marimo-team/frontend 0.22.1-dev25 → 0.22.1-dev27

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 (67) hide show
  1. package/dist/assets/{index-CCazW2UV.css → index-DawClVBD.css} +1 -1
  2. package/dist/assets/{index-DPuSyce0.js → index-Dfcne_w3.js} +1 -1
  3. package/dist/index.html +2 -2
  4. package/package.json +4 -5
  5. package/src/__tests__/main.test.tsx +12 -14
  6. package/src/components/ai/ai-provider-icon.tsx +1 -2
  7. package/src/components/data-table/cell-selection/types.ts +3 -2
  8. package/src/components/data-table/charts/charts.tsx +2 -2
  9. package/src/components/data-table/column-formatting/types.ts +3 -2
  10. package/src/components/data-table/column-header.tsx +4 -2
  11. package/src/components/data-table/column-wrapping/types.ts +3 -2
  12. package/src/components/data-table/copy-column/types.ts +3 -2
  13. package/src/components/data-table/focus-row/types.ts +3 -2
  14. package/src/components/data-table/range-focus/__tests__/atoms.test.ts +11 -11
  15. package/src/components/data-table/range-focus/__tests__/use-cell-range-selection.test.ts +9 -11
  16. package/src/components/editor/__tests__/data-attributes.test.tsx +93 -94
  17. package/src/components/editor/actions/name-cell-input.tsx +4 -2
  18. package/src/components/editor/actions/useCellActionButton.tsx +4 -2
  19. package/src/components/editor/cell/CellStatus.tsx +4 -5
  20. package/src/components/editor/cell/cell-context-menu.tsx +4 -2
  21. package/src/components/editor/cell/code/cell-editor.tsx +2 -1
  22. package/src/components/editor/cell/toolbar.tsx +2 -1
  23. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +11 -12
  24. package/src/components/storage/__tests__/storage-snippets.test.ts +4 -6
  25. package/src/components/tracing/tracing.test.tsx +30 -30
  26. package/src/components/ui/badge.tsx +2 -1
  27. package/src/components/ui/button.tsx +2 -1
  28. package/src/components/ui/calendar.tsx +3 -2
  29. package/src/components/ui/combobox.tsx +2 -1
  30. package/src/components/ui/date-input.tsx +7 -6
  31. package/src/components/ui/date-picker.tsx +6 -4
  32. package/src/components/ui/field.tsx +1 -2
  33. package/src/components/ui/progress.tsx +3 -2
  34. package/src/components/ui/query-param-preserving-link.tsx +4 -2
  35. package/src/components/ui/sheet.tsx +2 -1
  36. package/src/components/ui/textarea.tsx +1 -2
  37. package/src/core/ai/context/providers/cell-output.ts +1 -2
  38. package/src/core/ai/tools/edit-notebook-tool.ts +4 -3
  39. package/src/core/ai/tools/run-cells-tool.ts +4 -3
  40. package/src/core/cells/__tests__/add-missing-import.test.ts +23 -22
  41. package/src/core/cells/__tests__/cell.test.ts +14 -13
  42. package/src/core/codemirror/cells/__tests__/extensions.test.ts +15 -17
  43. package/src/core/codemirror/language/languages/markdown.ts +1 -3
  44. package/src/core/codemirror/language/languages/python.ts +1 -1
  45. package/src/core/codemirror/language/languages/sql/completion-sources.tsx +4 -6
  46. package/src/core/codemirror/language/languages/sql/sql.ts +1 -3
  47. package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +28 -42
  48. package/src/core/datasets/data-source-connections.ts +4 -2
  49. package/src/core/dom/__tests__/htmlUtils.test.ts +8 -14
  50. package/src/core/dom/__tests__/outline.test.ts +2 -3
  51. package/src/core/islands/__tests__/parse.test.ts +8 -7
  52. package/src/core/saving/__tests__/filename.test.ts +7 -6
  53. package/src/core/static/__tests__/download-html.test.ts +16 -15
  54. package/src/core/static/__tests__/files.test.ts +30 -28
  55. package/src/css/app/Cell.css +5 -2
  56. package/src/css/globals.css +40 -14
  57. package/src/plugins/impl/DataEditorPlugin.tsx +4 -2
  58. package/src/plugins/impl/FormPlugin.tsx +1 -2
  59. package/src/plugins/impl/data-frames/forms/__tests__/form.test.tsx +7 -9
  60. package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +13 -14
  61. package/src/plugins/layout/ImageComparisonPlugin.tsx +1 -3
  62. package/src/plugins/stateless-plugin.ts +4 -2
  63. package/src/utils/__tests__/cell-urls.test.ts +24 -21
  64. package/src/utils/__tests__/filenames.test.ts +15 -14
  65. package/src/utils/__tests__/json-parser.test.ts +14 -21
  66. package/src/utils/__tests__/path.test.ts +34 -31
  67. package/src/utils/__tests__/urls.test.ts +19 -18
@@ -170,36 +170,39 @@ describe("PathBuilder", () => {
170
170
  });
171
171
 
172
172
  describe("edge case filenames", () => {
173
- it.each(
174
- EDGE_CASE_FILENAMES,
175
- )("should handle unicode and spaces in basename: %s", (filename) => {
176
- const basename = Paths.basename(filename);
177
- expect(basename).toBe(filename);
178
- expect(typeof basename).toBe("string");
179
- expect(basename).not.toBe("");
180
- });
181
-
182
- it.each(
183
- EDGE_CASE_FILENAMES,
184
- )("should handle unicode and spaces in dirname: %s", (filename) => {
185
- const fullPath = `/path/to/${filename}`;
186
- const dirname = Paths.dirname(fullPath);
187
- expect(dirname).toBe("/path/to");
188
- });
189
-
190
- it.each(
191
- EDGE_CASE_FILENAMES,
192
- )("should handle unicode and spaces in path operations: %s", (filename) => {
193
- const baseName = Paths.basename(filename);
194
- const extension = Paths.extension(filename);
195
-
196
- // Should preserve unicode characters in basename
197
- expect(baseName).toContain(filename.split(".")[0]);
198
-
199
- // Should correctly extract extension
200
- if (filename.includes(".")) {
201
- expect(extension).toBe(filename.split(".").pop());
202
- }
203
- });
173
+ it.each(EDGE_CASE_FILENAMES)(
174
+ "should handle unicode and spaces in basename: %s",
175
+ (filename) => {
176
+ const basename = Paths.basename(filename);
177
+ expect(basename).toBe(filename);
178
+ expect(typeof basename).toBe("string");
179
+ expect(basename).not.toBe("");
180
+ },
181
+ );
182
+
183
+ it.each(EDGE_CASE_FILENAMES)(
184
+ "should handle unicode and spaces in dirname: %s",
185
+ (filename) => {
186
+ const fullPath = `/path/to/${filename}`;
187
+ const dirname = Paths.dirname(fullPath);
188
+ expect(dirname).toBe("/path/to");
189
+ },
190
+ );
191
+
192
+ it.each(EDGE_CASE_FILENAMES)(
193
+ "should handle unicode and spaces in path operations: %s",
194
+ (filename) => {
195
+ const baseName = Paths.basename(filename);
196
+ const extension = Paths.extension(filename);
197
+
198
+ // Should preserve unicode characters in basename
199
+ expect(baseName).toContain(filename.split(".")[0]);
200
+
201
+ // Should correctly extract extension
202
+ if (filename.includes(".")) {
203
+ expect(extension).toBe(filename.split(".").pop());
204
+ }
205
+ },
206
+ );
204
207
  });
205
208
  });
@@ -14,24 +14,25 @@ describe("isUrl", () => {
14
14
  });
15
15
 
16
16
  describe("URL parameter handling with edge case filenames", () => {
17
- it.each(
18
- EDGE_CASE_FILENAMES,
19
- )("should handle unicode filenames in URL parameters: %s", (filename) => {
20
- // Test that updateQueryParams can handle unicode filenames
21
- updateQueryParams((params) => {
22
- params.set("file", filename);
23
- });
24
-
25
- // Verify URL encoding/decoding works with unicode
26
- const encoded = encodeURIComponent(filename);
27
- const decoded = decodeURIComponent(encoded);
28
- expect(decoded).toBe(filename);
29
-
30
- // Verify filename can be safely added to URL parameters
31
- const url = new URL("https://example.com");
32
- url.searchParams.set("file", filename);
33
- expect(url.searchParams.get("file")).toBe(filename);
34
- });
17
+ it.each(EDGE_CASE_FILENAMES)(
18
+ "should handle unicode filenames in URL parameters: %s",
19
+ (filename) => {
20
+ // Test that updateQueryParams can handle unicode filenames
21
+ updateQueryParams((params) => {
22
+ params.set("file", filename);
23
+ });
24
+
25
+ // Verify URL encoding/decoding works with unicode
26
+ const encoded = encodeURIComponent(filename);
27
+ const decoded = decodeURIComponent(encoded);
28
+ expect(decoded).toBe(filename);
29
+
30
+ // Verify filename can be safely added to URL parameters
31
+ const url = new URL("https://example.com");
32
+ url.searchParams.set("file", filename);
33
+ expect(url.searchParams.get("file")).toBe(filename);
34
+ },
35
+ );
35
36
 
36
37
  it("should preserve unicode in query string round-trip", () => {
37
38
  EDGE_CASE_FILENAMES.forEach((filename) => {