@marimo-team/islands 0.25.2-dev5 → 0.25.2-dev9
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.
- package/dist/{ErrorBoundary-nmfUc8WW.js → ErrorBoundary-BK6f6roX.js} +1 -1
- package/dist/{code-visibility-DEwQOq-y.js → code-visibility-Ba_h3MSI.js} +1 -1
- package/dist/{common-GiI6gFi-.js → common-0rJUT4CU.js} +1 -1
- package/dist/{data-grid-overlay-editor-jTlmlnzl.js → data-grid-overlay-editor-DvZ8ZYHw.js} +1 -1
- package/dist/{feedback-button-bc8pu-PN.js → feedback-button-Bd-kdxIT.js} +2 -2
- package/dist/{glide-data-editor-B0uO6ALd.js → glide-data-editor-DrEBdhP5.js} +3 -3
- package/dist/{globals-BDtMCl5a.js → globals-BVhJcU-3.js} +1 -1
- package/dist/main.js +39 -19
- package/dist/{number-overlay-editor-BgKLuNYR.js → number-overlay-editor-DthBBC83.js} +1 -1
- package/dist/{reveal-component-BIh2bHtb.js → reveal-component-CX4Yqwsa.js} +2 -2
- package/package.json +1 -1
- package/src/plugins/impl/FileBrowserPlugin.tsx +45 -15
- package/src/plugins/impl/__tests__/FileBrowserPlugin.test.tsx +85 -2
|
@@ -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-
|
|
138
|
+
var I = (0, T.lazy)(() => import("./feedback-button-Bd-kdxIT.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-
|
|
21
|
+
var S = x() || "0.25.2-dev9", 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-
|
|
15
|
+
import { n as Wr, t as Gr } from "./ErrorBoundary-BK6f6roX.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";
|
|
@@ -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-
|
|
5
|
+
import { a as o, i as s, n as c, r as l } from "./glide-data-editor-DrEBdhP5.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-5ppES-Un.js";
|
|
7
7
|
import { b as m } from "./select-BcObMjGz.js";
|
|
8
|
-
import { n as h, t as ee } from "./globals-
|
|
8
|
+
import { n as h, t as ee } from "./globals-BVhJcU-3.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-
|
|
13
|
+
import { t as se } from "./code-visibility-Ba_h3MSI.js";
|
|
14
14
|
import { i as ce, n as le } from "./error-entries-B2Ux3Z2X.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-
|
|
9
|
+
import { n as ne, t as re } from "./ErrorBoundary-BK6f6roX.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-
|
|
7065
|
+
var is = /* @__PURE__ */ e(_r(), 1), as = /* @__PURE__ */ e(xr(), 1), os = K.lazy(async () => await import("./data-grid-overlay-editor-DvZ8ZYHw.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-
|
|
9296
|
+
var Hs = K.lazy(async () => await import("./number-overlay-editor-DthBBC83.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-
|
|
3
|
+
import { r as n } from "./code-visibility-Ba_h3MSI.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-5ppES-Un.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-D62vWpMT.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-
|
|
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-0rJUT4CU.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-BSsWzfnY.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-
|
|
19
|
-
import { n as Wa, t as Ga } from "./globals-
|
|
18
|
+
import { n as Ha, t as Ua } from "./ErrorBoundary-BK6f6roX.js";
|
|
19
|
+
import { n as Wa, t as Ga } from "./globals-BVhJcU-3.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-
|
|
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-Ba_h3MSI.js";
|
|
43
43
|
import { t as Ys } from "./useDeepCompareMemoize-CawMGSRU.js";
|
|
44
44
|
import { t as Xs } from "./esm-BElI3qKH.js";
|
|
45
45
|
//#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
|
|
@@ -10457,7 +10457,7 @@ function RC(e, t) {
|
|
|
10457
10457
|
}
|
|
10458
10458
|
//#endregion
|
|
10459
10459
|
//#region src/plugins/impl/DataEditorPlugin.tsx
|
|
10460
|
-
var zC = J.lazy(() => import("./glide-data-editor-
|
|
10460
|
+
var zC = J.lazy(() => import("./glide-data-editor-DrEBdhP5.js").then((e) => e.t)), BC = xS("marimo-data-editor", { cssStyles: [WS] }).withData(W({
|
|
10461
10461
|
initialValue: W({ edits: G(W({
|
|
10462
10462
|
rowIdx: K(),
|
|
10463
10463
|
columnId: U(),
|
|
@@ -16508,19 +16508,22 @@ var LD = ({ value: e, setValue: t, initialPath: n, selectionMode: r, multiple: i
|
|
|
16508
16508
|
case " ": e.preventDefault(), ie[t].onToggleSelect?.();
|
|
16509
16509
|
}
|
|
16510
16510
|
}
|
|
16511
|
-
let {
|
|
16511
|
+
let { protocol: se, parentDirectories: ce } = ND({
|
|
16512
16512
|
path: u,
|
|
16513
16513
|
delimiter: L,
|
|
16514
16514
|
initialPath: n,
|
|
16515
16515
|
restrictNavigation: o
|
|
16516
|
-
}),
|
|
16516
|
+
}), V = ce.toReversed().map((e) => ({
|
|
16517
|
+
path: e,
|
|
16518
|
+
name: e === se ? se : e.split(L).findLast(Boolean) ?? e
|
|
16519
|
+
})), le = r === "all" ? $e.of("file", "folder") : r === "directory" ? $e.of("folder") : $e.of("file");
|
|
16517
16520
|
return /* @__PURE__ */ (0, Y.jsxs)("div", { children: [
|
|
16518
16521
|
T && /* @__PURE__ */ (0, Y.jsx)(qo, {
|
|
16519
16522
|
kind: "danger",
|
|
16520
16523
|
children: T.message
|
|
16521
16524
|
}),
|
|
16522
16525
|
(() => {
|
|
16523
|
-
let e = a ?? `Select ${
|
|
16526
|
+
let e = a ?? `Select ${le.join(" and ", 2)}...`, t = /* @__PURE__ */ (0, Y.jsx)(Zo, { children: E({ html: e }) });
|
|
16524
16527
|
return i ? /* @__PURE__ */ (0, Y.jsxs)("div", {
|
|
16525
16528
|
className: "flex items-center justify-between border px-2",
|
|
16526
16529
|
children: [/* @__PURE__ */ (0, Y.jsx)("div", {
|
|
@@ -16534,15 +16537,32 @@ var LD = ({ value: e, setValue: t, initialPath: n, selectionMode: r, multiple: i
|
|
|
16534
16537
|
}) })]
|
|
16535
16538
|
}) : t;
|
|
16536
16539
|
})(),
|
|
16537
|
-
/* @__PURE__ */ (0, Y.jsx)(
|
|
16538
|
-
|
|
16539
|
-
|
|
16540
|
-
|
|
16541
|
-
|
|
16542
|
-
|
|
16543
|
-
|
|
16544
|
-
|
|
16545
|
-
|
|
16540
|
+
/* @__PURE__ */ (0, Y.jsx)("nav", {
|
|
16541
|
+
"aria-label": "Current directory",
|
|
16542
|
+
className: "mt-2",
|
|
16543
|
+
children: /* @__PURE__ */ (0, Y.jsx)("ol", {
|
|
16544
|
+
className: "flex flex-wrap items-center gap-0.5 text-sm",
|
|
16545
|
+
children: V.map((e, t) => {
|
|
16546
|
+
let n = t === V.length - 1;
|
|
16547
|
+
return /* @__PURE__ */ (0, Y.jsxs)("li", {
|
|
16548
|
+
className: "flex items-center gap-0.5",
|
|
16549
|
+
children: [t > 0 && /* @__PURE__ */ (0, Y.jsx)(na, {
|
|
16550
|
+
size: 14,
|
|
16551
|
+
className: "text-muted-foreground shrink-0",
|
|
16552
|
+
"aria-hidden": !0
|
|
16553
|
+
}), /* @__PURE__ */ (0, Y.jsx)("button", {
|
|
16554
|
+
type: "button",
|
|
16555
|
+
title: e.path,
|
|
16556
|
+
"aria-current": n ? "page" : void 0,
|
|
16557
|
+
onClick: () => {
|
|
16558
|
+
n || ee(e.path);
|
|
16559
|
+
},
|
|
16560
|
+
className: l("rounded px-1 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring", n ? "font-medium cursor-default" : "text-muted-foreground hover:bg-accent hover:text-foreground"),
|
|
16561
|
+
children: e.name
|
|
16562
|
+
})]
|
|
16563
|
+
}, e.path);
|
|
16564
|
+
})
|
|
16565
|
+
})
|
|
16546
16566
|
}),
|
|
16547
16567
|
w && typeof w.total_count == "number" && /* @__PURE__ */ (0, Y.jsx)("div", {
|
|
16548
16568
|
className: "text-xs text-muted-foreground mt-1 px-1",
|
|
@@ -16600,7 +16620,7 @@ var LD = ({ value: e, setValue: t, initialPath: n, selectionMode: r, multiple: i
|
|
|
16600
16620
|
children: [
|
|
16601
16621
|
e.length,
|
|
16602
16622
|
" ",
|
|
16603
|
-
|
|
16623
|
+
le.join(" or ", e.length),
|
|
16604
16624
|
" ",
|
|
16605
16625
|
"selected"
|
|
16606
16626
|
]
|
|
@@ -29941,7 +29961,7 @@ function bR(e) {
|
|
|
29941
29961
|
}
|
|
29942
29962
|
//#endregion
|
|
29943
29963
|
//#region src/components/editor/renderers/slides-layout/slides-layout.tsx
|
|
29944
|
-
var xR = J.lazy(() => import("./reveal-component-
|
|
29964
|
+
var xR = J.lazy(() => import("./reveal-component-CX4Yqwsa.js")), SR = (e) => {
|
|
29945
29965
|
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;
|
|
29946
29966
|
t[0] !== i || t[1] !== n ? (d = vP(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
|
|
29947
29967
|
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-
|
|
3
|
+
import { a as n } from "./glide-data-editor-DrEBdhP5.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-5ppES-Un.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-
|
|
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-0rJUT4CU.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-
|
|
14
|
+
import { a as k, n as ne, t as re } from "./code-visibility-Ba_h3MSI.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
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import { type LucideIcon, CornerLeftUp } from "lucide-react";
|
|
3
|
+
import { type LucideIcon, ChevronRightIcon, CornerLeftUp } from "lucide-react";
|
|
4
4
|
import { type JSX, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import {
|
|
@@ -12,7 +12,6 @@ import { Spinner } from "@/components/icons/spinner";
|
|
|
12
12
|
import { Button } from "@/components/ui/button";
|
|
13
13
|
import { Checkbox } from "@/components/ui/checkbox";
|
|
14
14
|
import { Label } from "@/components/ui/label";
|
|
15
|
-
import { NativeSelect } from "@/components/ui/native-select";
|
|
16
15
|
import { Table, TableBody, TableCell, TableRow } from "@/components/ui/table";
|
|
17
16
|
import { toast } from "@/components/ui/use-toast";
|
|
18
17
|
import { RANDOM_ID_ATTR } from "@/core/dom/ui-element-constants";
|
|
@@ -472,12 +471,19 @@ export const FileBrowser = ({
|
|
|
472
471
|
//
|
|
473
472
|
// Assumes that path contains at least one delimiter, which is true
|
|
474
473
|
// only if this is an absolute path.
|
|
475
|
-
const { parentDirectories } = getProtocolAndParentDirectories({
|
|
474
|
+
const { protocol, parentDirectories } = getProtocolAndParentDirectories({
|
|
476
475
|
path,
|
|
477
476
|
delimiter,
|
|
478
477
|
initialPath,
|
|
479
478
|
restrictNavigation,
|
|
480
479
|
});
|
|
480
|
+
const breadcrumbs = parentDirectories.toReversed().map((dir) => ({
|
|
481
|
+
path: dir,
|
|
482
|
+
name:
|
|
483
|
+
dir === protocol
|
|
484
|
+
? protocol
|
|
485
|
+
: (dir.split(delimiter).findLast(Boolean) ?? dir),
|
|
486
|
+
}));
|
|
481
487
|
|
|
482
488
|
const selectionKindLabel =
|
|
483
489
|
selectionMode === "all"
|
|
@@ -515,18 +521,42 @@ export const FileBrowser = ({
|
|
|
515
521
|
<div>
|
|
516
522
|
{error && <Banner kind="danger">{error.message}</Banner>}
|
|
517
523
|
{renderHeader()}
|
|
518
|
-
<
|
|
519
|
-
className="
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
524
|
+
<nav aria-label="Current directory" className="mt-2">
|
|
525
|
+
<ol className="flex flex-wrap items-center gap-0.5 text-sm">
|
|
526
|
+
{breadcrumbs.map((crumb, index) => {
|
|
527
|
+
const isCurrent = index === breadcrumbs.length - 1;
|
|
528
|
+
return (
|
|
529
|
+
<li key={crumb.path} className="flex items-center gap-0.5">
|
|
530
|
+
{index > 0 && (
|
|
531
|
+
<ChevronRightIcon
|
|
532
|
+
size={14}
|
|
533
|
+
className="text-muted-foreground shrink-0"
|
|
534
|
+
aria-hidden={true}
|
|
535
|
+
/>
|
|
536
|
+
)}
|
|
537
|
+
<button
|
|
538
|
+
type="button"
|
|
539
|
+
title={crumb.path}
|
|
540
|
+
aria-current={isCurrent ? "page" : undefined}
|
|
541
|
+
onClick={() => {
|
|
542
|
+
if (!isCurrent) {
|
|
543
|
+
setNewPath(crumb.path);
|
|
544
|
+
}
|
|
545
|
+
}}
|
|
546
|
+
className={cn(
|
|
547
|
+
"rounded px-1 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",
|
|
548
|
+
isCurrent
|
|
549
|
+
? "font-medium cursor-default"
|
|
550
|
+
: "text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
551
|
+
)}
|
|
552
|
+
>
|
|
553
|
+
{crumb.name}
|
|
554
|
+
</button>
|
|
555
|
+
</li>
|
|
556
|
+
);
|
|
557
|
+
})}
|
|
558
|
+
</ol>
|
|
559
|
+
</nav>
|
|
530
560
|
|
|
531
561
|
{data && typeof data.total_count === "number" && (
|
|
532
562
|
<div className="text-xs text-muted-foreground mt-1 px-1">
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
fireEvent,
|
|
5
|
+
render,
|
|
6
|
+
screen,
|
|
7
|
+
waitFor,
|
|
8
|
+
within,
|
|
9
|
+
} from "@testing-library/react";
|
|
4
10
|
import { beforeAll, describe, expect, it, vi } from "vitest";
|
|
5
11
|
import { SetupMocks } from "@/__mocks__/common";
|
|
6
12
|
import { initialModeAtom } from "@/core/mode";
|
|
@@ -187,7 +193,7 @@ describe("FileBrowserPlugin keyboard accessibility", () => {
|
|
|
187
193
|
const docsRow = docs.closest('[role="row"]')!;
|
|
188
194
|
fireEvent.keyDown(docsRow, { key: "ArrowDown" }); // move active off the parent
|
|
189
195
|
fireEvent.click(docs); // navigate into "docs"
|
|
190
|
-
await screen.findByText("docs"); // listing reloads (mock returns same files)
|
|
196
|
+
await within(screen.getByRole("grid")).findByText("docs"); // listing reloads (mock returns same files)
|
|
191
197
|
const rows = screen.getAllByRole("row");
|
|
192
198
|
expect(rows[0]).toHaveAttribute("tabindex", "0");
|
|
193
199
|
// the focused row must match the only tabbable row
|
|
@@ -361,3 +367,80 @@ describe("FileBrowserPlugin keyboard accessibility", () => {
|
|
|
361
367
|
function rowFor(name: string): HTMLElement {
|
|
362
368
|
return screen.getByText(name).closest('[role="row"]') as HTMLElement;
|
|
363
369
|
}
|
|
370
|
+
|
|
371
|
+
describe("FileBrowserPlugin breadcrumbs", () => {
|
|
372
|
+
function breadcrumbs() {
|
|
373
|
+
return within(
|
|
374
|
+
screen.getByRole("navigation", { name: "Current directory" }),
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
it("renders a crumb per ancestor with the current directory last", async () => {
|
|
379
|
+
renderBrowser();
|
|
380
|
+
await screen.findByText("docs");
|
|
381
|
+
const items = breadcrumbs().getAllByRole("listitem");
|
|
382
|
+
expect(items.map((li) => li.textContent)).toEqual(["/", "home", "user"]);
|
|
383
|
+
expect(breadcrumbs().getByRole("button", { name: "user" })).toHaveAttribute(
|
|
384
|
+
"aria-current",
|
|
385
|
+
"page",
|
|
386
|
+
);
|
|
387
|
+
expect(
|
|
388
|
+
breadcrumbs().getByRole("button", { name: "home" }),
|
|
389
|
+
).not.toHaveAttribute("aria-current");
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
it("keeps focus on a crumb after navigating to it", async () => {
|
|
393
|
+
const { listDirectory } = renderBrowser();
|
|
394
|
+
await screen.findByText("docs");
|
|
395
|
+
const home = breadcrumbs().getByRole("button", { name: "home" });
|
|
396
|
+
home.focus();
|
|
397
|
+
fireEvent.click(home);
|
|
398
|
+
await waitFor(() =>
|
|
399
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/home" }),
|
|
400
|
+
);
|
|
401
|
+
const current = breadcrumbs().getByRole("button", { name: "home" });
|
|
402
|
+
expect(current).toHaveAttribute("aria-current", "page");
|
|
403
|
+
expect(current).toBe(home);
|
|
404
|
+
expect(current).toHaveFocus();
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
it("does not reload when the current crumb is clicked", async () => {
|
|
408
|
+
const { listDirectory } = renderBrowser();
|
|
409
|
+
await screen.findByText("docs");
|
|
410
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "user" }));
|
|
411
|
+
expect(listDirectory).toHaveBeenCalledTimes(1);
|
|
412
|
+
});
|
|
413
|
+
|
|
414
|
+
it("navigates to an ancestor when a crumb is clicked", async () => {
|
|
415
|
+
const { listDirectory } = renderBrowser();
|
|
416
|
+
await screen.findByText("docs");
|
|
417
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "home" }));
|
|
418
|
+
await waitFor(() =>
|
|
419
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/home" }),
|
|
420
|
+
);
|
|
421
|
+
fireEvent.click(breadcrumbs().getByRole("button", { name: "/" }));
|
|
422
|
+
await waitFor(() =>
|
|
423
|
+
expect(listDirectory).toHaveBeenLastCalledWith({ path: "/" }),
|
|
424
|
+
);
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
it("hides ancestors outside the initial path when navigation is restricted", async () => {
|
|
428
|
+
render(
|
|
429
|
+
<FileBrowser
|
|
430
|
+
initialPath="/home/user"
|
|
431
|
+
filetypes={[]}
|
|
432
|
+
selectionMode="all"
|
|
433
|
+
multiple={true}
|
|
434
|
+
label={null}
|
|
435
|
+
restrictNavigation={true}
|
|
436
|
+
value={[]}
|
|
437
|
+
setValue={vi.fn()}
|
|
438
|
+
host={document.createElement("div")}
|
|
439
|
+
list_directory={mockListDirectory(FILES)}
|
|
440
|
+
/>,
|
|
441
|
+
);
|
|
442
|
+
await screen.findByText("docs");
|
|
443
|
+
const items = breadcrumbs().getAllByRole("listitem");
|
|
444
|
+
expect(items.map((li) => li.textContent)).toEqual(["user"]);
|
|
445
|
+
});
|
|
446
|
+
});
|