@floegence/floe-webapp-core 0.35.34 → 0.35.36

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.
@@ -1,412 +1,428 @@
1
- import { createComponent as St } from "solid-js/web";
2
- import { createSignal as p, createEffect as I, createMemo as D, useContext as gt, createContext as It, untrack as wt } from "solid-js";
3
- import { createStore as le, produce as de } from "solid-js/store";
4
- import { useResolvedFloeConfig as yt } from "../../context/FloeConfigContext.js";
5
- import { deferAfterPaint as xt, deferNonBlocking as y } from "../../utils/defer.js";
6
- const ye = It(), E = {
1
+ import { createComponent as yt } from "solid-js/web";
2
+ import { createSignal as h, createEffect as S, createMemo as q, useContext as wt, createContext as xt, untrack as Ct } from "solid-js";
3
+ import { createStore as fe, produce as me } from "solid-js/store";
4
+ import { useResolvedFloeConfig as Pt } from "../../context/FloeConfigContext.js";
5
+ import { deferAfterPaint as Rt, deferNonBlocking as w } from "../../utils/defer.js";
6
+ const Pe = xt(), A = {
7
7
  name: 0.65,
8
8
  modifiedAt: 0.2,
9
9
  size: 0.15
10
- }, fe = "fileBrowser:listColumnRatios", ue = 220, Ct = "fileBrowser:sidebarWidth", Pt = 160, At = 520, me = "fileBrowser:viewMode", he = "fileBrowser:sortConfig", pe = "fileBrowser:expandedFolders", Se = "fileBrowser:sidebarCollapsed";
11
- function N(n, i) {
12
- const o = typeof n == "number" && Number.isFinite(n) ? n : i;
13
- return Math.max(Pt, Math.min(At, Math.round(o)));
10
+ }, he = "fileBrowser:listColumnRatios", pe = 220, At = "fileBrowser:sidebarWidth", vt = 160, bt = 520, Se = "fileBrowser:viewMode", ge = "fileBrowser:sortConfig", Ie = "fileBrowser:expandedFolders", ye = "fileBrowser:sidebarCollapsed";
11
+ function k(n, r) {
12
+ const o = typeof n == "number" && Number.isFinite(n) ? n : r;
13
+ return Math.max(vt, Math.min(bt, Math.round(o)));
14
14
  }
15
- function Et(n, i) {
16
- return n === "list" || n === "grid" ? n : i;
15
+ function Et(n, r) {
16
+ return n === "list" || n === "grid" ? n : r;
17
17
  }
18
- function bt(n, i) {
19
- if (!n || typeof n != "object") return i;
20
- const o = n, d = o.field, l = o.direction;
21
- return !(d === "name" || d === "size" || d === "modifiedAt" || d === "type") || !(l === "asc" || l === "desc") ? i : {
18
+ function Ft(n, r) {
19
+ if (!n || typeof n != "object") return r;
20
+ const o = n, d = o.field, a = o.direction;
21
+ return !(d === "name" || d === "size" || d === "modifiedAt" || d === "type") || !(a === "asc" || a === "desc") ? r : {
22
22
  field: d,
23
- direction: l
23
+ direction: a
24
24
  };
25
25
  }
26
26
  function Mt(n) {
27
27
  if (!Array.isArray(n)) return ["/"];
28
- const i = [], o = /* @__PURE__ */ new Set();
28
+ const r = [], o = /* @__PURE__ */ new Set();
29
29
  for (const d of n) {
30
30
  if (typeof d != "string") continue;
31
- const l = d.trim();
32
- !l || o.has(l) || (o.add(l), i.push(l));
31
+ const a = d.trim();
32
+ !a || o.has(a) || (o.add(a), r.push(a));
33
33
  }
34
- return o.has("/") || i.unshift("/"), i;
34
+ return o.has("/") || r.unshift("/"), r;
35
35
  }
36
- function Ft(n) {
37
- const i = [], o = /* @__PURE__ */ new Set();
36
+ function Bt(n) {
37
+ const r = [], o = /* @__PURE__ */ new Set();
38
38
  for (const d of n) {
39
39
  if (typeof d != "string") continue;
40
- const l = d.trim();
41
- !l || o.has(l) || (o.add(l), i.push(l));
40
+ const a = d.trim();
41
+ !a || o.has(a) || (o.add(a), r.push(a));
42
42
  }
43
- return i;
43
+ return r;
44
44
  }
45
- function ge(n) {
46
- const i = {};
45
+ function we(n) {
46
+ const r = {};
47
47
  for (const o of n)
48
- i[o] = !0;
49
- return i;
48
+ r[o] = !0;
49
+ return r;
50
50
  }
51
- function Lt(n, i) {
52
- if (n.length !== i.length) return !1;
51
+ function Lt(n, r) {
52
+ if (n.length !== r.length) return !1;
53
53
  for (let o = 0; o < n.length; o += 1)
54
- if (n[o] !== i[o]) return !1;
54
+ if (n[o] !== r[o]) return !1;
55
55
  return !0;
56
56
  }
57
- function Ie(n) {
58
- const i = Number.isFinite(n.name) ? n.name : E.name, o = Number.isFinite(n.modifiedAt) ? n.modifiedAt : E.modifiedAt, d = Number.isFinite(n.size) ? n.size : E.size, l = Math.max(0, i), u = Math.max(0, o), x = Math.max(0, d), g = l + u + x;
59
- return g <= 0 ? E : {
60
- name: l / g,
61
- modifiedAt: u / g,
62
- size: x / g
57
+ function xe(n) {
58
+ const r = Number.isFinite(n.name) ? n.name : A.name, o = Number.isFinite(n.modifiedAt) ? n.modifiedAt : A.modifiedAt, d = Number.isFinite(n.size) ? n.size : A.size, a = Math.max(0, r), f = Math.max(0, o), x = Math.max(0, d), I = a + f + x;
59
+ return I <= 0 ? A : {
60
+ name: a / I,
61
+ modifiedAt: f / I,
62
+ size: x / I
63
63
  };
64
64
  }
65
- function we(n, i) {
66
- if (!i) return [];
65
+ function Ce(n, r) {
66
+ if (!r) return [];
67
67
  const o = [];
68
68
  let d = 0;
69
- for (const l of i) {
70
- const u = n.indexOf(l, d);
71
- if (u === -1) return null;
72
- o.push(u), d = u + 1;
69
+ for (const a of r) {
70
+ const f = n.indexOf(a, d);
71
+ if (f === -1) return null;
72
+ o.push(f), d = f + 1;
73
73
  }
74
74
  return o;
75
75
  }
76
- function Dt(n) {
77
- const i = yt(), o = (e) => {
76
+ function qt(n) {
77
+ const r = Pt(), o = (e) => {
78
78
  const t = (e ?? "").trim();
79
79
  return t === "" ? "/" : t;
80
- }, d = (n.persistenceKey ?? "").trim(), l = !!d, u = (e) => d ? `${d}:${e}` : e, x = l ? Et(i.persist.load(u(me), n.initialViewMode ?? "list"), n.initialViewMode ?? "list") : n.initialViewMode ?? "list", g = {
80
+ }, d = (n.persistenceKey ?? "").trim(), a = !!d, f = (e) => d ? `${d}:${e}` : e, x = a ? Et(r.persist.load(f(Se), n.initialViewMode ?? "list"), n.initialViewMode ?? "list") : n.initialViewMode ?? "list", I = {
81
81
  field: "name",
82
82
  direction: "asc"
83
- }, xe = l ? bt(i.persist.load(u(he), g), g) : g, W = l ? Mt(i.persist.load(u(pe), ["/"])) : ["/"], Ce = l ? i.persist.load(u(Se), !1) === !0 : !1, Pe = () => typeof n.path == "string" ? o(n.path) : o(n.initialPath ?? "/"), [C, k] = p(Pe()), [K, Ae] = le({}), [b, Ee] = p([]), [U, be] = p(x), [F, Me] = p(xe), Fe = Ie(i.persist.load(fe, n.initialListColumnRatios ?? E)), [V, Le] = p(Fe), G = (n.sidebarWidthStorageKey ?? "").trim() || Ct, _e = N(i.persist.load(G, n.initialSidebarWidth ?? ue), n.initialSidebarWidth ?? ue), [L, ve] = p(_e), [_, q] = le(ge(W)), [X, Y] = p(W), [j, Be] = p(Ce), [Re, Q] = p(null), [H, $] = p(""), [v, B] = p(""), [Oe, J] = p(!1);
84
- let R = 0;
85
- I(() => {
86
- const e = H().trim();
87
- R += 1;
88
- const t = R;
83
+ }, Re = a ? Ft(r.persist.load(f(ge), I), I) : I, K = a ? Mt(r.persist.load(f(Ie), ["/"])) : ["/"], Ae = a ? r.persist.load(f(ye), !1) === !0 : !1, ve = () => typeof n.path == "string" ? o(n.path) : o(n.initialPath ?? "/"), [C, U] = h(ve()), [V, be] = fe({}), [v, Ee] = h([]), [G, Fe] = h(x), [M, Me] = h(Re), Be = xe(r.persist.load(he, n.initialListColumnRatios ?? A)), [X, Le] = h(Be), Y = (n.sidebarWidthStorageKey ?? "").trim() || At, _e = k(r.persist.load(Y, n.initialSidebarWidth ?? pe), n.initialSidebarWidth ?? pe), [B, Oe] = h(_e), [L, j] = fe(we(K)), [Q, H] = h(K), [$, Te] = h(Ae), [ze, J] = h(null), [Z, _] = h(""), [O, b] = h(""), [De, T] = h(!1), [z, ee] = h(null);
84
+ let D = 0;
85
+ S(() => {
86
+ const e = Z().trim();
87
+ D += 1;
88
+ const t = D;
89
89
  if (!e) {
90
- B("");
90
+ b("");
91
91
  return;
92
92
  }
93
- xt(() => {
94
- t === R && B(e);
93
+ Rt(() => {
94
+ t === D && b(e);
95
95
  });
96
- }), I(() => {
97
- i.persist.debouncedSave(fe, V());
98
- }), I(() => {
99
- i.persist.debouncedSave(G, L());
100
- }), I(() => {
101
- l && i.persist.debouncedSave(u(me), U());
102
- }), I(() => {
103
- l && i.persist.debouncedSave(u(he), F());
104
- }), I(() => {
105
- if (!l) return;
106
- const e = [...X()].sort((t, r) => t.localeCompare(r));
107
- i.persist.debouncedSave(u(pe), e);
108
- }), I(() => {
109
- l && i.persist.debouncedSave(u(Se), j());
96
+ }), S(() => {
97
+ r.persist.debouncedSave(he, X());
98
+ }), S(() => {
99
+ r.persist.debouncedSave(Y, B());
100
+ }), S(() => {
101
+ a && r.persist.debouncedSave(f(Se), G());
102
+ }), S(() => {
103
+ a && r.persist.debouncedSave(f(ge), M());
104
+ }), S(() => {
105
+ if (!a) return;
106
+ const e = [...Q()].sort((t, i) => t.localeCompare(i));
107
+ r.persist.debouncedSave(f(Ie), e);
108
+ }), S(() => {
109
+ a && r.persist.debouncedSave(f(ye), $());
110
+ }), S(() => {
111
+ const e = n.revealRequest ?? null;
112
+ ee(e);
110
113
  });
111
- const Te = (e) => be(e), ze = (e) => Me(e), De = (e) => N(e, L()), Ne = () => n.homeLabel ?? "Root", We = () => new Set(b()), ke = () => new Set(X()), M = (e) => {
112
- const t = Ft(e), r = ge(t);
113
- Ae(de((s) => {
114
+ const Ne = (e) => Fe(e), We = (e) => Me(e), qe = (e) => k(e, B()), ke = () => n.homeLabel ?? "Root", Ke = () => new Set(v()), Ue = () => new Set(Q()), E = (e) => {
115
+ const t = Bt(e), i = we(t);
116
+ be(me((s) => {
114
117
  for (const c of Object.keys(s))
115
- c in r || delete s[c];
118
+ c in i || delete s[c];
116
119
  for (const c of t)
117
120
  s[c] = !0;
118
121
  })), Ee((s) => Lt(s, t) ? s : t);
119
- }, Z = (e) => {
120
- _[e] !== !0 && (q(e, !0), Y((t) => t.includes(e) ? t : [...t, e]));
121
- }, Ke = (e) => {
122
- if (_[e] === !0) {
123
- q(de((t) => {
122
+ }, te = (e) => {
123
+ L[e] !== !0 && (j(e, !0), H((t) => t.includes(e) ? t : [...t, e]));
124
+ }, Ve = (e) => {
125
+ if (L[e] === !0) {
126
+ j(me((t) => {
124
127
  delete t[e];
125
- })), Y((t) => t.filter((r) => r !== e));
128
+ })), H((t) => t.filter((i) => i !== e));
126
129
  return;
127
130
  }
128
- Z(e);
129
- }, [ee, P] = p([]);
130
- let w = null, O = {
131
+ te(e);
132
+ }, [ne, P] = h([]);
133
+ let y = null, N = {
131
134
  top: 0,
132
135
  left: 0
133
136
  };
134
- const te = () => n.files, ne = (e) => {
137
+ const oe = () => n.files, ie = (e) => {
135
138
  const t = o(e);
136
139
  if (t === "/") return "/";
137
- const r = t.split("/").filter(Boolean);
138
- return r.pop(), r.length ? "/" + r.join("/") : "/";
139
- }, Ue = (e, t) => {
140
- const r = ee();
141
- if (r.length === 0) return e;
140
+ const i = t.split("/").filter(Boolean);
141
+ return i.pop(), i.length ? "/" + i.join("/") : "/";
142
+ }, Ge = (e, t) => {
143
+ const i = ne();
144
+ if (i.length === 0) return e;
142
145
  let s = [...e];
143
146
  const c = o(t);
144
- for (const a of r)
145
- switch (a.type) {
147
+ for (const l of i)
148
+ switch (l.type) {
146
149
  case "remove": {
147
- const m = new Set(a.paths.map(o));
148
- s = s.filter((f) => !m.has(o(f.path)));
150
+ const m = new Set(l.paths.map(o));
151
+ s = s.filter((u) => !m.has(o(u.path)));
149
152
  break;
150
153
  }
151
154
  case "update": {
152
- const m = o(a.oldPath), f = s.findIndex((S) => o(S.path) === m);
153
- if (f !== -1) {
154
- const S = a.updates.path ?? s[f].path;
155
- ne(S) === c ? s[f] = {
156
- ...s[f],
157
- ...a.updates
158
- } : s.splice(f, 1);
155
+ const m = o(l.oldPath), u = s.findIndex((g) => o(g.path) === m);
156
+ if (u !== -1) {
157
+ const g = l.updates.path ?? s[u].path;
158
+ ie(g) === c ? s[u] = {
159
+ ...s[u],
160
+ ...l.updates
161
+ } : s.splice(u, 1);
159
162
  } else {
160
- const S = a.updates.path;
161
- S && ne(S);
163
+ const g = l.updates.path;
164
+ g && ie(g);
162
165
  }
163
166
  break;
164
167
  }
165
168
  case "insert": {
166
- o(a.parentPath) === c && (s.some((f) => o(f.path) === o(a.item.path)) || s.push(a.item));
169
+ o(l.parentPath) === c && (s.some((u) => o(u.path) === o(l.item.path)) || s.push(l.item));
167
170
  break;
168
171
  }
169
172
  }
170
173
  return s;
171
- }, Ve = D(() => {
174
+ }, Xe = q(() => {
172
175
  const e = /* @__PURE__ */ new Map(), t = (s) => {
173
176
  for (const c of s)
174
177
  c.type === "folder" && (e.set(o(c.path), c.children ?? []), c.children?.length && t(c.children));
175
- }, r = te();
176
- return e.set("/", r), t(r), e;
177
- }), Ge = D(() => {
178
+ }, i = oe();
179
+ return e.set("/", i), t(i), e;
180
+ }), se = q(() => {
178
181
  const e = o(C());
179
- let t = Ve().get(e) ?? [];
180
- t = Ue(t, e);
181
- const r = F(), s = [...t].sort((a, m) => {
182
- if (a.type !== m.type) return a.type === "folder" ? -1 : 1;
183
- let f = 0;
184
- switch (r.field) {
182
+ let t = Xe().get(e) ?? [];
183
+ t = Ge(t, e);
184
+ const i = M(), s = [...t].sort((l, m) => {
185
+ if (l.type !== m.type) return l.type === "folder" ? -1 : 1;
186
+ let u = 0;
187
+ switch (i.field) {
185
188
  case "name":
186
- f = a.name.localeCompare(m.name);
189
+ u = l.name.localeCompare(m.name);
187
190
  break;
188
191
  case "size":
189
- f = (a.size ?? 0) - (m.size ?? 0);
192
+ u = (l.size ?? 0) - (m.size ?? 0);
190
193
  break;
191
194
  case "modifiedAt":
192
- f = (a.modifiedAt?.getTime() ?? 0) - (m.modifiedAt?.getTime() ?? 0);
195
+ u = (l.modifiedAt?.getTime() ?? 0) - (m.modifiedAt?.getTime() ?? 0);
193
196
  break;
194
197
  case "type":
195
- f = (a.extension ?? "").localeCompare(m.extension ?? "");
198
+ u = (l.extension ?? "").localeCompare(m.extension ?? "");
196
199
  break;
197
200
  }
198
- return r.direction === "asc" ? f : -f;
201
+ return i.direction === "asc" ? u : -u;
199
202
  }), c = /* @__PURE__ */ new Map();
200
- for (const a of s)
201
- c.set(a.id, a.name.toLowerCase());
203
+ for (const l of s)
204
+ c.set(l.id, l.name.toLowerCase());
202
205
  return {
203
206
  items: s,
204
207
  nameLowerById: c
205
208
  };
206
- }), T = D(() => {
209
+ }), F = q(() => {
207
210
  const {
208
211
  items: e,
209
212
  nameLowerById: t
210
- } = Ge(), s = v().trim().toLowerCase(), c = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map();
213
+ } = se(), s = O().trim().toLowerCase(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map();
211
214
  if (!s) {
212
- for (let h = 0; h < e.length; h++) {
213
- const A = e[h];
214
- a.set(A.id, A), m.set(A.id, h);
215
+ for (let p = 0; p < e.length; p++) {
216
+ const R = e[p];
217
+ l.set(R.id, R), m.set(R.id, p);
215
218
  }
216
219
  return {
217
220
  items: e,
218
221
  matchById: c,
219
- fileById: a,
222
+ fileById: l,
220
223
  indexById: m
221
224
  };
222
225
  }
223
- const f = [];
224
- let S = 0;
225
- for (const h of e) {
226
- const A = t.get(h.id) ?? h.name.toLowerCase(), ae = we(A, s);
227
- ae && (f.push(h), c.set(h.id, {
228
- matchedIndices: ae
229
- }), a.set(h.id, h), m.set(h.id, S), S += 1);
226
+ const u = [];
227
+ let g = 0;
228
+ for (const p of e) {
229
+ const R = t.get(p.id) ?? p.name.toLowerCase(), ue = Ce(R, s);
230
+ ue && (u.push(p), c.set(p.id, {
231
+ matchedIndices: ue
232
+ }), l.set(p.id, p), m.set(p.id, g), g += 1);
230
233
  }
231
234
  return {
232
- items: f,
235
+ items: u,
233
236
  matchById: c,
234
- fileById: a,
237
+ fileById: l,
235
238
  indexById: m
236
239
  };
237
- }), qe = () => T().items, oe = (e) => {
238
- const t = T(), r = [];
240
+ }), Ye = () => F().items;
241
+ S(() => {
242
+ const e = z();
243
+ !e || e.clearFilter !== "if-needed" || F().fileById.has(e.targetId) || !se().items.some((s) => s.id === e.targetId) || (_(""), b(""), T(!1));
244
+ });
245
+ const re = (e) => {
246
+ const t = F(), i = [];
239
247
  for (const s of e) {
240
248
  const c = t.fileById.get(s);
241
249
  if (!c) continue;
242
- const a = t.indexById.get(s);
243
- r.push({
244
- index: a ?? Number.MAX_SAFE_INTEGER,
250
+ const l = t.indexById.get(s);
251
+ i.push({
252
+ index: l ?? Number.MAX_SAFE_INTEGER,
245
253
  item: c
246
254
  });
247
255
  }
248
- return r.sort((s, c) => s.index - c.index), r.map((s) => s.item);
249
- }, ie = () => {
250
- M([]), $(""), B(""), J(!1);
256
+ return i.sort((s, c) => s.index - c.index), i.map((s) => s.item);
257
+ }, ce = () => {
258
+ E([]), _(""), b(""), T(!1);
251
259
  const e = n.onSelect;
252
- y(() => e?.([]));
260
+ w(() => e?.([]));
253
261
  };
254
- I(() => {
262
+ S(() => {
255
263
  if (typeof n.path != "string") return;
256
264
  const e = o(n.path);
257
- e !== C() && (k(e), ie());
265
+ e !== C() && (U(e), ce());
258
266
  });
259
- const z = (e) => {
267
+ const W = (e) => {
260
268
  const t = o(e);
261
269
  if (t === C()) return;
262
- k(t), ie();
263
- const r = n.onNavigate;
264
- y(() => r?.(t));
270
+ U(t), ce();
271
+ const i = n.onNavigate;
272
+ w(() => i?.(t));
265
273
  const s = n.onPathChange;
266
- y(() => s?.(t, "user"));
267
- }, Xe = (e) => {
268
- Le(Ie(e));
269
- }, Ye = () => {
274
+ w(() => s?.(t, "user"));
275
+ }, je = (e) => {
276
+ Le(xe(e));
277
+ }, Qe = () => {
270
278
  const e = C();
271
279
  if (e === "/" || e === "") return;
272
280
  const t = e.split("/").filter(Boolean);
273
- t.pop(), z(t.length ? "/" + t.join("/") : "/");
274
- }, se = (e) => {
275
- e.type === "folder" && (z(e.path), Z(e.path));
276
- }, je = (e, t = !1) => {
277
- const r = t ? K[e] === !0 ? b().filter((c) => c !== e) : [...b(), e] : [e];
278
- M(r);
281
+ t.pop(), W(t.length ? "/" + t.join("/") : "/");
282
+ }, le = (e) => {
283
+ e.type === "folder" && (W(e.path), te(e.path));
284
+ }, He = (e, t = !1) => {
285
+ const i = t ? V[e] === !0 ? v().filter((c) => c !== e) : [...v(), e] : [e];
286
+ E(i);
279
287
  const s = n.onSelect;
280
288
  if (s) {
281
- const c = [...r];
282
- y(() => {
283
- const a = wt(() => oe(c));
284
- s(a);
289
+ const c = [...i];
290
+ w(() => {
291
+ const l = Ct(() => re(c));
292
+ s(l);
285
293
  });
286
294
  }
287
- }, Qe = () => {
288
- M([]);
295
+ }, $e = () => {
296
+ E([]);
289
297
  const e = n.onSelect;
290
- y(() => e?.([]));
291
- }, He = (e) => K[e] === !0, $e = (e) => Ke(e), Je = (e) => _[e] === !0, Ze = () => Be((e) => !e), et = (e) => {
292
- ve((t) => N(e, t));
293
- }, tt = (e) => Q(e), nt = () => Q(null), ot = (e) => {
294
- $(e);
295
- }, it = (e) => {
296
- const t = v().trim();
298
+ w(() => e?.([]));
299
+ }, Je = (e) => V[e] === !0, Ze = (e) => Ve(e), et = (e) => L[e] === !0, tt = () => Te((e) => !e), nt = (e) => {
300
+ Oe((t) => k(e, t));
301
+ }, ot = (e) => J(e), it = () => J(null), st = (e) => {
302
+ _(e);
303
+ }, rt = (e) => {
304
+ const t = O().trim();
297
305
  if (!t) return null;
298
- const r = we(e.toLowerCase(), t.toLowerCase());
299
- return r ? {
300
- matchedIndices: r
306
+ const i = Ce(e.toLowerCase(), t.toLowerCase());
307
+ return i ? {
308
+ matchedIndices: i
301
309
  } : null;
302
- }, st = (e) => T().matchById.get(e) ?? null, rt = () => oe(b()), ct = (e) => {
310
+ }, ct = (e) => F().matchById.get(e) ?? null, lt = () => re(v()), at = (e) => {
311
+ const t = z();
312
+ if (!t || t.requestId !== e) return;
313
+ ee(null);
314
+ const i = n.onRevealRequestConsumed;
315
+ w(() => i?.(e));
316
+ }, dt = (e) => {
303
317
  if (e.type === "folder")
304
- se(e);
318
+ le(e);
305
319
  else {
306
320
  const t = n.onOpen;
307
- y(() => t?.(e));
321
+ w(() => t?.(e));
308
322
  }
309
- }, at = (e) => {
323
+ }, ut = (e) => {
310
324
  e.length !== 0 && P((t) => [...t, {
311
325
  type: "remove",
312
326
  paths: e
313
327
  }]);
314
- }, lt = (e, t) => {
315
- P((r) => [...r, {
328
+ }, ft = (e, t) => {
329
+ P((i) => [...i, {
316
330
  type: "update",
317
331
  oldPath: e,
318
332
  updates: t
319
333
  }]);
320
- }, dt = (e, t) => {
321
- P((r) => [...r, {
334
+ }, mt = (e, t) => {
335
+ P((i) => [...i, {
322
336
  type: "insert",
323
337
  parentPath: e,
324
338
  item: t
325
339
  }]);
326
- }, ft = () => {
340
+ }, ht = () => {
327
341
  P([]);
328
- }, ut = () => {
342
+ }, pt = () => {
329
343
  P([]);
330
- }, mt = () => ee().length > 0, ht = (e) => {
331
- w = e;
332
- }, re = () => w ? {
333
- top: w.scrollTop,
334
- left: w.scrollLeft
344
+ }, St = () => ne().length > 0, gt = (e) => {
345
+ y = e;
346
+ }, ae = () => y ? {
347
+ top: y.scrollTop,
348
+ left: y.scrollLeft
335
349
  } : {
336
350
  top: 0,
337
351
  left: 0
338
- }, ce = (e) => {
339
- w && (w.scrollTop = e.top, w.scrollLeft = e.left);
340
- }, pt = {
352
+ }, de = (e) => {
353
+ y && (y.scrollTop = e.top, y.scrollLeft = e.left);
354
+ }, It = {
341
355
  currentPath: C,
342
- setCurrentPath: z,
343
- navigateUp: Ye,
344
- navigateTo: se,
345
- homeLabel: Ne,
346
- selectedItems: We,
347
- selectItem: je,
348
- clearSelection: Qe,
349
- isSelected: He,
350
- getSelectedItemsList: rt,
351
- viewMode: U,
352
- setViewMode: Te,
353
- sortConfig: F,
354
- setSortConfig: ze,
355
- listColumnRatios: V,
356
- setListColumnRatios: Xe,
357
- expandedFolders: ke,
358
- toggleFolder: $e,
359
- isExpanded: Je,
360
- files: te,
361
- currentFiles: qe,
362
- filterQuery: H,
363
- setFilterQuery: ot,
364
- filterQueryApplied: v,
365
- isFilterActive: Oe,
366
- setFilterActive: J,
367
- getFilterMatch: it,
368
- getFilterMatchForId: st,
369
- sidebarCollapsed: j,
370
- toggleSidebar: Ze,
371
- sidebarWidth: L,
372
- clampSidebarWidth: De,
373
- setSidebarWidth: et,
374
- contextMenu: Re,
375
- showContextMenu: tt,
376
- hideContextMenu: nt,
377
- openItem: ct,
356
+ setCurrentPath: W,
357
+ navigateUp: Qe,
358
+ navigateTo: le,
359
+ homeLabel: ke,
360
+ selectedItems: Ke,
361
+ selectItem: He,
362
+ clearSelection: $e,
363
+ isSelected: Je,
364
+ getSelectedItemsList: lt,
365
+ viewMode: G,
366
+ setViewMode: Ne,
367
+ sortConfig: M,
368
+ setSortConfig: We,
369
+ listColumnRatios: X,
370
+ setListColumnRatios: je,
371
+ expandedFolders: Ue,
372
+ toggleFolder: Ze,
373
+ isExpanded: et,
374
+ files: oe,
375
+ currentFiles: Ye,
376
+ filterQuery: Z,
377
+ setFilterQuery: st,
378
+ filterQueryApplied: O,
379
+ isFilterActive: De,
380
+ setFilterActive: T,
381
+ getFilterMatch: rt,
382
+ getFilterMatchForId: ct,
383
+ sidebarCollapsed: $,
384
+ toggleSidebar: tt,
385
+ sidebarWidth: B,
386
+ clampSidebarWidth: qe,
387
+ setSidebarWidth: nt,
388
+ contextMenu: ze,
389
+ showContextMenu: ot,
390
+ hideContextMenu: it,
391
+ openItem: dt,
392
+ revealRequest: z,
393
+ consumeRevealRequest: at,
378
394
  // Optimistic updates
379
- optimisticRemove: at,
380
- optimisticUpdate: lt,
381
- optimisticInsert: dt,
382
- clearOptimisticUpdates: ft,
383
- rollbackOptimisticUpdates: ut,
384
- hasOptimisticUpdates: mt,
395
+ optimisticRemove: ut,
396
+ optimisticUpdate: ft,
397
+ optimisticInsert: mt,
398
+ clearOptimisticUpdates: ht,
399
+ rollbackOptimisticUpdates: pt,
400
+ hasOptimisticUpdates: St,
385
401
  // Scroll position management
386
- setScrollContainer: ht,
387
- getScrollPosition: re,
388
- setScrollPosition: ce,
389
- saveScrollPosition: () => (O = re(), O),
402
+ setScrollContainer: gt,
403
+ getScrollPosition: ae,
404
+ setScrollPosition: de,
405
+ saveScrollPosition: () => (N = ae(), N),
390
406
  restoreScrollPosition: () => {
391
407
  requestAnimationFrame(() => {
392
- ce(O);
408
+ de(N);
393
409
  });
394
410
  }
395
411
  };
396
- return St(ye.Provider, {
397
- value: pt,
412
+ return yt(Pe.Provider, {
413
+ value: It,
398
414
  get children() {
399
415
  return n.children;
400
416
  }
401
417
  });
402
418
  }
403
- function Nt() {
404
- const n = gt(ye);
419
+ function kt() {
420
+ const n = wt(Pe);
405
421
  if (!n)
406
422
  throw new Error("useFileBrowser must be used within a FileBrowserProvider");
407
423
  return n;
408
424
  }
409
425
  export {
410
- Dt as FileBrowserProvider,
411
- Nt as useFileBrowser
426
+ qt as FileBrowserProvider,
427
+ kt as useFileBrowser
412
428
  };