@marimo-team/islands 0.25.3-dev200 → 0.25.3-dev202

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 (82) hide show
  1. package/dist/{ConnectedDataExplorerComponent-BsWiIPFk.js → ConnectedDataExplorerComponent-DFynurqb.js} +4 -4
  2. package/dist/{ErrorBoundary-UWARECs-.js → ErrorBoundary-WrYf85lG.js} +2 -2
  3. package/dist/{abnfDiagram-VCTEODGH-I2x4Yu25.js → abnfDiagram-VCTEODGH-DGkUyNdz.js} +2 -2
  4. package/dist/{architectureDiagram-5GKGNRK7-1bSQMKzK.js → architectureDiagram-5GKGNRK7-Bav9J7uF.js} +1 -1
  5. package/dist/{chat-ui-DXDoSuS4.js → chat-ui-Dorq26Pp.js} +7 -7
  6. package/dist/{chunk-IMKFNOWR-fsCGAJ9G.js → chunk-IMKFNOWR-1UCTsTqh.js} +1 -1
  7. package/dist/{chunk-SHT3W25Y-D2STW4hj.js → chunk-SHT3W25Y-Bige_rTb.js} +1 -1
  8. package/dist/{chunk-SVP7TREG-CiY7cQG-.js → chunk-SVP7TREG-Cmr0Anfb.js} +1 -1
  9. package/dist/{chunk-TICWLB2K-C_t5RBp9.js → chunk-TICWLB2K-IWykFldb.js} +1 -1
  10. package/dist/{classDiagram-ZZMXUADV-B2JvZAP4.js → classDiagram-ZZMXUADV-BH73ECRQ.js} +2 -2
  11. package/dist/{classDiagram-v2-VYDZK3BY-L8VsZG5A.js → classDiagram-v2-VYDZK3BY-CCuCgq0H.js} +2 -2
  12. package/dist/{code-visibility-33fxfX1p.js → code-visibility-Da3AIDPM.js} +4 -4
  13. package/dist/{common-D09oJJ8Z.js → common-C2v8rzIe.js} +9 -9
  14. package/dist/{cynefinDiagram-5FMLGOSQ-DdllC264.js → cynefinDiagram-5FMLGOSQ-CWtL7MIJ.js} +1 -1
  15. package/dist/{dagre-GXQ25YYZ-BaWHw4_f.js → dagre-GXQ25YYZ-DsVO2pVC.js} +1 -1
  16. package/dist/{data-grid-overlay-editor-lGsInXfR.js → data-grid-overlay-editor-D6qBi2N4.js} +1 -1
  17. package/dist/{diagram-S7CK7UJ4-pFt-tUDe.js → diagram-S7CK7UJ4-BuAktgZv.js} +1 -1
  18. package/dist/{diagram-UQ7AKVKN-DqGJiBp4.js → diagram-UQ7AKVKN-DlkAXHu5.js} +1 -1
  19. package/dist/{diagram-VX7I27RA-Dr-yzMjf.js → diagram-VX7I27RA-B9U9H0E8.js} +1 -1
  20. package/dist/{diagram-Z3DM3KII-8xzJzv-w.js → diagram-Z3DM3KII-BqmfxzUL.js} +1 -1
  21. package/dist/{dropdown-menu-NlnsmNA6.js → dropdown-menu-BFQYzWmC.js} +1 -1
  22. package/dist/{ebnfDiagram-PWID7BFC-Br04Wy-E.js → ebnfDiagram-PWID7BFC-CH5t8ATi.js} +2 -2
  23. package/dist/{erDiagram-RLTQ6QDP-D5-XVgvv.js → erDiagram-RLTQ6QDP-DdIo2BIb.js} +1 -1
  24. package/dist/{error-entries-C2Ux0Fjt.js → error-entries-B0bcEwXm.js} +4 -4
  25. package/dist/{feedback-button-B0CMhVv7.js → feedback-button-DRs9T1rB.js} +5 -5
  26. package/dist/{flowDiagram-HODETNUW-CVl2kREF.js → flowDiagram-HODETNUW-BmYk_-Na.js} +2 -2
  27. package/dist/{formats-BCYthwyc.js → formats-DyYnckF5.js} +1 -1
  28. package/dist/{glide-data-editor-CL535A5q.js → glide-data-editor-BA4zIeS0.js} +5 -5
  29. package/dist/{globals-Bsr6T2yD.js → globals-Sw6xG6S5.js} +2 -2
  30. package/dist/{html-to-image-CkH7vdBZ.js → html-to-image-BOd7ryZJ.js} +5 -5
  31. package/dist/{infoDiagram-27XIBGKW-BJ4vNcZE.js → infoDiagram-27XIBGKW-DvYh-Sbk.js} +1 -1
  32. package/dist/{ishikawaDiagram-5VMMS53U-B_Jy1Dsm.js → ishikawaDiagram-5VMMS53U-BdHnYq8s.js} +1 -1
  33. package/dist/{kanban-definition-UXKFOSKX-C6MkS9vw.js → kanban-definition-UXKFOSKX-Bf8CT_tU.js} +1 -1
  34. package/dist/main.js +48 -70
  35. package/dist/{mermaid-Bh918qrq.js → mermaid-DBpOnw8c.js} +34 -34
  36. package/dist/{mindmap-definition-YA3MSWOX-BP3ZTuir.js → mindmap-definition-YA3MSWOX-DkYG8ltR.js} +1 -1
  37. package/dist/{number-overlay-editor-CzbkG4E2.js → number-overlay-editor-Dj-a_cEA.js} +1 -1
  38. package/dist/{pegDiagram-XKGWAZYB-nNGOQtnt.js → pegDiagram-XKGWAZYB-DM7BQ0ip.js} +2 -2
  39. package/dist/{pieDiagram-E7YTZNPT-CpRz5BZz.js → pieDiagram-E7YTZNPT-CPFGg4YS.js} +1 -1
  40. package/dist/{process-output-OujAtFW4.js → process-output-8BbxxGrz.js} +2 -2
  41. package/dist/{railroadDiagram-O6MQD6OU-BqOEN4I0.js → railroadDiagram-O6MQD6OU-4rUJlIpQ.js} +2 -2
  42. package/dist/{requirementDiagram-BXWQKSXE-CEfg6vu9.js → requirementDiagram-BXWQKSXE-F6ffUUQC.js} +1 -1
  43. package/dist/{reveal-component-CbEK0sNX.js → reveal-component-DjYragzd.js} +6 -6
  44. package/dist/{sequenceDiagram-WJ2MYXX4-IOmpQcOi.js → sequenceDiagram-WJ2MYXX4-tNU95HVS.js} +1 -1
  45. package/dist/{spec-Dkp64vVQ.js → spec-Alkla7dB.js} +1 -1
  46. package/dist/{stateDiagram-D77RDMKH-tgU-EY9_.js → stateDiagram-D77RDMKH-BA8Modqv.js} +2 -2
  47. package/dist/{stateDiagram-v2-MP3YSRHH-BofhG6q1.js → stateDiagram-v2-MP3YSRHH-CFmickht.js} +2 -2
  48. package/dist/{swimlanes-42K2YHIH-DW4vWDBd.js → swimlanes-42K2YHIH-DBiYZZZc.js} +1 -1
  49. package/dist/{swimlanesDiagram-VR7AAH4N-BJcrqUJr.js → swimlanesDiagram-VR7AAH4N-CsgR851k.js} +2 -2
  50. package/dist/{timeline-definition-24CTP7MA-D_QU3NGs.js → timeline-definition-24CTP7MA-Dfj0CMXY.js} +1 -1
  51. package/dist/{toDate-BNDEXbfV.js → toDate-B0-Y0SEW.js} +1 -1
  52. package/dist/{useAsyncData-ASDni9vH.js → useAsyncData-Phxf6GCd.js} +1 -1
  53. package/dist/{useDeepCompareMemoize-B1Ogyf53.js → useDeepCompareMemoize-BXv7DUcU.js} +1 -1
  54. package/dist/{useLifecycle-Bfpa2m7k.js → useLifecycle-DDDsO4O2.js} +1 -1
  55. package/dist/{useTheme-5TwyOh3B.js → useTheme-DbBkeP6Z.js} +65 -60
  56. package/dist/{vega-component-BHS9UOtC.js → vega-component-C_dhEynE.js} +5 -5
  57. package/dist/{vennDiagram-4TSXK5OY-YFYsNIAh.js → vennDiagram-4TSXK5OY-fJ83Z7FE.js} +1 -1
  58. package/dist/{wardleyDiagram-VM6X3IG4-i_n8mAWC.js → wardleyDiagram-VM6X3IG4-DbO9cD15.js} +1 -1
  59. package/dist/{xychartDiagram-S5SC5T6Z-BYGN95wW.js → xychartDiagram-S5SC5T6Z-DmsdQJG7.js} +1 -1
  60. package/package.json +1 -1
  61. package/src/__mocks__/requests.ts +1 -1
  62. package/src/components/editor/header/__tests__/filename-form.test.tsx +1 -4
  63. package/src/components/editor/header/filename-form.tsx +1 -1
  64. package/src/core/cells/__tests__/document.test.ts +1 -22
  65. package/src/core/cells/document.ts +0 -33
  66. package/src/core/islands/bridge.ts +1 -1
  67. package/src/core/network/requests-lazy.ts +1 -1
  68. package/src/core/network/requests-network.ts +8 -9
  69. package/src/core/network/requests-static.ts +1 -1
  70. package/src/core/network/requests-toasting.tsx +1 -1
  71. package/src/core/network/types.ts +6 -2
  72. package/src/core/notebook/document/model.ts +0 -3
  73. package/src/core/notebook/document/sync.ts +4 -53
  74. package/src/core/saving/__tests__/document.test.tsx +123 -0
  75. package/src/core/saving/document.ts +33 -0
  76. package/src/core/saving/save-component.tsx +24 -37
  77. package/src/core/session/active-notebook.ts +6 -0
  78. package/src/core/wasm/__tests__/bridge.test.ts +2 -126
  79. package/src/core/wasm/bridge.ts +1 -18
  80. package/src/core/wasm/worker/worker.ts +2 -2
  81. package/src/core/cells/__tests__/with-document-save.test.ts +0 -67
  82. package/src/core/notebook/document/__tests__/hold.test.ts +0 -88
