@floegence/floe-webapp-core 0.86.60 → 0.86.62
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/components/chat/blocks/BlockRenderer.js +1 -1
- package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
- package/dist/components/chat/blocks/ImageBlock.js +1 -1
- package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
- package/dist/components/chat/status/ConnectionStatus.js +10 -10
- package/dist/components/deck/DeckCell.js +25 -25
- package/dist/components/deck/DeckContextMenu.js +20 -20
- package/dist/components/deck/DeckGrid.js +1 -1
- package/dist/components/deck/DeckTopBar.js +42 -42
- package/dist/components/deck/DropZonePreview.js +6 -6
- package/dist/components/deck/LayoutSelector.js +53 -53
- package/dist/components/deck/WidgetFrame.js +28 -28
- package/dist/components/deck/WidgetPalette.js +31 -31
- package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
- package/dist/components/file-browser/Breadcrumb.js +27 -27
- package/dist/components/file-browser/DirectoryTree.js +15 -15
- package/dist/components/file-browser/DragPreview.js +58 -58
- package/dist/components/file-browser/FileBrowser.js +17 -17
- package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
- package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
- package/dist/components/file-browser/FileContextMenu.js +47 -47
- package/dist/components/file-browser/FileGridView.js +53 -51
- package/dist/components/file-browser/FileItemDecorations.js +30 -27
- package/dist/components/file-browser/FileListView.js +114 -114
- package/dist/components/icons/index.js +1357 -1357
- package/dist/components/launchpad/Launchpad.js +14 -14
- package/dist/components/launchpad/LaunchpadGrid.js +7 -7
- package/dist/components/launchpad/LaunchpadItem.js +11 -11
- package/dist/components/launchpad/LaunchpadPagination.js +16 -16
- package/dist/components/launchpad/LaunchpadSearch.js +9 -9
- package/dist/components/layout/ActivityBar.js +52 -55
- package/dist/components/layout/BottomBar.js +17 -17
- package/dist/components/layout/MobileNavigationPanel.js +36 -36
- package/dist/components/layout/MobileTabBar.js +39 -39
- package/dist/components/layout/Panel.js +16 -16
- package/dist/components/layout/ResizeHandle.js +19 -19
- package/dist/components/layout/Shell.js +50 -50
- package/dist/components/layout/Sidebar.js +37 -36
- package/dist/components/layout/SidebarPane.js +19 -19
- package/dist/components/layout/TopBar.js +16 -16
- package/dist/components/layout/TopBarIconButton.js +15 -15
- package/dist/components/loading/LoadingOverlay.js +9 -9
- package/dist/components/loading/Skeleton.js +11 -11
- package/dist/components/ui/Button.js +36 -36
- package/dist/components/ui/Card.d.ts +11 -62
- package/dist/components/ui/Card.js +64 -237
- package/dist/components/ui/Checkbox.js +79 -79
- package/dist/components/ui/CommandPalette.js +56 -55
- package/dist/components/ui/Dialog.js +91 -93
- package/dist/components/ui/DirectoryInput.js +22 -22
- package/dist/components/ui/DirectoryPicker.js +8 -8
- package/dist/components/ui/Dropdown.js +89 -87
- package/dist/components/ui/FeedbackIndicator.js +57 -57
- package/dist/components/ui/FileOpenPicker.js +37 -37
- package/dist/components/ui/FileSavePicker.js +41 -41
- package/dist/components/ui/FloatingWindow.js +213 -205
- package/dist/components/ui/Form.js +76 -76
- package/dist/components/ui/HighlightBlock.js +14 -14
- package/dist/components/ui/Input.js +106 -109
- package/dist/components/ui/Pagination.js +86 -86
- package/dist/components/ui/Popover.d.ts +33 -0
- package/dist/components/ui/Popover.js +133 -0
- package/dist/components/ui/ProcessingIndicator.js +344 -345
- package/dist/components/ui/Progress.js +94 -97
- package/dist/components/ui/QuoteBlock.js +25 -25
- package/dist/components/ui/Radio.js +91 -91
- package/dist/components/ui/SegmentedControl.js +24 -24
- package/dist/components/ui/Stepper.js +68 -60
- package/dist/components/ui/Switch.js +25 -25
- package/dist/components/ui/Tabs.js +99 -87
- package/dist/components/ui/Tag.js +12 -9
- package/dist/components/ui/Tooltip.js +30 -30
- package/dist/components/ui/floatingPresence.d.ts +7 -0
- package/dist/components/ui/floatingPresence.js +80 -39
- package/dist/components/ui/index.d.ts +2 -1
- package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
- package/dist/components/ui/picker/PickerBase.js +107 -107
- package/dist/context/NotificationContext.js +4 -4
- package/dist/context/ThemeContext.js +71 -70
- package/dist/floe.css +205 -43
- package/dist/full.js +650 -652
- package/dist/language.css +320 -0
- package/dist/primitives.css +23 -17
- package/dist/standalone.css +1 -0
- package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
- package/dist/styles/themes/classicSemanticTokens.js +140 -138
- package/dist/styles/themes/index.d.ts +3 -1
- package/dist/styles/themes/index.js +10 -10
- package/dist/styles/themes/presets.d.ts +2 -2
- package/dist/styles/themes/presets.js +34 -34
- package/dist/styles/tokens.d.ts +152 -68
- package/dist/styles/tokens.js +87 -49
- package/dist/styles.css +1 -1
- package/dist/surface.css +161 -116
- package/dist/themes/dark.css +64 -64
- package/dist/themes/light.css +64 -64
- package/dist/ui.css +171 -255
- package/dist/ui.js +176 -178
- package/dist/utils/hotInteraction.d.ts +7 -0
- package/dist/utils/hotInteraction.js +12 -12
- package/dist/widgets/TerminalWidget.js +28 -28
- package/dist/workbench-composition.css +15 -15
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { createComponent as d, Portal as ce, spread as de, mergeProps as me, insert as M, effect as R, setStyleProperty as fe, template as C, Dynamic as Me, memo as ae, className as Ce, setAttribute as E, use as W, delegateEvents as ke } from "solid-js/web";
|
|
2
|
-
import { createSignal as z, createMemo as
|
|
2
|
+
import { createSignal as z, createMemo as le, createEffect as H, onCleanup as Q, untrack as J, on as Se, Show as F, For as he } from "solid-js";
|
|
3
3
|
import { cn as ee } from "../../utils/cn.js";
|
|
4
4
|
import { deferAfterPaint as Ee } from "../../utils/defer.js";
|
|
5
5
|
import { ChevronLeft as Le, ChevronRight as Pe } from "../icons/index.js";
|
|
6
|
-
import { focusMenuItem as X, moveMenuFocus as
|
|
6
|
+
import { focusMenuItem as X, moveMenuFocus as ue, calculateSubmenuPosition as Re, clampMenuPosition as $e } from "../ui/menuUtils.js";
|
|
7
7
|
import { LOCAL_INTERACTION_SURFACE_ATTR as ve, CANVAS_WHEEL_INTERACTIVE_ATTR as ge } from "../ui/localInteractionSurface.js";
|
|
8
8
|
import { readSurfaceSafeArea as Ie, resolveFloatingBoundary as Ae } from "../ui/surfaceFloatingBoundary.js";
|
|
9
9
|
import { resolveSurfacePortalHost as _e, readFreshInteractionSnapshot as De, projectSurfacePortalPosition as Fe, resolveSurfacePortalScale as Te, isSurfacePortalMode as Be, resolveSurfacePortalMount as je } from "../ui/dialogSurfaceScope.js";
|
|
10
10
|
import { useResolvedFloeConfig as Ve } from "../../context/FloeConfigContext.js";
|
|
11
11
|
import { useFileBrowser as He } from "./FileBrowserContext.js";
|
|
12
|
-
var ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=14 x=8 y=8 rx=2 ry=2></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">'), Oe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=16 x=5 y=4 rx=2></rect><path d="M9 4.5h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v.5a1 1 0 0 0 1 1Z">'), Ne = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z">'), qe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6">'), Ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 3v18"></path><path d="m8 7-4 4 4 4"></path><path d="m16 7 4 4-4 4">'), Ke = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2">'), Ue = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path><path d="m15 5 4 4">'), We = /* @__PURE__ */ C('<span class="shrink-0 text-
|
|
12
|
+
var ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=14 x=8 y=8 rx=2 ry=2></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">'), Oe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=16 x=5 y=4 rx=2></rect><path d="M9 4.5h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v.5a1 1 0 0 0 1 1Z">'), Ne = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z">'), qe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6">'), Ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 3v18"></path><path d="m8 7-4 4 4 4"></path><path d="m16 7 4 4-4 4">'), Ke = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2">'), Ue = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path><path d="m15 5 4 4">'), We = /* @__PURE__ */ C('<span class="shrink-0 text-caption text-[var(--floe-ink-soft)] opacity-60">'), we = /* @__PURE__ */ C("<div>"), Qe = /* @__PURE__ */ C('<div class=relative><button type=button role=menuitem><span class="min-w-0 flex-1 text-left [overflow-wrap:anywhere]">'), ye = /* @__PURE__ */ C('<div class="my-1 h-px bg-border"role=separator>'), Ge = /* @__PURE__ */ C('<button type=button role=menuitem class="flex w-full items-center gap-2 border-b px-3 py-1.5 text-xs cursor-pointer hover:bg-[var(--floe-state-selected)] focus-visible:bg-[var(--floe-state-selected)] focus:outline-none"><span></span><span class="min-w-0 flex-1 truncate text-right text-[var(--floe-ink-soft)]">');
|
|
13
13
|
const Je = (e) => (() => {
|
|
14
14
|
var t = ze();
|
|
15
15
|
return R(() => E(t, "class", e.class)), t;
|
|
@@ -136,10 +136,10 @@ function be(e, t) {
|
|
|
136
136
|
const s = e.target, a = s?.closest('[role="menu"]'), g = s?.closest('[role="menuitem"]');
|
|
137
137
|
switch (e.key) {
|
|
138
138
|
case "ArrowDown":
|
|
139
|
-
e.preventDefault(),
|
|
139
|
+
e.preventDefault(), ue(a, g, 1);
|
|
140
140
|
return;
|
|
141
141
|
case "ArrowUp":
|
|
142
|
-
e.preventDefault(),
|
|
142
|
+
e.preventDefault(), ue(a, g, -1);
|
|
143
143
|
return;
|
|
144
144
|
case "Home":
|
|
145
145
|
e.preventDefault(), X(a, "first");
|
|
@@ -177,7 +177,7 @@ function G(e, t) {
|
|
|
177
177
|
const s = e.target;
|
|
178
178
|
return typeof Element < "u" && s instanceof Element ? !!s.closest(`[data-floe-context-menu="${t}"]`) : !1;
|
|
179
179
|
}
|
|
180
|
-
function
|
|
180
|
+
function lt(e) {
|
|
181
181
|
const {
|
|
182
182
|
ownerWindow: t,
|
|
183
183
|
contextMenuId: s,
|
|
@@ -204,42 +204,42 @@ function xe(e) {
|
|
|
204
204
|
});
|
|
205
205
|
const h = () => (e.item.children?.length ?? 0) > 0, A = () => t().phase !== "closed", _ = () => te(t()), N = () => {
|
|
206
206
|
if (!a) return pe;
|
|
207
|
-
const
|
|
207
|
+
const u = a.getBoundingClientRect();
|
|
208
208
|
return {
|
|
209
|
-
x:
|
|
210
|
-
y:
|
|
209
|
+
x: u.right,
|
|
210
|
+
y: u.top
|
|
211
211
|
};
|
|
212
|
-
}, V = (
|
|
213
|
-
if (!a || !f) return
|
|
212
|
+
}, V = (u, l) => {
|
|
213
|
+
if (!a || !f) return u;
|
|
214
214
|
const p = a.getBoundingClientRect(), L = f.getBoundingClientRect();
|
|
215
|
-
return Re(p, L,
|
|
215
|
+
return Re(p, L, l);
|
|
216
216
|
}, k = () => {
|
|
217
217
|
v && (clearTimeout(v), v = void 0);
|
|
218
218
|
}, S = () => {
|
|
219
219
|
oe(w), w = void 0;
|
|
220
220
|
}, q = () => {
|
|
221
221
|
oe($), $ = void 0;
|
|
222
|
-
}, j = (
|
|
222
|
+
}, j = (u = "first") => {
|
|
223
223
|
if (!h() || e.item.disabled) return;
|
|
224
224
|
if (k(), S(), q(), e.portalLayout.touch()) {
|
|
225
|
-
e.portalLayout.enterChild([...e.path, e.item],
|
|
225
|
+
e.portalLayout.enterChild([...e.path, e.item], u);
|
|
226
226
|
return;
|
|
227
227
|
}
|
|
228
|
-
const
|
|
229
|
-
s(T("measuring",
|
|
230
|
-
if (w = void 0, O !==
|
|
228
|
+
const l = ++O, p = N(), L = e.portalLayout.boundaryRect;
|
|
229
|
+
s(T("measuring", l, p)), w = ne(() => J(() => {
|
|
230
|
+
if (w = void 0, O !== l) return;
|
|
231
231
|
const P = L(), n = a?.getBoundingClientRect(), o = f?.getBoundingClientRect();
|
|
232
232
|
if (n && o && o.width > 0 && Math.max(P.right - n.right - 8, n.left - P.left - 8) < o.width) {
|
|
233
233
|
y({
|
|
234
234
|
restoreFocus: !1
|
|
235
|
-
}), e.portalLayout.enterChild([...e.path, e.item],
|
|
235
|
+
}), e.portalLayout.enterChild([...e.path, e.item], u);
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
238
|
const r = V(p, P);
|
|
239
|
-
s(T("positioned",
|
|
239
|
+
s(T("positioned", l, p, r)), X(f, u);
|
|
240
240
|
}));
|
|
241
|
-
}, y = (
|
|
242
|
-
k(), S(), s(T("closed", ++O)), (
|
|
241
|
+
}, y = (u = {}) => {
|
|
242
|
+
k(), S(), s(T("closed", ++O)), (u.restoreFocus ?? !0) && (q(), $ = ne(() => {
|
|
243
243
|
$ = void 0, g?.focus();
|
|
244
244
|
}));
|
|
245
245
|
}, Y = () => {
|
|
@@ -252,10 +252,10 @@ function xe(e) {
|
|
|
252
252
|
restoreFocus: !1
|
|
253
253
|
});
|
|
254
254
|
}, 150));
|
|
255
|
-
}, K = (
|
|
255
|
+
}, K = (u) => {
|
|
256
256
|
if (!e.item.disabled) {
|
|
257
257
|
if (h()) {
|
|
258
|
-
|
|
258
|
+
u.preventDefault(), u.stopPropagation(), A() ? y() : j("first");
|
|
259
259
|
return;
|
|
260
260
|
}
|
|
261
261
|
e.onSelect(e.item, e.menu);
|
|
@@ -266,14 +266,14 @@ function xe(e) {
|
|
|
266
266
|
});
|
|
267
267
|
const U = () => e.portalLayout.projectPosition(t().position);
|
|
268
268
|
return (() => {
|
|
269
|
-
var
|
|
270
|
-
|
|
269
|
+
var u = Qe(), l = u.firstChild, p = l.firstChild;
|
|
270
|
+
u.addEventListener("mouseleave", b), u.addEventListener("mouseenter", Y);
|
|
271
271
|
var L = a;
|
|
272
|
-
typeof L == "function" ? W(L,
|
|
272
|
+
typeof L == "function" ? W(L, u) : a = u, l.$$keydown = (n) => {
|
|
273
273
|
e.item.disabled || !h() || (n.key === "ArrowRight" || n.key === "Enter" || n.key === " ") && (n.preventDefault(), j("first"));
|
|
274
|
-
},
|
|
274
|
+
}, l.$$click = K;
|
|
275
275
|
var P = g;
|
|
276
|
-
return typeof P == "function" ? W(P,
|
|
276
|
+
return typeof P == "function" ? W(P, l) : g = l, M(l, d(F, {
|
|
277
277
|
get when() {
|
|
278
278
|
return e.item.icon;
|
|
279
279
|
},
|
|
@@ -283,7 +283,7 @@ function xe(e) {
|
|
|
283
283
|
},
|
|
284
284
|
class: "w-3.5 h-3.5 shrink-0 opacity-60"
|
|
285
285
|
})
|
|
286
|
-
}), p), M(p, () => e.item.label), M(
|
|
286
|
+
}), p), M(p, () => e.item.label), M(l, d(F, {
|
|
287
287
|
get when() {
|
|
288
288
|
return ae(() => !!e.item.shortcut)() && !h();
|
|
289
289
|
},
|
|
@@ -291,16 +291,16 @@ function xe(e) {
|
|
|
291
291
|
var n = We();
|
|
292
292
|
return M(n, () => e.item.shortcut), n;
|
|
293
293
|
}
|
|
294
|
-
}), null), M(
|
|
294
|
+
}), null), M(l, d(F, {
|
|
295
295
|
get when() {
|
|
296
296
|
return h();
|
|
297
297
|
},
|
|
298
298
|
get children() {
|
|
299
299
|
return d(Pe, {
|
|
300
|
-
class: "w-3 h-3 shrink-0 text-
|
|
300
|
+
class: "w-3 h-3 shrink-0 text-[var(--floe-ink-soft)]"
|
|
301
301
|
});
|
|
302
302
|
}
|
|
303
|
-
}), null), M(
|
|
303
|
+
}), null), M(u, d(F, {
|
|
304
304
|
get when() {
|
|
305
305
|
return ae(() => !!A())() && h();
|
|
306
306
|
},
|
|
@@ -314,7 +314,7 @@ function xe(e) {
|
|
|
314
314
|
return typeof o == "function" ? W(o, n) : f = n, de(n, me(() => e.portalLayout.scrollViewportProps(), {
|
|
315
315
|
onScroll: () => I((r) => r + 1),
|
|
316
316
|
get class() {
|
|
317
|
-
return ee(e.portalLayout.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-
|
|
317
|
+
return ee(e.portalLayout.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-[var(--floe-line)] rounded-control shadow-[var(--floe-elevation-float)] overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", _() && "animate-in fade-in slide-in-from-left-1");
|
|
318
318
|
},
|
|
319
319
|
get "data-floe-context-menu"() {
|
|
320
320
|
return e.contextMenuId;
|
|
@@ -382,8 +382,8 @@ function xe(e) {
|
|
|
382
382
|
});
|
|
383
383
|
}
|
|
384
384
|
}), null), R((n) => {
|
|
385
|
-
var o = e.item.disabled || !h() && e.item.type === "rename" && e.menu.items.length > 1, r = ee("w-full flex items-center gap-2 px-3 py-1.5 text-xs cursor-pointer", "transition-colors duration-
|
|
386
|
-
return o !== n.e && (
|
|
385
|
+
var o = e.item.disabled || !h() && e.item.type === "rename" && e.menu.items.length > 1, r = ee("w-full flex items-center gap-2 px-3 py-1.5 text-xs cursor-pointer", "transition-colors duration-[var(--floe-duration-instant)]", "hover:bg-[var(--floe-state-selected)] hover:text-accent-foreground", "focus:outline-none focus-visible:bg-[var(--floe-state-selected)] focus-visible:text-accent-foreground", "disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-transparent", e.item.type === "delete" && "text-error hover:bg-error/10 hover:text-error"), i = e.item.id, m = e.portalLayout.touch() ? "44px" : void 0, x = h() ? "menu" : void 0, D = h() ? A() : void 0;
|
|
386
|
+
return o !== n.e && (l.disabled = n.e = o), r !== n.t && Ce(l, n.t = r), i !== n.a && E(l, "data-file-menu-item", n.a = i), m !== n.o && fe(l, "min-height", n.o = m), x !== n.i && E(l, "aria-haspopup", n.i = x), D !== n.n && E(l, "aria-expanded", n.n = D), n;
|
|
387
387
|
}, {
|
|
388
388
|
e: void 0,
|
|
389
389
|
t: void 0,
|
|
@@ -391,7 +391,7 @@ function xe(e) {
|
|
|
391
391
|
o: void 0,
|
|
392
392
|
i: void 0,
|
|
393
393
|
n: void 0
|
|
394
|
-
}),
|
|
394
|
+
}), u;
|
|
395
395
|
})();
|
|
396
396
|
}
|
|
397
397
|
function bt(e) {
|
|
@@ -399,14 +399,14 @@ function bt(e) {
|
|
|
399
399
|
let $ = null, B = "first", I;
|
|
400
400
|
const h = typeof window > "u" || typeof document > "u", A = `floe-context-menu-${rt += 1}`, [_, N] = z(T("closed"));
|
|
401
401
|
let V, k = 0;
|
|
402
|
-
const S =
|
|
402
|
+
const S = le(() => t.contextMenu() ? _e({
|
|
403
403
|
owner: e.owner
|
|
404
404
|
}) : {
|
|
405
405
|
host: null,
|
|
406
406
|
boundaryHost: null,
|
|
407
407
|
mountHost: null,
|
|
408
408
|
mode: "global"
|
|
409
|
-
}), q =
|
|
409
|
+
}), q = le(() => (t.contextMenu(), Ie())), j = () => Ae(S(), e.boundary, q()), y = {
|
|
410
410
|
mount: () => je(S()),
|
|
411
411
|
isSurfaceMode: () => Be(S()),
|
|
412
412
|
boundaryRect: () => j() ?? {
|
|
@@ -464,16 +464,16 @@ function bt(e) {
|
|
|
464
464
|
Ee(() => {
|
|
465
465
|
st(n, r, i, o);
|
|
466
466
|
});
|
|
467
|
-
},
|
|
467
|
+
}, u = (n) => {
|
|
468
468
|
if (!I) return n;
|
|
469
469
|
const o = I.getBoundingClientRect();
|
|
470
470
|
return $e(n, o, y.boundaryRect());
|
|
471
|
-
},
|
|
471
|
+
}, l = () => {
|
|
472
472
|
oe(V), V = void 0;
|
|
473
473
|
};
|
|
474
474
|
H(() => {
|
|
475
475
|
if (h || !t.contextMenu()) return;
|
|
476
|
-
const n =
|
|
476
|
+
const n = lt({
|
|
477
477
|
ownerWindow: window,
|
|
478
478
|
contextMenuId: A,
|
|
479
479
|
onDismiss: (o) => b(o === "escape")
|
|
@@ -487,11 +487,11 @@ function bt(e) {
|
|
|
487
487
|
v([]), B = "first";
|
|
488
488
|
const o = De()?.target, r = o?.closest("button, [tabindex], a[href]") ?? o;
|
|
489
489
|
$ = e.owner ?? (r instanceof HTMLElement ? r : !h && document.activeElement instanceof HTMLElement ? document.activeElement : null), g(typeof window < "u" && !!window.matchMedia?.(`${s.config.layout.mobileQuery}, (pointer: coarse)`).matches);
|
|
490
|
-
}), n || (
|
|
490
|
+
}), n || (l(), N(T("closed", ++k)));
|
|
491
491
|
}), H(() => {
|
|
492
492
|
const n = t.contextMenu();
|
|
493
493
|
if (f(), e.boundary, !n) return;
|
|
494
|
-
|
|
494
|
+
l();
|
|
495
495
|
const o = ++k, r = {
|
|
496
496
|
x: n.x,
|
|
497
497
|
y: n.y
|
|
@@ -503,7 +503,7 @@ function bt(e) {
|
|
|
503
503
|
b();
|
|
504
504
|
return;
|
|
505
505
|
}
|
|
506
|
-
const m =
|
|
506
|
+
const m = u(r);
|
|
507
507
|
N(T("positioned", o, r, m));
|
|
508
508
|
const x = B, D = Array.from(I?.querySelectorAll("[data-file-menu-item]") ?? []).find((Z) => Z.dataset.fileMenuItem === x);
|
|
509
509
|
D ? D.focus({
|
|
@@ -541,14 +541,14 @@ function bt(e) {
|
|
|
541
541
|
x?.disconnect(), re?.disconnect(), document.removeEventListener("focusin", o, !0), window.visualViewport?.removeEventListener("resize", n), window.visualViewport?.removeEventListener("scroll", n), window.removeEventListener("blur", n);
|
|
542
542
|
});
|
|
543
543
|
}), Q(() => {
|
|
544
|
-
|
|
544
|
+
l();
|
|
545
545
|
});
|
|
546
546
|
const p = () => te(_()), L = () => y.projectPosition(_().position), P = (n) => (() => {
|
|
547
547
|
var o = we(), r = I;
|
|
548
548
|
return typeof r == "function" ? W(r, o) : I = o, de(o, me(() => e.scrollViewportProps, {
|
|
549
549
|
onScroll: () => O((i) => i + 1),
|
|
550
550
|
get class() {
|
|
551
|
-
return ee(y.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-
|
|
551
|
+
return ee(y.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-[var(--floe-line)] rounded-control shadow-[var(--floe-elevation-float)] overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", p() && (a() ? "animate-in fade-in" : "animate-in fade-in zoom-in-95"));
|
|
552
552
|
},
|
|
553
553
|
"data-floe-context-menu": A
|
|
554
554
|
}, () => ({
|
|
@@ -636,5 +636,5 @@ export {
|
|
|
636
636
|
bt as FileContextMenu,
|
|
637
637
|
it as createDefaultContextMenuItems,
|
|
638
638
|
st as dispatchContextMenuAction,
|
|
639
|
-
|
|
639
|
+
lt as installContextMenuDismissListeners
|
|
640
640
|
};
|
|
@@ -13,8 +13,8 @@ import { fileBrowserTouchTargetAttrs as ye } from "./touchInteractionGuard.js";
|
|
|
13
13
|
import { createItemContextMenuEvent as Me } from "./contextMenuEvent.js";
|
|
14
14
|
import { createFileBrowserMarqueeSelection as Te, FILE_BROWSER_MARQUEE_OVERLAY_CLASS as Pe } from "./useFileBrowserMarqueeSelection.js";
|
|
15
15
|
import { isPrimaryModKeyPressed as ie } from "../../utils/keybind.js";
|
|
16
|
-
var Ee = /* @__PURE__ */ D('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ D('<div class="grid gap-2">'), $e = /* @__PURE__ */ D('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ D('<div aria-hidden=true class="grid gap-2">'),
|
|
17
|
-
const Oe = "relative flex flex-col items-center gap-2 p-3 rounded-
|
|
16
|
+
var Ee = /* @__PURE__ */ D('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ D('<div class="grid gap-2">'), $e = /* @__PURE__ */ D('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ D('<div aria-hidden=true class="grid gap-2">'), ke = /* @__PURE__ */ D('<div data-file-browser-placeholder class="relative flex flex-col items-center gap-2 p-3 rounded-control h-28"><div class="w-12 h-12 flex items-center justify-center rounded-control relative"></div><span class="block w-full min-w-0 truncate px-1 text-xs text-center">'), Re = /* @__PURE__ */ D('<span>No files matching "<!>"'), Ae = /* @__PURE__ */ D('<button type=button class="px-2 py-1 rounded-xs bg-[var(--floe-well)] hover:bg-[var(--floe-state-press)] transition-colors">Clear Filter'), pe = /* @__PURE__ */ D('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-[var(--floe-ink-soft)]">'), He = /* @__PURE__ */ D("<span>This folder is empty"), qe = /* @__PURE__ */ D("<div>"), Be = /* @__PURE__ */ D('<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">'), Ge = /* @__PURE__ */ D('<button type=button><div class="w-12 h-12 flex items-center justify-center rounded-control relative"></div><span></span><div>');
|
|
17
|
+
const Oe = "relative flex flex-col items-center gap-2 p-3 rounded-control h-28", Xe = "block w-full min-w-0 truncate px-1 text-xs text-center";
|
|
18
18
|
function Ne(e) {
|
|
19
19
|
const a = W(() => {
|
|
20
20
|
if (!e.match || e.match.matchedIndices.length === 0)
|
|
@@ -55,18 +55,18 @@ function Ne(e) {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
function ot(e) {
|
|
58
|
-
const a = le(), d = be(), M = () => (e.enableDragDrop ?? !0) && !!d, _ = () => e.instanceId ?? "default", h = 112, u = 8, b = 180, T = 2,
|
|
58
|
+
const a = le(), d = be(), M = () => (e.enableDragDrop ?? !0) && !!d, _ = () => e.instanceId ?? "default", h = 112, u = 8, b = 180, T = 2, k = 6, [v, z] = ae(null), V = Ie(v, {
|
|
59
59
|
preserveWhenHidden: !0
|
|
60
60
|
}), m = W(() => {
|
|
61
61
|
const n = V()?.width ?? 0;
|
|
62
62
|
if (n <= 0) return T;
|
|
63
63
|
const l = Math.floor((n + u) / (b + u));
|
|
64
|
-
return Math.max(T, Math.min(
|
|
65
|
-
}), F = () => h + u,
|
|
64
|
+
return Math.max(T, Math.min(k, l));
|
|
65
|
+
}), F = () => h + u, c = we({
|
|
66
66
|
count: () => Math.ceil(a.currentFiles().length / Math.max(1, m())),
|
|
67
67
|
itemSize: F,
|
|
68
68
|
overscan: 2
|
|
69
|
-
}), U = () =>
|
|
69
|
+
}), U = () => c.range().start * m(), R = () => Math.min(a.currentFiles().length, c.range().end * m()), A = W(() => a.currentFiles().slice(U(), R())), P = /* @__PURE__ */ new Map(), B = (n, l) => {
|
|
70
70
|
if (l) {
|
|
71
71
|
P.set(n, l);
|
|
72
72
|
return;
|
|
@@ -82,21 +82,21 @@ function ot(e) {
|
|
|
82
82
|
}
|
|
83
83
|
if (n === $) return;
|
|
84
84
|
const l = F(), i = Math.floor(f.scrollTop / Math.max(1, l)) * Math.max(1, $), r = Math.floor(i / Math.max(1, n));
|
|
85
|
-
f.scrollTop = r * l,
|
|
85
|
+
f.scrollTop = r * l, c.onScroll(), $ = n;
|
|
86
86
|
});
|
|
87
87
|
const G = (n) => {
|
|
88
88
|
if (!f) return;
|
|
89
|
-
const S = Math.floor(n / Math.max(1, m())) * F(), i = S + F(), r = f.scrollTop,
|
|
89
|
+
const S = Math.floor(n / Math.max(1, m())) * F(), i = S + F(), r = f.scrollTop, s = r + f.clientHeight;
|
|
90
90
|
if (S < r) {
|
|
91
|
-
f.scrollTop = S,
|
|
91
|
+
f.scrollTop = S, c.onScroll();
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
|
-
i >
|
|
94
|
+
i > s && (f.scrollTop = Math.max(0, i - f.clientHeight), c.onScroll());
|
|
95
95
|
};
|
|
96
96
|
ne(() => {
|
|
97
97
|
const n = a.revealRequest(), l = a.currentFiles();
|
|
98
|
-
if (m(),
|
|
99
|
-
const S = l.findIndex((
|
|
98
|
+
if (m(), A(), !n) return;
|
|
99
|
+
const S = l.findIndex((s) => s.id === n.targetId);
|
|
100
100
|
if (S < 0) return;
|
|
101
101
|
if (!P.get(n.targetId)) {
|
|
102
102
|
G(S);
|
|
@@ -130,8 +130,8 @@ function ot(e) {
|
|
|
130
130
|
});
|
|
131
131
|
return (() => {
|
|
132
132
|
var n = $e(), l = n.firstChild, S = l.firstChild;
|
|
133
|
-
return te(n, "pointerdown", p.onPointerDown, !0), te(n, "scroll",
|
|
134
|
-
f = i,
|
|
133
|
+
return te(n, "pointerdown", p.onPointerDown, !0), te(n, "scroll", c.onScroll), Q((i) => {
|
|
134
|
+
f = i, c.scrollRef(i), a.setScrollContainer(i);
|
|
135
135
|
}, n), Q((i) => z(i), S), w(l, g(L, {
|
|
136
136
|
get when() {
|
|
137
137
|
return !e.initializing;
|
|
@@ -146,11 +146,11 @@ function ot(e) {
|
|
|
146
146
|
});
|
|
147
147
|
},
|
|
148
148
|
children: () => (() => {
|
|
149
|
-
var r =
|
|
150
|
-
return w(
|
|
151
|
-
class: "h-10 w-10 rounded-
|
|
149
|
+
var r = ke(), s = r.firstChild, y = s.nextSibling;
|
|
150
|
+
return w(s, g(re, {
|
|
151
|
+
class: "h-10 w-10 rounded-control"
|
|
152
152
|
})), w(y, g(re, {
|
|
153
|
-
class: "mx-auto h-
|
|
153
|
+
class: "mx-auto h-[var(--floe-line-caption)] w-24 max-w-full"
|
|
154
154
|
})), r;
|
|
155
155
|
})()
|
|
156
156
|
})), H((r) => q(i, "grid-template-columns", `repeat(${m()}, minmax(0, 1fr))`)), i;
|
|
@@ -173,10 +173,10 @@ function ot(e) {
|
|
|
173
173
|
},
|
|
174
174
|
get children() {
|
|
175
175
|
return [(() => {
|
|
176
|
-
var r =
|
|
176
|
+
var r = Re(), s = r.firstChild, y = s.nextSibling;
|
|
177
177
|
return y.nextSibling, w(r, () => a.filterQueryApplied(), y), r;
|
|
178
178
|
})(), (() => {
|
|
179
|
-
var r =
|
|
179
|
+
var r = Ae();
|
|
180
180
|
return r.$$click = () => a.setFilterQuery(""), r;
|
|
181
181
|
})()];
|
|
182
182
|
}
|
|
@@ -187,7 +187,7 @@ function ot(e) {
|
|
|
187
187
|
var i = Fe();
|
|
188
188
|
return w(i, g(K, {
|
|
189
189
|
get each() {
|
|
190
|
-
return
|
|
190
|
+
return A();
|
|
191
191
|
},
|
|
192
192
|
children: (r) => g(Ye, {
|
|
193
193
|
item: r,
|
|
@@ -201,8 +201,8 @@ function ot(e) {
|
|
|
201
201
|
registerTile: B
|
|
202
202
|
})
|
|
203
203
|
})), H((r) => {
|
|
204
|
-
var
|
|
205
|
-
return
|
|
204
|
+
var s = `repeat(${m()}, minmax(0, 1fr))`, y = `${c.paddingTop()}px`, O = `${c.paddingBottom()}px`;
|
|
205
|
+
return s !== r.e && q(i, "grid-template-columns", r.e = s), y !== r.t && q(i, "padding-top", r.t = y), O !== r.a && q(i, "padding-bottom", r.a = O), r;
|
|
206
206
|
}, {
|
|
207
207
|
e: void 0,
|
|
208
208
|
t: void 0,
|
|
@@ -217,11 +217,11 @@ function ot(e) {
|
|
|
217
217
|
},
|
|
218
218
|
children: (i) => (() => {
|
|
219
219
|
var r = qe();
|
|
220
|
-
return Y(r, Pe), H((
|
|
220
|
+
return Y(r, Pe), H((s) => ue(r, i(), s)), r;
|
|
221
221
|
})()
|
|
222
222
|
}), null), H((i) => {
|
|
223
|
-
var r = N("relative h-full min-h-0 overflow-auto", e.class),
|
|
224
|
-
return r !== i.e && Y(n, i.e = r),
|
|
223
|
+
var r = N("relative h-full min-h-0 overflow-auto", e.class), s = e.initializing || void 0;
|
|
224
|
+
return r !== i.e && Y(n, i.e = r), s !== i.t && ge(n, "aria-busy", i.t = s), i;
|
|
225
225
|
}, {
|
|
226
226
|
e: void 0,
|
|
227
227
|
t: void 0
|
|
@@ -232,11 +232,11 @@ function Ye(e) {
|
|
|
232
232
|
const a = le(), d = () => a.isSelected(e.item.id), M = () => a.getFilterMatchForId(e.item.id), _ = xe(() => e.item), h = _e(a, _, {
|
|
233
233
|
source: "grid"
|
|
234
234
|
});
|
|
235
|
-
let u, b = null, T = 0,
|
|
235
|
+
let u, b = null, T = 0, k = 0, v = !1;
|
|
236
236
|
const z = 5, V = 500;
|
|
237
237
|
let m = null;
|
|
238
|
-
const [F, j] = ae(!1),
|
|
239
|
-
if (!
|
|
238
|
+
const [F, j] = ae(!1), c = () => u === "touch" || u === "pen", U = () => e.item.type === "folder", R = () => U() && e.enableDragDrop && e.dragContext, A = () => {
|
|
239
|
+
if (!R() || !e.dragContext) return !1;
|
|
240
240
|
const t = e.dragContext.dragState();
|
|
241
241
|
return t.isDragging ? e.dragContext.canDropOn(t.draggedItems, e.item.path, e.item, e.instanceId) : !1;
|
|
242
242
|
}, P = () => {
|
|
@@ -263,7 +263,7 @@ function Ye(e) {
|
|
|
263
263
|
sourceInstanceId: e.instanceId,
|
|
264
264
|
sourcePath: a.currentPath()
|
|
265
265
|
}));
|
|
266
|
-
if (
|
|
266
|
+
if (c() && "vibrate" in navigator)
|
|
267
267
|
try {
|
|
268
268
|
navigator.vibrate(50);
|
|
269
269
|
} catch {
|
|
@@ -271,24 +271,24 @@ function Ye(e) {
|
|
|
271
271
|
e.dragContext.startDrag(I, t, o);
|
|
272
272
|
}, p = (t) => {
|
|
273
273
|
if (b !== t.pointerId) return;
|
|
274
|
-
const o = t.clientX - T, x = t.clientY -
|
|
275
|
-
if (
|
|
274
|
+
const o = t.clientX - T, x = t.clientY - k, E = Math.sqrt(o * o + x * x);
|
|
275
|
+
if (c() && !v && E > 10) {
|
|
276
276
|
C(!1);
|
|
277
277
|
return;
|
|
278
278
|
}
|
|
279
|
-
!
|
|
279
|
+
!c() && !v && E > z && G(t.clientX, t.clientY), v && e.dragContext && e.dragContext.updateDrag(t.clientX, t.clientY);
|
|
280
280
|
}, n = (t) => {
|
|
281
281
|
b === t.pointerId && (h.onPointerUp(), C(!0));
|
|
282
282
|
}, l = (t) => {
|
|
283
283
|
b === t.pointerId && (h.onPointerCancel(), C(!1));
|
|
284
284
|
}, S = (t) => {
|
|
285
|
-
u = t.pointerType, h.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (b = t.pointerId, T = t.clientX,
|
|
286
|
-
b !== null && !v && G(T,
|
|
285
|
+
u = t.pointerType, h.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (b = t.pointerId, T = t.clientX, k = t.clientY, v = !1, $(), c() && (B(), m = setTimeout(() => {
|
|
286
|
+
b !== null && !v && G(T, k);
|
|
287
287
|
}, V))));
|
|
288
288
|
}, i = (t) => {
|
|
289
289
|
u = t.pointerType, h.onPointerMove(t);
|
|
290
290
|
}, r = (t) => {
|
|
291
|
-
if (!
|
|
291
|
+
if (!R() || !e.dragContext) return;
|
|
292
292
|
const o = e.dragContext.dragState();
|
|
293
293
|
if (!o.isDragging) return;
|
|
294
294
|
j(!0);
|
|
@@ -298,7 +298,7 @@ function Ye(e) {
|
|
|
298
298
|
targetPath: e.item.path,
|
|
299
299
|
targetItem: e.item
|
|
300
300
|
}, x, I);
|
|
301
|
-
},
|
|
301
|
+
}, s = (t) => {
|
|
302
302
|
if (!e.dragContext) return;
|
|
303
303
|
j(!1);
|
|
304
304
|
const o = e.dragContext.dragState();
|
|
@@ -309,7 +309,7 @@ function Ye(e) {
|
|
|
309
309
|
return;
|
|
310
310
|
}
|
|
311
311
|
if (!h.consumeClickSuppression(t)) {
|
|
312
|
-
if (
|
|
312
|
+
if (c()) {
|
|
313
313
|
a.openItem(e.item);
|
|
314
314
|
return;
|
|
315
315
|
}
|
|
@@ -320,9 +320,9 @@ function Ye(e) {
|
|
|
320
320
|
a.selectItem(e.item.id, ie(t));
|
|
321
321
|
}
|
|
322
322
|
}, O = () => {
|
|
323
|
-
|
|
324
|
-
},
|
|
325
|
-
if (t.preventDefault(), t.stopPropagation(),
|
|
323
|
+
c() || a.openItem(e.item);
|
|
324
|
+
}, se = (t) => {
|
|
325
|
+
if (t.preventDefault(), t.stopPropagation(), c()) return;
|
|
326
326
|
a.ensureContextMenuSelection(e.item.id);
|
|
327
327
|
const o = a.getSelectedItemsList(), x = o.length > 0 ? o : [e.item];
|
|
328
328
|
a.showContextMenu(Me({
|
|
@@ -332,7 +332,7 @@ function Ye(e) {
|
|
|
332
332
|
items: x,
|
|
333
333
|
source: "grid"
|
|
334
334
|
}));
|
|
335
|
-
},
|
|
335
|
+
}, ce = () => e.dragContext?.dragState(), de = () => ce()?.isDragging ?? !1, J = () => F() && de() && R();
|
|
336
336
|
return (() => {
|
|
337
337
|
var t = Ge(), o = t.firstChild, x = o.nextSibling, E = x.nextSibling;
|
|
338
338
|
return Q((I) => {
|
|
@@ -350,25 +350,27 @@ function Ye(e) {
|
|
|
350
350
|
},
|
|
351
351
|
onClick: y,
|
|
352
352
|
onDblClick: O,
|
|
353
|
-
onContextMenu:
|
|
353
|
+
onContextMenu: se,
|
|
354
354
|
onPointerDown: S,
|
|
355
355
|
onPointerMove: i,
|
|
356
356
|
onPointerEnter: r,
|
|
357
|
-
onPointerLeave:
|
|
357
|
+
onPointerLeave: s,
|
|
358
358
|
get class() {
|
|
359
359
|
return N(
|
|
360
360
|
Oe,
|
|
361
361
|
"group cursor-pointer",
|
|
362
|
-
"transition-
|
|
363
|
-
|
|
362
|
+
"transition-[background-color,transform,opacity,box-shadow] duration-[var(--floe-duration-fast)] ease-out",
|
|
363
|
+
/* Hover is the fill, not a zoom: a tile that grows under the pointer
|
|
364
|
+
* makes the grid shift. Press settles on the shared scale step. */
|
|
365
|
+
"hover:bg-[var(--floe-state-selected)]",
|
|
364
366
|
"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
365
|
-
"active:scale-[
|
|
366
|
-
d() && "bg-
|
|
367
|
+
"active:scale-[var(--floe-press-scale)]",
|
|
368
|
+
d() && "bg-[var(--floe-state-selected)] ring-2 ring-primary/50",
|
|
367
369
|
// Drag state styling - being dragged items become translucent and shrink
|
|
368
370
|
P() && "opacity-40 scale-90",
|
|
369
371
|
// Drop target styling - enhanced visual feedback for folders
|
|
370
|
-
J() &&
|
|
371
|
-
J() && !
|
|
372
|
+
J() && A() && ["bg-primary/15 ring-2 ring-primary/60", "scale-105 shadow-[var(--floe-elevation-float)]"],
|
|
373
|
+
J() && !A() && ["bg-destructive/10 ring-2 ring-dashed ring-destructive/50"]
|
|
372
374
|
);
|
|
373
375
|
}
|
|
374
376
|
}), !1, !0), w(t, g(L, {
|
|
@@ -397,7 +399,7 @@ function Ye(e) {
|
|
|
397
399
|
return M();
|
|
398
400
|
}
|
|
399
401
|
})), H((I) => {
|
|
400
|
-
var X = N(Xe, "transition-colors duration-
|
|
402
|
+
var X = N(Xe, "transition-colors duration-[var(--floe-duration-fast)]", Se(e.item), d() && "font-medium"), Z = N("absolute inset-0 rounded-control opacity-0 transition-opacity duration-[var(--floe-duration-slow)]", "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%)";
|
|
401
403
|
return X !== I.e && Y(x, I.e = X), Z !== I.t && Y(E, I.t = Z), ee !== I.a && q(E, "background", I.a = ee), I;
|
|
402
404
|
}, {
|
|
403
405
|
e: void 0,
|