@marimo-team/islands 0.25.1-dev17 → 0.25.1-dev19

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 (93) hide show
  1. package/dist/{ConnectedDataExplorerComponent-KVhjDMSe.js → ConnectedDataExplorerComponent-CwMXfDQR.js} +3 -3
  2. package/dist/{ErrorBoundary-B4i0ev18.js → ErrorBoundary-COz9efe5.js} +1 -1
  3. package/dist/{abnfDiagram-VCTEODGH-CpN0FRda.js → abnfDiagram-VCTEODGH-AFhOQTt8.js} +3 -3
  4. package/dist/{architectureDiagram-5GKGNRK7-DDyj5SRB.js → architectureDiagram-5GKGNRK7-BngksAAQ.js} +5 -5
  5. package/dist/{blockDiagram-I7D4REHJ-BbXEXJRu.js → blockDiagram-I7D4REHJ-CvBmppdy.js} +9 -9
  6. package/dist/{c4Diagram-7LVT6UL2-DcLsbQmR.js → c4Diagram-7LVT6UL2-EceL4_jH.js} +7 -7
  7. package/dist/{channel-B5XnTarr.js → channel-z7HZXHwv.js} +1 -1
  8. package/dist/{chat-ui-4lXygZ8L.js → chat-ui-ruucqBTA.js} +2 -2
  9. package/dist/{chunk-4HAMMTFA-D2qv8E0X.js → chunk-4HAMMTFA-BPTTOOC5.js} +5 -5
  10. package/dist/{chunk-75Z2AOVW-5_HsvXwr.js → chunk-75Z2AOVW-C4AOleKf.js} +1 -1
  11. package/dist/{chunk-DU6HZSFF-BUgAHvnM.js → chunk-DU6HZSFF-1TwWR6gh.js} +1 -1
  12. package/dist/{chunk-F27PBJKO-DHmYWZXr.js → chunk-F27PBJKO-DMI1PBe4.js} +1 -1
  13. package/dist/{chunk-GMAD6QVW-Czynz8aA.js → chunk-GMAD6QVW-vStrMz2P.js} +3 -3
  14. package/dist/{chunk-GVQU2GXP-yQEdulRS.js → chunk-GVQU2GXP-2HwWgs4u.js} +2 -2
  15. package/dist/{chunk-IMKFNOWR-BfwTebD0.js → chunk-IMKFNOWR-UOVZuZVn.js} +5 -5
  16. package/dist/{chunk-L3NEJ4N5-DwRWnDDK.js → chunk-L3NEJ4N5-RhC7i0I2.js} +5 -5
  17. package/dist/{chunk-OSK3NFVY-BBKU_Ign.js → chunk-OSK3NFVY-CZV09N-U.js} +6 -6
  18. package/dist/{chunk-P2QGCYS3-C0iGU29N.js → chunk-P2QGCYS3-0TAWai9C.js} +1 -1
  19. package/dist/{chunk-POPQ4Y6H-BCbS3Ozc.js → chunk-POPQ4Y6H-Cc3_56GX.js} +1 -1
  20. package/dist/{chunk-PWAF6VOD-CTFCL0jI.js → chunk-PWAF6VOD-lNxB9k8z.js} +1 -1
  21. package/dist/{chunk-SHT3W25Y-BspJEJ5H.js → chunk-SHT3W25Y-CrEPyWy1.js} +7 -7
  22. package/dist/{chunk-SVP7TREG-DX3rFNTe.js → chunk-SVP7TREG-uIyyySp6.js} +2 -2
  23. package/dist/{chunk-TICWLB2K-fVF7Uujg.js → chunk-TICWLB2K-DdXM3eg6.js} +5 -5
  24. package/dist/classDiagram-ZZMXUADV-BiATbBE4.js +30 -0
  25. package/dist/classDiagram-v2-VYDZK3BY-JnH97GYw.js +30 -0
  26. package/dist/{code-visibility-CRc1C5g4.js → code-visibility-KWCdGR2B.js} +1 -1
  27. package/dist/{common-DQS4JILK.js → common-Co3xNETF.js} +6 -6
  28. package/dist/{cynefinDiagram-5FMLGOSQ-CFQrqzSX.js → cynefinDiagram-5FMLGOSQ-zknaAsGy.js} +3 -3
  29. package/dist/{dagre-GXQ25YYZ-xHNAUTyG.js → dagre-GXQ25YYZ-BhMOoMGJ.js} +10 -10
  30. package/dist/{data-grid-overlay-editor-D0-p5694.js → data-grid-overlay-editor-DjLO1KwR.js} +1 -1
  31. package/dist/{diagram-S7CK7UJ4-Bt1rPbAx.js → diagram-S7CK7UJ4-V5-Z-EDY.js} +4 -4
  32. package/dist/{diagram-UQ7AKVKN-D1sq5FoZ.js → diagram-UQ7AKVKN-qw8AjDal.js} +3 -3
  33. package/dist/{diagram-VSXAHHWV-BKpmG23x.js → diagram-VSXAHHWV-CR7BJygZ.js} +2 -2
  34. package/dist/{diagram-VX7I27RA-BMwGFVD6.js → diagram-VX7I27RA-DfuqFb1E.js} +5 -5
  35. package/dist/{diagram-Z3DM3KII--KLDR9Pl.js → diagram-Z3DM3KII-DpWwlYZB.js} +3 -3
  36. package/dist/{dist-BaHjhkpZ.js → dist-CcyKTBTF.js} +1 -1
  37. package/dist/{ebnfDiagram-PWID7BFC-WnG4cvSQ.js → ebnfDiagram-PWID7BFC-C20OnNMZ.js} +3 -3
  38. package/dist/{erDiagram-RLTQ6QDP-DhzKiYHc.js → erDiagram-RLTQ6QDP-DBXLWO9v.js} +12 -12
  39. package/dist/{feedback-button-DD68Ij-B.js → feedback-button-CR3A_M18.js} +2 -2
  40. package/dist/flowDiagram-HODETNUW-DL52nMkt.js +16 -0
  41. package/dist/{formats-C8rLgZT9.js → formats-Cl_67ghI.js} +1 -1
  42. package/dist/{ganttDiagram-EL5Y4UJY-DbzEBLbl.js → ganttDiagram-EL5Y4UJY-cRRaDt88.js} +2 -2
  43. package/dist/{gitGraphDiagram-WWUBYQGX-BMf0iKi1.js → gitGraphDiagram-WWUBYQGX-Pox5k9-Y.js} +2 -2
  44. package/dist/{glide-data-editor-DqTwUsOq.js → glide-data-editor-BNLUOZjA.js} +3 -3
  45. package/dist/{globals-RG69U5-c.js → globals-Bo6jiiCB.js} +1 -1
  46. package/dist/{html-to-image-jTwYSWRc.js → html-to-image-CcfkLMrx.js} +1 -1
  47. package/dist/{infoDiagram-27XIBGKW-BagtCX_5.js → infoDiagram-27XIBGKW-ntpxMfrq.js} +2 -2
  48. package/dist/{ishikawaDiagram-5VMMS53U-DByDehYy.js → ishikawaDiagram-5VMMS53U-BllIlHE5.js} +3 -3
  49. package/dist/{journeyDiagram-3NMN7TZE-D2LcKDUO.js → journeyDiagram-3NMN7TZE-EPJDPlt0.js} +2 -2
  50. package/dist/{kanban-definition-UXKFOSKX-BxwkbBI_.js → kanban-definition-UXKFOSKX-GYtNMjtS.js} +9 -9
  51. package/dist/{katex-C6D4cX_N.js → katex-BNCmKUol.js} +983 -1120
  52. package/dist/{loader-D2W4oM-3.js → loader-DEZSzvma.js} +253 -248
  53. package/dist/main.js +52 -45
  54. package/dist/{mermaid-DPNuhemn.js → mermaid-Dnzoxjt1.js} +49 -49
  55. package/dist/{mhchem-DWCF06w9.js → mhchem-BEc7A1or.js} +1 -1
  56. package/dist/{mindmap-definition-YA3MSWOX-Cgvojw3y.js → mindmap-definition-YA3MSWOX-Cth76xgH.js} +11 -11
  57. package/dist/{number-overlay-editor-DB4g1nLo.js → number-overlay-editor-CBLyCJ6Y.js} +1 -1
  58. package/dist/{pegDiagram-XKGWAZYB-DahHhYyN.js → pegDiagram-XKGWAZYB-Cu4uOXii.js} +3 -3
  59. package/dist/{pieDiagram-E7YTZNPT-CCtX0oCK.js → pieDiagram-E7YTZNPT-Bh3eDa9s.js} +3 -3
  60. package/dist/{process-output-DevJrL3v.js → process-output-C6apL85F.js} +1 -1
  61. package/dist/{quadrantDiagram-AXDQQJYC-DftINo6g.js → quadrantDiagram-AXDQQJYC--kqzFC3w.js} +1 -1
  62. package/dist/{railroadDiagram-O6MQD6OU-Du5NsPUb.js → railroadDiagram-O6MQD6OU-DG-M6Rnc.js} +3 -3
  63. package/dist/{react-vega-5AcMW8gG.js → react-vega-ewj7q_U5.js} +1 -1
  64. package/dist/{requirementDiagram-BXWQKSXE-0pmmxL6_.js → requirementDiagram-BXWQKSXE-DCwsThh0.js} +11 -11
  65. package/dist/{reveal-component-QBu-zZNO.js → reveal-component-CV3wxaFO.js} +2 -2
  66. package/dist/{sankeyDiagram-P5KCCOFB-CDKR5TJH.js → sankeyDiagram-P5KCCOFB-BdzhT0BM.js} +1 -1
  67. package/dist/{sequenceDiagram-WJ2MYXX4-DB-ChWwU.js → sequenceDiagram-WJ2MYXX4-CbXB1_PU.js} +4 -4
  68. package/dist/{stateDiagram-D77RDMKH-orN6AwMx.js → stateDiagram-D77RDMKH-A-Zf3Sb2.js} +13 -13
  69. package/dist/stateDiagram-v2-MP3YSRHH-D9YMnUGx.js +30 -0
  70. package/dist/style.css +1 -1
  71. package/dist/{swimlanes-42K2YHIH-BkSDcqDT.js → swimlanes-42K2YHIH-B_pMf0J4.js} +10 -10
  72. package/dist/swimlanesDiagram-VR7AAH4N-Ctgy-yGP.js +30 -0
  73. package/dist/{timeline-definition-24CTP7MA-BuqJUIRZ.js → timeline-definition-24CTP7MA-DTXFjTTM.js} +3 -3
  74. package/dist/{vega-component-CNf5gcrm.js → vega-component-tFOzgarw.js} +4 -4
  75. package/dist/{vega-embed-container-CbnTccZi.js → vega-embed-container-sSR5hAsy.js} +2 -2
  76. package/dist/{vega-loader.browser-D95WfUcj.js → vega-loader.browser-DNST6uVf.js} +2 -2
  77. package/dist/{vennDiagram-4TSXK5OY-CTUlJ2PK.js → vennDiagram-4TSXK5OY-BPHjZo0R.js} +3 -3
  78. package/dist/{wardleyDiagram-VM6X3IG4-3evLUb0M.js → wardleyDiagram-VM6X3IG4-6fTLYBuD.js} +3 -3
  79. package/dist/{xychartDiagram-S5SC5T6Z-DL2E3K8-.js → xychartDiagram-S5SC5T6Z-BYjwjrzE.js} +5 -5
  80. package/package.json +1 -2
  81. package/src/components/data-table/charts/__tests__/chart-panel.test.tsx +286 -0
  82. package/src/components/data-table/charts/charts.tsx +26 -13
  83. package/src/css/katex.min.css +260 -241
  84. package/src/plugins/impl/vega/__tests__/utils.test.ts +16 -1
  85. package/src/plugins/impl/vega/__tests__/vega.test.ts +37 -0
  86. package/src/plugins/impl/vega/loader.ts +23 -1
  87. package/src/plugins/impl/vega/utils.ts +5 -4
  88. package/dist/classDiagram-ZZMXUADV-Fe-V14Sc.js +0 -30
  89. package/dist/classDiagram-v2-VYDZK3BY-xTDg7lOs.js +0 -30
  90. package/dist/flowDiagram-HODETNUW-6dMdB8pR.js +0 -16
  91. package/dist/katex-DFBiSucW.js +0 -21840
  92. package/dist/stateDiagram-v2-MP3YSRHH-o05_rJN8.js +0 -30
  93. package/dist/swimlanesDiagram-VR7AAH4N-D_nFQfRc.js +0 -30