@@ -3,15 +3,15 @@ import { c as t, g as n, h as r, m as i, t as a } from "./button-BQRdqQi1.js";
3
3
  import { t as o } from "./react-sHtZdjeP.js";
4
4
  import { t as s } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { m as c, t as l } from "./tooltip-s4zZxwKe.js";
6
- import { Zt as u } from "./error-entries-C2Ux0Fjt.js";
7
- import { $ as d, Q as f, Z as p, an as m, i as h, l as g, ln as _, n as v, on as y, r as b, t as x, u as S } from "./common-D09oJJ8Z.js";
6
+ import { Zt as u } from "./error-entries-B0bcEwXm.js";
7
+ import { $ as d, Q as f, Z as p, an as m, i as h, l as g, ln as _, n as v, on as y, r as b, t as x, u as S } from "./common-C2v8rzIe.js";
8
8
  import { M as C } from "./select-2KOiReNY.js";
9
- import { J as ee } from "./dropdown-menu-NlnsmNA6.js";
10
- import { _ as w } from "./toDate-BNDEXbfV.js";
9
+ import { J as ee } from "./dropdown-menu-BFQYzWmC.js";
10
+ import { _ as w } from "./toDate-B0-Y0SEW.js";
11
11
  import { t as T } from "./jsx-runtime-3BD1kT0s.js";
