@floegence/floe-webapp-core 0.60.1 → 0.60.2

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.
@@ -21,5 +21,7 @@ export interface ActivityAppsMainProps<TProtocol = unknown> {
21
21
  keepMounted?: KeepAliveStackProps['keepMounted'];
22
22
  /** Forwarded to KeepAliveStack (default: sync). */
23
23
  activationMode?: KeepAliveStackProps['activationMode'];
24
+ /** Target-local loading UI; leaves shell navigation available while a lazy page resolves. */
25
+ renderFallback?: KeepAliveStackProps['renderFallback'];
24
26
  }
25
27
  export declare function ActivityAppsMain<TProtocol = unknown>(props: ActivityAppsMainProps<TProtocol>): import("solid-js").JSX.Element;
@@ -1,28 +1,28 @@
1
- import { createComponent as r, Dynamic as s } from "solid-js/web";
2
- import { untrack as d, createMemo as m } from "solid-js";
3
- import { useLayout as l } from "../context/LayoutContext.js";
1
+ import { createComponent as i, Dynamic as s } from "solid-js/web";
2
+ import { untrack as d, createMemo as l } from "solid-js";
3
+ import { useLayout as m } from "../context/LayoutContext.js";
4
4
  import { useOptionalComponentRegistry as v } from "../context/ComponentRegistry.js";
5
5
  import { KeepAliveStack as f } from "../components/layout/KeepAliveStack.js";
6
6
  function g(e) {
7
7
  return e.sidebar?.fullScreen === !0 || e.sidebar?.renderIn === "main";
8
8
  }