@@ -1,7 +1,22 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import { describe, expect, it } from "vitest";
4
- import { getContainerWidth } from "../utils";
4
+ import { getContainerWidth, getVegaFieldTypes } from "../utils";
5
+
6
+ describe("getVegaFieldTypes", () => {
7
+ it("preserves date strings unless the caller requests date parsing", () => {
8
+ expect(getVegaFieldTypes({ day: "date", timestamp: "datetime" })).toEqual({
9
+ day: "string",
10
+ timestamp: "date",
11
+ });
12
+ expect(
13
+ getVegaFieldTypes(
14
+ { day: "date", timestamp: "datetime" },
15
+ { parseDates: true },
16
+ ),
17
+ ).toEqual({ day: "date", timestamp: "date" });
18
+ });
19
+ });
5
20
 
6
21
  describe("getContainerWidth", () => {
7
22
  it('should return "container" when spec width is "container"', () => {
@@ -13,6 +13,43 @@ const { ZERO_WIDTH_SPACE, replacePeriodsInColumnNames, uniquifyColumnNames } =
13
13
  exportedForTesting;
14
14
 
15
15
  describe("vega loader", () => {
16
+ it("parses infinities only in explicitly numeric CSV fields", async () => {
17
+ vi.spyOn(vegaLoader, "load").mockResolvedValue(
18
+ "value,label,id\ninf,inf,1\n-inf,-inf,2\n+inf,+inf,3\n2.5,002.5,4\n,,5\nNaN,NaN,6\n",
19
+ );
20
+
21
+ const data = await vegaLoadData("chart.csv", {
22
+ type: "csv",
23
+ parse: { value: "number", label: "string", id: "integer" },
24
+ });
25
+
26
+ expect(data).toEqual([
27
+ { value: Infinity, label: "inf", id: 1 },
28
+ { value: -Infinity, label: "-inf", id: 2 },
29
+ { value: Infinity, label: "+inf", id: 3 },
30
+ { value: 2.5, label: "002.5", id: 4 },
31
+ { value: null, label: null, id: 5 },
32
+ { value: Number.NaN, label: "NaN", id: 6 },
33
+ ]);
34
+ });
35
+
36
+ it("preserves the table's large integer and infinity handling", async () => {
37
+ vi.spyOn(vegaLoader, "load").mockResolvedValue(
38
+ "id,value\n9007199254740993,inf\n9007199254740995,-inf\n",
39
+ );
40
+
41
+ const data = await vegaLoadData(
42
+ "table.csv",
43
+ { type: "csv", parse: { id: "integer", value: "number" } },
44
+ { handleBigIntAndNumberLike: true },
45
+ );
46
+
47
+ expect(data).toEqual([
48
+ { id: BigInt("9007199254740993"), value: "inf" },
49
+ { id: BigInt("9007199254740995"), value: "-inf" },
50
+ ]);
51
+ });
52
+
16
53
  it("should parse csv data with dates", async () => {
17
54
  const csvData = `
18
55
  active,username,id
@@ -16,6 +16,26 @@ const previousNumberParser = typeParsers.number;
16
16
  const previousDateParser = typeParsers.date;
17
17
  const previousBooleanParser = typeParsers.boolean;
18
18
 
19
+ const NUMBER_MIDDLEWARE: Middleware = () => {
20
+ const parseNumber = (value: string) => {
21
+ if (value === "inf" || value === "+inf") {
22
+ return Number.POSITIVE_INFINITY;
23
+ }
24
+ if (value === "-inf") {
25
+ return Number.NEGATIVE_INFINITY;
26
+ }
27
+ return previousNumberParser(value);
28
+ };
29
+
30
+ typeParsers.integer = parseNumber;
31
+ typeParsers.number = parseNumber;
32
+
33
+ return () => {
34
+ typeParsers.integer = previousIntegerParser;
35
+ typeParsers.number = previousNumberParser;
36
+ };
37
+ };
38
+
19
39
  const BIG_INT_MIDDLEWARE: Middleware = () => {
20
40
  // Custom parser to:
21
41
  // - handle BigInt
@@ -159,6 +179,8 @@ export async function vegaLoadData<T = object>(
159
179
  const middleware: Middleware[] = [DATE_MIDDLEWARE];
160
180
  if (handleBigIntAndNumberLike) {
161
181
  middleware.push(BIG_INT_MIDDLEWARE);
182
+ } else {
183
+ middleware.push(NUMBER_MIDDLEWARE);
162
184
  }
163
185
 
164
186
  let unsubscribes: Unsubscribe[] = [];
@@ -216,7 +238,7 @@ export async function vegaLoadData<T = object>(
216
238
 
217
239
  // Apply middleware
218
240
  unsubscribes = middleware.map((m) => m());
219
- // Always set parse to auto for csv data, to be able to parse dates and floats
241
+ // CSV defaults to inference when no explicit column types are available.
220
242
  const results = isCsv
221
243
  ? // csv -> json
222
244
  read(csvOrJsonData, {
@@ -45,21 +45,22 @@ function toArray<T>(value: T | T[] | undefined): T[] {
45
45
 
46
46
  export function getVegaFieldTypes(
47
47
  types: Record<string, DataType> | undefined | null,
48
+ { parseDates = false }: { parseDates?: boolean } = {},
48
49
  ): FieldTypes | "auto" {
49
50
  if (!types || Object.keys(types).length === 0) {
50
51
  // If fieldTypes is provided, use it to parse the data
51
52
  // Otherwise, infer the data types
52
53
  return "auto";
53
54
  }
54
- // Convert all 'date' to 'string', because dates don't format back to
55
- // the correct formatting. For example, a date like '2024-01-01' will
56
- // be formatted to '2024-01-01T00:00:00.000Z'.
55
+ // Preserve date-only strings for callers such as the data editor.
56
+ // Parsing creates Date objects that JSON serializes as full timestamps.
57
+ // Charts opt into date parsing for temporal axes.
57
58
  return Objects.mapValues(types, (type): VegaDataType => {
58
59
  if (type === "geometry") {
59
60
  return "string";
60
61
  }
61
62
  if (type === "date") {
62
- return "string";
63
+ return parseDates ? "date" : "string";
63
64
  }
64
65
  if (type === "time") {
65
66
  return "string";
@@ -1,30 +0,0 @@
1
- import "./chunk-75Z2AOVW-5_HsvXwr.js";
2
- import "./src-CA_m4ONl.js";
3
- import { n as e } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
4
- import "./chunk-DU6HZSFF-BUgAHvnM.js";
5
- import "./chunk-P2QGCYS3-C0iGU29N.js";
6
- import "./chunk-PWAF6VOD-CTFCL0jI.js";
7
- import "./chunk-GMAD6QVW-Czynz8aA.js";
8
- import "./chunk-4HAMMTFA-D2qv8E0X.js";
9
- import "./chunk-GVQU2GXP-yQEdulRS.js";
10
- import "./chunk-L3NEJ4N5-DwRWnDDK.js";
11
- import "./chunk-OSK3NFVY-BBKU_Ign.js";
12
- import "./mermaid-DPNuhemn.js";
13
- import "./chunk-F27PBJKO-DHmYWZXr.js";
14
- import "./chunk-XXDRQBXY-Dnl5VBqG.js";
15
- import "./chunk-POPQ4Y6H-BCbS3Ozc.js";
16
- import { i as t, n, r, t as i } from "./chunk-TICWLB2K-fVF7Uujg.js";
17
- //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-ZZMXUADV.mjs
18
- var a = {
19
- parser: n,
20
- get db() {
21
- return new i();
22
- },
23
- renderer: r,
24
- styles: t,
25
- init: /* @__PURE__ */ e((e) => {
26
- e.class ||= {}, e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute;
27
- }, "init")
28
- };
29
- //#endregion
30
- export { a as diagram };
@@ -1,30 +0,0 @@
1
- import "./chunk-75Z2AOVW-5_HsvXwr.js";
2
- import "./src-CA_m4ONl.js";
3
- import { n as e } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
4
- import "./chunk-DU6HZSFF-BUgAHvnM.js";
5
- import "./chunk-P2QGCYS3-C0iGU29N.js";
6
- import "./chunk-PWAF6VOD-CTFCL0jI.js";
7
- import "./chunk-GMAD6QVW-Czynz8aA.js";
8
- import "./chunk-4HAMMTFA-D2qv8E0X.js";
9
- import "./chunk-GVQU2GXP-yQEdulRS.js";
10
- import "./chunk-L3NEJ4N5-DwRWnDDK.js";
11
- import "./chunk-OSK3NFVY-BBKU_Ign.js";
12
- import "./mermaid-DPNuhemn.js";
13
- import "./chunk-F27PBJKO-DHmYWZXr.js";
14
- import "./chunk-XXDRQBXY-Dnl5VBqG.js";
15
- import "./chunk-POPQ4Y6H-BCbS3Ozc.js";
16
- import { i as t, n, r, t as i } from "./chunk-TICWLB2K-fVF7Uujg.js";
17
- //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-VYDZK3BY.mjs
18
- var a = {
19
- parser: n,
20
- get db() {
21
- return new i();
22
- },
23
- renderer: r,
24
- styles: t,
25
- init: /* @__PURE__ */ e((e) => {
26
- e.class ||= {}, e.class.arrowMarkerAbsolute = e.arrowMarkerAbsolute;
27
- }, "init")
28
- };
29
- //#endregion
30
- export { a as diagram };
@@ -1,16 +0,0 @@
1
- import "./chunk-75Z2AOVW-5_HsvXwr.js";
2
- import "./src-CA_m4ONl.js";
3
- import "./chunk-DU6HZSFF-BUgAHvnM.js";
4
- import "./chunk-P2QGCYS3-C0iGU29N.js";
5
- import "./chunk-PWAF6VOD-CTFCL0jI.js";
6
- import "./chunk-GMAD6QVW-Czynz8aA.js";
7
- import "./chunk-4HAMMTFA-D2qv8E0X.js";
8
- import "./chunk-GVQU2GXP-yQEdulRS.js";
9
- import "./chunk-L3NEJ4N5-DwRWnDDK.js";
10
- import "./chunk-OSK3NFVY-BBKU_Ign.js";
11
- import "./mermaid-DPNuhemn.js";
12
- import "./chunk-F27PBJKO-DHmYWZXr.js";
13
- import "./chunk-XXDRQBXY-Dnl5VBqG.js";
14
- import "./chunk-POPQ4Y6H-BCbS3Ozc.js";
15
- import { n as e } from "./chunk-SHT3W25Y-BspJEJ5H.js";
16
- export { e as diagram };