@marimo-team/islands 0.25.2-dev36 → 0.25.2-dev37

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.
@@ -135,7 +135,7 @@ function F(e) {
135
135
  }
136
136
  //#endregion
137
137
  //#region src/components/editor/boundary/ErrorBoundary.tsx
138
- var I = (0, T.lazy)(() => import("./feedback-button-2WeBgQPy.js").then((e) => ({ default: e.FeedbackModal }))), L = (e) => {
138
+ var I = (0, T.lazy)(() => import("./feedback-button-C5J60O9s.js").then((e) => ({ default: e.FeedbackModal }))), L = (e) => {
139
139
  let t = (0, w.c)(2), n;
140
140
  return t[0] === e.children ? n = t[1] : (n = /* @__PURE__ */ (0, j.jsx)(O, {
141
141
  FallbackComponent: R,
@@ -18,7 +18,7 @@ function x() {
18
18
  return e.warn("Failed to get version from mount config"), null;
19
19
  }
20
20
  }
21
- var S = x() || "0.25.2-dev36", C = u(S), w = u(!0);
21
+ var S = x() || "0.25.2-dev37", C = u(S), w = u(!0);
22
22
  u(null);
23
23
  //#endregion
24
24
  //#region src/core/wasm/state.ts
@@ -12,7 +12,7 @@ import { t as at } from "./check-DGZ74tV2.js";
12
12
  import { A as ot, C as st, D as ct, M as lt, O as ut, S as dt, _ as ft, b as pt, c as mt, d as ht, g as gt, h as _t, i as vt, l as yt, m as bt, n as xt, p as St, s as Ct, t as wt, u as Tt, v as Et, y as Dt } from "./select-BcObMjGz.js";
13
13
  import { $ as Ot, $t as kt, A as At, At as jt, B as Mt, Bt as Nt, Ct as Pt, D as Ft, Dt as It, E as Lt, Et as Rt, F as zt, Ft as Bt, G as Vt, Gt as Ht, H as Ut, Ht as Wt, I as Gt, It as Kt, Jt as qt, K as Jt, Kt as Yt, L as Xt, Lt as Zt, M as Qt, Mt as $t, N as en, Nt as tn, O as nn, Ot as rn, P as an, Pt as on, Q as sn, Qt as cn, R as ln, Rt as un, S as dn, St as fn, T as pn, Tt as mn, U as hn, Ut as gn, V as _n, Vt as vn, W as yn, Wt as bn, X as xn, Xt as Sn, Y as Cn, Yt as wn, Z as Tn, Zt as En, _ as Dn, _t as On, a as kn, an as An, b as jn, bt as Mn, cn as Nn, ct as Pn, d as Fn, dn as In, dt as Ln, en as Rn, et as zn, f as Bn, fn as Vn, ft as Hn, gt as Un, h as Wn, ht as Gn, i as Kn, it as qn, j as Jn, jt as Yn, k as Xn, kt as Zn, l as Qn, ln as $n, lt as er, mt as tr, n as nr, nn as rr, nt as ir, o as ar, on as or, ot as sr, pn as cr, pt as lr, qt as ur, rn as dr, rt as fr, s as pr, sn as mr, st as hr, t as gr, tn as _r, tt as vr, u as yr, un as br, ut as xr, vt as Sr, w as Cr, wt as wr, x as Tr, xt as Er, y as Dr, yt as Or, z as kr, zt as Ar } from "./dropdown-menu-BaqM0t4N.js";
14
14
  import { C as jr, a as Mr, b as Nr, c as Pr, d as Fr, i as Ir, n as Lr, o as Rr, p as zr, r as Br, s as Vr, t as Hr, x as Ur } from "./toDate-DWVp6uE1.js";
15
- import { n as Wr, t as Gr } from "./ErrorBoundary-C2zKbrjw.js";
15
+ import { n as Wr, t as Gr } from "./ErrorBoundary-4cQwOEA_.js";
16
16
  import { t as Kr } from "./clsx-CoeGtWvn.js";
17
17
  import { t as qr } from "./react-dom-BUgJ-ab_.js";
18
18
  import { t as Jr } from "./jsx-runtime-DgDPJV9S.js";
@@ -25741,6 +25741,7 @@ var VR = ({ table: e, tableLoading: t, showPageSizeSelector: n }) => {
25741
25741
  size: "xs",
25742
25742
  variant: "text",
25743
25743
  "data-testid": "first-page-button",
25744
+ "aria-label": "First page",
25744
25745
  className: "hidden h-6 w-5 p-0 lg:flex",
25745
25746
  onClick: () => l(() => e.setPageIndex(0)),
25746
25747
  onMouseDown: o.preventFocus,
@@ -25754,6 +25755,7 @@ var VR = ({ table: e, tableLoading: t, showPageSizeSelector: n }) => {
25754
25755
  size: "xs",
25755
25756
  variant: "text",
25756
25757
  "data-testid": "previous-page-button",
25758
+ "aria-label": "Previous page",
25757
25759
  className: "h-6 w-5 p-0",
25758
25760
  onClick: () => l(() => e.previousPage()),
25759
25761
  onMouseDown: o.preventFocus,
@@ -25782,6 +25784,7 @@ var VR = ({ table: e, tableLoading: t, showPageSizeSelector: n }) => {
25782
25784
  size: "xs",
25783
25785
  variant: "text",
25784
25786
  "data-testid": "next-page-button",
25787
+ "aria-label": "Next page",
25785
25788
  className: "h-6 w-5 p-0",
25786
25789
  onClick: () => l(() => e.nextPage()),
25787
25790
  onMouseDown: o.preventFocus,
@@ -25795,6 +25798,7 @@ var VR = ({ table: e, tableLoading: t, showPageSizeSelector: n }) => {
25795
25798
  size: "xs",
25796
25799
  variant: "text",
25797
25800
  "data-testid": "last-page-button",
25801
+ "aria-label": "Last page",
25798
25802
  className: "hidden h-6 w-5 p-0 lg:flex",
25799
25803
  onClick: () => l(() => e.setPageIndex(e.getPageCount() - 1)),
25800
25804
  onMouseDown: o.preventFocus,
@@ -25861,6 +25865,7 @@ var GR = ({ currentPage: e, totalPages: t, onPageChange: n }) => {
25861
25865
  type: "button",
25862
25866
  className: a("border rounded justify-between pl-1.5 pr-0.5 h-6 min-w-9 text-xs items-center inline-flex gap-0.5", t > 1 ? "hover:bg-accent cursor-pointer" : "opacity-50 cursor-default"),
25863
25867
  "data-testid": "page-select",
25868
+ "aria-label": `Choose page, current page ${e} of ${t}`,
25864
25869
  disabled: t <= 1,
25865
25870
  children: [e, /* @__PURE__ */ (0, K.jsx)(lt, { className: "h-3 w-3 opacity-50 mb-px" })]
25866
25871
  })
@@ -25868,7 +25873,9 @@ var GR = ({ currentPage: e, totalPages: t, onPageChange: n }) => {
25868
25873
  className: "w-36 p-0",
25869
25874
  align: "center",
25870
25875
  sideOffset: 6,
25876
+ "aria-label": "Choose page",
25871
25877
  children: /* @__PURE__ */ (0, K.jsxs)(v_, {
25878
+ label: "Search pages",
25872
25879
  shouldFilter: !1,
25873
25880
  value: String(e),
25874
25881
  children: [/* @__PURE__ */ (0, K.jsx)(y_, {
@@ -2,7 +2,7 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { t } from "./react-ofJbxM4x.js";
3
3
  import { t as n } from "./react-dom-BUgJ-ab_.js";
4
4
  import { c as r, l as i, u as a } from "./data-grid-types-BucVmDDp.js";
5
- import { a as o, i as s, n as c, r as l } from "./glide-data-editor-B_cc1E3b.js";
5
+ import { a as o, i as s, n as c, r as l } from "./glide-data-editor-imIMEsm8.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.2.8_b9e6aec46d952f631ce71b0585d2a8e5/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",
@@ -5,12 +5,12 @@ import { t as i } from "./compiler-runtime-Cj8ZWiNS.js";
5
5
  import { t as a } from "./copy-icon-qmRg_VTX.js";
6
6
  import { Ct as o, Ft as s, H as c, L as l, Lt as u, V as d, d as f, un as p } from "./cells-DxsypDZK.js";
7
7
  import { b as m } from "./select-BcObMjGz.js";
8
- import { n as h, t as ee } from "./globals-D7lcEUDf.js";
8
+ import { n as h, t as ee } from "./globals-DZNpDhRS.js";
9
9
  import { t as g } from "./jsx-runtime-DgDPJV9S.js";
10
10
  import { C as _, _ as te, i as v } from "./useTheme-BOw801nZ.js";
11
11
  import { a as ne, i as re, n as ie, r as ae } from "./dialog-CILKhbsG.js";
12
12
  import { t as oe } from "./useAsyncData-BD7NLQ3_.js";
13
- import { t as se } from "./code-visibility-Bfq3Ejid.js";
13
+ import { t as se } from "./code-visibility-C6sJ1nKF.js";
14
14
  import { i as ce, n as le } from "./error-entries-xDl6bkdA.js";
15
15
  //#region src/components/ui/skeleton.tsx
16
16
  var y = /* @__PURE__ */ e(r(), 1), b = i(), x = g(), ue = (e) => {
@@ -6,7 +6,7 @@ import { i as s, n as c, r as l } from "./copy-icon-qmRg_VTX.js";
6
6
  import { C as u, c as d, i as f, n as p, s as m, t as h, x as g } from "./select-BcObMjGz.js";
7
7
  import { d as _, h as v, i as y, l as b, n as x, o as S, s as C, t as w, u as T } from "./dropdown-menu-BaqM0t4N.js";
8
8
  import { c as E, d as D, l as O, n as k, o as A, s as ee, t as j, u as te } from "./glide-utils-CzzWU59p.js";
9
- import { n as ne, t as re } from "./ErrorBoundary-C2zKbrjw.js";
9
+ import { n as ne, t as re } from "./ErrorBoundary-4cQwOEA_.js";
10
10
  import { t as M } from "./react-dom-BUgJ-ab_.js";
11
11
  import { t as N } from "./jsx-runtime-DgDPJV9S.js";
12
12
  import { t as ie } from "./label-MNhNNoN6.js";
@@ -7062,7 +7062,7 @@ function rs(e, t, n, r, i) {
7062
7062
  }
7063
7063
  //#endregion
7064
7064
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/data-editor/data-editor.js
7065
- var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-BwX7RPop.js")), ss = 0;
7065
+ var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-BYGAo12A.js")), ss = 0;
7066
7066
  function cs(e) {
7067
7067
  return (0, is.default)((0, as.default)((0, as.default)(e).filter((e) => e.span !== void 0).map((e) => (0, Za.default)((e.span?.[0] ?? 0) + 1, (e.span?.[1] ?? 0) + 1))));
7068
7068
  }
@@ -9293,7 +9293,7 @@ function Vs(e, t, n, r, i) {
9293
9293
  }
9294
9294
  //#endregion
9295
9295
  //#region ../node_modules/.pnpm/@glideapps+glide-data-grid@6.0.4-alpha24_lodash@4.17.21_marked@15.0.12_react-dom@19.2.8_b9e6aec46d952f631ce71b0585d2a8e5/node_modules/@glideapps/glide-data-grid/dist/esm/cells/number-cell.js
9296
- var Hs = K.lazy(async () => await import("./number-overlay-editor-CKoaMnN3.js")), Us = {
9296
+ var Hs = K.lazy(async () => await import("./number-overlay-editor-BbBytGxI.js")), Us = {
9297
9297
  getAccessibilityString: (e) => e.data?.toString() ?? "",
9298
9298
  kind: W.Number,
9299
9299
  needsHover: (e) => e.hoverEffect === !0,
@@ -1,6 +1,6 @@
1
1
  import { g as e } from "./tooltip-Bi36DgYh.js";
2
2
  import { _ as t } from "./useTheme-BOw801nZ.js";
3
- import { r as n } from "./code-visibility-Bfq3Ejid.js";
3
+ import { r as n } from "./code-visibility-C6sJ1nKF.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",
package/dist/main.js CHANGED
@@ -7,7 +7,7 @@ import { C as T, F as E, G as D, I as O, J as k, K as A, L as j, P as M, R as N,
7
7
  import { a as se, f as ce, g as V, i as le, n as ue, o as de, p as fe, r as pe, t as me } from "./tooltip-Bi36DgYh.js";
8
8
  import { $ as he, $t as ge, B as _e, Bt as ve, C as ye, Ct as be, D as xe, Dt as Se, Et as Ce, F as we, G as Te, Gt as Ee, Ht as De, I as Oe, J as ke, Jt as Ae, Kt as je, L as Me, O as Ne, Ot as Pe, P as Fe, Pt as Ie, Q as Le, Qt as Re, Rt as ze, S as Be, St as Ve, T as He, Tt as Ue, U as We, W as Ge, Wt as Ke, bt as qe, c as Je, cn as Ye, ct as Xe, d as Ze, dn as Qe, dt as $e, en as et, f as tt, fn as nt, ft as rt, g as it, gt as at, h as ot, hn as st, k as ct, l as lt, ln as ut, m as dt, mn as ft, n as pt, o as mt, on as ht, ot as gt, p as _t, q as vt, qt as yt, r as bt, rn as xt, rt as St, sn as Ct, st as wt, tn as Tt, u as Et, v as Dt, w as Ot, wt as kt, zt as At } from "./cells-DxsypDZK.js";
9
9
  import { D as jt, E as Mt, O as Nt, S as Pt, T as Ft, _ as It, a as Lt, c as Rt, d as zt, f as Bt, g as Vt, h as Ht, i as Ut, l as Wt, m as Gt, n as Kt, o as qt, p as Jt, r as Yt, s as Xt, t as Zt, u as Qt, v as $t, w as en, x as tn, y as nn } from "./spec-BSchR9UD.js";
10
- import { $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, X as Xn, Xt as Zn, Y as Qn, Yt as $n, Zt as er, _ as tr, _t as nr, an as rr, at as ir, b as ar, c as or, cn as sr, ct as cr, d as lr, dn as ur, dt as dr, en as fr, et as pr, f as mr, fn as hr, ft as gr, g as _r, gt as vr, h as yr, hn as br, ht as xr, in as Sr, it as Cr, j as wr, jt as Tr, k as Er, kt as Dr, ln as Or, lt as kr, m as Ar, mn as jr, mt as Mr, nn as Nr, nt as Pr, ot as Fr, p as Ir, pn as Lr, pt as Rr, q as zr, qt as Br, r as Vr, rn as Hr, rt as Ur, sn as Wr, st as Gr, t as Kr, tn as qr, tt as Jr, u as Yr, un as Xr, ut as Zr, v as Qr, vt as $r, w as ei, wt as ti, x as ni, y as ri, yt as ii, z as ai, zt as oi } from "./common-DvJKngyQ.js";
10
+ import { $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Ct as un, D as dn, Dt as fn, E as pn, Et as mn, F as hn, Ft as gn, G as _n, Gt as vn, H as yn, Ht as bn, I as xn, It as Sn, J as Cn, Jt as wn, K as Tn, Kt as En, L as Dn, Lt as On, M as kn, Mt as An, N as jn, Nt as Mn, O as Nn, Ot as Pn, P as Fn, Pt as In, Qt as Ln, R as Rn, Rt as zn, S as Bn, St as Vn, T as Hn, Tt as Un, U as Wn, Ut as Gn, V as Kn, Vt as qn, W as Jn, Wt as Yn, X as Xn, Xt as Zn, Y as Qn, Yt as $n, Zt as er, _ as tr, _t as nr, an as rr, at as ir, b as ar, c as or, cn as sr, ct as cr, d as lr, dn as ur, dt as dr, en as fr, et as pr, f as mr, fn as hr, ft as gr, g as _r, gt as vr, h as yr, hn as br, ht as xr, in as Sr, it as Cr, j as wr, jt as Tr, k as Er, kt as Dr, ln as Or, lt as kr, m as Ar, mn as jr, mt as Mr, nn as Nr, nt as Pr, ot as Fr, p as Ir, pn as Lr, pt as Rr, q as zr, qt as Br, r as Vr, rn as Hr, rt as Ur, sn as Wr, st as Gr, t as Kr, tn as qr, tt as Jr, u as Yr, un as Xr, ut as Zr, v as Qr, vt as $r, w as ei, wt as ti, x as ni, y as ri, yt as ii, z as ai, zt as oi } from "./common-CYZSAtIH.js";
11
11
  import { c as si, i as ci, n as li, o as ui, t as di } from "./useLifecycle-3vGhRa1o.js";
12
12
  import { t as fi } from "./check-DGZ74tV2.js";
13
13
  import { A as pi, C as mi, D as hi, E as gi, M as _i, O as vi, S as yi, T as bi, a as xi, b as Si, c as Ci, i as wi, k as Ti, l as Ei, n as Di, o as Oi, r as ki, s as Ai, t as ji, w as Mi, x as Ni } from "./select-BcObMjGz.js";
@@ -15,8 +15,8 @@ import { B as Pi, C as Fi, J as Ii, Mt as Li, Nt as Ri, S as zi, Vt as Bi, W as
15
15
  import { C as da, S as fa, T as pa, _ as ma, c as ha, d as ga, f as _a, g as va, h as ya, m as ba, u as xa, x as Sa, y as Ca } from "./toDate-DWVp6uE1.js";
16
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-_4TxDper.js";
17
17
  import { a as Fa, c as Ia, d as La, i as Ra, l as za, r as Ba, u as Va } from "./glide-utils-CzzWU59p.js";
18
- import { n as Ha, t as Ua } from "./ErrorBoundary-C2zKbrjw.js";
19
- import { n as Wa, t as Ga } from "./globals-D7lcEUDf.js";
18
+ import { n as Ha, t as Ua } from "./ErrorBoundary-4cQwOEA_.js";
19
+ import { n as Wa, t as Ga } from "./globals-DZNpDhRS.js";
20
20
  import { t as Ka } from "./react-dom-BUgJ-ab_.js";
21
21
  import { t as qa } from "./jsx-runtime-DgDPJV9S.js";
22
22
  import { B as Ja, C as H, Ct as Ya, D as Xa, E as Za, Et as Qa, F as U, G as $a, H as eo, I as to, L as no, M as W, N as ro, O as io, P as ao, Q as oo, R as so, S as G, St as co, Tt as lo, U as uo, W as fo, Y as po, Z as mo, _ as ho, a as go, b as _o, bt as vo, c as yo, d as bo, dt as xo, f as So, g as Co, gt as wo, h as To, i as Eo, j as K, k as Do, l as Oo, m as ko, n as Ao, o as jo, p as Mo, r as No, s as Po, u as Fo, v as Io, vt as Lo, w as Ro, wt as zo, x as Bo, xt as Vo, y as Ho, yt as Uo } from "./use-restore-focus-ZgG5Br63.js";
@@ -39,7 +39,7 @@ import { t as Ns } from "./useAsyncData-BD7NLQ3_.js";
39
39
  import { i as Ps, n as Fs, r as Is } from "./formats-Q9gwlLyD.js";
40
40
  import { M as Ls, N as Rs } from "./vega-loader.browser-DNST6uVf.js";
41
41
  import { a as zs, n as Bs } from "./loader-C9OUkMrj.js";
42
- import { c as Vs, d as Hs, i as Us, l as Ws, o as Gs, s as Ks, t as qs, u as Js } from "./code-visibility-Bfq3Ejid.js";
42
+ import { c as Vs, d as Hs, i as Us, l as Ws, o as Gs, s as Ks, t as qs, u as Js } from "./code-visibility-C6sJ1nKF.js";
43
43
  import { t as Ys } from "./useDeepCompareMemoize-CawMGSRU.js";
44
44
  import { t as Xs } from "./esm-D2gTsXEV.js";
45
45
  //#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
@@ -10458,7 +10458,7 @@ function RC(e, t) {
10458
10458
  }
10459
10459
  //#endregion
10460
10460
  //#region src/plugins/impl/DataEditorPlugin.tsx
10461
- var zC = J.lazy(() => import("./glide-data-editor-B_cc1E3b.js").then((e) => e.t)), BC = xS("marimo-data-editor", { cssStyles: [WS] }).withData(W({
10461
+ var zC = J.lazy(() => import("./glide-data-editor-imIMEsm8.js").then((e) => e.t)), BC = xS("marimo-data-editor", { cssStyles: [WS] }).withData(W({
10462
10462
  initialValue: W({ edits: G(W({
10463
10463
  rowIdx: K(),
10464
10464
  columnId: U(),
@@ -29968,7 +29968,7 @@ function bR(e) {
29968
29968
  }
29969
29969
  //#endregion
29970
29970
  //#region src/components/editor/renderers/slides-layout/slides-layout.tsx
29971
- var xR = J.lazy(() => import("./reveal-component-FDgAb6qh.js")), SR = (e) => {
29971
+ var xR = J.lazy(() => import("./reveal-component-JPL6fq0b.js")), SR = (e) => {
29972
29972
  let t = (0, X.c)(33), { layout: n, setLayout: r, cells: i, mode: a } = e, o = rs(Ca), s = a === "read" || o, c = rs(_t) > 1, [l, u] = (0, J.useState)(null), d;
29973
29973
  t[0] !== i || t[1] !== n ? (d = vP(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
29974
29974
  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-ofJbxM4x.js";
3
- import { a as n } from "./glide-data-editor-B_cc1E3b.js";
3
+ import { a as n } from "./glide-data-editor-imIMEsm8.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.2.8_b9e6aec46d952f631ce71b0585d2a8e5/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",
@@ -4,14 +4,14 @@ import { t as o } from "./react-ofJbxM4x.js";
4
4
  import { t as s } from "./compiler-runtime-Cj8ZWiNS.js";
5
5
  import { g as c, t as l } from "./tooltip-Bi36DgYh.js";
6
6
  import { w as u } from "./cells-DxsypDZK.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-DvJKngyQ.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-CYZSAtIH.js";
8
8
  import { M as C } from "./select-BcObMjGz.js";
9
9
  import { J as ee } from "./dropdown-menu-BaqM0t4N.js";
10
10
  import { y as w } from "./toDate-DWVp6uE1.js";
11
11
  import { t as T } from "./jsx-runtime-DgDPJV9S.js";
12
12
  import { q as te } from "./use-restore-focus-ZgG5Br63.js";
13
13
  import { A as E, C as D, b as O } from "./useTheme-BOw801nZ.js";
14
- import { a as k, n as ne, t as re } from "./code-visibility-Bfq3Ejid.js";
14
+ import { a as k, n as ne, t as re } from "./code-visibility-C6sJ1nKF.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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.25.2-dev36",
3
+ "version": "0.25.2-dev37",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -1,7 +1,91 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import { getCoreRowModel, useReactTable } from "@tanstack/react-table";
4
+ import { fireEvent, render, screen } from "@testing-library/react";
3
5
  import { expect, test } from "vitest";
4
- import { matchingPageRanges } from "../pagination";
6
+ import { TooltipProvider } from "@/components/ui/tooltip";
7
+ import { DataTablePagination, matchingPageRanges } from "../pagination";
8
+
9
+ function PaginationHarness({
10
+ totalPages = 3,
11
+ loading = false,
12
+ }: {
13
+ totalPages?: number;
14
+ loading?: boolean;
15
+ }) {
16
+ const table = useReactTable({
17
+ locale: "en-US",
18
+ data: [],
19
+ columns: [],
20
+ getCoreRowModel: getCoreRowModel(),
21
+ manualPagination: true,
22
+ pageCount: totalPages,
23
+ });
24
+ return (
25
+ <TooltipProvider>
26
+ <DataTablePagination table={table} tableLoading={loading} />
27
+ </TooltipProvider>
28
+ );
29
+ }
30
+
31
+ test("named navigation controls preserve page updates and boundaries", () => {
32
+ render(<PaginationHarness />);
33
+ expect(screen.getByRole("button", { name: "First page" })).toBeDisabled();
34
+ expect(screen.getByRole("button", { name: "Previous page" })).toBeDisabled();
35
+ fireEvent.click(screen.getByRole("button", { name: "Next page" }));
36
+ expect(
37
+ screen.getByRole("button", { name: "Choose page, current page 2 of 3" }),
38
+ ).toBeEnabled();
39
+ fireEvent.click(screen.getByRole("button", { name: "Last page" }));
40
+ expect(screen.getByRole("button", { name: "Next page" })).toBeDisabled();
41
+ expect(screen.getByRole("button", { name: "Last page" })).toBeDisabled();
42
+ fireEvent.click(screen.getByRole("button", { name: "Previous page" }));
43
+ fireEvent.click(screen.getByRole("button", { name: "First page" }));
44
+ expect(
45
+ screen.getByRole("button", { name: "Choose page, current page 1 of 3" }),
46
+ ).toBeEnabled();
47
+ expect(screen.getByRole("button", { name: "First page" })).toBeDisabled();
48
+ expect(screen.getByRole("button", { name: "Previous page" })).toBeDisabled();
49
+ expect(screen.getByRole("button", { name: "Next page" })).toBeEnabled();
50
+ expect(screen.getByRole("button", { name: "Last page" })).toBeEnabled();
51
+ });
52
+
53
+ test("loading prevents navigation and a single page disables controls", () => {
54
+ const { rerender } = render(<PaginationHarness loading={true} />);
55
+ fireEvent.click(screen.getByRole("button", { name: "Next page" }));
56
+ fireEvent.click(screen.getByRole("button", { name: "Last page" }));
57
+ expect(
58
+ screen.getByRole("button", { name: "Choose page, current page 1 of 3" }),
59
+ ).toBeEnabled();
60
+ rerender(<PaginationHarness />);
61
+ fireEvent.click(screen.getByRole("button", { name: "Next page" }));
62
+ expect(
63
+ screen.getByRole("button", { name: "Choose page, current page 2 of 3" }),
64
+ ).toBeEnabled();
65
+ rerender(<PaginationHarness key="single-page" totalPages={1} />);
66
+ for (const name of [
67
+ "First page",
68
+ "Previous page",
69
+ "Next page",
70
+ "Last page",
71
+ "Choose page, current page 1 of 1",
72
+ ]) {
73
+ expect(screen.getByRole("button", { name })).toBeDisabled();
74
+ }
75
+ });
76
+
77
+ test("page picker exposes named dialog and search", () => {
78
+ render(<PaginationHarness />);
79
+ fireEvent.click(
80
+ screen.getByRole("button", { name: "Choose page, current page 1 of 3" }),
81
+ );
82
+ expect(
83
+ screen.getByRole("dialog", { name: "Choose page" }),
84
+ ).toBeInTheDocument();
85
+ expect(
86
+ screen.getByRole("combobox", { name: "Search pages" }),
87
+ ).toBeInTheDocument();
88
+ });
5
89
 
6
90
  test("empty prefix returns no ranges", () => {
7
91
  expect(matchingPageRanges("", 500)).toEqual([]);
@@ -117,6 +117,7 @@ export const DataTablePagination = <TData,>({
117
117
  size="xs"
118
118
  variant="text"
119
119
  data-testid="first-page-button"
120
+ aria-label="First page"
120
121
  className="hidden h-6 w-5 p-0 lg:flex"
121
122
  onClick={() => handlePageChange(() => table.setPageIndex(0))}
122
123
  onMouseDown={Events.preventFocus}
@@ -130,6 +131,7 @@ export const DataTablePagination = <TData,>({
130
131
  size="xs"
131
132
  variant="text"
132
133
  data-testid="previous-page-button"
134
+ aria-label="Previous page"
133
135
  className="h-6 w-5 p-0"
134
136
  onClick={() => handlePageChange(() => table.previousPage())}
135
137
  onMouseDown={Events.preventFocus}
@@ -156,6 +158,7 @@ export const DataTablePagination = <TData,>({
156
158
  size="xs"
157
159
  variant="text"
158
160
  data-testid="next-page-button"
161
+ aria-label="Next page"
159
162
  className="h-6 w-5 p-0"
160
163
  onClick={() => handlePageChange(() => table.nextPage())}
161
164
  onMouseDown={Events.preventFocus}
@@ -169,6 +172,7 @@ export const DataTablePagination = <TData,>({
169
172
  size="xs"
170
173
  variant="text"
171
174
  data-testid="last-page-button"
175
+ aria-label="Last page"
172
176
  className="hidden h-6 w-5 p-0 lg:flex"
173
177
  onClick={() =>
174
178
  handlePageChange(() =>
@@ -306,14 +310,24 @@ export const PageSelector = ({
306
310
  : "opacity-50 cursor-default",
307
311
  )}
308
312
  data-testid="page-select"
313
+ aria-label={`Choose page, current page ${currentPage} of ${totalPages}`}
309
314
  disabled={totalPages <= 1}
310
315
  >
311
316
  {currentPage}
312
317
  <ChevronDown className="h-3 w-3 opacity-50 mb-px" />
313
318
  </button>
314
319
  </PopoverTrigger>
315
- <PopoverContent className="w-36 p-0" align="center" sideOffset={6}>
316
- <Command shouldFilter={false} value={String(currentPage)}>
320
+ <PopoverContent
321
+ className="w-36 p-0"
322
+ align="center"
323
+ sideOffset={6}
324
+ aria-label="Choose page"
325
+ >
326
+ <Command
327
+ label="Search pages"
328
+ shouldFilter={false}
329
+ value={String(currentPage)}
330
+ >
317
331
  <CommandInput
318
332
  placeholder={`Page (1–${totalPages})`}
319
333
  rootClassName="px-2 h-8"