@marimo-team/islands 0.24.1-dev84 → 0.24.1-dev85

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 (46) hide show
  1. package/dist/{ConnectedDataExplorerComponent-BITfN-bU.js → ConnectedDataExplorerComponent-D9EG584s.js} +4 -4
  2. package/dist/{ErrorBoundary-CTvsyaid.js → ErrorBoundary-D-EKz8oE.js} +1 -1
  3. package/dist/assets/__vite-browser-external-Cf4O9gnt.js +1 -0
  4. package/dist/assets/worker-C3TCEtlU.js +98 -0
  5. package/dist/{chat-ui-DhRKl9Ie.js → chat-ui-DpE4Aa_M.js} +6 -6
  6. package/dist/{common-Dbc0p4B7.js → common-CpcWGLR1.js} +9 -9
  7. package/dist/{dropdown-menu-B39I9ARA.js → dropdown-menu-Baf29jmS.js} +1 -1
  8. package/dist/{formats-BEoM6hhG.js → formats-CMBaNtI6.js} +1 -1
  9. package/dist/{glide-data-editor-DEJqXbly.js → glide-data-editor-n5E9BAD8.js} +3 -3
  10. package/dist/{html-to-image-CT8hxf1p.js → html-to-image-LGo891lC.js} +5 -5
  11. package/dist/main.js +20 -19
  12. package/dist/{mermaid-DvIalt_q.js → mermaid-CKjZUiG7.js} +2 -2
  13. package/dist/{process-output-CINXfXUt.js → process-output-BMotjkzK.js} +1 -1
  14. package/dist/{reveal-component-D_HTEWUj.js → reveal-component-X8NH2nCQ.js} +4 -4
  15. package/dist/{spec-BQ36ell9.js → spec-DNZWpXiu.js} +1 -1
  16. package/dist/{toDate-BfSgxzgl.js → toDate-BbnMXiIl.js} +1 -1
  17. package/dist/{useAsyncData-C4YwNjhG.js → useAsyncData-Cyh2jLTR.js} +1 -1
  18. package/dist/{useDeepCompareMemoize-B2mdYxCr.js → useDeepCompareMemoize-BqcHK9ZZ.js} +1 -1
  19. package/dist/{useLifecycle-hEcsyQ2P.js → useLifecycle-foJH5Q8T.js} +1 -1
  20. package/dist/{useTheme-T2IIlG9u.js → useTheme-C2ZreN00.js} +6 -0
  21. package/dist/{vega-component-B2K69XxL.js → vega-component-Cid89pdp.js} +5 -5
  22. package/package.json +1 -1
  23. package/src/__mocks__/requests.ts +1 -0
  24. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +3 -2
  25. package/src/components/editor/file-tree/__tests__/file-explorer-interactions.test.tsx +31 -18
  26. package/src/components/editor/file-tree/__tests__/file-explorer.test.ts +18 -12
  27. package/src/components/editor/file-tree/__tests__/requesting-tree.test.ts +364 -387
  28. package/src/components/editor/file-tree/file-explorer.tsx +137 -97
  29. package/src/components/editor/file-tree/file-name-input.tsx +5 -1
  30. package/src/components/editor/file-tree/file-viewer.tsx +2 -2
  31. package/src/components/editor/file-tree/requesting-tree.tsx +291 -171
  32. package/src/components/editor/file-tree/state.tsx +1 -0
  33. package/src/core/config/__tests__/config-schema.test.ts +15 -0
  34. package/src/core/config/config-schema.ts +15 -0
  35. package/src/core/islands/bridge.ts +1 -0
  36. package/src/core/network/__tests__/requests-network.test.ts +7 -0
  37. package/src/core/network/__tests__/requests-toasting.test.tsx +10 -0
  38. package/src/core/network/requests-lazy.ts +1 -0
  39. package/src/core/network/requests-network.ts +4 -0
  40. package/src/core/network/requests-static.ts +1 -0
  41. package/src/core/network/requests-toasting.tsx +1 -0
  42. package/src/core/network/types.ts +3 -0
  43. package/src/core/wasm/bridge.ts +9 -0
  44. package/src/core/wasm/worker/types.ts +2 -0
  45. package/dist/assets/__vite-browser-external-CLzCcAWX.js +0 -1
  46. package/dist/assets/worker-BX-jM9UB.js +0 -98
