@marimo-team/islands 0.25.3-dev279 → 0.25.3-dev281

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.
@@ -129,7 +129,7 @@ function N(e) {
129
129
  }
130
130
  //#endregion
131
131
  //#region src/components/editor/boundary/ErrorBoundary.tsx
132
- var P = (0, C.lazy)(() => import("./feedback-button-6Ui2TDLR.js").then((e) => ({ default: e.FeedbackModal }))), F = (e) => {
132
+ var P = (0, C.lazy)(() => import("./feedback-button-CY92zeC6.js").then((e) => ({ default: e.FeedbackModal }))), F = (e) => {
133
133
  let t = (0, S.c)(2), n;
134
134
  return t[0] === e.children ? n = t[1] : (n = /* @__PURE__ */ (0, k.jsx)(E, {
135
135
  FallbackComponent: I,
@@ -3,13 +3,13 @@ import { g as n, h as r, i, t as a } from "./button-DZuNnIZO.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 { i as c, t as l } from "./copy-icon-CtllOdmg.js";
6
- import { Ct as u, Dt as d, Et as f, It as p, J as m, Lt as h, M as g, Nt as _, Pt as v, Tt as y, U as b, V as x, Vt as S, W as C, Y as w, a as T, dt as E, et as D, f as O, g as k, h as A, ht as j, kt as M, l as ee, m as N, n as te, nt as ne, p as re, r as ie, st as ae, t as oe, tt as se, u as ce, v as le, xt as ue, zt as de } from "./html-to-image-CqGUd58T.js";
6
+ import { Ct as u, Dt as d, Et as f, It as p, J as m, Lt as h, M as g, Nt as _, Pt as v, Tt as y, U as b, V as x, Vt as S, W as C, Y as w, a as T, dt as E, et as D, f as O, g as k, h as A, ht as j, kt as M, l as ee, m as N, n as te, nt as ne, p as re, r as ie, st as ae, t as oe, tt as se, u as ce, v as le, xt as ue, zt as de } from "./html-to-image-BYh_MorV.js";
7
7
  import { h as P, t as fe } from "./tooltip-DMMiOn2f.js";
8
8
  import { d as pe } from "./select-DsoP1qe8.js";
9
9
  import { Sn as me, _ as he, bn as ge, f as _e, h as ve, i as ye, n as be, t as xe } from "./dropdown-menu-Bb0bFOIk.js";
10
10
  import { a as Se, l as Ce } from "./config-C8MFHQ2E.js";
11
- import { Gt as we, I as Te, K as Ee, N as De, Tt as Oe, ct as ke, h as Ae, i as je, r as Me, t as Ne, tt as Pe } from "./error-entries-C1S-Rmyt.js";
12
- import { d as Fe, f as Ie, i as Le, n as Re, t as ze, u as Be } from "./process-output-DskX9jLa.js";
11
+ import { Gt as we, I as Te, K as Ee, N as De, Tt as Oe, ct as ke, h as Ae, i as je, r as Me, t as Ne, tt as Pe } from "./error-entries-9U4BFHjf.js";
12
+ import { d as Fe, f as Ie, i as Le, n as Re, t as ze, u as Be } from "./process-output-bS3MGJ3f.js";
13
13
  import { t as Ve } from "./pencil-DYUlSKxZ.js";
14
14
  import { n as He, r as Ue, s as We } from "./assertNever-B-YzWzbL.js";
15
15
  import { t as Ge } from "./jsx-runtime-3BD1kT0s.js";
@@ -1,5 +1,5 @@
1
1
  import { g as e } from "./button-DZuNnIZO.js";
2
- import { D as t, Ht as n, j as r } from "./error-entries-C1S-Rmyt.js";
2
+ import { D as t, Ht as n, j as r } from "./error-entries-9U4BFHjf.js";
3
3
  import { n as i } from "./assertNever-B-YzWzbL.js";
4
4
  import { Ft as a, Rt as o, d as s, m as c, wt as l } from "./use-restore-focus-CosX7-gx.js";
5
5
  import { c as u, m as d, n as f, o as p } from "./static-state-D-Q-Ajaa.js";
@@ -14,7 +14,7 @@ function y() {
14
14
  return e.warn("Failed to get version from mount config"), null;
15
15
  }
16
16
  }
17
- var b = y() || "0.25.3-dev279", x = o(b), S = o(!0);
17
+ var b = y() || "0.25.3-dev281", x = o(b), S = o(!0);
18
18
  o(null);
19
19
  //#endregion
20
20
  //#region src/core/wasm/state.ts
@@ -3,7 +3,7 @@ import { _ as t, f as n, g as r, h as i, i as a, m as o, n as s, p as c, r as l,
3
3
  import { t as d } from "./react-sHtZdjeP.js";
4
4
  import { t as f } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { i as p, n as m, r as h, t as g } from "./copy-icon-CtllOdmg.js";
6
- import { $ as _, A as v, At as y, C as b, D as x, Dt as S, G as C, Gt as w, H as T, Ht as E, It as D, K as O, Lt as k, M as A, Mt as j, N as M, Pt as N, Q as P, Rt as F, S as I, Tt as L, U as R, Ut as z, V as ee, Vt as te, W as ne, Wt as re, Y as B, Z as ie, at as ae, d as oe, ft as se, gt as ce, k as le, mt as ue, n as de, pt as fe, r as pe, s as me, t as he, w as ge, wt as _e, x as ve, y as ye, z as be } from "./html-to-image-CqGUd58T.js";
6
+ import { $ as _, A as v, At as y, C as b, D as x, Dt as S, G as C, Gt as w, H as T, Ht as E, It as D, K as O, Lt as k, M as A, Mt as j, N as M, Pt as N, Q as P, Rt as F, S as I, Tt as L, U as R, Ut as z, V as ee, Vt as te, W as ne, Wt as re, Y as B, Z as ie, at as ae, d as oe, ft as se, gt as ce, k as le, mt as ue, n as de, pt as fe, r as pe, s as me, t as he, w as ge, wt as _e, x as ve, y as ye, z as be } from "./html-to-image-BYh_MorV.js";
7
7
  import { a as xe, f as Se, h as V, n as Ce, o as we, r as Te, t as H } from "./tooltip-DMMiOn2f.js";
8
8
  import { r as Ee, s as De } from "./useLifecycle-SniivYmC.js";
9
9
  import { a as Oe, i as ke, n as Ae, o as je, r as Me, t as Ne } from "./useDateFormatter-CPlava52.js";
@@ -11,7 +11,7 @@ import { t as Pe } from "./check-XFzZeH-y.js";
11
11
  import { A as Fe, C as U, M as Ie, S as Le, T as Re, _ as ze, b as Be, c as Ve, d as He, f as Ue, g as We, h as Ge, i as Ke, l as qe, m as Je, n as Ye, s as Xe, t as Ze, u as Qe, v as $e, x as et, y as tt } from "./select-DsoP1qe8.js";
12
12
  import { $ as nt, $t as rt, A as it, At as at, B as ot, Bt as st, C as ct, Ct as lt, D as ut, Dt as dt, E as ft, Et as pt, F as mt, Ft as ht, G as gt, Gt as _t, H as vt, Ht as yt, I as bt, It as xt, Jt as St, K as Ct, Kt as wt, L as Tt, Lt as Et, M as Dt, Mt as Ot, N as kt, Nt as At, O as jt, Ot as Mt, P as Nt, Pt, Q as Ft, Qt as It, R as Lt, Rt, S as zt, Sn as Bt, St as Vt, T as Ht, Tt as Ut, U as Wt, Ut as Gt, V as Kt, Vt as qt, W as Jt, Wt as Yt, X as Xt, Xt as Zt, Yt as Qt, Z as $t, Zt as en, _ as tn, _n as nn, _t as rn, a as an, an as on, at as sn, b as cn, bn as ln, bt as un, cn as dn, ct as fn, d as pn, dn as mn, dt as hn, en as gn, et as _n, f as vn, ft as yn, gn as bn, gt as xn, h as Sn, hn as Cn, ht as wn, i as Tn, it as En, j as Dn, jt as On, k as kn, kt as An, l as jn, lt as Mn, mn as Nn, mt as Pn, n as Fn, nn as In, nt as Ln, o as Rn, on as zn, ot as Bn, pn as Vn, q as Hn, qt as Un, rn as Wn, rt as Gn, s as Kn, sn as qn, st as Jn, t as Yn, tn as Xn, tt as Zn, u as Qn, un as $n, ut as er, vn as tr, vt as nr, wt as rr, x as ir, xn as ar, xt as or, yn as sr, yt as cr, z as lr, zt as ur } from "./dropdown-menu-Bb0bFOIk.js";
13
13
  import { a as dr, n as fr, r as pr, t as mr } from "./config-C8MFHQ2E.js";
14
- import { $ as hr, Bt as gr, D as _r, E as vr, Et as yr, Gt as br, H as xr, J as Sr, K as Cr, L as wr, M as Tr, Pt as Er, Rt as Dr, Tt as Or, U as kr, Ut as Ar, W as jr, Wt as Mr, b as Nr, ct as Pr, h as Fr, j as Ir, l as Lr, nt as Rr, t as zr, tt as Br, u as Vr, w as Hr, y as Ur, zt as Wr } from "./error-entries-C1S-Rmyt.js";
14
+ import { $ as hr, Bt as gr, D as _r, E as vr, Et as yr, Gt as br, H as xr, J as Sr, K as Cr, L as wr, M as Tr, Pt as Er, Rt as Dr, Tt as Or, U as kr, Ut as Ar, W as jr, Wt as Mr, b as Nr, ct as Pr, h as Fr, j as Ir, l as Lr, nt as Rr, t as zr, tt as Br, u as Vr, w as Hr, y as Ur, zt as Wr } from "./error-entries-9U4BFHjf.js";
15
15
  import { n as Gr, o as Kr, r as qr, s as Jr, t as Yr } from "./assertNever-B-YzWzbL.js";
16
16
  import { t as Xr } from "./clsx-CoeGtWvn.js";
17
17
  import { t as Zr } from "./react-dom-DUmH0GXv.js";
@@ -33,7 +33,7 @@ import { o as ba } from "./dist-DU9ICsWZ.js";
33
33
  import { a as xa, i as Sa, n as Ca, o as wa, r as Ta, t as Ea } from "./dialog-CaYm5imE.js";
34
34
  import { t as Da } from "./useAsyncData-Ci4AvJff.js";
35
35
  import { n as W, t as G } from "./objectWithoutPropertiesLoose-BRDcTsfB.js";
36
- import { t as Oa } from "./ErrorBoundary-DmTMuDPR.js";
36
+ import { t as Oa } from "./ErrorBoundary-fSq1YI-S.js";
37
37
  import { D as ka, n as Aa } from "./vega-loader.browser-B9Pz0EGP.js";
38
38
  import { a as ja, n as Ma, r as Na, t as Pa } from "./loader-DZvtzQoD.js";
39
39
  import { t as Fa } from "./useIframeCapabilities-BXhDDoCG.js";
@@ -2,7 +2,7 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-sHtZdjeP.js";
3
3
  import { t as n } from "./react-dom-DUmH0GXv.js";
4
4
  import { c as r, l as i, u as a } from "./data-grid-types-0PJ-9N5n.js";
5
- import { a as o, i as s, n as c, r as l } from "./glide-data-editor-PZNlrSDI.js";
5
+ import { a as o, i as s, n as c, r as l } from "./glide-data-editor-BdgfR8uu.js";
6
6
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js
7
7
  var u = /* @__PURE__ */ e(t(), 1), d = /* @__PURE__ */ e(n(), 1), f = /*#__PURE__*/ o("div")({
8
8
  name: "DataGridOverlayEditorStyle",
@@ -211,7 +211,13 @@ function Fe(e) {
211
211
  for (let [n, a] of Object.entries(e.depends_on)) {
212
212
  let s = t.get(n) ?? [];
213
213
  if (a === null) {
214
- if (s.some((t) => r(t.execution_id)?.runtime_id === e.runtime_id)) return !0;
214
+ if (s.some((t) => {
215
+ let n = r(t.execution_id);
216
+ if (n === void 0) return !1;
217
+ if (n.runtime_id === e.runtime_id) return !0;
218
+ let i = n.completed_at ?? n.started_at;
219
+ return i !== null && e.completed_at !== null && Date.parse(i) > Date.parse(e.completed_at);
220
+ })) return !0;
215
221
  continue;
216
222
  }
217
223
  let c = s.find((e) => e.revision.execution === a.execution);
@@ -222,16 +228,14 @@ function Fe(e) {
222
228
  return !1;
223
229
  }
224
230
  function a(t, n) {
225
- let i = e.executions.latest.get(t.id);
226
- if (i === void 0 || i === n.id) return !1;
227
- let a = r(i);
228
- return a !== void 0 && a.status !== "completed" && a.code_fingerprint === t.code_fingerprint;
231
+ let i = e.executions.latest.get(t.id), a = i === void 0 ? void 0 : r(i), o = a !== void 0 && a.status !== "completed" ? a : n;
232
+ return t.code_fingerprint !== o.code_fingerprint;
229
233
  }
230
234
  function o(t, r) {
231
235
  let o = n.get(t.id);
232
236
  if (o !== void 0) return o;
233
237
  let s = t.cell_id === null ? void 0 : e.cells.get(t.cell_id), c = {
234
- sourceChanged: s === void 0 || s.code_fingerprint !== t.code_fingerprint && !a(s, t),
238
+ sourceChanged: s === void 0 || a(s, t),
235
239
  inputsChanged: i(t, r)
236
240
  };
237
241
  return n.set(t.id, c), c;
@@ -3,14 +3,14 @@ import { h as t, t as n } from "./button-DZuNnIZO.js";
3
3
  import { t as r } from "./react-sHtZdjeP.js";
4
4
  import { t as i } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { t as a } from "./copy-icon-CtllOdmg.js";
6
- import { D as o, E as s, F as c, Gt as l, L as u, i as d, j as f, n as p, q as m } from "./error-entries-C1S-Rmyt.js";
7
- import { n as h, t as ee } from "./globals-DX6FPZYq.js";
6
+ import { D as o, E as s, F as c, Gt as l, L as u, i as d, j as f, n as p, q as m } from "./error-entries-9U4BFHjf.js";
7
+ import { n as h, t as ee } from "./globals-CjnqsurJ.js";
8
8
  import { r as g } from "./assertNever-B-YzWzbL.js";
9
9
  import { t as _ } from "./jsx-runtime-3BD1kT0s.js";
10
10
  import { Ft as te, p as v, yt as ne } from "./use-restore-focus-CosX7-gx.js";
11
11
  import { a as re, i as ie, n as ae, r as oe } from "./dialog-CaYm5imE.js";
12
12
  import { t as se } from "./useAsyncData-Ci4AvJff.js";
13
- import { t as ce } from "./code-visibility-Dw4-TXN0.js";
13
+ import { t as ce } from "./code-visibility-BhtW7mrV.js";
14
14
  //#region src/components/ui/skeleton.tsx
15
15
  var y = /* @__PURE__ */ e(r(), 1), b = i(), x = _(), S = (e) => {
16
16
  let n = (0, b.c)(8), r, i;
@@ -14,7 +14,7 @@ import { t as P } from "./jsx-runtime-3BD1kT0s.js";
14
14
  import { u as oe } from "./use-restore-focus-CosX7-gx.js";
15
15
  import { t as F } from "./useEvent-BRH-aCqi.js";
16
16
  import { n as I, t as se } from "./objectWithoutPropertiesLoose-BRDcTsfB.js";
17
- import { t as ce } from "./ErrorBoundary-DmTMuDPR.js";
17
+ import { t as ce } from "./ErrorBoundary-fSq1YI-S.js";
18
18
  import { A as le, C as ue, D as de, E as fe, F as pe, I as me, L as he, M as ge, N as _e, O as L, P as ve, R as ye, S as be, T as xe, _ as Se, a as R, b as Ce, c as z, d as we, f as B, g as V, h as Te, i as Ee, j as H, k as U, l as De, m as Oe, n as ke, o as Ae, p as je, r as W, s as Me, t as Ne, u as Pe, v as Fe, w as Ie, x as Le, y as Re, z as ze } from "./data-grid-types-0PJ-9N5n.js";
19
19
  //#region ../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js
20
20
  function Be(e) {
@@ -7068,7 +7068,7 @@ function us(e, t, n, r, i) {
7068
7068
  }
7069
7069
  //#endregion
7070
7070
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/data-editor/data-editor.js
7071
- var ds = /* @__PURE__ */ e(wr(), 1), fs = /* @__PURE__ */ e(Or(), 1), ps = G.lazy(async () => await import("./data-grid-overlay-editor-hZzwX7Ia.js")), ms = 0;
7071
+ var ds = /* @__PURE__ */ e(wr(), 1), fs = /* @__PURE__ */ e(Or(), 1), ps = G.lazy(async () => await import("./data-grid-overlay-editor-B8b_mHmv.js")), ms = 0;
7072
7072
  function hs(e) {
7073
7073
  return (0, ds.default)((0, fs.default)((0, fs.default)(e).filter((e) => e.span !== void 0).map((e) => (0, io.default)((e.span?.[0] ?? 0) + 1, (e.span?.[1] ?? 0) + 1))));
7074
7074
  }
@@ -9299,7 +9299,7 @@ function Js(e, t, n, r, i) {
9299
9299
  }
9300
9300
  //#endregion
9301
9301
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/cells/number-cell.js
9302
- var Ys = G.lazy(async () => await import("./number-overlay-editor-D0CsL3_R.js")), Xs = {
9302
+ var Ys = G.lazy(async () => await import("./number-overlay-editor-BQBhWG2O.js")), Xs = {
9303
9303
  getAccessibilityString: (e) => e.data?.toString() ?? "",
9304
9304
  kind: W.Number,
9305
9305
  needsHover: (e) => e.hoverEffect === !0,
@@ -1,6 +1,6 @@
1
1
  import { h as e } from "./tooltip-DMMiOn2f.js";
2
2
  import { yt as t } from "./use-restore-focus-CosX7-gx.js";
3
- import { r as n } from "./code-visibility-Dw4-TXN0.js";
3
+ import { r as n } from "./code-visibility-BhtW7mrV.js";
4
4
  var r = e("triangle-alert", [
5
5
  ["path", {
6
6
  d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
@@ -9,7 +9,7 @@ import { a as ne, i as re, o as D, r as O, s as k, t as ie } from "./useLifecycl
9
9
  import { a as ae, c as oe, i as se, n as ce, o as le, r as ue, s as de, t as fe } from "./select-DsoP1qe8.js";
10
10
  import { Y as pe, mt as me, q as he } from "./dropdown-menu-Bb0bFOIk.js";
11
11
  import { c as ge, l as _e, n as ve } from "./config-C8MFHQ2E.js";
12
- import { C as A, E as j, Et as ye, G as be, I as xe, It as Se, K as M, L as N, Nt as Ce, O as we, Ot as Te, P as Ee, R as De, Rt as Oe, S as ke, T as Ae, Ut as je, _ as Me, _t as Ne, a as Pe, at as Fe, bt as Ie, dt as Le, f as Re, ft as ze, gt as Be, h as Ve, ht as He, it as Ue, k as We, mt as Ge, o as Ke, p as qe, pt as Je, rt as Ye, s as Xe, v as Ze, vt as Qe, wt as $e, x as et, xt as tt, yt as nt, zt as rt } from "./error-entries-C1S-Rmyt.js";
12
+ import { C as A, E as j, Et as ye, G as be, I as xe, It as Se, K as M, L as N, Nt as Ce, O as we, Ot as Te, P as Ee, R as De, Rt as Oe, S as ke, T as Ae, Ut as je, _ as Me, _t as Ne, a as Pe, at as Fe, bt as Ie, dt as Le, f as Re, ft as ze, gt as Be, h as Ve, ht as He, it as Ue, k as We, mt as Ge, o as Ke, p as qe, pt as Je, rt as Ye, s as Xe, v as Ze, vt as Qe, wt as $e, x as et, xt as tt, yt as nt, zt as rt } from "./error-entries-9U4BFHjf.js";
13
13
  import { n as it } from "./assertNever-B-YzWzbL.js";
14
14
  import { t as at } from "./react-dom-DUmH0GXv.js";
15
15
  import { t as ot } from "./jsx-runtime-3BD1kT0s.js";
package/dist/main.js CHANGED
@@ -3,20 +3,20 @@ import { _ as a, a as o, d as s, g as c, h as l, i as u, l as d, m as f, n as p,
3
3
  import { t as y } from "./react-sHtZdjeP.js";
4
4
  import { t as b } from "./compiler-runtime-CldRdSsv.js";
5
5
  import { i as x, n as S, r as C, t as w } from "./copy-icon-CtllOdmg.js";
6
- import { B as T, Bt as E, Dt as D, E as O, F as k, Ft as A, Ht as j, I as M, It as N, L as P, Lt as F, M as I, O as L, Ot as R, P as z, Pt as B, R as ee, Rt as te, St as ne, Ut as re, X as ie, Z as ae, _ as oe, _t as se, a as ce, at as le, b as ue, bt as de, c as fe, ct as pe, dt as me, i as he, it as ge, j as _e, jt as ve, lt as ye, mt as be, n as xe, o as Se, ot as Ce, q as we, rt as Te, ut as Ee, vt as De, yt as Oe, z as ke, zt as Ae } from "./html-to-image-CqGUd58T.js";
6
+ import { B as T, Bt as E, Dt as D, E as O, F as k, Ft as A, Ht as j, I as M, It as N, L as P, Lt as F, M as I, O as L, Ot as R, P as z, Pt as B, R as ee, Rt as te, St as ne, Ut as re, X as ie, Z as ae, _ as oe, _t as se, a as ce, at as le, b as ue, bt as de, c as fe, ct as pe, dt as me, i as he, it as ge, j as _e, jt as ve, lt as ye, mt as be, n as xe, o as Se, ot as Ce, q as we, rt as Te, ut as Ee, vt as De, yt as Oe, z as ke, zt as Ae } from "./html-to-image-BYh_MorV.js";
7
7
  import { a as je, f as Me, h as Ne, i as Pe, m as Fe, n as Ie, o as Le, r as Re, t as ze } from "./tooltip-DMMiOn2f.js";
8
8
  import { D as Be, E as Ve, O as He, S as Ue, T as We, _ as Ge, a as Ke, c as qe, d as Je, f as Ye, g as Xe, h as Ze, i as Qe, l as $e, m as et, n as tt, o as nt, p as rt, r as it, s as at, t as ot, u as st, v as ct, w as lt, x as ut, y as dt } from "./spec-BZMDxAu7.js";
9
- import { $t as ft, A as pt, At as mt, B as ht, Bt as gt, C as _t, Cn as vt, Ct as yt, D as bt, Dt as xt, E as St, En as Ct, Et as wt, F as Tt, Ft as Et, G as Dt, Gt as Ot, H as kt, Ht as At, I as jt, It as Mt, J as Nt, Jt as Pt, K as Ft, Kt as It, L as Lt, Lt as Rt, M as zt, Mt as Bt, N as Vt, Nt as Ht, O as Ut, Ot as Wt, P as Gt, Pt as Kt, Qt as qt, R as Jt, Rt as Yt, S as Xt, Sn as Zt, T as Qt, Tn as $t, Tt as en, U as tn, Ut as nn, V as rn, Vt as an, W as on, Wt as sn, X as cn, Xt as ln, Y as un, Yt as dn, Z as fn, Zt as pn, _ as mn, _t as hn, an as gn, at as _n, b as vn, bn as yn, bt as bn, c as xn, cn as Sn, ct as Cn, d as wn, dn as Tn, dt as En, en as Dn, f as On, fn as kn, ft as An, g as jn, gn as Mn, gt as Nn, h as Pn, hn as Fn, ht as In, in as Ln, it as Rn, j as zn, jt as Bn, k as Vn, kt as Hn, ln as Un, lt as Wn, m as Gn, mn as Kn, mt as qn, nn as Jn, nt as Yn, on as Xn, ot as Zn, p as Qn, pn as $n, pt as er, q as tr, qt as nr, r as rr, rn as ir, rt as ar, sn as or, st as sr, t as cr, tn as lr, tt as ur, u as dr, un as fr, ut as pr, v as mr, vn as hr, vt as gr, w as _r, wn as vr, wt as yr, x as br, xn as xr, y as Sr, yn as Cr, yt as wr, z as Tr, zt as Er } from "./common-BXMFi4lr.js";
9
+ import { $t as ft, A as pt, At as mt, B as ht, Bt as gt, C as _t, Cn as vt, Ct as yt, D as bt, Dt as xt, E as St, En as Ct, Et as wt, F as Tt, Ft as Et, G as Dt, Gt as Ot, H as kt, Ht as At, I as jt, It as Mt, J as Nt, Jt as Pt, K as Ft, Kt as It, L as Lt, Lt as Rt, M as zt, Mt as Bt, N as Vt, Nt as Ht, O as Ut, Ot as Wt, P as Gt, Pt as Kt, Qt as qt, R as Jt, Rt as Yt, S as Xt, Sn as Zt, T as Qt, Tn as $t, Tt as en, U as tn, Ut as nn, V as rn, Vt as an, W as on, Wt as sn, X as cn, Xt as ln, Y as un, Yt as dn, Z as fn, Zt as pn, _ as mn, _t as hn, an as gn, at as _n, b as vn, bn as yn, bt as bn, c as xn, cn as Sn, ct as Cn, d as wn, dn as Tn, dt as En, en as Dn, f as On, fn as kn, ft as An, g as jn, gn as Mn, gt as Nn, h as Pn, hn as Fn, ht as In, in as Ln, it as Rn, j as zn, jt as Bn, k as Vn, kt as Hn, ln as Un, lt as Wn, m as Gn, mn as Kn, mt as qn, nn as Jn, nt as Yn, on as Xn, ot as Zn, p as Qn, pn as $n, pt as er, q as tr, qt as nr, r as rr, rn as ir, rt as ar, sn as or, st as sr, t as cr, tn as lr, tt as ur, u as dr, un as fr, ut as pr, v as mr, vn as hr, vt as gr, w as _r, wn as vr, wt as yr, x as br, xn as xr, y as Sr, yn as Cr, yt as wr, z as Tr, zt as Er } from "./common-BIZJLLSc.js";
10
10
  import { a as Dr, n as Or, s as kr, t as Ar } from "./useLifecycle-SniivYmC.js";
11
11
  import { t as jr } from "./check-XFzZeH-y.js";
12
12
  import { A as Mr, C as Nr, D as Pr, M as Fr, O as Ir, a as Lr, c as Rr, d as zr, i as Br, k as Vr, l as Hr, n as Ur, o as Wr, r as Gr, s as Kr, t as qr, w as Jr, x as Yr } from "./select-DsoP1qe8.js";
13
13
  import { B as Xr, C as Zr, J as Qr, Mt as $r, Q as ei, S as ti, Sn as ni, W as ri, X as ii, Y as ai, Z as oi, _ as si, _t as ci, a as li, bn as ui, c as di, f as fi, g as pi, h as mi, i as hi, kt as gi, m as _i, n as vi, nt as yi, p as bi, pt as xi, r as Si, s as Ci, t as wi, v as Ti, w as Ei, xn as Di, y as Oi, z as ki } from "./dropdown-menu-Bb0bFOIk.js";
14
14
  import { c as Ai, i as ji, l as Mi, o as Ni, s as Pi, t as Fi } from "./config-C8MFHQ2E.js";
15
- import { A as Ii, At as Li, B as Ri, Ct as zi, E as Bi, Et as Vi, Ft as Hi, H as Ui, Ht as Wi, J as Gi, K as Ki, Lt as qi, Mt as Ji, P as Yi, Pt as Xi, Q as Zi, St as Qi, Ut as $i, V as ea, Vt as ta, X as na, Y as ra, Z as ia, _ as aa, c as oa, d as sa, dt as ca, g as la, h as ua, j as da, jt as fa, kt as pa, lt as ma, m as ha, ot as ga, p as _a, q as va, s as ya, st as ba, ut as xa, z as Sa, zt as Ca } from "./error-entries-C1S-Rmyt.js";
16
- import { a as wa, c as Ta, d as Ea, f as Da, i as Oa, l as ka, n as Aa, o as ja, r as Ma, s as Na, t as Pa } from "./process-output-DskX9jLa.js";
15
+ import { A as Ii, At as Li, B as Ri, Ct as zi, E as Bi, Et as Vi, Ft as Hi, H as Ui, Ht as Wi, J as Gi, K as Ki, Lt as qi, Mt as Ji, P as Yi, Pt as Xi, Q as Zi, St as Qi, Ut as $i, V as ea, Vt as ta, X as na, Y as ra, Z as ia, _ as aa, c as oa, d as sa, dt as ca, g as la, h as ua, j as da, jt as fa, kt as pa, lt as ma, m as ha, ot as ga, p as _a, q as va, s as ya, st as ba, ut as xa, z as Sa, zt as Ca } from "./error-entries-9U4BFHjf.js";
16
+ import { a as wa, c as Ta, d as Ea, f as Da, i as Oa, l as ka, n as Aa, o as ja, r as Ma, s as Na, t as Pa } from "./process-output-bS3MGJ3f.js";
17
17
  import { t as Fa } from "./pencil-DYUlSKxZ.js";
18
18
  import { a as Ia, c as La, d as Ra, f as za, i as Ba, l as Va, r as Ha } from "./glide-utils-BSQr4d90.js";
19
- import { n as Ua, t as Wa } from "./globals-DX6FPZYq.js";
19
+ import { n as Ua, t as Wa } from "./globals-CjnqsurJ.js";
20
20
  import { a as Ga, i as Ka, n as qa, r as Ja, s as Ya, t as Xa } from "./assertNever-B-YzWzbL.js";
21
21
  import { t as Za } from "./react-dom-DUmH0GXv.js";
22
22
  import { t as Qa } from "./jsx-runtime-3BD1kT0s.js";
@@ -40,10 +40,10 @@ import { n as qs, t as Js } from "./esm-BDqqT86j.js";
40
40
  import { p as Ys } from "./dist-B8pkfkzc.js";
41
41
  import { t as Xs } from "./useAsyncData-Ci4AvJff.js";
42
42
  import { t as Zs } from "./semaphore-89jsoHtS.js";
43
- import { t as Qs } from "./ErrorBoundary-DmTMuDPR.js";
43
+ import { t as Qs } from "./ErrorBoundary-fSq1YI-S.js";
44
44
  import { D as $s, O as ec } from "./vega-loader.browser-B9Pz0EGP.js";
45
45
  import { a as tc, n as nc } from "./loader-DZvtzQoD.js";
46
- import { a as rc, c as ic, i as ac, l as oc, o as sc, s as cc, t as lc } from "./code-visibility-Dw4-TXN0.js";
46
+ import { a as rc, c as ic, i as ac, l as oc, o as sc, s as cc, t as lc } from "./code-visibility-BhtW7mrV.js";
47
47
  import { t as uc } from "./useDeepCompareMemoize-NaaWoFlX.js";
48
48
  import { t as dc } from "./esm-BgKjMvWw.js";
49
49
  //#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
@@ -11929,7 +11929,7 @@ var xE = (e) => {
11929
11929
  output: t
11930
11930
  };
11931
11931
  } };
11932
- } }, DE = J.lazy(() => import("./chat-ui-v1Fdh0NA.js").then((e) => ({ default: e.Chatbot }))), OE = H(K({
11932
+ } }, DE = J.lazy(() => import("./chat-ui-ByGe2rP1.js").then((e) => ({ default: e.Chatbot }))), OE = H(K({
11933
11933
  id: W(),
11934
11934
  role: V([
11935
11935
  "system",
@@ -12398,7 +12398,7 @@ function ED(e, t) {
12398
12398
  }
12399
12399
  //#endregion
12400
12400
  //#region src/plugins/impl/DataEditorPlugin.tsx
12401
- var DD = J.lazy(() => import("./glide-data-editor-PZNlrSDI.js").then((e) => e.t)), OD = cE("marimo-data-editor", { cssStyles: [jE, ME] }).withData(K({
12401
+ var DD = J.lazy(() => import("./glide-data-editor-BdgfR8uu.js").then((e) => e.t)), OD = cE("marimo-data-editor", { cssStyles: [jE, ME] }).withData(K({
12402
12402
  initialValue: K({ edits: H(K({
12403
12403
  rowIdx: U(),
12404
12404
  columnId: W(),
@@ -32188,7 +32188,7 @@ function DH(e) {
32188
32188
  }
32189
32189
  //#endregion
32190
32190
  //#region src/components/editor/renderers/slides-layout/slides-layout.tsx
32191
- var OH = J.lazy(() => import("./reveal-component-D7xeI1QR.js")), kH = (e) => {
32191
+ var OH = J.lazy(() => import("./reveal-component-BqyL-_xE.js")), kH = (e) => {
32192
32192
  let t = (0, X.c)(33), { layout: n, setLayout: r, cells: i, mode: a } = e, o = lo(Fs), s = a === "read" || o, c = lo(Qi) > 1, [l, u] = (0, J.useState)(null), d;
32193
32193
  t[0] !== i || t[1] !== n ? (d = TR(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
32194
32194
  let { slideCells: f, skippedIds: p, noOutputIds: m, slideTypes: h, startCellIndex: g } = d, _;
@@ -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 { a as n } from "./glide-data-editor-PZNlrSDI.js";
3
+ import { a as n } from "./glide-data-editor-BdgfR8uu.js";
4
4
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.3.0_27cffe7f1bc30287d59ac27db3240c5b/node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/private/number-overlay-editor-style.js
5
5
  var r = /* @__PURE__ */ e(t()), i = /*#__PURE__*/ n("div")({
6
6
  name: "NumberOverlayEditorStyle",
@@ -1,6 +1,6 @@
1
- import { T as e } from "./html-to-image-CqGUd58T.js";
1
+ import { T as e } from "./html-to-image-BYh_MorV.js";
2
2
  import { h as t } from "./tooltip-DMMiOn2f.js";
3
- import { et as n, tt as r } from "./error-entries-C1S-Rmyt.js";
3
+ import { et as n, tt as r } from "./error-entries-9U4BFHjf.js";
4
4
  import { r as i } from "./assertNever-B-YzWzbL.js";
5
5
  import { n as a } from "./semaphore-89jsoHtS.js";
6
6
  var o = t("file", [["path", {
@@ -3,15 +3,15 @@ import { g as t, h as n, i as r, m as i, t as a } from "./button-DZuNnIZO.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 { h as c, t as l } from "./tooltip-DMMiOn2f.js";
6
- import { $ as u, Q as d, _n as f, an as p, bn as m, et as h, gn as g, i as _, l as v, n as y, on as b, r as x, t as S, u as C } from "./common-BXMFi4lr.js";
6
+ import { $ as u, Q as d, _n as f, an as p, bn as m, et as h, gn as g, i as _, l as v, n as y, on as b, r as x, t as S, u as C } from "./common-BIZJLLSc.js";
7
7
  import { M as w } from "./select-DsoP1qe8.js";
8
8
  import { Y as T } from "./dropdown-menu-Bb0bFOIk.js";
9
- import { Ft as E } from "./error-entries-C1S-Rmyt.js";
9
+ import { Ft as E } from "./error-entries-9U4BFHjf.js";
10
10
  import { t as D } from "./jsx-runtime-3BD1kT0s.js";
11
11
  import { Ft as O, Rt as k, d as A, r as ee } from "./use-restore-focus-CosX7-gx.js";
12
12
  import { t as j } from "./useEvent-BRH-aCqi.js";
13
13
  import { o as te } from "./static-state-D-Q-Ajaa.js";
14
- import { n as ne, t as re } from "./code-visibility-Dw4-TXN0.js";
14
+ import { n as ne, t as re } from "./code-visibility-BhtW7mrV.js";
15
15
  /* empty css */
16
16
  var M = 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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.25.3-dev279",
3
+ "version": "0.25.3-dev281",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -354,6 +354,43 @@ describe("cellFreshness", () => {
354
354
  });
355
355
  });
356
356
 
357
+ it.each(["running", "completed"] as const)(
358
+ "detects a binding in a newer runtime while its execution is %s",
359
+ (status) => {
360
+ const reader = record({
361
+ id: "reader-r2",
362
+ cell_id: "k7f2",
363
+ runtime_id: "r2",
364
+ code_fingerprint: K7F2_FINGERPRINT,
365
+ depends_on: { x: null },
366
+ started_at: "2026-10-01T09:21:00Z",
367
+ completed_at: "2026-10-01T09:21:01Z",
368
+ });
369
+ const binder = record({
370
+ id: "binder-r3",
371
+ cell_id: "c3",
372
+ runtime_id: "r3",
373
+ code_fingerprint: C3_FINGERPRINT,
374
+ status,
375
+ started_at: "2026-10-01T09:22:00Z",
376
+ completed_at: status === "completed" ? "2026-10-01T09:22:01Z" : null,
377
+ });
378
+ const state = inputs({
379
+ cells: [c3, k7f2],
380
+ executions: [
381
+ execution(binder, [variable("x", binder.id)]),
382
+ execution(reader),
383
+ ],
384
+ results: [e12, reader],
385
+ });
386
+
387
+ expect(freshnessOf(state)("k7f2")).toEqual({
388
+ sourceChanged: false,
389
+ inputsChanged: true,
390
+ });
391
+ },
392
+ );
393
+
357
394
  it("treats a name bound only by an earlier runtime as unbound", () => {
358
395
  const reader = record({
359
396
  id: "e20",
@@ -390,6 +427,31 @@ describe("cellFreshness", () => {
390
427
  });
391
428
  });
392
429
 
430
+ it.each(["queued", "running"] as const)(
431
+ "flags reverting to completed source while different source is %s",
432
+ (status) => {
433
+ const pending = record({
434
+ id: "e14",
435
+ cell_id: "c3",
436
+ code_fingerprint: "ffff000011112222",
437
+ status,
438
+ outcome: null,
439
+ started_at: status === "running" ? T0 : null,
440
+ completed_at: null,
441
+ });
442
+ const state = inputs({
443
+ cells: [c3],
444
+ executions: [execution(pending)],
445
+ results: [e12],
446
+ });
447
+
448
+ expect(freshnessOf(state)("c3")).toEqual({
449
+ sourceChanged: true,
450
+ inputsChanged: false,
451
+ });
452
+ },
453
+ );
454
+
393
455
  it("does not report changed source while a newer execution runs it", () => {
394
456
  const edited = cell("c3", "ffff000011112222");
395
457
  const running = record({
@@ -21,7 +21,7 @@ import type * as Protocol from "@marimo-team/client/protocol";
21
21
  import type { Executions, Results } from "@/core/notebook/replica";
22
22
 
23
23
  export interface CellFreshness {
24
- /** This cell's source changed since its result. */
24
+ /** This cell's source differs from its pending execution, or its last result. */
25
25
  readonly sourceChanged: boolean;
26
26
  /**
27
27
  * A value the result read changed since, by a rerun or an update, here
@@ -87,11 +87,24 @@ export function freshnessOf(inputs: CellFreshnessInputs): CellFreshnessLookup {
87
87
  for (const [name, revision] of Object.entries(record.depends_on)) {
88
88
  const variables = bound.get(name) ?? [];
89
89
  if (revision === null) {
90
- // A result retained from an earlier runtime binds nothing here.
90
+ // Older runtimes bind nothing here, but a later binding invalidates
91
+ // the result even if its runtime has since stopped.
91
92
  if (
92
- variables.some(
93
- (v) => recordOf(v.execution_id)?.runtime_id === record.runtime_id,
94
- )
93
+ variables.some((v) => {
94
+ const binder = recordOf(v.execution_id);
95
+ if (binder === undefined) {
96
+ return false;
97
+ }
98
+ if (binder.runtime_id === record.runtime_id) {
99
+ return true;
100
+ }
101
+ const boundAt = binder.completed_at ?? binder.started_at;
102
+ return (
103
+ boundAt !== null &&
104
+ record.completed_at !== null &&
105
+ Date.parse(boundAt) > Date.parse(record.completed_at)
106
+ );
107
+ })
95
108
  ) {
96
109
  return true;
97
110
  }
@@ -117,21 +130,18 @@ export function freshnessOf(inputs: CellFreshnessInputs): CellFreshnessLookup {
117
130
  return false;
118
131
  }
119
132
 
120
- /** Whether a newer execution of the cell already runs its current source. */
121
- function coveredByPending(
133
+ /** Compare against pending work before the result it will replace. */
134
+ function sourceChanged(
122
135
  cell: Protocol.Cell,
123
- record: Protocol.Execution,
136
+ result: Protocol.Execution,
124
137
  ): boolean {
125
138
  const latest = inputs.executions.latest.get(cell.id);
126
- if (latest === undefined || latest === record.id) {
127
- return false;
128
- }
129
- const pending = recordOf(latest);
130
- return (
131
- pending !== undefined &&
132
- pending.status !== "completed" &&
133
- pending.code_fingerprint === cell.code_fingerprint
134
- );
139
+ const pending = latest === undefined ? undefined : recordOf(latest);
140
+ const source =
141
+ pending !== undefined && pending.status !== "completed"
142
+ ? pending
143
+ : result;
144
+ return cell.code_fingerprint !== source.code_fingerprint;
135
145
  }
136
146
 
137
147
  function ofRecord(
@@ -145,10 +155,7 @@ export function freshnessOf(inputs: CellFreshnessInputs): CellFreshnessLookup {
145
155
  const cell =
146
156
  record.cell_id === null ? undefined : inputs.cells.get(record.cell_id);
147
157
  const freshness: CellFreshness = {
148
- sourceChanged:
149
- cell === undefined ||
150
- (cell.code_fingerprint !== record.code_fingerprint &&
151
- !coveredByPending(cell, record)),
158
+ sourceChanged: cell === undefined || sourceChanged(cell, record),
152
159
  inputsChanged: inputsChanged(record, visiting),
153
160
  };
154
161
  memo.set(record.id, freshness);