@floegence/floe-webapp-core 0.60.0 → 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.
- package/dist/app/ActivityAppsMain.d.ts +2 -0
- package/dist/app/ActivityAppsMain.js +15 -12
- package/dist/components/file-browser/Breadcrumb.js +6 -6
- package/dist/components/file-browser/FileGridView.js +29 -27
- package/dist/components/file-browser/FileListView.js +15 -13
- package/dist/components/layout/KeepAliveStack.d.ts +2 -0
- package/dist/components/layout/KeepAliveStack.js +118 -101
- package/dist/components/ui/DirectoryPicker.d.ts +1 -1
- package/dist/components/ui/DirectoryPicker.js +36 -52
- package/dist/components/ui/picker/PickerBase.d.ts +6 -0
- package/dist/components/ui/picker/PickerBase.js +345 -232
- package/dist/context/ViewActivationContext.d.ts +4 -1
- package/dist/context/ViewActivationContext.js +14 -11
- package/dist/hooks/useResizeObserver.d.ts +5 -1
- package/dist/hooks/useResizeObserver.js +13 -14
- package/dist/hooks/useVirtualWindow.js +13 -13
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
2
|
-
import { untrack as d, createMemo as
|
|
3
|
-
import { useLayout as
|
|
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
|
|
10
|
-
const n =
|
|
11
|
-
if (!d(() => !!e.views) && !
|
|
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 =
|
|
14
|
-
if (!
|
|
13
|
+
const o = () => e.activeId ? e.activeId() : n.sidebarActiveTab(), a = l(() => {
|
|
14
|
+
if (!r) return [];
|
|
15
15
|
const u = e.include ?? g;
|
|
16
|
-
return
|
|
16
|
+
return r.sidebarItems().filter((t) => u(t)).map((t) => ({
|
|
17
17
|
id: t.id,
|
|
18
|
-
render: () =>
|
|
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
|
|
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
|
-
|
|
50
|
+
A as ActivityAppsMain
|
|
48
51
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { insert as E, createComponent as a, memo as $, effect as
|
|
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,
|
|
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
|
-
})),
|
|
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),
|
|
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 &&
|
|
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
|
|
2
|
-
import { createSignal as ie, createMemo as W, createEffect as ne, onCleanup as oe, Show as
|
|
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">'),
|
|
16
|
-
function
|
|
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(
|
|
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
|
|
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(),
|
|
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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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:
|
|
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(
|
|
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
|
|
191
|
+
return p(i, Pe), N((w) => ue(i, o(), w)), i;
|
|
190
192
|
})()
|
|
191
|
-
}), null), N(() =>
|
|
193
|
+
}), null), N(() => p(n, H("relative h-full min-h-0 overflow-auto", e.class))), n;
|
|
192
194
|
})();
|
|
193
195
|
}
|
|
194
|
-
function
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
|
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 &&
|
|
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() && (
|
|
249
|
-
v !== null && !f &&
|
|
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 =
|
|
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(
|
|
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(
|
|
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 &&
|
|
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>"),
|
|
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 =
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
144
|
-
|
|
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(
|
|
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 =
|
|
244
|
-
return r.firstChild, r.$$click = () => A("modifiedAt"), f(r, m(
|
|
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(
|
|
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",
|
|
366
|
-
if (!
|
|
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 (!
|
|
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() &&
|
|
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;
|