12
12
  import { X as te } from "./use-restore-focus-BgDTd2tc.js";
13
- import { M as E, R as D, o as O } from "./useTheme-5TwyOh3B.js";
14
- import { a as k, n as ne, t as re } from "./code-visibility-33fxfX1p.js";
13
+ import { M as E, R as D, o as O } from "./useTheme-DbBkeP6Z.js";
14
+ import { a as k, n as ne, t as re } from "./code-visibility-Da3AIDPM.js";
15
15
  /* empty css */
16
16
  var A = c("sticky-note", [["path", {
17
17
  d: "M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z",
@@ -3,7 +3,7 @@ import { n, t as r } from "./src-CA_m4ONl.js";
3
3
  import { n as i } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
4
4
  import { A as a, F as o, G as s, H as c, K as l, O as u, U as d, a as f, b as p, c as m, i as h, r as g, s as _, v, w as y, x as b, y as x, z as S } from "./chunk-DU6HZSFF-BwiyaNpg.js";
5
5
  import { t as C } from "./dist-DUAh96QY.js";
6
- import { a as w, i as T } from "./mermaid-Bh918qrq.js";
6
+ import { a as w, i as T } from "./mermaid-DBpOnw8c.js";
7
7
  import { a as E, c as D, i as O, n as k, r as A, s as j } from "./chunk-F27PBJKO-ufseIn5y.js";
8
8
  import { t as M } from "./chunk-2Q5K7J3B-BMkUkeuy.js";
9
9
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-WJ2MYXX4.mjs
@@ -1,5 +1,5 @@
1
1
  import { m as e } from "./tooltip-s4zZxwKe.js";
2
- import { s as t } from "./useLifecycle-Bfpa2m7k.js";
2
+ import { s as t } from "./useLifecycle-DDDsO4O2.js";
3
3
  import { i as n, o as r } from "./useDateFormatter-D3Tkfzej.js";
4
4
  import { C as i } from "./select-2KOiReNY.js";
5
5
  var a = e("align-center-vertical", [
@@ -12,11 +12,11 @@ import "./chunk-4HAMMTFA-D4eFPyFh.js";
12
12
  import "./chunk-GVQU2GXP-Cwbt-lF0.js";
13
13
  import "./chunk-L3NEJ4N5-n-zgIVSy.js";
14
14
  import "./chunk-OSK3NFVY-DXa-Cxbn.js";
15
- import "./mermaid-Bh918qrq.js";
15
+ import "./mermaid-DBpOnw8c.js";
16
16
  import "./chunk-F27PBJKO-ufseIn5y.js";
17
17
  import "./chunk-XXDRQBXY-Dnl5VBqG.js";
18
18
  import "./chunk-POPQ4Y6H-hYOXbYH_.js";
19
- import { i as f, n as p, t as m } from "./chunk-IMKFNOWR-fsCGAJ9G.js";
19
+ import { i as f, n as p, t as m } from "./chunk-IMKFNOWR-1UCTsTqh.js";
20
20
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-D77RDMKH.mjs
21
21
  var h = /* @__PURE__ */ s((e) => e.append("circle").attr("class", "start-state").attr("r", d().state.sizeUnit).attr("cx", d().state.padding + d().state.sizeUnit).attr("cy", d().state.padding + d().state.sizeUnit), "drawStartState"), g = /* @__PURE__ */ s((e) => e.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", d().state.textHeight).attr("class", "divider").attr("x2", d().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider"), _ = /* @__PURE__ */ s((e, t) => {
22
22
  let n = e.append("text").attr("x", 2 * d().state.padding).attr("y", d().state.textHeight + 2 * d().state.padding).attr("font-size", d().state.fontSize).attr("class", "state-title").text(t.id), r = n.node().getBBox();
@@ -9,11 +9,11 @@ import "./chunk-4HAMMTFA-D4eFPyFh.js";
9
9
  import "./chunk-GVQU2GXP-Cwbt-lF0.js";
10
10
  import "./chunk-L3NEJ4N5-n-zgIVSy.js";
11
11
  import "./chunk-OSK3NFVY-DXa-Cxbn.js";
12
- import "./mermaid-Bh918qrq.js";
12
+ import "./mermaid-DBpOnw8c.js";
13
13
  import "./chunk-F27PBJKO-ufseIn5y.js";
14
14
  import "./chunk-XXDRQBXY-Dnl5VBqG.js";
15
15
  import "./chunk-POPQ4Y6H-hYOXbYH_.js";
16
- import { i as t, n, r, t as i } from "./chunk-IMKFNOWR-fsCGAJ9G.js";
16
+ import { i as t, n, r, t as i } from "./chunk-IMKFNOWR-1UCTsTqh.js";
17
17
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-MP3YSRHH.mjs
18
18
  var a = {
19
19
  parser: n,
@@ -9,7 +9,7 @@ import "./chunk-4HAMMTFA-D4eFPyFh.js";
9
9
  import "./chunk-GVQU2GXP-Cwbt-lF0.js";
10
10
  import "./chunk-L3NEJ4N5-n-zgIVSy.js";
11
11
  import { o as n } from "./chunk-OSK3NFVY-DXa-Cxbn.js";
12
- import { c as r } from "./mermaid-Bh918qrq.js";
12
+ import { c as r } from "./mermaid-DBpOnw8c.js";
13
13
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/swimlanes-42K2YHIH.mjs
14
14
  var i = 5, a = 1e-5, o = 1e-6;
15
15
  function s(e) {
@@ -9,11 +9,11 @@ import "./chunk-4HAMMTFA-D4eFPyFh.js";
9
9
  import "./chunk-GVQU2GXP-Cwbt-lF0.js";
10
10
  import "./chunk-L3NEJ4N5-n-zgIVSy.js";
11
11
  import "./chunk-OSK3NFVY-DXa-Cxbn.js";
12
- import "./mermaid-Bh918qrq.js";
12
+ import "./mermaid-DBpOnw8c.js";
13
13
  import "./chunk-F27PBJKO-ufseIn5y.js";
14
14
  import "./chunk-XXDRQBXY-Dnl5VBqG.js";
15
15
  import "./chunk-POPQ4Y6H-hYOXbYH_.js";
16
- import { r as t, t as n } from "./chunk-SHT3W25Y-D2STW4hj.js";
16
+ import { r as t, t as n } from "./chunk-SHT3W25Y-Bige_rTb.js";
17
17
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/swimlanesDiagram-VR7AAH4N.mjs
18
18
  var r = n({
19
19
  defaultLayout: "swimlane",
@@ -3,7 +3,7 @@ import { p as t } from "./chunk-75Z2AOVW-D7gxIs2Q.js";
3
3
  import { n, t as r } from "./src-CA_m4ONl.js";
4
4
  import { n as i, t as a } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
5
5
  import { $ as o, J as s, a as c, b as l, et as u, nt as d, o as f, x as p } from "./chunk-DU6HZSFF-BwiyaNpg.js";
6
- import { p as m } from "./mermaid-Bh918qrq.js";
6
+ import { p as m } from "./mermaid-DBpOnw8c.js";
7
7
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-24CTP7MA.mjs
8
8
  var h = (function() {
9
9
  var e = /* @__PURE__ */ i(function(e, t, n, r) {
@@ -2,7 +2,7 @@ import { t as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { g as t } from "./button-BQRdqQi1.js";
3
3
  import { t as n } from "./compiler-runtime-CldRdSsv.js";
4
4
  import { m as r } from "./tooltip-s4zZxwKe.js";
5
- import { F as i, M as a, a as o, b as s, o as c } from "./useTheme-5TwyOh3B.js";
5
+ import { F as i, M as a, a as o, b as s, o as c } from "./useTheme-DbBkeP6Z.js";
6
6
  import { t as l } from "./invariant-DLmrl-hA.js";
7
7
  var u = r("circle-question-mark", [
8
8
  ["circle", {
@@ -1,7 +1,7 @@
1
1
  import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-sHtZdjeP.js";
3
3
  import { t as n } from "./compiler-runtime-CldRdSsv.js";
4
- import { R as r } from "./useTheme-5TwyOh3B.js";
4
+ import { R as r } from "./useTheme-DbBkeP6Z.js";
5
5
  import { t as i } from "./invariant-DLmrl-hA.js";
6
6
  //#region src/hooks/useAsyncData.ts
7
7
  var a = n(), o = /* @__PURE__ */ e(t(), 1), s = {
@@ -1,6 +1,6 @@
1
1
  import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-sHtZdjeP.js";
3
- import { C as n } from "./useTheme-5TwyOh3B.js";
3
+ import { C as n } from "./useTheme-DbBkeP6Z.js";
4
4
  //#region src/hooks/useDeepCompareMemoize.ts
5
5
  var r = /* @__PURE__ */ e(t(), 1);
6
6
  function i(e) {
@@ -4,7 +4,7 @@ import { t as i } from "./react-sHtZdjeP.js";
4
4
  import { t as a } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { m as o } from "./tooltip-s4zZxwKe.js";
6
6
  import { t as s } from "./jsx-runtime-3BD1kT0s.js";
7
- import { F as c, N as l } from "./useTheme-5TwyOh3B.js";
7
+ import { F as c, N as l } from "./useTheme-DbBkeP6Z.js";
8
8
  var u = o("calendar", [
9
9
  ["path", {
10
10
  d: "M8 2v4",
@@ -779,47 +779,52 @@ function tt(e, t = K) {
779
779
  }
780
780
  //#endregion
781
781
  //#region src/core/session/active-notebook.ts
782
- var nt = F(null), rt = F(null), it = F((e) => {
783
- let t = e(nt);
782
+ var J = F(null), nt = F(null);
783
+ F((e) => {
784
+ let t = e(J);
785
+ return t === null ? null : e(t.backendAtom);
786
+ });
787
+ var rt = F((e) => {
788
+ let t = e(J);
784
789
  return t === null ? null : e(t.documentAtom);
785
- }), at = [
790
+ }), it = [
786
791
  "pip",
787
792
  "uv",
788
793
  "rye",
789
794
  "poetry",
790
795
  "pixi"
791
- ], ot = [
796
+ ], at = [
792
797
  "normal",
793
798
  "compact",
794
799
  "medium",
795
800
  "full",
796
801
  "columns"
797
- ], st = [
802
+ ], ot = [
798
803
  "auto",
799
804
  "native",
800
805
  "polars",
801
806
  "lazy-polars",
802
807
  "pandas"
803
- ], ct = [
808
+ ], st = [
804
809
  "html",
805
810
  "markdown",
806
811
  "ipynb"
807
- ], lt = ["off", "jedi"], ut = [
812
+ ], ct = ["off", "jedi"], lt = [
808
813
  "manual",
809
814
  "ask",
810
815
  "agent",
811
816
  "code_mode"
812
- ], J = f({
817
+ ], Y = f({
813
818
  api_key: u().optional(),
814
819
  base_url: u().optional(),
815
820
  project: u().optional()
816
- }).loose(), dt = f({
821
+ }).loose(), ut = f({
817
822
  chat_model: u().nullish(),
818
823
  edit_model: u().nullish(),
819
824
  autocomplete_model: u().nullish(),
820
825
  displayed_models: c(u()).default([]),
821
826
  custom_models: c(u()).default([])
822
- }), ft = s({
827
+ }), dt = s({
823
828
  completion: f({
824
829
  activate_on_typing: p().prefault(!0),
825
830
  signature_hint_on_typing: p().prefault(!1),
@@ -838,7 +843,7 @@ var nt = F(null), rt = F(null), it = F((e) => {
838
843
  }).prefault({}),
839
844
  formatting: s({
840
845
  line_length: d().nonnegative().prefault(79).transform((e) => Math.min(e, 1e3)),
841
- infer_types: m(lt).prefault("off")
846
+ infer_types: m(ct).prefault("off")
842
847
  }).prefault({}),
843
848
  keymap: s({
844
849
  preset: m(["default", "vim"]).prefault("default"),
@@ -855,8 +860,8 @@ var nt = F(null), rt = F(null), it = F((e) => {
855
860
  ]).prefault("off"),
856
861
  reactive_tests: p().prefault(!0),
857
862
  watcher_on_save: m(["lazy", "autorun"]).prefault("lazy"),
858
- default_sql_output: m(st).prefault("auto"),
859
- default_auto_download: c(m(ct)).prefault([]),
863
+ default_sql_output: m(ot).prefault("auto"),
864
+ default_auto_download: c(m(st)).prefault([]),
860
865
  show_tracebacks: p().prefault(!1)
861
866
  }).prefault({}),
862
867
  display: s({
@@ -870,37 +875,37 @@ var nt = F(null), rt = F(null), it = F((e) => {
870
875
  dataframes: m(["rich", "plain"]).prefault("rich"),
871
876
  default_table_page_size: d().prefault(10),
872
877
  default_table_max_columns: d().prefault(50),
873
- default_width: m(ot).prefault("medium").transform((e) => e === "normal" ? "compact" : e),
878
+ default_width: m(at).prefault("medium").transform((e) => e === "normal" ? "compact" : e),
874
879
  locale: u().nullable().optional(),
875
880
  reference_highlighting: p().prefault(!0),
876
881
  code_lens: p().prefault(!0)
877
882
  }).prefault({}),
878
- package_management: s({ manager: m(at).prefault("pip") }).prefault({}),
883
+ package_management: s({ manager: m(it).prefault("pip") }).prefault({}),
879
884
  ai: s({
880
885
  enabled: p().prefault(!0),
881
886
  rules: u().prefault(""),
882
887
  max_tokens: d().int().positive().nullable().optional(),
883
- mode: m(ut).transform((e) => e === "manual" ? "ask" : e).prefault("ask"),
888
+ mode: m(lt).transform((e) => e === "manual" ? "ask" : e).prefault("ask"),
884
889
  inline_tooltip: p().prefault(!1),
885
890
  allow_provider_config: p().prefault(!0),
886
- open_ai: J.optional(),
887
- github: J.optional(),
888
- anthropic: J.optional(),
889
- google: J.optional(),
890
- ollama: J.optional(),
891
- openrouter: J.optional(),
892
- wandb: J.optional(),
893
- opencode_go: J.optional(),
894
- open_ai_compatible: J.optional(),
895
- azure: J.optional(),
891
+ open_ai: Y.optional(),
892
+ github: Y.optional(),
893
+ anthropic: Y.optional(),
894
+ google: Y.optional(),
895
+ ollama: Y.optional(),
896
+ openrouter: Y.optional(),
897
+ wandb: Y.optional(),
898
+ opencode_go: Y.optional(),
899
+ open_ai_compatible: Y.optional(),
900
+ azure: Y.optional(),
896
901
  bedrock: s({
897
902
  region_name: u().optional(),
898
903
  profile_name: u().optional(),
899
904
  aws_access_key_id: u().optional(),
900
905
  aws_secret_access_key: u().optional()
901
906
  }).optional(),
902
- custom_providers: l(u(), J).prefault({}),
903
- models: dt.prefault({
907
+ custom_providers: l(u(), Y).prefault({}),
908
+ models: ut.prefault({
904
909
  displayed_models: [],
905
910
  custom_models: []
906
911
  })
@@ -941,27 +946,27 @@ var nt = F(null), rt = F(null), it = F((e) => {
941
946
  ai: {},
942
947
  package_management: {},
943
948
  mcp: {}
944
- })), pt = u(), mt = m(st).prefault("auto"), ht = f({
945
- width: m(ot).prefault("compact").transform((e) => e === "normal" ? "compact" : e),
946
- app_title: pt.nullish(),
949
+ })), ft = u(), pt = m(ot).prefault("auto"), mt = f({
950
+ width: m(at).prefault("compact").transform((e) => e === "normal" ? "compact" : e),
951
+ app_title: ft.nullish(),
947
952
  css_file: u().nullish(),
948
953
  html_head_file: u().nullish(),
949
- auto_download: c(m(ct)).prefault([]),
950
- sql_output: mt
954
+ auto_download: c(m(st)).prefault([]),
955
+ sql_output: pt
951
956
  }).prefault(() => ({
952
957
  width: "compact",
953
958
  auto_download: [],
954
959
  sql_output: "auto"
955
960
  }));
956
- function gt(e) {
961
+ function ht(e) {
957
962
  try {
958
- return ht.parse(e);
963
+ return mt.parse(e);
959
964
  } catch (e) {
960
- return r.error(`Marimo got an unexpected value in the configuration file: ${e}`), ht.parse({});
965
+ return r.error(`Marimo got an unexpected value in the configuration file: ${e}`), mt.parse({});
961
966
  }
962
967
  }
963
- function _t() {
964
- return ft.parse({
968
+ function gt() {
969
+ return dt.parse({
965
970
  completion: {},
966
971
  save: {},
967
972
  formatting: {},
@@ -979,44 +984,44 @@ function _t() {
979
984
  }
980
985
  //#endregion
981
986
  //#region src/core/config/config.ts
982
- function vt(...e) {
987
+ function _t(...e) {
983
988
  return v({}, ...e, (e, t) => {
984
989
  if (Array.isArray(t)) return [...t];
985
990
  });
986
991
  }
987
- var Y = F(_t()), yt = F({}), X = F((e) => {
988
- let t = e(yt);
989
- return vt(e(Y), t);
990
- }), bt = F((e) => e(X).runtime.auto_instantiate), xt = F((e) => e(X).keymap.overrides ?? {}), St = F(i());
992
+ var X = F(gt()), vt = F({}), Z = F((e) => {
993
+ let t = e(vt);
994
+ return _t(e(X), t);
995
+ }), yt = F((e) => e(Z).runtime.auto_instantiate), bt = F((e) => e(Z).keymap.overrides ?? {}), xt = F(i());
991
996
  F((e) => {
992
- let t = e(xt), r = e(St);
997
+ let t = e(bt), r = e(xt);
993
998
  return new n(t, { platform: r });
994
- }), F((e) => e(X).save), F((e) => e(X).server.transport === "sse" ? "sse" : "websocket"), F((e) => e(X).ai), F((e) => e(X).completion), F((e) => e(X).keymap.preset);
995
- function Ct() {
996
- let e = (0, W.c)(3), t = H(X), n = U(Y), r;
999
+ }), F((e) => e(Z).save), F((e) => e(Z).server.transport === "sse" ? "sse" : "websocket"), F((e) => e(Z).ai), F((e) => e(Z).completion), F((e) => e(Z).keymap.preset);
1000
+ function St() {
1001
+ let e = (0, W.c)(3), t = H(Z), n = U(X), r;
997
1002
  return e[0] !== t || e[1] !== n ? (r = [t, n], e[0] = t, e[1] = n, e[2] = r) : r = e[2], r;
998
1003
  }
999
- function wt() {
1000
- return q.get(X);
1004
+ function Ct() {
1005
+ return q.get(Z);
1001
1006
  }
1002
- F((e) => Z(e(X)));
1003
- var Tt = F((e) => Ot(e(X))), Et = F((e) => kt(e(X)));
1004
- F((e) => e(X).display.code_editor_font_size);
1005
- var Dt = F((e) => e(X).display.locale);
1006
- function Z(e) {
1007
+ F((e) => Dt(e(Z)));
1008
+ var wt = F((e) => Ot(e(Z))), Tt = F((e) => kt(e(Z)));
1009
+ F((e) => e(Z).display.code_editor_font_size);
1010
+ var Et = F((e) => e(Z).display.locale);
1011
+ function Dt(e) {
1007
1012
  return e.ai?.enabled !== !1;
1008
1013
  }
1009
1014
  function Ot(e) {
1010
1015
  return !!e.ai?.models?.chat_model || !!e.ai?.models?.edit_model || !!e.ai?.models?.autocomplete_model;
1011
1016
  }
1012
1017
  function kt(e) {
1013
- return Z(e) && Ot(e);
1018
+ return Dt(e) && Ot(e);
1014
1019
  }
1015
- var At = F({}), jt = Re(F((e) => e(it)?.revision.app_config ?? e(At)), (e) => e, K), Mt = F((e) => gt(e(jt)));
1020
+ var At = F({}), jt = Re(F((e) => e(rt)?.revision.app_config ?? e(At)), (e) => e, K), Mt = F((e) => ht(e(jt)));
1016
1021
  F((e) => e(Mt).width), F((e) => {
1017
- let t = e(X), n = t.snippets?.custom_paths ?? [], r = t.snippets?.include_default_snippets;
1022
+ let t = e(Z), n = t.snippets?.custom_paths ?? [], r = t.snippets?.include_default_snippets;
1018
1023
  return n.length > 0 || r === !0;
1019
- }), F((e) => e(X).server?.disable_file_downloads ?? !1);
1024
+ }), F((e) => e(Z).server?.disable_file_downloads ?? !1);
1020
1025
  //#endregion
1021
1026
  //#region src/core/islands/utils.ts
1022
1027
  function Nt() {
@@ -1067,7 +1072,7 @@ var zt = F((e) => {
1067
1072
  }
1068
1073
  return "light";
1069
1074
  }
1070
- return Rt() ?? e(X).display.theme;
1075
+ return Rt() ?? e(Z).display.theme;
1071
1076
  }), Q = F(!1);
1072
1077
  function Bt() {
1073
1078
  if (typeof window > "u" || !window.matchMedia) return;
@@ -1109,4 +1114,4 @@ function Wt() {
1109
1114
  return e[1] === n ? r = e[2] : (r = { theme: n }, e[1] = n, e[2] = r), r;
1110
1115
  }
1111
1116
  //#endregion
1112
- export { ke as A, K as C, qe as D, Ye as E, F, I, C as L, H as M, U as N, Re as O, R as P, x as R, Qe as S, Pe as T, nt as _, Ft as a, q as b, Tt as c, Dt as d, vt as f, rt as g, Y as h, Pt as i, Me as j, Ge as k, bt as l, Ct as m, Wt as n, Nt as o, X as p, It as r, Et as s, Ut as t, wt as u, it as v, Fe as w, $e as x, tt as y };
1117
+ export { ke as A, K as C, qe as D, Ye as E, F, I, C as L, H as M, U as N, Re as O, R as P, x as R, Qe as S, Pe as T, J as _, Ft as a, q as b, wt as c, Et as d, _t as f, nt as g, X as h, Pt as i, Me as j, Ge as k, yt as l, St as m, Wt as n, Nt as o, Z as p, It as r, Tt as s, Ut as t, Ct as u, rt as v, Fe as w, $e as x, tt as y };
@@ -3,20 +3,20 @@ import { g as t, h as n, m as r, o as i } from "./button-BQRdqQi1.js";
3
3
  import { t as a } from "./react-sHtZdjeP.js";
4
4
  import { t as o } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { t as s } from "./tooltip-s4zZxwKe.js";
6
- import { C as c, a as l } from "./toDate-BNDEXbfV.js";
6
+ import { C as c, a as l } from "./toDate-B0-Y0SEW.js";
7
7
  import { t as u } from "./jsx-runtime-3BD1kT0s.js";
8
8
  import { n as d } from "./error-banner-DxJ3s8YO.js";
9
9
  import { t as f } from "./debounce-C3jyATpc.js";
10
- import { R as p, n as ee } from "./useTheme-5TwyOh3B.js";
10
+ import { R as p, n as ee } from "./useTheme-DbBkeP6Z.js";
11
11
  import { t as te } from "./objects-DCmMvZtn.js";
12
12
  import { a as m, t as h } from "./arrays-DoQ-AILx.js";
13
- import { t as ne } from "./useAsyncData-ASDni9vH.js";
14
- import { a as g, i as re, n as ie, t as ae } from "./formats-BCYthwyc.js";
13
+ import { t as ne } from "./useAsyncData-Phxf6GCd.js";
14
+ import { a as g, i as re, n as ie, t as ae } from "./formats-DyYnckF5.js";
15
15
  import { t as _ } from "./semaphore-89jsoHtS.js";
16
16
  import { D as oe, n as se } from "./vega-loader.browser-B9Pz0EGP.js";
17
17
  import { t as ce } from "./react-vega-C4T9Rb_w.js";
18
18
  import { a as le, n as v } from "./loader-DOVB0Syl.js";
19
- import { t as ue } from "./useDeepCompareMemoize-B1Ogyf53.js";
19
+ import { t as ue } from "./useDeepCompareMemoize-BXv7DUcU.js";
20
20
  import { t as de } from "./use-vega-container-remeasure-Bz4PZMtt.js";
21
21
  //#region src/plugins/impl/vega/fix-relative-url.ts
22
22
  var fe = /* @__PURE__ */ e(a(), 1), pe = o();
@@ -3,7 +3,7 @@ import { t } from "./src-CA_m4ONl.js";
3
3
  import { n } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
4
4
  import { $ as r, H as i, K as a, U as o, a as s, b as c, c as l, et as u, f as d, nt as f, tt as p, v as m, w as h, y as g } from "./chunk-DU6HZSFF-BwiyaNpg.js";
5
5
  import { t as _ } from "./rough.esm-CtV9AnV1.js";
6
- import { p as v } from "./mermaid-Bh918qrq.js";
6
+ import { p as v } from "./mermaid-DBpOnw8c.js";
7
7
  //#region ../node_modules/.pnpm/khroma@2.1.0/node_modules/khroma/dist/methods/transparentize.js
8
8
  var y = (e, t) => p(e, "a", -t), b = 1e-10;
9
9
  function x(e, t) {
@@ -2,7 +2,7 @@ import { i as e } from "./chunk-75Z2AOVW-D7gxIs2Q.js";
2
2
  import { n as t } from "./src-CA_m4ONl.js";
3
3
  import { n } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
4
4
  import { D as r, H as i, K as a, U as o, a as s, b as c, c as l, v as u, w as d, x as f, y as p } from "./chunk-DU6HZSFF-BwiyaNpg.js";
5
- import { p as m } from "./mermaid-Bh918qrq.js";
5
+ import { p as m } from "./mermaid-DBpOnw8c.js";
6
6
  import { n as h } from "./mermaid-parser.core-DxuSfYwJ.js";
7
7
  import { t as g } from "./chunk-JWPE2WC7-DJvv1t8U.js";
8
8
  //#region ../node_modules/.pnpm/mermaid@11.17.2/node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-VM6X3IG4.mjs
@@ -9,7 +9,7 @@ import { n as s } from "./chunk-Y2CYZVJY-DKKS1VyV.js";
9
9
  import { D as c, H as l, K as u, U as d, a as f, b as p, c as m, f as h, v as g, w as _, y as v, z as y } from "./chunk-DU6HZSFF-BwiyaNpg.js";
10
10
  import "./chunk-PWAF6VOD-CQw5qATZ.js";
11
11
  import { t as b } from "./chunk-GMAD6QVW-BhaJx0X3.js";
12
- import { p as x } from "./mermaid-Bh918qrq.js";
12
+ import { p as x } from "./mermaid-DBpOnw8c.js";
13
13
  //#region ../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/band.js
14
14
  function S() {
15
15
  var e = t().unknown(void 0), r = e.domain, i = e.range, o = 0, s = 1, c, l, u = !1, d = 0, f = 0, p = .5;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.25.3-dev200",
3
+ "version": "0.25.3-dev202",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -17,7 +17,7 @@ export const MockRequestClient = {
17
17
  sendModelValue: vi.fn().mockResolvedValue({}),
18
18
  sendRename: vi.fn().mockResolvedValue({}),
19
19
  sendRestart: vi.fn().mockResolvedValue({}),
20
- sendSave: vi.fn().mockResolvedValue({}),
20
+ saveLayout: vi.fn().mockResolvedValue({}),
21
21
  sendCopy: vi.fn().mockResolvedValue({}),
22
22
  sendStdin: vi.fn().mockResolvedValue({}),
23
23
  sendFormat: vi.fn().mockResolvedValue({ codes: {} }),
@@ -73,10 +73,7 @@ describe("FilenameForm", () => {
73
73
  });
74
74
 
75
75
  await waitFor(() => {
76
- expect(mockSaveNotebook).toHaveBeenCalledWith(
77
- "/path/to/new-file.py",
78
- true,
79
- );
76
+ expect(mockSaveNotebook).toHaveBeenCalledWith(true);
80
77
  });
81
78
  });
82
79
 
@@ -19,7 +19,7 @@ export const FilenameForm = ({
19
19
  updateFilename(newFilename).then((name) => {
20
20
  // When creating a new file (was unnamed), also save the content
21
21
  if (name !== null && wasUnnamed) {
22
- saveNotebook(name, true);
22
+ saveNotebook(true);
23
23
  }
24
24
  });
25
25
  };
@@ -28,12 +28,7 @@ import {
28
28
  type NotebookState,
29
29
  notebookReducer,
30
30
  } from "../cells";
31
- import {
32
- applyDocument,
33
- flushDocument,
34
- followDocument,
35
- withDocumentSave,
36
- } from "../document";
31
+ import { applyDocument, flushDocument, followDocument } from "../document";
37
32
  import { type CellId, SCRATCH_CELL_ID } from "../ids";
38
33
 
39
34
  vi.mock("../../rtc/state", async (importOriginal) => ({
@@ -224,7 +219,6 @@ describe("documentEditMiddleware", () => {
224
219
  syncStatusAtom: atom<DocumentSyncStatus>({ status: "idle" }),
225
220
  flush: vi.fn(),
226
221
  retry: vi.fn(),
227
- hold: () => () => undefined,
228
222
  start: vi.fn(),
229
223
  };
230
224
  const actions = createNotebookActions((action) => {
@@ -303,7 +297,6 @@ describe("flushing before host commands", () => {
303
297
  syncStatusAtom: atom<DocumentSyncStatus>({ status: "idle" }),
304
298
  flush: vi.fn<() => Promise<never>>(),
305
299
  retry: vi.fn<() => Promise<never>>(),
306
- hold: () => () => undefined,
307
300
  } as unknown as DocumentModel;
308
301
 
309
302
  beforeEach(() => {
@@ -324,18 +317,4 @@ describe("flushing before host commands", () => {
324
317
  store.set(activeDocumentModelAtom, null);
325
318
  await expect(flushDocument()).resolves.toBeUndefined();
326
319
  });
327
-
328
- it("saves after a flush and resumes the model when the flush failed", async () => {
329
- vi.mocked(model.flush).mockRejectedValue(new Error("conflict"));
330
- vi.mocked(model.retry).mockResolvedValue(undefined as never);
331
- const save = vi.fn().mockResolvedValue("saved");
332
-
333
- await expect(withDocumentSave(save)).resolves.toBe("saved");
334
- expect(save).toHaveBeenCalledOnce();
335
- expect(model.retry).toHaveBeenCalledOnce();
336
-
337
- vi.mocked(model.flush).mockResolvedValue(undefined as never);
338
- await withDocumentSave(save);
339
- expect(model.retry).toHaveBeenCalledOnce();
340
- });
341
320
  });
@@ -254,36 +254,3 @@ export async function flushDocument(): Promise<void> {
254
254
  }
255
255
  await model.flush();
256
256
  }
257
-
258
- /**
259
- * Run a legacy save after this client's edits reach the host, and keep
260
- * later edits local until it finishes. The save carries the whole
261
- * notebook and the host takes it as the document, so an edit sent
262
- * meanwhile would be overwritten. When the edits cannot be sent the save
263
- * still runs, and the model resumes against the saved document.
264
- *
265
- * TODO(MO-8028): Goes with the legacy save, along with the hold.
266
- */
267
- export async function withDocumentSave<T>(save: () => Promise<T>): Promise<T> {
268
- const model = store.get(activeDocumentModelAtom);
269
- if (model === null) {
270
- return save();
271
- }
272
- let flushed = true;
273
- try {
274
- await model.flush();
275
- } catch {
276
- flushed = false;
277
- }
278
- const release = model.hold();
279
- let result: T;
280
- try {
281
- result = await save();
282
- } finally {
283
- release();
284
- }
285
- if (!flushed) {
286
- void model.retry().catch(() => undefined);
287
- }
288
- return result;
289
- }
@@ -376,7 +376,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
376
376
  public getUsageStats = throwNotImplemented;
377
377
  public getEnvironmentInfo = throwNotImplemented;
378
378
  public sendRename = throwNotImplemented;
379
- public sendSave = throwNotImplemented;
379
+ public saveLayout = throwNotImplemented;
380
380
  public sendCopy = throwNotImplemented;
381
381
  public sendRunScratchpad = throwNotImplemented;
382
382
  public sendStdin = throwNotImplemented;
@@ -70,7 +70,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
70
70
  sendRestart: "throwError",
71
71
 
72
72
  // These wait until the connection is open, but don't start a connection
73
- sendSave: "waitForConnectionOpen",
73
+ saveLayout: "waitForConnectionOpen",
74
74
  invokeAiTool: "waitForConnectionOpen",
75
75
  sendFunctionRequest: "waitForConnectionOpen",
76
76
 
@@ -78,15 +78,6 @@ export function createNetworkRequests(): EditRequests & RunRequests {
78
78
  })
79
79
  .then(handleResponseReturnNull);
80
80
  },
81
- sendSave: (request) => {
82
- return getClient()
83
- .POST("/api/kernel/save", {
84
- body: request,
85
- parseAs: "text",
86
- params: getParams(),
87
- })
88
- .then(handleResponseReturnNull);
89
- },
90
81
  sendCopy: (request) => {
91
82
  return getClient()
92
83
  .POST("/api/kernel/copy", {
@@ -158,6 +149,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
158
149
  })
159
150
  .then(handleResponseReturnNull);
160
151
  },
152
+ saveLayout: (request) => {
153
+ return getClient()
154
+ .POST("/api/kernel/save_layout", {
155
+ body: request,
156
+ params: getParams(),
157
+ })
158
+ .then(handleResponseReturnNull);
159
+ },
161
160
  saveAppConfig: (request) => {
162
161
  return getClient()
163
162
  .POST("/api/kernel/save_app_config", {