9
- function b(e) {
10
- const n = l(), i = v();
11
- if (!d(() => !!e.views) && !i)
9
+ function A(e) {
10
+ const n = m(), r = v();
11
+ if (!d(() => !!e.views) && !r)
12
12
  throw new Error("ActivityAppsMain requires ComponentRegistryProvider when `views` is not provided.");
13
- const o = () => e.activeId ? e.activeId() : n.sidebarActiveTab(), a = m(() => {
14
- if (!i) return [];
13
+ const o = () => e.activeId ? e.activeId() : n.sidebarActiveTab(), a = l(() => {
14
+ if (!r) return [];
15
15
  const u = e.include ?? g;
16
- return i.sidebarItems().filter((t) => u(t)).map((t) => ({
16
+ return r.sidebarItems().filter((t) => u(t)).map((t) => ({
17
17
  id: t.id,
18
- render: () => r(s, {
18
+ render: () => i(s, {
19
19
  get component() {
20
20
  return t.component;
21
21
  }
22
22
  })
23
23
  }));
24
24
  }), c = () => e.views ?? a();
25
- return r(f, {
25
+ return i(f, {
26
26
  get views() {
27
27
  return c();
28
28
  },
@@ -38,11 +38,14 @@ function b(e) {
38
38
  get activationMode() {
39
39
  return e.activationMode;
40
40
  },
41
+ get renderFallback() {
42
+ return e.renderFallback;
43
+ },
41
44
  get class() {
42
45
  return e.class;
43
46
  }
44
47
  });
45
48
  }
46
49
  export {
47
- b as ActivityAppsMain
50
+ A as ActivityAppsMain
48
51
  };
@@ -1,4 +1,4 @@
1
- import { insert as E, createComponent as a, memo as $, effect as D, className as L, template as b, use as H, delegateEvents as P } from "solid-js/web";
1
+ import { insert as E, createComponent as a, memo as $, effect as R, className as D, template as b, use as H, delegateEvents as P } from "solid-js/web";
2
2
  import { createSignal as B, onMount as y, createMemo as I, For as O, Show as k, onCleanup as F } from "solid-js";
3
3
  import { cn as x } from "../../utils/cn.js";
4
4
  import { useFileBrowser as G } from "./FileBrowserContext.js";
@@ -17,7 +17,7 @@ function ce(n) {
17
17
  y(() => {
18
18
  if (!o) return;
19
19
  const e = () => {
20
- o && c(o.offsetWidth);
20
+ o && o.getClientRects().length > 0 && c(o.offsetWidth);
21
21
  };
22
22
  e();
23
23
  const s = new ResizeObserver(e);
@@ -49,7 +49,7 @@ function ce(n) {
49
49
  visible: e,
50
50
  shouldCollapse: !1
51
51
  };
52
- const l = e.map((d) => V(d.name)), i = l[0], g = l[e.length - 1], f = p, R = e.length > 1 ? p : 0, C = i + g + f + R;
52
+ const l = e.map((d) => V(d.name)), i = l[0], g = l[e.length - 1], f = p, L = e.length > 1 ? p : 0, C = i + g + f + L;
53
53
  if (C > s && e.length > 2)
54
54
  return {
55
55
  collapsed: e.slice(1, -1),
@@ -111,7 +111,7 @@ function ce(n) {
111
111
  },
112
112
  onClick: () => W(l)
113
113
  })]
114
- })), D(() => L(e, x("flex items-center gap-1 min-w-0 overflow-hidden", n.class))), e;
114
+ })), R(() => D(e, x("flex items-center gap-1 min-w-0 overflow-hidden", n.class))), e;
115
115
  })();
116
116
  }
117
117
  function Y(n) {
@@ -140,9 +140,9 @@ function Y(n) {
140
140
  function Z(n) {
141
141
  return (() => {
142
142
  var t = q(), o = t.firstChild;
143
- return t.$$click = () => n.onClick(), E(o, () => n.segment.name), D((r) => {
143
+ return t.$$click = () => n.onClick(), E(o, () => n.segment.name), R((r) => {
144
144
  var c = n.isLast, h = x("text-xs px-1.5 py-0.5 rounded cursor-pointer flex-shrink-0", "transition-all duration-100", "focus:outline-none focus-visible:ring-1 focus-visible:ring-ring", n.isLast ? "font-medium text-foreground cursor-default" : "text-muted-foreground hover:text-foreground hover:bg-muted/50");
145
- return c !== r.e && (t.disabled = r.e = c), h !== r.t && L(t, r.t = h), r;
145
+ return c !== r.e && (t.disabled = r.e = c), h !== r.t && D(t, r.t = h), r;
146
146
  }, {
147
147
  e: void 0,
148
148
  t: void 0
@@ -1,5 +1,5 @@
1
- import { addEventListener as te, use as Q, insert as S, createComponent as b, effect as N, setStyleProperty as Y, className as q, style as ue, template as y, spread as ge, mergeProps as me, memo as fe, delegateEvents as he } from "solid-js/web";
2
- import { createSignal as ie, createMemo as W, createEffect as ne, onCleanup as oe, Show as B, For as ae, untrack as ve } from "solid-js";
1
+ import { addEventListener as te, use as Q, insert as S, createComponent as b, effect as N, setStyleProperty as Y, className as p, style as ue, template as y, spread as ge, mergeProps as me, memo as fe, delegateEvents as he } from "solid-js/web";
2
+ import { createSignal as ie, createMemo as W, createEffect as ne, onCleanup as oe, Show as q, For as ae, untrack as ve } from "solid-js";
3
3
  import { cn as H } from "../../utils/cn.js";
4
4
  import { useResizeObserver as xe } from "../../hooks/useResizeObserver.js";
5
5
  import { useVirtualWindow as Ie } from "../../hooks/useVirtualWindow.js";
@@ -12,8 +12,8 @@ import { fileBrowserTouchTargetAttrs as ye } from "./touchInteractionGuard.js";
12
12
  import { createItemContextMenuEvent as Me } from "./contextMenuEvent.js";
13
13
  import { createFileBrowserMarqueeSelection as Te, FILE_BROWSER_MARQUEE_OVERLAY_CLASS as Pe } from "./useFileBrowserMarqueeSelection.js";
14
14
  import { isPrimaryModKeyPressed as re } from "../../utils/keybind.js";
15
- var _e = /* @__PURE__ */ y('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ y('<div class="grid gap-2">'), Ee = /* @__PURE__ */ y('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ y('<span>No files matching "<!>"'), Re = /* @__PURE__ */ y('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), $e = /* @__PURE__ */ y('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), ke = /* @__PURE__ */ y("<span>This folder is empty"), Ae = /* @__PURE__ */ y("<div>"), He = /* @__PURE__ */ y('<div class="absolute top-1.5 right-1.5 w-4 h-4 rounded-full bg-primary flex items-center justify-center"><svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=3 stroke-linecap=round stroke-linejoin=round class="w-2.5 h-2.5 text-primary-foreground"><polyline points="20 6 9 17 4 12">'), qe = /* @__PURE__ */ y("<button type=button><div></div><span></span><div>");
16
- function Be(e) {
15
+ var _e = /* @__PURE__ */ y('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ y('<div class="grid gap-2">'), Ee = /* @__PURE__ */ y('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ y('<span>No files matching "<!>"'), Re = /* @__PURE__ */ y('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), $e = /* @__PURE__ */ y('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), ke = /* @__PURE__ */ y("<span>This folder is empty"), Ae = /* @__PURE__ */ y("<div>"), He = /* @__PURE__ */ y('<div class="absolute top-1.5 right-1.5 w-4 h-4 rounded-full bg-primary flex items-center justify-center"><svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=3 stroke-linecap=round stroke-linejoin=round class="w-2.5 h-2.5 text-primary-foreground"><polyline points="20 6 9 17 4 12">'), pe = /* @__PURE__ */ y("<button type=button><div></div><span></span><div>");
16
+ function qe(e) {
17
17
  const r = W(() => {
18
18
  if (!e.match || e.match.matchedIndices.length === 0)
19
19
  return [{
@@ -38,7 +38,7 @@ function Be(e) {
38
38
  get each() {
39
39
  return r();
40
40
  },
41
- children: (s) => b(B, {
41
+ children: (s) => b(q, {
42
42
  get when() {
43
43
  return s.highlight;
44
44
  },
@@ -53,7 +53,9 @@ function Be(e) {
53
53
  });
54
54
  }
55
55
  function et(e) {
56
- const r = le(), s = we(), M = () => (e.enableDragDrop ?? !0) && !!s, D = () => e.instanceId ?? "default", m = 112, d = 8, v = 180, T = 2, R = 6, [f, V] = ie(null), z = xe(f), x = W(() => {
56
+ const r = le(), s = we(), M = () => (e.enableDragDrop ?? !0) && !!s, D = () => e.instanceId ?? "default", m = 112, d = 8, v = 180, T = 2, R = 6, [f, V] = ie(null), z = xe(f, {
57
+ preserveWhenHidden: !0
58
+ }), x = W(() => {
57
59
  const n = z()?.width ?? 0;
58
60
  if (n <= 0) return T;
59
61
  const l = Math.floor((n + d) / (v + d));
@@ -62,7 +64,7 @@ function et(e) {
62
64
  count: () => Math.ceil(r.currentFiles().length / Math.max(1, x())),
63
65
  itemSize: E,
64
66
  overscan: 2
65
- }), j = () => c.range().start * x(), $ = () => Math.min(r.currentFiles().length, c.range().end * x()), k = W(() => r.currentFiles().slice(j(), $())), P = /* @__PURE__ */ new Map(), O = (n, l) => {
67
+ }), j = () => c.range().start * x(), $ = () => Math.min(r.currentFiles().length, c.range().end * x()), k = W(() => r.currentFiles().slice(j(), $())), P = /* @__PURE__ */ new Map(), B = (n, l) => {
66
68
  if (l) {
67
69
  P.set(n, l);
68
70
  return;
@@ -80,7 +82,7 @@ function et(e) {
80
82
  const l = E(), o = Math.floor(g.scrollTop / Math.max(1, l)) * Math.max(1, L), i = Math.floor(o / Math.max(1, n));
81
83
  g.scrollTop = i * l, c.onScroll(), L = n;
82
84
  });
83
- const p = (n) => {
85
+ const O = (n) => {
84
86
  if (!g) return;
85
87
  const C = Math.floor(n / Math.max(1, x())) * E(), o = C + E(), i = g.scrollTop, w = i + g.clientHeight;
86
88
  if (C < i) {
@@ -95,7 +97,7 @@ function et(e) {
95
97
  const C = l.findIndex((w) => w.id === n.targetId);
96
98
  if (C < 0) return;
97
99
  if (!P.get(n.targetId)) {
98
- p(C);
100
+ O(C);
99
101
  return;
100
102
  }
101
103
  typeof cancelAnimationFrame == "function" && I && (cancelAnimationFrame(I), I = 0);
@@ -128,14 +130,14 @@ function et(e) {
128
130
  var n = Ee(), l = n.firstChild, C = l.firstChild;
129
131
  return te(n, "pointerdown", A.onPointerDown, !0), te(n, "scroll", c.onScroll), Q((o) => {
130
132
  g = o, c.scrollRef(o), r.setScrollContainer(o);
131
- }, n), Q((o) => V(o), C), S(l, b(B, {
133
+ }, n), Q((o) => V(o), C), S(l, b(q, {
132
134
  get when() {
133
135
  return r.currentFiles().length > 0;
134
136
  },
135
137
  get fallback() {
136
138
  return (() => {
137
139
  var o = $e();
138
- return S(o, b(B, {
140
+ return S(o, b(q, {
139
141
  get when() {
140
142
  return r.filterQueryApplied().trim();
141
143
  },
@@ -160,7 +162,7 @@ function et(e) {
160
162
  get each() {
161
163
  return k();
162
164
  },
163
- children: (i) => b(Oe, {
165
+ children: (i) => b(Be, {
164
166
  item: i,
165
167
  get instanceId() {
166
168
  return D();
@@ -169,7 +171,7 @@ function et(e) {
169
171
  return M();
170
172
  },
171
173
  dragContext: s,
172
- registerTile: O
174
+ registerTile: B
173
175
  })
174
176
  })), N((i) => {
175
177
  var w = `repeat(${x()}, minmax(0, 1fr))`, _ = `${c.paddingTop()}px`, X = `${c.paddingBottom()}px`;
@@ -180,18 +182,18 @@ function et(e) {
180
182
  a: void 0
181
183
  }), o;
182
184
  }
183
- }), null), S(l, b(B, {
185
+ }), null), S(l, b(q, {
184
186
  get when() {
185
187
  return A.overlayStyle();
186
188
  },
187
189
  children: (o) => (() => {
188
190
  var i = Ae();
189
- return q(i, Pe), N((w) => ue(i, o(), w)), i;
191
+ return p(i, Pe), N((w) => ue(i, o(), w)), i;
190
192
  })()
191
- }), null), N(() => q(n, H("relative h-full min-h-0 overflow-auto", e.class))), n;
193
+ }), null), N(() => p(n, H("relative h-full min-h-0 overflow-auto", e.class))), n;
192
194
  })();
193
195
  }
194
- function Oe(e) {
196
+ function Be(e) {
195
197
  const r = le(), s = () => r.isSelected(e.item.id), M = () => r.getFilterMatchForId(e.item.id), D = ve(() => e.item), m = Se(r, D, {
196
198
  source: "grid"
197
199
  });
@@ -206,19 +208,19 @@ function Oe(e) {
206
208
  if (!e.dragContext) return !1;
207
209
  const t = e.dragContext.dragState();
208
210
  return t.isDragging ? t.draggedItems.some((a) => a.item.id === e.item.id) : !1;
209
- }, O = () => {
211
+ }, B = () => {
210
212
  x !== null && (clearTimeout(x), x = null);
211
213
  }, g = () => {
212
214
  typeof document > "u" || (document.removeEventListener("pointermove", A, !0), document.removeEventListener("pointerup", n, !0), document.removeEventListener("pointercancel", l, !0));
213
215
  }, L = () => {
214
216
  typeof document > "u" || (document.addEventListener("pointermove", A, !0), document.addEventListener("pointerup", n, !0), document.addEventListener("pointercancel", l, !0));
215
217
  }, I = (t) => {
216
- O(), g(), f && e.dragContext && e.dragContext.endDrag(t), v = null, f = !1;
218
+ B(), g(), f && e.dragContext && e.dragContext.endDrag(t), v = null, f = !1;
217
219
  };
218
220
  oe(() => {
219
221
  e.registerTile(e.item.id, null), I(!1);
220
222
  });
221
- const p = (t, a) => {
223
+ const O = (t, a) => {
222
224
  if (!e.enableDragDrop || !e.dragContext || f) return;
223
225
  f = !0, s() || r.selectItem(e.item.id, !1);
224
226
  const h = r.getSelectedItemsList(), u = (h.length > 0 && s() ? h : [e.item]).map((G) => ({
@@ -239,14 +241,14 @@ function Oe(e) {
239
241
  I(!1);
240
242
  return;
241
243
  }
242
- !c() && !f && F > V && p(t.clientX, t.clientY), f && e.dragContext && e.dragContext.updateDrag(t.clientX, t.clientY);
244
+ !c() && !f && F > V && O(t.clientX, t.clientY), f && e.dragContext && e.dragContext.updateDrag(t.clientX, t.clientY);
243
245
  }, n = (t) => {
244
246
  v === t.pointerId && (m.onPointerUp(), I(!0));
245
247
  }, l = (t) => {
246
248
  v === t.pointerId && (m.onPointerCancel(), I(!1));
247
249
  }, C = (t) => {
248
- d = t.pointerType, m.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (v = t.pointerId, T = t.clientX, R = t.clientY, f = !1, L(), c() && (O(), x = setTimeout(() => {
249
- v !== null && !f && p(T, R);
250
+ d = t.pointerType, m.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (v = t.pointerId, T = t.clientX, R = t.clientY, f = !1, L(), c() && (B(), x = setTimeout(() => {
251
+ v !== null && !f && O(T, R);
250
252
  }, z))));
251
253
  }, o = (t) => {
252
254
  d = t.pointerType, m.onPointerMove(t);
@@ -297,7 +299,7 @@ function Oe(e) {
297
299
  }));
298
300
  }, se = () => e.dragContext?.dragState(), de = () => se()?.isDragging ?? !1, K = () => E() && de() && $();
299
301
  return (() => {
300
- var t = qe(), a = t.firstChild, h = a.nextSibling, F = h.nextSibling;
302
+ var t = pe(), a = t.firstChild, h = a.nextSibling, F = h.nextSibling;
301
303
  return Q((u) => {
302
304
  e.registerTile(e.item.id, u);
303
305
  }, t), ge(t, me({
@@ -333,7 +335,7 @@ function Oe(e) {
333
335
  K() && !k() && ["bg-destructive/10 ring-2 ring-dashed ring-destructive/50"]
334
336
  );
335
337
  }
336
- }), !1, !0), S(t, b(B, {
338
+ }), !1, !0), S(t, b(q, {
337
339
  get when() {
338
340
  return s();
339
341
  },
@@ -351,7 +353,7 @@ function Oe(e) {
351
353
  return e.item;
352
354
  },
353
355
  size: "md"
354
- }), null), S(h, b(Be, {
356
+ }), null), S(h, b(qe, {
355
357
  get name() {
356
358
  return e.item.name;
357
359
  },
@@ -360,7 +362,7 @@ function Oe(e) {
360
362
  }
361
363
  })), N((u) => {
362
364
  var G = H("w-12 h-12 flex items-center justify-center rounded-lg", "relative"), J = H("block w-full min-w-0 truncate px-1 text-xs text-center", "transition-colors duration-150", De(e.item), s() && "font-medium"), Z = H("absolute inset-0 rounded-lg opacity-0 transition-opacity duration-300", "group-hover:opacity-100", "pointer-events-none"), ee = e.item.type === "folder" ? "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--warning) 8%, transparent), transparent 70%)" : "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--primary) 5%, transparent), transparent 70%)";
363
- return G !== u.e && q(a, u.e = G), J !== u.t && q(h, u.t = J), Z !== u.a && q(F, u.a = Z), ee !== u.o && Y(F, "background", u.o = ee), u;
365
+ return G !== u.e && p(a, u.e = G), J !== u.t && p(h, u.t = J), Z !== u.a && p(F, u.a = Z), ee !== u.o && Y(F, "background", u.o = ee), u;
364
366
  }, {
365
367
  e: void 0,
366
368
  t: void 0,
@@ -15,7 +15,7 @@ import { fileBrowserTouchTargetAttrs as Ee } from "./touchInteractionGuard.js";
15
15
  import { createItemContextMenuEvent as Le } from "./contextMenuEvent.js";
16
16
  import { createFileBrowserMarqueeSelection as We, FILE_BROWSER_MARQUEE_OVERLAY_CLASS as pe } from "./useFileBrowserMarqueeSelection.js";
17
17
  import { isPrimaryModKeyPressed as ae } from "../../utils/keybind.js";
18
- var ge = /* @__PURE__ */ _("<span>"), Be = /* @__PURE__ */ _('<mark class="bg-warning/40 text-inherit rounded-sm">'), He = /* @__PURE__ */ _('<div><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Modified'), Ne = /* @__PURE__ */ _('<div class=shrink-0><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Size'), le = /* @__PURE__ */ _("<div>"), qe = /* @__PURE__ */ _('<div><div class="flex items-center border-b border-border text-[11px] text-muted-foreground font-medium"><div><button type=button class="group w-full flex items-center min-w-0 px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors"><span class="flex items-center gap-2 min-w-0"><span class="flex-shrink-0 w-4 h-4"aria-hidden=true></span><span class="flex items-center min-w-0"><span class=truncate>Name</span></span></span></button></div></div><div class="relative flex-1 min-h-0 overflow-auto">'), Oe = /* @__PURE__ */ _('<span>No files matching "<!>"'), Xe = /* @__PURE__ */ _('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), Ye = /* @__PURE__ */ _('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), Ge = /* @__PURE__ */ _("<span>This folder is empty"), se = /* @__PURE__ */ _('<div class="shrink-0 px-3 py-1.5 text-left text-muted-foreground truncate">'), Ve = /* @__PURE__ */ _('<button type=button><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1.5"><span class="relative flex-shrink-0 w-4 h-4">');
18
+ var ge = /* @__PURE__ */ _("<span>"), He = /* @__PURE__ */ _('<mark class="bg-warning/40 text-inherit rounded-sm">'), Be = /* @__PURE__ */ _('<div><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Modified'), Ne = /* @__PURE__ */ _('<div class=shrink-0><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Size'), le = /* @__PURE__ */ _("<div>"), qe = /* @__PURE__ */ _('<div><div class="flex items-center border-b border-border text-[11px] text-muted-foreground font-medium"><div><button type=button class="group w-full flex items-center min-w-0 px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors"><span class="flex items-center gap-2 min-w-0"><span class="flex-shrink-0 w-4 h-4"aria-hidden=true></span><span class="flex items-center min-w-0"><span class=truncate>Name</span></span></span></button></div></div><div class="relative flex-1 min-h-0 overflow-auto">'), Oe = /* @__PURE__ */ _('<span>No files matching "<!>"'), Xe = /* @__PURE__ */ _('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), Ye = /* @__PURE__ */ _('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), Ge = /* @__PURE__ */ _("<span>This folder is empty"), se = /* @__PURE__ */ _('<div class="shrink-0 px-3 py-1.5 text-left text-muted-foreground truncate">'), Ve = /* @__PURE__ */ _('<button type=button><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1.5"><span class="relative flex-shrink-0 w-4 h-4">');
19
19
  function Ue(e) {
20
20
  const o = te(() => {
21
21
  if (!e.match || e.match.matchedIndices.length === 0)
@@ -51,7 +51,7 @@ function Ue(e) {
51
51
  return ce(() => R.text);
52
52
  },
53
53
  get children() {
54
- var M = Be();
54
+ var M = He();
55
55
  return f(M, () => R.text), M;
56
56
  }
57
57
  })
@@ -130,7 +130,7 @@ function ft(e) {
130
130
  getSelectedIds: () => [...o.selectedItems()],
131
131
  replaceSelection: (n, i) => o.replaceSelection(n, i),
132
132
  clearSelection: o.clearSelection
133
- }), B = (n) => {
133
+ }), H = (n) => {
134
134
  const i = () => o.sortConfig(), l = () => i().field === n.field;
135
135
  return (() => {
136
136
  var c = ge();
@@ -140,8 +140,10 @@ function ft(e) {
140
140
  }
141
141
  })), k(() => W(c, E("ml-1 transition-all duration-150", l() ? "opacity-100" : "opacity-0 group-hover:opacity-40"))), c;
142
142
  })();
143
- }, H = re("(min-width: 640px)"), X = re("(min-width: 768px)"), [K, Y] = ue(null), J = _e(K), L = (n, i, l) => Math.max(i, Math.min(l, n)), S = te(() => {
144
- const n = J()?.width ?? 0, i = H(), l = X(), c = o.listColumnRatios(), h = 160, v = 120, b = 80, D = 128, a = 96;
143
+ }, B = re("(min-width: 640px)"), X = re("(min-width: 768px)"), [K, Y] = ue(null), J = _e(K, {
144
+ preserveWhenHidden: !0
145
+ }), L = (n, i, l) => Math.max(i, Math.min(l, n)), S = te(() => {
146
+ const n = J()?.width ?? 0, i = B(), l = X(), c = o.listColumnRatios(), h = 160, v = 120, b = 80, D = 128, a = 96;
145
147
  if (!i || n <= 0)
146
148
  return {
147
149
  width: n,
@@ -223,7 +225,7 @@ function ft(e) {
223
225
  var n = qe(), i = n.firstChild, l = i.firstChild, c = l.firstChild, h = c.firstChild, v = h.firstChild, b = v.nextSibling;
224
226
  b.firstChild;
225
227
  var D = i.nextSibling;
226
- return ee(Y, i), c.$$click = () => A("name"), f(b, m(B, {
228
+ return ee(Y, i), c.$$click = () => A("name"), f(b, m(H, {
227
229
  field: "name"
228
230
  }), null), f(l, m(P, {
229
231
  get when() {
@@ -240,8 +242,8 @@ function ft(e) {
240
242
  return S().showModified;
241
243
  },
242
244
  get children() {
243
- var a = He(), r = a.firstChild;
244
- return r.firstChild, r.$$click = () => A("modifiedAt"), f(r, m(B, {
245
+ var a = Be(), r = a.firstChild;
246
+ return r.firstChild, r.$$click = () => A("modifiedAt"), f(r, m(H, {
245
247
  field: "modifiedAt"
246
248
  }), null), f(a, m(P, {
247
249
  get when() {
@@ -267,7 +269,7 @@ function ft(e) {
267
269
  },
268
270
  get children() {
269
271
  var a = Ne(), r = a.firstChild;
270
- return r.firstChild, r.$$click = () => A("size"), f(r, m(B, {
272
+ return r.firstChild, r.$$click = () => A("size"), f(r, m(H, {
271
273
  field: "size"
272
274
  }), null), k((t) => p(a, "width", `${q()}px`)), a;
273
275
  }
@@ -362,8 +364,8 @@ function Qe(e) {
362
364
  let g, $ = null, F = 0, z = 0, x = !1;
363
365
  const U = 5, Q = 500;
364
366
  let A = null;
365
- const [j, O] = ue(!1), y = () => g === "touch" || g === "pen", B = () => e.item.type === "folder", H = () => B() && e.enableDragDrop && e.dragContext, X = () => {
366
- if (!H() || !e.dragContext) return !1;
367
+ const [j, O] = ue(!1), y = () => g === "touch" || g === "pen", H = () => e.item.type === "folder", B = () => H() && e.enableDragDrop && e.dragContext, X = () => {
368
+ if (!B() || !e.dragContext) return !1;
367
369
  const t = e.dragContext.dragState();
368
370
  return t.isDragging ? e.dragContext.canDropOn(t.draggedItems, e.item.path, e.item, e.instanceId) : !1;
369
371
  }, K = () => {
@@ -415,7 +417,7 @@ function Qe(e) {
415
417
  }, i = (t) => {
416
418
  g = t.pointerType, C.onPointerMove(t);
417
419
  }, l = (t) => {
418
- if (!H() || !e.dragContext) return;
420
+ if (!B() || !e.dragContext) return;
419
421
  const s = e.dragContext.dragState();
420
422
  if (!s.isDragging) return;
421
423
  O(!0);
@@ -459,7 +461,7 @@ function Qe(e) {
459
461
  items: u,
460
462
  source: "list"
461
463
  }));
462
- }, D = () => e.dragContext?.dragState(), a = () => D()?.isDragging ?? !1, r = () => j() && a() && H();
464
+ }, D = () => e.dragContext?.dragState(), a = () => D()?.isDragging ?? !1, r = () => j() && a() && B();
463
465
  return (() => {
464
466
  var t = Ve(), s = t.firstChild, u = s.firstChild;
465
467
  return ee((d) => {
@@ -14,5 +14,7 @@ export interface KeepAliveStackProps {
14
14
  keepMounted?: boolean;
15
15
  /** Publish activation effects synchronously or after the visible view has painted. */
16
16
  activationMode?: 'sync' | 'after-paint';
17
+ /** Optional per-view Suspense boundary. The host owns localized loading presentation. */
18
+ renderFallback?: (id: string) => JSX.Element;
17
19
  }
18
20
  export declare function KeepAliveStack(props: KeepAliveStackProps): JSX.Element;
@@ -1,154 +1,171 @@
1
- import { insert as V, createComponent as g, effect as C, className as P, setStyleProperty as B, template as R } from "solid-js/web";
2
- import { createMemo as m, createSignal as I, untrack as k, createEffect as b, For as F, createRenderEffect as N, onCleanup as j } from "solid-js";
3
- import { ViewActivationProvider as D } from "../../context/ViewActivationContext.js";
4
- import { cn as q } from "../../utils/cn.js";
5
- import { deferAfterPaint as G } from "../../utils/defer.js";
6
- var E = /* @__PURE__ */ R("<div>");
1
+ import { insert as P, createComponent as g, effect as B, className as E, setStyleProperty as K, template as R, memo as N, setAttribute as z } from "solid-js/web";
2
+ import { createMemo as S, createSignal as k, untrack as F, createEffect as x, For as j, createRenderEffect as D, onCleanup as G, Suspense as H } from "solid-js";
3
+ import { ViewActivationProvider as J } from "../../context/ViewActivationContext.js";
4
+ import { cn as V } from "../../utils/cn.js";
5
+ import { deferAfterPaint as L } from "../../utils/defer.js";
6
+ var O = /* @__PURE__ */ R("<div>");
7
7
  function M(e) {
8
8
  return String(e ?? "").trim();
9
9
  }
10
- function z(e) {
11
- const u = [], d = /* @__PURE__ */ new Set();
10
+ function C(e) {
11
+ const u = [], s = /* @__PURE__ */ new Set();
12
12
  for (const f of e) {
13
- const o = M(f?.id);
14
- o && (d.has(o) || (d.add(o), u.push(o)));
13
+ const a = M(f?.id);
14
+ a && (s.has(a) || (s.add(a), u.push(a)));
15
15
  }
16
16
  return u;
17
17
  }
18
- function H(e, u) {
19
- const d = new Set(e), f = /* @__PURE__ */ new Map();
20
- for (const o of u) {
21
- const a = M(o?.id);
22
- a && d.has(a) && (f.has(a) || f.set(a, o));
18
+ function Q(e, u) {
19
+ const s = new Set(e), f = /* @__PURE__ */ new Map();
20
+ for (const a of u) {
21
+ const d = M(a?.id);
22
+ d && s.has(d) && (f.has(d) || f.set(d, a));
23
23
  }
24
24
  return f;
25
25
  }
26
- function J(e) {
27
- const [u, d] = I(0), [f, o] = I(!1);
28
- let a = 0;
29
- N(() => {
30
- const s = e.active(), r = e.activationMode();
31
- a += 1;
32
- const w = a;
33
- if (!s) {
34
- o(!1);
26
+ function T(e) {
27
+ const [u, s] = k(0), [f, a] = k(!1);
28
+ let d = 0;
29
+ D(() => {
30
+ const c = e.active(), t = e.activationMode();
31
+ d += 1;
32
+ const h = d;
33
+ if (!c) {
34
+ a(!1);
35
35
  return;
36
36
  }
37
37
  const v = () => {
38
- w !== a || !e.active() || k(f) || (o(!0), d((S) => S + 1));
38
+ h !== d || !e.active() || F(f) || (a(!0), s((w) => w + 1));
39
39
  };
40
- r === "after-paint" ? G(v) : v();
41
- }), j(() => {
42
- a += 1;
40
+ t === "after-paint" ? L(v) : v();
41
+ }), G(() => {
42
+ d += 1;
43
43
  });
44
- const A = k(() => ({
44
+ const A = F(() => ({
45
45
  id: e.id,
46
+ visible: e.active,
46
47
  active: f,
47
48
  activationSeq: u
48
49
  }));
49
- return g(D, {
50
+ return g(J, {
50
51
  value: A,
51
52
  get children() {
52
- var s = E();
53
- return V(s, () => e.children), C((r) => {
54
- var w = e.class, v = e.active() ? "block" : "none";
55
- return w !== r.e && P(s, r.e = w), v !== r.t && B(s, "display", r.t = v), r;
53
+ var c = O();
54
+ return P(c, (() => {
55
+ var t = N(() => !!e.renderFallback);
56
+ return () => t() ? g(H, {
57
+ get fallback() {
58
+ return e.renderFallback(e.id);
59
+ },
60
+ get children() {
61
+ return e.children;
62
+ }
63
+ }) : e.children;
64
+ })()), B((t) => {
65
+ var h = e.class, v = e.id, w = e.active() ? void 0 : "true", b = !e.active(), y = e.active() ? "block" : "none";
66
+ return h !== t.e && E(c, t.e = h), v !== t.t && z(c, "data-floe-keep-alive-view", t.t = v), w !== t.a && z(c, "aria-hidden", t.a = w), b !== t.o && (c.inert = t.o = b), y !== t.i && K(c, "display", t.i = y), t;
56
67
  }, {
57
68
  e: void 0,
58
- t: void 0
59
- }), s;
69
+ t: void 0,
70
+ a: void 0,
71
+ o: void 0,
72
+ i: void 0
73
+ }), c;
60
74
  }
61
75
  });
62
76
  }
63
- function X(e) {
64
- const u = () => e.lazyMount !== !1, d = () => e.keepMounted !== !1, f = () => e.activationMode ?? "sync", o = m(() => z(e.views)), [a, A] = I(k(() => H(z(e.views), e.views))), s = m(() => M(e.activeId));
65
- b(() => {
66
- const t = o(), n = e.views;
67
- A((i) => {
68
- let c = !1;
69
- const l = new Map(i), x = new Set(t);
70
- for (const h of l.keys())
71
- x.has(h) || (l.delete(h), c = !0);
72
- for (const h of n) {
73
- const y = M(h?.id);
74
- y && x.has(y) && (l.has(y) || (l.set(y, h), c = !0));
77
+ function _(e) {
78
+ const u = () => e.lazyMount !== !1, s = () => e.keepMounted !== !1, f = () => e.activationMode ?? "sync", a = S(() => C(e.views)), [d, A] = k(F(() => Q(C(e.views), e.views))), c = S(() => M(e.activeId));
79
+ x(() => {
80
+ const n = a(), i = e.views;
81
+ A((r) => {
82
+ let o = !1;
83
+ const l = new Map(r), q = new Set(n);
84
+ for (const m of l.keys())
85
+ q.has(m) || (l.delete(m), o = !0);
86
+ for (const m of i) {
87
+ const I = M(m?.id);
88
+ I && q.has(I) && (l.has(I) || (l.set(I, m), o = !0));
75
89
  }
76
- return c ? l : i;
90
+ return o ? l : r;
77
91
  });
78
92
  });
79
- const r = m(() => ({
80
- order: o(),
81
- byId: a()
82
- })), w = () => {
83
- if (!d()) return /* @__PURE__ */ new Set();
84
- if (!u()) return new Set(r().order);
85
- const t = s();
86
- return t ? r().byId.has(t) ? /* @__PURE__ */ new Set([t]) : /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set();
87
- }, [v, S] = I(w());
88
- b(() => {
89
- if (!d()) return;
90
- const t = new Set(r().order);
91
- S((n) => {
92
- let i = !1;
93
- const c = /* @__PURE__ */ new Set();
94
- for (const l of n) {
95
- if (!t.has(l)) {
96
- i = !0;
93
+ const t = S(() => ({
94
+ order: a(),
95
+ byId: d()
96
+ })), h = () => {
97
+ if (!s()) return /* @__PURE__ */ new Set();
98
+ if (!u()) return new Set(t().order);
99
+ const n = c();
100
+ return n ? t().byId.has(n) ? /* @__PURE__ */ new Set([n]) : /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set();
101
+ }, [v, w] = k(h());
102
+ x(() => {
103
+ if (!s()) return;
104
+ const n = new Set(t().order);
105
+ w((i) => {
106
+ let r = !1;
107
+ const o = /* @__PURE__ */ new Set();
108
+ for (const l of i) {
109
+ if (!n.has(l)) {
110
+ r = !0;
97
111
  continue;
98
112
  }
99
- c.add(l);
113
+ o.add(l);
100
114
  }
101
- return i ? c : n;
115
+ return r ? o : i;
102
116
  });
103
- }), b(() => {
104
- if (!d() || !u()) return;
105
- const t = s();
106
- t && r().byId.has(t) && S((n) => {
107
- if (n.has(t)) return n;
108
- const i = new Set(n);
109
- return i.add(t), i;
117
+ }), x(() => {
118
+ if (!s() || !u()) return;
119
+ const n = c();
120
+ n && t().byId.has(n) && w((i) => {
121
+ if (i.has(n)) return i;
122
+ const r = new Set(i);
123
+ return r.add(n), r;
110
124
  });
111
125
  });
112
- const K = m(() => {
113
- const t = r().order, n = s();
114
- if (!d())
115
- return n ? r().byId.has(n) ? [n] : [] : [];
116
- if (!u()) return t;
117
- const i = v();
118
- return t.filter((c) => i.has(c) || c === n);
119
- }), O = m(() => {
120
- const t = s();
121
- return t ? r().byId.has(t) : !1;
126
+ const b = S(() => {
127
+ const n = t().order, i = c();
128
+ if (!s())
129
+ return i ? t().byId.has(i) ? [i] : [] : [];
130
+ if (!u()) return n;
131
+ const r = v();
132
+ return n.filter((o) => r.has(o) || o === i);
133
+ }), y = S(() => {
134
+ const n = c();
135
+ return n ? t().byId.has(n) : !1;
122
136
  });
123
137
  return (() => {
124
- var t = E();
125
- return V(t, g(F, {
138
+ var n = O();
139
+ return P(n, g(j, {
126
140
  get each() {
127
- return K();
141
+ return b();
128
142
  },
129
- children: (n) => {
130
- const i = () => a().get(n);
131
- return g(J, {
132
- id: n,
133
- active: () => s() === n,
143
+ children: (i) => {
144
+ const r = () => d().get(i);
145
+ return g(T, {
146
+ id: i,
147
+ active: () => c() === i,
134
148
  activationMode: f,
149
+ get renderFallback() {
150
+ return e.renderFallback;
151
+ },
135
152
  get class() {
136
- return q("absolute inset-0", i()?.class);
153
+ return V("absolute inset-0", r()?.class);
137
154
  },
138
155
  get children() {
139
- return i()?.render();
156
+ return r()?.render();
140
157
  }
141
158
  });
142
159
  }
143
- })), C((n) => {
144
- var i = q("relative h-full min-h-0 w-full", e.class), c = O() ? "block" : "none";
145
- return i !== n.e && P(t, n.e = i), c !== n.t && B(t, "display", n.t = c), n;
160
+ })), B((i) => {
161
+ var r = V("relative h-full min-h-0 w-full", e.class), o = y() ? "block" : "none";
162
+ return r !== i.e && E(n, i.e = r), o !== i.t && K(n, "display", i.t = o), i;
146
163
  }, {
147
164
  e: void 0,
148
165
  t: void 0
149
- }), t;
166
+ }), n;
150
167
  })();
151
168
  }
152
169
  export {
153
- X as KeepAliveStack
170
+ _ as KeepAliveStack
154
171
  };
@@ -1,6 +1,9 @@
1
1
  import { type Accessor, type JSX } from 'solid-js';
2
2
  export interface ViewActivationContextValue {
3
3
  id: string;
4
+ /** Immediate presentation visibility. Custom providers default to their active accessor. */
5
+ visible?: Accessor<boolean>;
6
+ /** Activation effects may wait until after the visible content paints. */
4
7
  active: Accessor<boolean>;
5
8
  activationSeq: Accessor<number>;
6
9
  }
@@ -9,4 +12,4 @@ export interface ViewActivationProviderProps {
9
12
  children: JSX.Element;
10
13
  }
11
14
  export declare function ViewActivationProvider(props: ViewActivationProviderProps): JSX.Element;
12
- export declare function useViewActivation(): ViewActivationContextValue;
15
+ export declare function useViewActivation(): Required<ViewActivationContextValue>;
@@ -1,22 +1,25 @@
1
- import { createComponent as i } from "solid-js/web";
2
- import { untrack as n, useContext as r, createContext as c } from "solid-js";
3
- const e = c();
4
- function v(t) {
5
- const o = n(() => t.value);
6
- return i(e.Provider, {
7
- value: o,
1
+ import { createComponent as a } from "solid-js/web";
2
+ import { useContext as o, untrack as v, createContext as u } from "solid-js";
3
+ const i = u();
4
+ function w(t) {
5
+ const n = o(i), e = v(() => t.value), r = e.visible ?? e.active, c = {
6
+ ...e,
7
+ visible: () => (n?.visible() ?? !0) && r()
8
+ };
9
+ return a(i.Provider, {
10
+ value: c,
8
11
  get children() {
9
12
  return t.children;
10
13
  }
11
14
  });
12
15
  }
13
- function w() {
14
- const t = r(e);
16
+ function d() {
17
+ const t = o(i);
15
18
  if (!t)
16
19
  throw new Error("ViewActivationContext not found. Wrap your view with <ViewActivationProvider />.");
17
20
  return t;
18
21
  }
19
22
  export {
20
- v as ViewActivationProvider,
21
- w as useViewActivation
23
+ w as ViewActivationProvider,
24
+ d as useViewActivation
22
25
  };
@@ -6,5 +6,9 @@ export interface Size {
6
6
  /**
7
7
  * Track the usable content box in local CSS pixels, excluding padding and
8
8
  * scrollbars. CSS transforms on the element or its ancestors do not affect it.
9
+ * With preserveWhenHidden, retain the last measurement while there is no rendered
10
+ * box. Real zero-sized boxes still report zero; replacing the element resets it.
9
11
  */
10
- export declare function useResizeObserver(element: Accessor<HTMLElement | null | undefined>): Accessor<Size | null>;
12
+ export declare function useResizeObserver(element: Accessor<HTMLElement | null | undefined>, options?: {
13
+ preserveWhenHidden?: boolean;
14
+ }): Accessor<Size | null>;
@@ -1,29 +1,28 @@
1
- import { createSignal as u, createEffect as h, onCleanup as s } from "solid-js";
2
- function f(d) {
3
- const [a, r] = u(null, {
1
+ import { createSignal as l, createEffect as u, onCleanup as d } from "solid-js";
2
+ function g(o, a = {}) {
3
+ const [c, r] = l(null, {
4
4
  equals: (e, t) => e?.width === t?.width && e?.height === t?.height
5
5
  });
6
- return h(() => {
7
- const e = d();
8
- if (!e) {
9
- r(null);
6
+ return u(() => {
7
+ const e = o();
8
+ if (r(null), !e)
10
9
  return;
11
- }
12
10
  const t = () => {
13
- const n = e.ownerDocument.defaultView.getComputedStyle(e), i = (c) => Number.parseFloat(c) || 0;
11
+ if (a.preserveWhenHidden && e.getClientRects().length === 0) return;
12
+ const n = e.ownerDocument.defaultView.getComputedStyle(e), i = (h) => Number.parseFloat(h) || 0;
14
13
  r({
15
14
  width: Math.max(0, e.clientWidth - i(n.paddingLeft) - i(n.paddingRight)),
16
15
  height: Math.max(0, e.clientHeight - i(n.paddingTop) - i(n.paddingBottom))
17
16
  });
18
17
  };
19
18
  if (t(), typeof ResizeObserver > "u") {
20
- typeof window < "u" && (window.addEventListener("resize", t), s(() => window.removeEventListener("resize", t)));
19
+ typeof window < "u" && (window.addEventListener("resize", t), d(() => window.removeEventListener("resize", t)));
21
20
  return;
22
21
  }
23
- const o = new ResizeObserver(t);
24
- o.observe(e), s(() => o.disconnect());
25
- }), a;
22
+ const s = new ResizeObserver(t);
23
+ s.observe(e), d(() => s.disconnect());
24
+ }), c;
26
25
  }
27
26
  export {
28
- f as useResizeObserver
27
+ g as useResizeObserver
29
28
  };
@@ -1,11 +1,11 @@
1
1
  import { createSignal as f, createMemo as i, onCleanup as F } from "solid-js";
2
- function x(e) {
3
- const a = e.overscan ?? 8;
4
- let t = null, o = null, r = null;
2
+ function T(t) {
3
+ const a = t.overscan ?? 8;
4
+ let e = null, o = null, r = null;
5
5
  const [m, d] = f(0), [z, S] = f(0), c = () => {
6
- t && (d(t.scrollTop), S(t.clientHeight));
6
+ !e || e.getClientRects().length === 0 || (d(e.scrollTop), S(e.clientHeight));
7
7
  }, p = () => {
8
- if (t && r === null) {
8
+ if (e && r === null) {
9
9
  if (typeof requestAnimationFrame > "u") {
10
10
  c();
11
11
  return;
@@ -15,20 +15,20 @@ function x(e) {
15
15
  });
16
16
  }
17
17
  }, l = i(() => {
18
- const n = e.count(), s = e.itemSize(), u = m(), w = z();
18
+ const n = t.count(), s = t.itemSize(), u = m(), w = z();
19
19
  if (n <= 0 || s <= 0) return { start: 0, end: 0 };
20
20
  const b = Math.max(0, Math.floor(u / s) - a), A = Math.min(n, Math.ceil((u + w) / s) + a);
21
21
  return { start: b, end: A };
22
- }), v = i(() => l().start * e.itemSize()), h = i(() => {
23
- const n = e.count();
24
- return Math.max(0, n - l().end) * e.itemSize();
25
- }), M = i(() => e.count() * e.itemSize()), g = (n) => {
26
- t !== n && (o?.disconnect(), o = null, t = n, !(!t || typeof ResizeObserver > "u") && (o = new ResizeObserver(() => c()), o.observe(t), c()));
22
+ }), v = i(() => l().start * t.itemSize()), g = i(() => {
23
+ const n = t.count();
24
+ return Math.max(0, n - l().end) * t.itemSize();
25
+ }), h = i(() => t.count() * t.itemSize()), M = (n) => {
26
+ e !== n && (o?.disconnect(), o = null, e = n, e && (c(), !(typeof ResizeObserver > "u") && (o = new ResizeObserver(() => c()), o.observe(e))));
27
27
  };
28
28
  return F(() => {
29
29
  o?.disconnect(), r !== null && typeof cancelAnimationFrame < "u" && (cancelAnimationFrame(r), r = null);
30
- }), { scrollRef: g, onScroll: p, range: l, paddingTop: v, paddingBottom: h, totalSize: M };
30
+ }), { scrollRef: M, onScroll: p, range: l, paddingTop: v, paddingBottom: g, totalSize: h };
31
31
  }
32
32
  export {
33
- x as useVirtualWindow
33
+ T as useVirtualWindow
34
34
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.60.1",
3
+ "version": "0.60.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",