package/dist/main.js CHANGED
@@ -3,18 +3,18 @@ import { _ as a, c as o, f 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-DMWcHin-.js";
4
4
  import { t as b } from "./compiler-runtime-CAH9RLw2.js";
5
5
  import { n as x, r as S, t as C } from "./copy-D9h0DuU7.js";
6
- import { At as w, B as T, Bn as E, Bt as D, C as O, Cn as k, Ct as A, Dn as j, Dt as M, En as N, Et as P, F, Ft as I, G as L, Gn as ee, Hn as te, I as R, It as ne, J as z, Jn as re, Jt as ie, K as ae, Kt as oe, L as se, Ln as ce, Mn as le, Mt as ue, Nn as de, Nt as fe, On as pe, Ot as me, P as he, Pn as ge, Q as _e, Qn as ve, R as ye, Rn as be, St as xe, Tn as Se, U as Ce, Un as we, Ut as Te, W as Ee, X as De, Xn as Oe, Xt as ke, Y as Ae, Yn as je, Z as Me, Zn as Ne, Zt as Pe, _ as Fe, a as Ie, an as Le, at as Re, b as ze, bn as Be, bt as Ve, cn as He, dn as Ue, dt as We, en as Ge, er as Ke, et as qe, g as Je, gn as Ye, i as Xe, in as Ze, ir as Qe, it as $e, j as et, jt as tt, k as nt, kn as rt, ln as it, lt as at, n as ot, o as st, on as ct, ot as lt, q as ut, qt as dt, rr as ft, sn as pt, st as mt, tr as ht, un as gt, ut as _t, v as vt, xn as yt, xt as bt, y as xt, yn as St, yt as Ct, z as wt, zn as Tt, zt as Et } from "./html-to-image-CT8hxf1p.js";
6
+ import { At as w, B as T, Bn as E, Bt as D, C as O, Cn as k, Ct as A, Dn as j, Dt as M, En as N, Et as P, F, Ft as I, G as L, Gn as ee, Hn as te, I as R, It as ne, J as z, Jn as re, Jt as ie, K as ae, Kt as oe, L as se, Ln as ce, Mn as le, Mt as ue, Nn as de, Nt as fe, On as pe, Ot as me, P as he, Pn as ge, Q as _e, Qn as ve, R as ye, Rn as be, St as xe, Tn as Se, U as Ce, Un as we, Ut as Te, W as Ee, X as De, Xn as Oe, Xt as ke, Y as Ae, Yn as je, Z as Me, Zn as Ne, Zt as Pe, _ as Fe, a as Ie, an as Le, at as Re, b as ze, bn as Be, bt as Ve, cn as He, dn as Ue, dt as We, en as Ge, er as Ke, et as qe, g as Je, gn as Ye, i as Xe, in as Ze, ir as Qe, it as $e, j as et, jt as tt, k as nt, kn as rt, ln as it, lt as at, n as ot, o as st, on as ct, ot as lt, q as ut, qt as dt, rr as ft, sn as pt, st as mt, tr as ht, un as gt, ut as _t, v as vt, xn as yt, xt as bt, y as xt, yn as St, yt as Ct, z as wt, zn as Tt, zt as Et } from "./html-to-image-LGo891lC.js";
7
7
  import { o as Dt, s as Ot, u as kt } from "./dist-wdOJ5T7-.js";
8
- import { D as At, E as jt, O as Mt, S as Nt, T as Pt, _ as Ft, a as It, c as Lt, d as Rt, f as zt, g as Bt, h as Vt, i as Ht, l as Ut, m as Wt, n as Gt, o as Kt, p as qt, r as Jt, s as Yt, t as Xt, u as Zt, v as Qt, w as $t, x as en, y as tn } from "./spec-BQ36ell9.js";
9
- import { $ as nn, $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Cn as un, Ct as dn, D as fn, Dt as pn, E as mn, Et as hn, F as gn, Ft as _n, G as vn, Gt as yn, H as bn, Ht as xn, I as Sn, It as Cn, J as wn, Jt as Tn, K as En, Kt as Dn, L as On, Lt as kn, M as An, Mt as jn, N as Mn, Nt as Nn, O as Pn, P as Fn, Pt as In, Q as Ln, Qt as Rn, R as zn, Rt as Bn, S as Vn, Sn as Hn, St as Un, T as Wn, Tt as Gn, U as Kn, Ut as qn, V as Jn, Vt as Yn, W as Xn, Wt as Zn, X as Qn, Xt as $n, Y as er, Yt as tr, Z as nr, Zt as rr, _ as ir, _n as ar, _t as or, a as sr, an as cr, b as lr, bn as ur, bt as dr, cn as fr, ct as pr, dn as mr, dt as hr, en as gr, et as _r, fn as vr, ft as yr, g as br, gn as xr, gt as Sr, ht as Cr, i as wr, in as Tr, it as Er, j as Dr, jt as Or, k as kr, l as Ar, ln as jr, lt as Mr, m as Nr, mn as Pr, mt as Fr, n as Ir, nn as Lr, nt as Rr, on as zr, pn as Br, pt as Vr, q as Hr, qt as Ur, rn as Wr, rt as Gr, s as Kr, sn as qr, t as Jr, tn as Yr, tt as Xr, un as Zr, ut as Qr, v as $r, vn as ei, vt as ti, w as ni, wn as ri, wt as ii, x as ai, xn as oi, xt as si, y as ci, yn as li, yt as ui, z as di, zt as fi } from "./common-Dbc0p4B7.js";
10
- import { c as pi, i as mi, n as hi, o as gi, t as _i } from "./useLifecycle-hEcsyQ2P.js";
8
+ import { D as At, E as jt, O as Mt, S as Nt, T as Pt, _ as Ft, a as It, c as Lt, d as Rt, f as zt, g as Bt, h as Vt, i as Ht, l as Ut, m as Wt, n as Gt, o as Kt, p as qt, r as Jt, s as Yt, t as Xt, u as Zt, v as Qt, w as $t, x as en, y as tn } from "./spec-DNZWpXiu.js";
9
+ import { $ as nn, $t as rn, A as an, At as on, B as sn, Bt as cn, C as ln, Cn as un, Ct as dn, D as fn, Dt as pn, E as mn, Et as hn, F as gn, Ft as _n, G as vn, Gt as yn, H as bn, Ht as xn, I as Sn, It as Cn, J as wn, Jt as Tn, K as En, Kt as Dn, L as On, Lt as kn, M as An, Mt as jn, N as Mn, Nt as Nn, O as Pn, P as Fn, Pt as In, Q as Ln, Qt as Rn, R as zn, Rt as Bn, S as Vn, Sn as Hn, St as Un, T as Wn, Tt as Gn, U as Kn, Ut as qn, V as Jn, Vt as Yn, W as Xn, Wt as Zn, X as Qn, Xt as $n, Y as er, Yt as tr, Z as nr, Zt as rr, _ as ir, _n as ar, _t as or, a as sr, an as cr, b as lr, bn as ur, bt as dr, cn as fr, ct as pr, dn as mr, dt as hr, en as gr, et as _r, fn as vr, ft as yr, g as br, gn as xr, gt as Sr, ht as Cr, i as wr, in as Tr, it as Er, j as Dr, jt as Or, k as kr, l as Ar, ln as jr, lt as Mr, m as Nr, mn as Pr, mt as Fr, n as Ir, nn as Lr, nt as Rr, on as zr, pn as Br, pt as Vr, q as Hr, qt as Ur, rn as Wr, rt as Gr, s as Kr, sn as qr, t as Jr, tn as Yr, tt as Xr, un as Zr, ut as Qr, v as $r, vn as ei, vt as ti, w as ni, wn as ri, wt as ii, x as ai, xn as oi, xt as si, y as ci, yn as li, yt as ui, z as di, zt as fi } from "./common-CpcWGLR1.js";
10
+ import { c as pi, i as mi, n as hi, o as gi, t as _i } from "./useLifecycle-foJH5Q8T.js";
11
11
  import { t as vi } from "./check-BcJDmQdF.js";
12
12
  import { A as yi, C as bi, D as xi, E as Si, F as Ci, I as wi, M as Ti, N as Ei, P as Di, R as Oi, S as ki, a as Ai, b as ji, c as Mi, i as Ni, j as Pi, l as Fi, n as Ii, o as Li, r as Ri, s as zi, t as Bi, w as Vi, x as Hi } from "./select-DQ9jU_B_.js";
13
- import { B as Ui, C as Wi, Ft as Gi, J as Ki, Pt as qi, S as Ji, Ut as Yi, W as Xi, Y as Zi, _ as Qi, a as $i, at as ea, bt as ta, c as na, f as ra, ft as ia, g as aa, h as oa, hn as sa, i as ca, m as la, mn as ua, n as da, ot as fa, p as pa, r as ma, s as ha, t as ga, v as _a, x as va, z as ya } from "./dropdown-menu-B39I9ARA.js";
14
- import { _ as ba, c as xa, d as Sa, f as Ca, g as wa, h as Ta, m as Ea, u as Da } from "./toDate-BfSgxzgl.js";
15
- import { a as Oa, c as ka, d as Aa, f as ja, i as Ma, l as Na, n as Pa, o as Fa, r as Ia, s as La, t as Ra } from "./process-output-CINXfXUt.js";
13
+ import { B as Ui, C as Wi, Ft as Gi, J as Ki, Pt as qi, S as Ji, Ut as Yi, W as Xi, Y as Zi, _ as Qi, a as $i, at as ea, bt as ta, c as na, f as ra, ft as ia, g as aa, h as oa, hn as sa, i as ca, m as la, mn as ua, n as da, ot as fa, p as pa, r as ma, s as ha, t as ga, v as _a, x as va, z as ya } from "./dropdown-menu-Baf29jmS.js";
14
+ import { _ as ba, c as xa, d as Sa, f as Ca, g as wa, h as Ta, m as Ea, u as Da } from "./toDate-BbnMXiIl.js";
15
+ import { a as Oa, c as ka, d as Aa, f as ja, i as Ma, l as Na, n as Pa, o as Fa, r as Ia, s as La, t as Ra } from "./process-output-BMotjkzK.js";
16
16
  import { a as za, c as Ba, d as Va, i as Ha, l as Ua, r as Wa, u as Ga } from "./glide-utils-C0dRuWI_.js";
17
- import { n as Ka, t as qa } from "./ErrorBoundary-CTvsyaid.js";
17
+ import { n as Ka, t as qa } from "./ErrorBoundary-D-EKz8oE.js";
18
18
  import { t as Ja } from "./react-dom-C94wmq5w.js";
19
19
  import { t as Ya } from "./jsx-runtime-CpoKNRgu.js";
20
20
  import { $ as Xa, $a as Za, $i as Qa, $n as $a, $o as eo, $r as to, $s as no, $t as ro, A as io, Aa as ao, Ai as oo, An as so, Ao as co, Ar as lo, As as uo, At as fo, B as po, Ba as mo, Bc as ho, Bi as go, Bn as _o, Bo as vo, Br as yo, Bs as bo, Bt as xo, C as So, Ca as Co, Cc as wo, Ci as To, Cn as B, Co as Eo, Cr as Do, Cs as Oo, Ct as ko, D as Ao, Da as jo, Di as Mo, Dn as No, Do as Po, Dr as Fo, Ds as Io, Dt as Lo, E as Ro, Ea as zo, Ec as Bo, Ei as Vo, En as Ho, Eo as Uo, Er as Wo, Es as Go, Et as Ko, F as qo, Fa as Jo, Fi as Yo, Fn as Xo, Fo as Zo, Fr as Qo, Fs as $o, Ft as es, G as ts, Ga as ns, Gi as rs, Gn as is, Go as as, Gr as os, Gs as ss, Gt as cs, H as ls, Ha as us, Hc as ds, Hi as fs, Hn as ps, Ho as ms, Hr as hs, Hs as gs, Ht as _s, I as vs, Ia as ys, Ii as bs, In as V, Io as xs, Ir as Ss, Is as Cs, It as ws, J as Ts, Ja as Es, Jc as Ds, Ji as Os, Jn as ks, Jo as As, Jr as js, Js as Ms, Jt as Ns, K as Ps, Ka as Fs, Kc as Is, Ki as Ls, Kn as Rs, Ko as zs, Kr as Bs, Ks as Vs, Kt as Hs, L as Us, La as Ws, Lc as Gs, Li as Ks, Ln as qs, Lo as Js, Lr as Ys, Ls as Xs, Lt as Zs, M as Qs, Ma as $s, Mc as ec, Mi as tc, Mn as nc, Mo as rc, Mr as ic, Ms as ac, Mt as oc, N as sc, Na as cc, Ni as lc, Nn as uc, No as dc, Nr as fc, Ns as pc, Nt as mc, O as hc, Oa as gc, Oc as _c, Oi as vc, On as yc, Oo as bc, Or as xc, Os as Sc, Ot as Cc, P as wc, Pa as Tc, Pi as Ec, Pn as Dc, Po as Oc, Pr as kc, Ps as Ac, Pt as jc, Q as Mc, Qa as Nc, Qi as Pc, Qn as Fc, Qo as Ic, Qr as Lc, Qs as Rc, Qt as zc, R as Bc, Ra as Vc, Ri as Hc, Rn as Uc, Ro as Wc, Rr as Gc, Rs as Kc, Rt as qc, S as Jc, Sa as Yc, Sc as Xc, Si as Zc, Sn as H, So as Qc, Sr as $c, Ss as el, St as tl, T as nl, Ta as rl, Ti as il, Tn as al, To as ol, Tr as sl, Ts as cl, Tt as U, U as ll, Ua as ul, Uc as dl, Ui as fl, Un as pl, Uo as ml, Ur as hl, Us as gl, Ut as _l, V as vl, Va as yl, Vc as bl, Vi as xl, Vn as Sl, Vo as Cl, Vr as wl, Vs as Tl, Vt as El, W as Dl, Wa as Ol, Wc as kl, Wi as Al, Wn as jl, Wo as Ml, Wr as Nl, Ws as Pl, Wt as Fl, X as Il, Xa as Ll, Xi as Rl, Xn as zl, Xo as Bl, Xr as Vl, Xs as Hl, Xt as Ul, Y as Wl, Ya as Gl, Yi as Kl, Yn as ql, Yo as Jl, Yr as Yl, Ys as Xl, Yt as Zl, Z as Ql, Za as $l, Zi as eu, Zn as tu, Zo as nu, Zr as ru, Zs as iu, Zt as au, _ as ou, _a as su, _c as cu, _i as lu, _n as uu, _o as du, _r as fu, _s as pu, _t as mu, a as hu, aa as gu, ac as _u, ai as vu, an as yu, ao as bu, ar as xu, as as Su, at as Cu, b as wu, ba as Tu, bc as Eu, bi as Du, bn as Ou, bo as ku, br as Au, bs as ju, bt as Mu, c as Nu, ca as Pu, cc as Fu, ci as Iu, cn as Lu, co as Ru, cr as zu, cs as Bu, ct as Vu, d as Hu, da as Uu, dc as Wu, di as Gu, dn as Ku, do as qu, dr as Ju, ds as Yu, dt as Xu, ea as Zu, ec as Qu, ei as $u, en as ed, eo as td, er as nd, es as rd, et as id, f as ad, fa as od, fc as sd, fi as cd, fn as ld, fo as ud, fr as dd, fs as fd, ft as pd, g as md, ga as hd, gc as gd, gi as _d, gn as vd, go as yd, gr as bd, gs as xd, gt as Sd, h as Cd, ha as wd, hc as Td, hi as Ed, hn as Dd, ho as Od, hr as kd, hs as Ad, ht as jd, i as Md, ia as Nd, ic as Pd, ii as Fd, in as Id, io as Ld, ir as Rd, is as zd, it as Bd, j as Vd, ja as Hd, ji as Ud, jn as Wd, jo as Gd, jr as Kd, js as qd, jt as Jd, k as Yd, ka as Xd, kc as Zd, ki as Qd, kn as $d, ko as ef, kr as tf, ks as nf, kt as W, l as rf, la as af, lc as of, li as sf, ln as cf, lo as lf, lr as uf, ls as df, lt as ff, m as pf, ma as mf, mc as hf, mi as gf, mn as _f, mo as vf, mr as yf, ms as bf, mt as xf, n as Sf, na as Cf, nc as wf, ni as Tf, nn as Ef, no as Df, nr as Of, ns as kf, nt as Af, o as jf, oa as Mf, oc as Nf, oi as Pf, on as Ff, oo as If, or as Lf, os as Rf, ot as zf, p as Bf, pa as Vf, pc as G, pi as Hf, pn as Uf, po as Wf, pr as Gf, ps as Kf, pt as qf, q as Jf, qa as Yf, qc as Xf, qi as Zf, qn as Qf, qo as $f, qr as ep, qs as tp, qt as np, r as rp, ra as ip, rc as ap, ri as op, rn as sp, ro as cp, rr as lp, rs as up, rt as dp, s as fp, sa as pp, sc as mp, si as hp, sn as gp, so as _p, sr as vp, ss as yp, st as bp, t as xp, ta as Sp, tc as Cp, ti as wp, tn as Tp, to as Ep, tr as Dp, ts as Op, tt as kp, u as Ap, ua as jp, uc as Mp, ui as Np, un as Pp, uo as Fp, ur as Ip, us as Lp, ut as Rp, v as zp, va as Bp, vc as Vp, vi as Hp, vn as Up, vo as Wp, vr as Gp, vs as Kp, vt as qp, w as Jp, wa as Yp, wi as Xp, wn as Zp, wo as Qp, wr as $p, ws as em, wt as tm, x as nm, xa as rm, xc as im, xi as am, xn as om, xo as sm, xr as cm, xs as lm, xt as um, y as dm, ya as fm, yc as pm, yi as mm, yn as hm, yo as gm, yr as _m, ys as vm, yt as ym, z as bm, za as xm, zc as Sm, zi as Cm, zn as wm, zo as Tm, zr as Em, zs as Dm, zt as Om } from "./schemas-JTyiKlcH.js";
@@ -25,7 +25,7 @@ import { f as Bm } from "./extends-KH0CV__g.js";
25
25
  import { a as Vm } from "./hasIn-o2Us0uVx.js";
26
26
  import { n as Hm, t as Um } from "./pick-SnHlmIBN.js";
27
27
  import { t as Wm } from "./debounce-C3jyATpc.js";
28
- import { A as Gm, C as Km, E as qm, S as Jm, _ as Ym, a as Xm, b as Zm, c as Qm, h as $m, j as eh, n as th, p as nh, r as rh, u as ih, x as ah } from "./useTheme-T2IIlG9u.js";
28
+ import { A as Gm, C as Km, E as qm, S as Jm, _ as Ym, a as Xm, b as Zm, c as Qm, h as $m, j as eh, n as th, p as nh, r as rh, u as ih, x as ah } from "./useTheme-C2ZreN00.js";
29
29
  import { $ as oh, F as sh, H as K, a as ch, g as lh } from "./dist-C2unEUWZ.js";
30
30
  import { t as uh } from "./invariant-DLmrl-hA.js";
31
31
  import { l as dh, o as fh, t as ph, u as mh } from "./arrays-CN1djC4k.js";
@@ -35,11 +35,11 @@ import { p as _h } from "./dist-wGdFe2i2.js";
35
35
  import { n as vh } from "./dist-CkF6zgs_.js";
36
36
  import { i as yh } from "./dist-C9fJPKPl.js";
37
37
  import { n as bh, t as xh } from "./esm-DkklGms7.js";
38
- import { t as Sh } from "./useAsyncData-C4YwNjhG.js";
39
- import { i as Ch, n as wh, r as Th } from "./formats-BEoM6hhG.js";
38
+ import { t as Sh } from "./useAsyncData-Cyh2jLTR.js";
39
+ import { i as Ch, n as wh, r as Th } from "./formats-CMBaNtI6.js";
40
40
  import { A as Eh, j as Dh } from "./vega-loader.browser-DEggZzni.js";
41
41
  import { a as Oh, n as kh } from "./loader-D8jS1unC.js";
42
- import { t as Ah } from "./useDeepCompareMemoize-B2mdYxCr.js";
42
+ import { t as Ah } from "./useDeepCompareMemoize-BqcHK9ZZ.js";
43
43
  import { t as jh } from "./esm-ElfO9dV2.js";
44
44
  //#region ../node_modules/.pnpm/iconify-icon@2.3.0/node_modules/iconify-icon/dist/iconify-icon.mjs
45
45
  var Mh = Object.freeze({
@@ -15394,7 +15394,7 @@ var vM = (e) => {
15394
15394
  output: t
15395
15395
  };
15396
15396
  } };
15397
- } }, wM = q.lazy(() => import("./chat-ui-DhRKl9Ie.js").then((e) => ({ default: e.Chatbot }))), TM = U(B({
15397
+ } }, wM = q.lazy(() => import("./chat-ui-DpE4Aa_M.js").then((e) => ({ default: e.Chatbot }))), TM = U(B({
15398
15398
  id: V(),
15399
15399
  role: qp([
15400
15400
  "system",
@@ -15865,7 +15865,7 @@ function SN(e, t) {
15865
15865
  }
15866
15866
  //#endregion
15867
15867
  //#region src/plugins/impl/DataEditorPlugin.tsx
15868
- var CN = q.lazy(() => import("./glide-data-editor-DEJqXbly.js")), wN = aM("marimo-data-editor", { cssStyles: [OM] }).withData(B({
15868
+ var CN = q.lazy(() => import("./glide-data-editor-n5E9BAD8.js")), wN = aM("marimo-data-editor", { cssStyles: [OM] }).withData(B({
15869
15869
  initialValue: B({ edits: U(B({
15870
15870
  rowIdx: H(),
15871
15871
  columnId: V(),
@@ -20796,7 +20796,7 @@ var LI = class {
20796
20796
  fullWidth: s,
20797
20797
  children: _
20798
20798
  }), t[20] = s, t[21] = u, t[22] = n, t[23] = _, t[24] = v) : v = t[24], v;
20799
- }, BI = q.lazy(() => import("./ConnectedDataExplorerComponent-BITfN-bU.js")), VI = aM("marimo-data-explorer").withData(B({
20799
+ }, BI = q.lazy(() => import("./ConnectedDataExplorerComponent-D9EG584s.js")), VI = aM("marimo-data-explorer").withData(B({
20800
20800
  label: V().nullish(),
20801
20801
  data: V()
20802
20802
  })).renderer((e) => /* @__PURE__ */ (0, J.jsx)(BI, {
@@ -27043,7 +27043,7 @@ function kV(e, t) {
27043
27043
  }
27044
27044
  //#endregion
27045
27045
  //#region src/plugins/impl/vega/VegaPlugin.tsx
27046
- var AV = q.lazy(() => import("./vega-component-B2K69XxL.js")), jV = class {
27046
+ var AV = q.lazy(() => import("./vega-component-Cid89pdp.js")), jV = class {
27047
27047
  tagName = "marimo-vega";
27048
27048
  validator = B({
27049
27049
  spec: B({}).passthrough().transform((e) => e),
@@ -27304,7 +27304,7 @@ var IV = class {
27304
27304
  themeVariables: e.data.theme_variables
27305
27305
  });
27306
27306
  }
27307
- }, tH = (0, q.lazy)(() => import("./mermaid-DvIalt_q.js"));
27307
+ }, tH = (0, q.lazy)(() => import("./mermaid-CKjZUiG7.js"));
27308
27308
  //#endregion
27309
27309
  //#region src/components/editor/chrome/panels/outline/useActiveOutline.tsx
27310
27310
  function nH() {
@@ -35311,7 +35311,7 @@ function iJ(e) {
35311
35311
  }
35312
35312
  //#endregion
35313
35313
  //#region src/components/editor/renderers/slides-layout/slides-layout.tsx
35314
- var aJ = q.lazy(() => import("./reveal-component-D_HTEWUj.js")), oJ = (e) => {
35314
+ var aJ = q.lazy(() => import("./reveal-component-X8NH2nCQ.js")), oJ = (e) => {
35315
35315
  let t = (0, Y.c)(33), { layout: n, setLayout: r, cells: i, mode: a } = e, o = Km(me), s = a === "read" || o, c = Km(Ae) > 1, [l, u] = (0, q.useState)(null), d;
35316
35316
  t[0] !== i || t[1] !== n ? (d = nW(i, n), t[0] = i, t[1] = n, t[2] = d) : d = t[2];
35317
35317
  let { slideCells: f, skippedIds: p, noOutputIds: m, slideTypes: h, startCellIndex: g } = d, _;
@@ -37286,7 +37286,7 @@ function lX(e) {
37286
37286
  }
37287
37287
  //#endregion
37288
37288
  //#region src/core/meta/globals.ts
37289
- var uX = () => Ym.get(wr), dX = "/assets/worker-BX-jM9UB.js", fX = class {
37289
+ var uX = () => Ym.get(wr), dX = "/assets/worker-C3TCEtlU.js", fX = class {
37290
37290
  url;
37291
37291
  name;
37292
37292
  constructor(e = {}) {
@@ -37447,6 +37447,7 @@ var mX = class {
37447
37447
  discoverDataSources = v;
37448
37448
  validateSQL = v;
37449
37449
  openFile = v;
37450
+ getFileRoots = v;
37450
37451
  sendListFiles = v;
37451
37452
  sendSearchFiles = v;
37452
37453
  sendPdb = v;
@@ -4,8 +4,8 @@ import { t as n } from "./react-DMWcHin-.js";
4
4
  import { t as r } from "./compiler-runtime-CAH9RLw2.js";
5
5
  import { t as i } from "./jsx-runtime-CpoKNRgu.js";
6
6
  import { n as a } from "./error-banner-xVkWHg51.js";
7
- import { n as o } from "./useTheme-T2IIlG9u.js";
8
- import { t as s } from "./useAsyncData-C4YwNjhG.js";
7
+ import { n as o } from "./useTheme-C2ZreN00.js";
8
+ import { t as s } from "./useAsyncData-Cyh2jLTR.js";
9
9
  import { t as c } from "./purify.es-CB-YO1Hn.js";
10
10
  import { S as l, a as u, f as d, g as f, h as p, i as m, o as h, v as g, x as _, y as v } from "./chunk-NSK5VX7P-CDTMcJB0.js";
11
11
  import { n as y, r as b, t as x } from "./src-C31ngt98.js";
@@ -1,4 +1,4 @@
1
- import { O as e, nt as t, tt as n } from "./html-to-image-CT8hxf1p.js";
1
+ import { O as e, nt as t, tt as n } from "./html-to-image-LGo891lC.js";
2
2
  import { u as r } from "./dist-wdOJ5T7-.js";
3
3
  import { b as i } from "./select-DQ9jU_B_.js";
4
4
  import { n as a } from "./semaphore-89jsoHtS.js";
@@ -2,15 +2,15 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { c as t, g as n, h as r, m as i, t as a } from "./button-DlqUC8W-.js";
3
3
  import { t as o } from "./react-DMWcHin-.js";
4
4
  import { t as s } from "./compiler-runtime-CAH9RLw2.js";
5
- import { Ot as c, ot as l } from "./html-to-image-CT8hxf1p.js";
5
+ import { Ot as c, ot as l } from "./html-to-image-LGo891lC.js";
6
6
  import { u } from "./dist-wdOJ5T7-.js";
7
- import { at as d, c as f, g as p, h as m, hn as h, l as g, mn as _, n as v, o as y, ot as b, r as x, st as S, t as C, u as w, vn as T } from "./common-Dbc0p4B7.js";
7
+ import { at as d, c as f, g as p, h as m, hn as h, l as g, mn as _, n as v, o as y, ot as b, r as x, st as S, t as C, u as w, vn as T } from "./common-CpcWGLR1.js";
8
8
  import { R as E } from "./select-DQ9jU_B_.js";
9
- import { Y as D } from "./dropdown-menu-B39I9ARA.js";
9
+ import { Y as D } from "./dropdown-menu-Baf29jmS.js";
10
10
  import { t as O } from "./jsx-runtime-CpoKNRgu.js";
11
11
  import { Tc as k } from "./schemas-JTyiKlcH.js";
12
12
  import { t as A } from "./tooltip-7p_32zdw.js";
13
- import { C as j, b as ee, j as M } from "./useTheme-T2IIlG9u.js";
13
+ import { C as j, b as ee, j as M } from "./useTheme-C2ZreN00.js";
14
14
  /* empty css */
15
15
  var N = u("sticky-note", [["path", {
16
16
  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",
@@ -1,5 +1,5 @@
1
1
  import { u as e } from "./dist-wdOJ5T7-.js";
2
- import { s as t } from "./useLifecycle-hEcsyQ2P.js";
2
+ import { s as t } from "./useLifecycle-foJH5Q8T.js";
3
3
  import { i as n, o as r } from "./useDateFormatter-CcY1uXEk.js";
4
4
  import { C as i } from "./select-DQ9jU_B_.js";
5
5
  var a = e("align-center-vertical", [
@@ -2,7 +2,7 @@ import { t as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { g as t } from "./button-DlqUC8W-.js";
3
3
  import { t as n } from "./compiler-runtime-CAH9RLw2.js";
4
4
  import { u as r } from "./dist-wdOJ5T7-.js";
5
- import { E as i, _ as a, a as o, b as s } from "./useTheme-T2IIlG9u.js";
5
+ import { E as i, _ as a, a as o, b as s } from "./useTheme-C2ZreN00.js";
6
6
  import { t as c } from "./invariant-DLmrl-hA.js";
7
7
  var l = 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-DMWcHin-.js";
3
3
  import { t as n } from "./compiler-runtime-CAH9RLw2.js";
4
- import { j as r } from "./useTheme-T2IIlG9u.js";
4
+ import { j as r } from "./useTheme-C2ZreN00.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-DMWcHin-.js";
3
- import { A as n } from "./useTheme-T2IIlG9u.js";
3
+ import { A as n } from "./useTheme-C2ZreN00.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-DMWcHin-.js";
4
4
  import { t as a } from "./compiler-runtime-CAH9RLw2.js";
5
5
  import { u as o } from "./dist-wdOJ5T7-.js";
6
6
  import { t as s } from "./jsx-runtime-CpoKNRgu.js";
7
- import { E as c, w as l } from "./useTheme-T2IIlG9u.js";
7
+ import { E as c, w as l } from "./useTheme-C2ZreN00.js";
8
8
  var u = o("calendar", [
9
9
  ["path", {
10
10
  d: "M8 2v4",
@@ -650,6 +650,10 @@ var Ie = [
650
650
  enabled: f().optional(),
651
651
  sql_linter: f().optional()
652
652
  }).prefault(() => ({})),
653
+ file_browser: p({ folders: u(o({
654
+ path: s(),
655
+ name: s().optional()
656
+ })).optional() }).optional().prefault({}),
653
657
  sharing: p({
654
658
  html: f().optional(),
655
659
  wasm: f().optional(),
@@ -664,6 +668,7 @@ var Ie = [
664
668
  runtime: {},
665
669
  display: {},
666
670
  diagnostics: {},
671
+ file_browser: {},
667
672
  experimental: {},
668
673
  server: {},
669
674
  ai: {},
@@ -697,6 +702,7 @@ function Ke() {
697
702
  runtime: {},
698
703
  display: {},
699
704
  diagnostics: {},
705
+ file_browser: {},
700
706
  experimental: {},
701
707
  server: {},
702
708
  ai: {},
@@ -2,20 +2,20 @@ import { a as e } from "./rolldown-runtime-Cb76FRpK.js";
2
2
  import { g as t, h as n, m as r } from "./button-DlqUC8W-.js";
3
3
  import { t as i } from "./react-DMWcHin-.js";
4
4
  import { t as a } from "./compiler-runtime-CAH9RLw2.js";
5
- import { _ as o, c as s } from "./toDate-BfSgxzgl.js";
5
+ import { _ as o, c as s } from "./toDate-BbnMXiIl.js";
6
6
  import { t as c } from "./jsx-runtime-CpoKNRgu.js";
7
7
  import { n as l } from "./error-banner-xVkWHg51.js";
8
8
  import { t as u } from "./tooltip-7p_32zdw.js";
9
9
  import { t as d } from "./debounce-C3jyATpc.js";
10
- import { j as f, n as p } from "./useTheme-T2IIlG9u.js";
10
+ import { j as f, n as p } from "./useTheme-C2ZreN00.js";
11
11
  import { c as m } from "./arrays-CN1djC4k.js";
12
12
  import { t as ee } from "./objects-CzUgoMIF.js";
13
- import { t as h } from "./useAsyncData-C4YwNjhG.js";
14
- import { a as te, i as ne, n as re, t as g } from "./formats-BEoM6hhG.js";
13
+ import { t as h } from "./useAsyncData-Cyh2jLTR.js";
14
+ import { a as te, i as ne, n as re, t as g } from "./formats-CMBaNtI6.js";
15
15
  import { A as ie, n as ae } from "./vega-loader.browser-DEggZzni.js";
16
16
  import { t as oe } from "./react-vega-DSD5aT7_.js";
17
17
  import { a as se, n as _ } from "./loader-D8jS1unC.js";
18
- import { t as ce } from "./useDeepCompareMemoize-B2mdYxCr.js";
18
+ import { t as ce } from "./useDeepCompareMemoize-BqcHK9ZZ.js";
19
19
  import { t as le } from "./semaphore-89jsoHtS.js";
20
20
  import { t as ue } from "./use-vega-container-remeasure-DUW4tRxq.js";
21
21
  //#region src/plugins/impl/vega/fix-relative-url.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.24.1-dev84",
3
+ "version": "0.24.1-dev85",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -48,6 +48,7 @@ export const MockRequestClient = {
48
48
  getEnvironmentInfo: vi
49
49
  .fn()
50
50
  .mockRejectedValue(new Error("Environment information unavailable")),
51
+ getFileRoots: vi.fn().mockResolvedValue({ roots: [] }),
51
52
  sendPdb: vi.fn().mockResolvedValue({}),
52
53
  sendSetBreakpoints: vi.fn().mockResolvedValue({}),
53
54
  sendListFiles: vi.fn().mockResolvedValue({ files: [] }),
@@ -40,7 +40,7 @@ const FileExplorerComponent: React.FC<{ height: number }> = ({ height }) => {
40
40
 
41
41
  const getDropDestinationPath = useCallback(
42
42
  (event: DropEvent) =>
43
- getUploadDestinationForEvent(event, tree.getRootPath()),
43
+ getUploadDestinationForEvent(event, tree.getPrimaryRootPath()),
44
44
  [tree],
45
45
  );
46
46
  const refreshUploadDestination = useCallback(
@@ -60,7 +60,8 @@ const FileExplorerComponent: React.FC<{ height: number }> = ({ height }) => {
60
60
  onDragLeave: () => setDropDestinationPath(null),
61
61
  onUploadStart: () => setDropDestinationPath(null),
62
62
  });
63
- const displayedDestinationPath = dropDestinationPath ?? tree.getRootPath();
63
+ const displayedDestinationPath =
64
+ dropDestinationPath ?? tree.getPrimaryRootPath();
64
65
  const displayedDestinationLabel = getUploadDestinationLabel(
65
66
  tree,
66
67
  displayedDestinationPath,
@@ -7,8 +7,8 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
7
7
  import { MockRequestClient } from "@/__mocks__/requests";
8
8
  import { TooltipProvider } from "@/components/ui/tooltip";
9
9
  import { requestClientAtom } from "@/core/network/requests";
10
- import type { FileInfo } from "@/core/network/types";
11
10
  import { FileExplorer } from "../file-explorer";
11
+ import type { FileTreeNode } from "../requesting-tree";
12
12
 
13
13
  vi.mock("react-arborist", async (importOriginal) => {
14
14
  const actual = await importOriginal<typeof import("react-arborist")>();
@@ -17,20 +17,29 @@ vi.mock("react-arborist", async (importOriginal) => {
17
17
  Tree: ({
18
18
  data,
19
19
  onSelect,
20
+ onToggle,
20
21
  }: {
21
- data: FileInfo[];
22
- onSelect: (nodes: Array<{ data: FileInfo }>) => void;
22
+ data: FileTreeNode[];
23
+ onSelect: (nodes: Array<{ id: string; data: FileTreeNode }>) => void;
24
+ onToggle: (id: string) => void;
23
25
  }) => (
24
26
  <div>
25
- {data.map((item) => (
26
- <button
27
- type="button"
28
- key={item.id}
29
- onClick={() => onSelect([{ data: item }])}
30
- >
31
- {item.name}
32
- </button>
33
- ))}
27
+ {data
28
+ .flatMap((item) => [item, ...item.children])
29
+ .map((item) => (
30
+ <button
31
+ type="button"
32
+ key={item.id}
33
+ onClick={() => {
34
+ onSelect([{ id: item.id, data: item }]);
35
+ if (item.isDirectory) {
36
+ void onToggle(item.id);
37
+ }
38
+ }}
39
+ >
40
+ {item.name}
41
+ </button>
42
+ ))}
34
43
  </div>
35
44
  ),
36
45
  };
@@ -51,8 +60,11 @@ describe("FileExplorer upload destination", () => {
51
60
  localStorage.removeItem("marimo:showHiddenFiles");
52
61
  testStore = createStore();
53
62
  client = MockRequestClient.create({
63
+ getFileRoots: vi.fn().mockResolvedValue({
64
+ roots: [{ path: "/workspace", name: "workspace", isPrimary: true }],
65
+ }),
54
66
  sendListFiles: vi.fn().mockImplementation(async ({ path }) => {
55
- if (path) {
67
+ if (path !== "/workspace") {
56
68
  return { files: [] };
57
69
  }
58
70
  return {
@@ -81,10 +93,11 @@ describe("FileExplorer upload destination", () => {
81
93
  it("uses the selected folder for toolbar uploads", async () => {
82
94
  render(<FileExplorer height={300} />, { wrapper });
83
95
 
84
- const rootUpload = await screen.findByRole("button", {
85
- name: "Upload files to workspace root",
86
- });
87
- expect(rootUpload).toBeVisible();
96
+ expect(
97
+ await screen.findByRole("button", {
98
+ name: "Upload files to workspace",
99
+ }),
100
+ ).toBeVisible();
88
101
 
89
102
  fireEvent.click(await screen.findByText("data"));
90
103
 
@@ -120,7 +133,7 @@ describe("FileExplorer upload destination", () => {
120
133
 
121
134
  expect(
122
135
  await screen.findByRole("button", {
123
- name: "Upload files to workspace root",
136
+ name: "Upload files to workspace",
124
137
  }),
125
138
  ).toBeVisible();
126
139
  expect(screen.queryByText(".hidden")).not.toBeInTheDocument();
@@ -1,29 +1,35 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { describe, expect, it } from "vitest";
3
- import type { FileInfo } from "@/core/network/types";
3
+ import type { FileTreeNode } from "../requesting-tree";
4
4
  import { filterHiddenTree, isDirectoryOrFileHidden } from "../file-explorer";
5
5
 
6
6
  // Helpers to build FileInfo objects for tests
7
- const file = (name: string, path: string): FileInfo => ({
7
+ const file = (name: string, path: string): FileTreeNode => ({
8
8
  id: path,
9
9
  name,
10
10
  path,
11
11
  isDirectory: false,
12
12
  isMarimoFile: false,
13
13
  children: [],
14
+ isRoot: false,
15
+ rootPath: "/",
16
+ isPrimaryRoot: true,
14
17
  });
15
18
 
16
19
  const dir = (
17
20
  name: string,
18
21
  path: string,
19
- children: FileInfo[] = [],
20
- ): FileInfo => ({
22
+ children: FileTreeNode[] = [],
23
+ ): FileTreeNode => ({
21
24
  id: path,
22
25
  name,
23
26
  path,
24
27
  isDirectory: true,
25
28
  isMarimoFile: false,
26
29
  children,
30
+ isRoot: false,
31
+ rootPath: "/",
32
+ isPrimaryRoot: true,
27
33
  });
28
34
 
29
35
  describe("isDirectoryOrFileHidden", () => {
@@ -47,7 +53,7 @@ describe("isDirectoryOrFileHidden", () => {
47
53
 
48
54
  describe("filterHiddenTree", () => {
49
55
  it("should return all items when showHidden is true", () => {
50
- const list: FileInfo[] = [
56
+ const list: FileTreeNode[] = [
51
57
  dir(".git", "/.git", []),
52
58
  file("README.md", "/README.md"),
53
59
  file(".env", "/.env"),
@@ -60,7 +66,7 @@ describe("filterHiddenTree", () => {
60
66
  });
61
67
 
62
68
  it("should filter out hidden files when showHidden is false", () => {
63
- const list: FileInfo[] = [
69
+ const list: FileTreeNode[] = [
64
70
  dir(".git", "/.git"),
65
71
  file("README.md", "/README.md"),
66
72
  file(".env", "/.env"),
@@ -75,7 +81,7 @@ describe("filterHiddenTree", () => {
75
81
  });
76
82
 
77
83
  it("should filter hidden directories recursively", () => {
78
- const list: FileInfo[] = [
84
+ const list: FileTreeNode[] = [
79
85
  dir("src", "/src", [
80
86
  file("index.ts", "/src/index.ts"),
81
87
  file(".DS_Store", "/src/.DS_Store"),
@@ -94,7 +100,7 @@ describe("filterHiddenTree", () => {
94
100
  });
95
101
 
96
102
  it("should handle nested hidden files", () => {
97
- const list: FileInfo[] = [
103
+ const list: FileTreeNode[] = [
98
104
  dir("project", "/project", [
99
105
  dir("src", "/project/src", [
100
106
  file("index.ts", "/project/src/index.ts"),
@@ -114,7 +120,7 @@ describe("filterHiddenTree", () => {
114
120
  });
115
121
 
116
122
  it("should preserve directory structure when no children are filtered", () => {
117
- const list: FileInfo[] = [
123
+ const list: FileTreeNode[] = [
118
124
  dir("src", "/src", [
119
125
  file("index.ts", "/src/index.ts"),
120
126
  file("utils.ts", "/src/utils.ts"),
@@ -128,7 +134,7 @@ describe("filterHiddenTree", () => {
128
134
  });
129
135
 
130
136
  it("should create new object only when children are filtered", () => {
131
- const list: FileInfo[] = [
137
+ const list: FileTreeNode[] = [
132
138
  dir("src", "/src", [
133
139
  file("index.ts", "/src/index.ts"),
134
140
  file(".hidden", "/src/.hidden"),
@@ -148,7 +154,7 @@ describe("filterHiddenTree", () => {
148
154
  });
149
155
 
150
156
  it("should handle empty children arrays", () => {
151
- const list: FileInfo[] = [dir("empty-dir", "/empty-dir", [])];
157
+ const list: FileTreeNode[] = [dir("empty-dir", "/empty-dir", [])];
152
158
 
153
159
  const result = filterHiddenTree(list, false);
154
160
 
@@ -157,7 +163,7 @@ describe("filterHiddenTree", () => {
157
163
  });
158
164
 
159
165
  it("should handle deeply nested structures", () => {
160
- const list: FileInfo[] = [
166
+ const list: FileTreeNode[] = [
161
167
  dir("level1", "/level1", [
162
168
  dir("level2", "/level1/level2", [
163
169
  dir("level3", "/level1/level2/level3", [