@floegence/floe-webapp-core 0.35.47 → 0.35.49
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/file-browser/FileBrowser.js +38 -37
- package/dist/components/file-browser/FileBrowserContext.js +359 -297
- package/dist/components/file-browser/FileGridView.js +190 -167
- package/dist/components/file-browser/FileListView.js +328 -307
- package/dist/components/file-browser/index.d.ts +1 -1
- package/dist/components/file-browser/longPressContextMenu.js +32 -33
- package/dist/components/file-browser/types.d.ts +10 -0
- package/dist/components/file-browser/useFileBrowserMarqueeSelection.d.ts +16 -0
- package/dist/components/file-browser/useFileBrowserMarqueeSelection.js +69 -0
- package/dist/floe.css +8 -0
- package/dist/full.js +66 -64
- package/dist/index.js +53 -51
- package/dist/styles.css +1 -1
- package/dist/utils/keybind.d.ts +2 -0
- package/dist/utils/keybind.js +24 -16
- package/package.json +1 -1
|
@@ -8,4 +8,4 @@ export { Breadcrumb, type BreadcrumbProps } from './Breadcrumb';
|
|
|
8
8
|
export { FileBrowserToolbar, type FileBrowserToolbarProps } from './FileBrowserToolbar';
|
|
9
9
|
export { FileBrowserDragPreview } from './DragPreview';
|
|
10
10
|
export { FolderIcon, FolderOpenIcon, SymlinkFolderIcon, SymlinkFolderOpenIcon, FileIcon, SymlinkFileIcon, BrokenSymlinkIcon, CodeFileIcon, JavaScriptFileIcon, TypeScriptFileIcon, ShellScriptFileIcon, ImageFileIcon, DocumentFileIcon, ConfigFileIcon, StyleFileIcon, FileItemIcon, getFileIcon, resolveFileItemIcon, } from './FileIcons';
|
|
11
|
-
export type { FileItem, FileItemIconOverride, FileItemLinkKind, FileItemLinkTargetType, FileItemLinkMeta, FileBrowserRevealClearFilter, FileBrowserRevealRequest, ViewMode, SortField, SortDirection, SortConfig, FileListColumnRatios, FileBrowserContextValue, ContextMenuActionType, ContextMenuTargetKind, ContextMenuSource, ContextMenuDirectory, ContextMenuItem, ContextMenuEvent, ContextMenuCallbacks, OptimisticUpdateType, OptimisticRemove, OptimisticUpdate, OptimisticInsert, OptimisticOperation, ScrollPosition, } from './types';
|
|
11
|
+
export type { FileItem, FileItemIconOverride, FileItemLinkKind, FileItemLinkTargetType, FileItemLinkMeta, FileBrowserRevealClearFilter, FileBrowserRevealRequest, ViewMode, SortField, SortDirection, SortConfig, FileListColumnRatios, FileBrowserContextValue, ContextMenuActionType, ContextMenuTargetKind, ContextMenuSource, ContextMenuDirectory, ContextMenuItem, ContextMenuEvent, ContextMenuCallbacks, OptimisticUpdateType, OptimisticRemove, OptimisticUpdate, OptimisticInsert, OptimisticOperation, ReplaceSelectionOptions, ScrollPosition, } from './types';
|
|
@@ -1,55 +1,54 @@
|
|
|
1
1
|
import { onCleanup as v } from "solid-js";
|
|
2
2
|
import { createItemContextMenuEvent as p } from "./contextMenuEvent.js";
|
|
3
|
-
function
|
|
4
|
-
const
|
|
5
|
-
let
|
|
6
|
-
const
|
|
7
|
-
|
|
3
|
+
function O(c, r, u) {
|
|
4
|
+
const d = u?.delayMs ?? 500, m = u?.moveTolerancePx ?? 10, w = u?.selectOnOpen ?? !0, f = u?.source ?? "list";
|
|
5
|
+
let n = null, s = null, i = !1;
|
|
6
|
+
const l = () => {
|
|
7
|
+
n !== null && typeof window < "u" && (window.clearTimeout(n), n = null), s = null;
|
|
8
8
|
}, a = () => {
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
if (!
|
|
12
|
-
|
|
9
|
+
i = !0;
|
|
10
|
+
}, C = (e, t) => {
|
|
11
|
+
if (!w) {
|
|
12
|
+
c.showContextMenu(p({
|
|
13
13
|
x: e,
|
|
14
|
-
y:
|
|
14
|
+
y: t,
|
|
15
15
|
triggerItem: r,
|
|
16
16
|
items: [r],
|
|
17
17
|
source: f
|
|
18
18
|
})), a();
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
s.showContextMenu(p({
|
|
21
|
+
c.ensureContextMenuSelection(r.id);
|
|
22
|
+
const o = c.getSelectedItemsList(), h = o.length > 0 ? o : [r];
|
|
23
|
+
c.showContextMenu(p({
|
|
25
24
|
x: e,
|
|
26
|
-
y:
|
|
25
|
+
y: t,
|
|
27
26
|
triggerItem: r,
|
|
28
27
|
items: h,
|
|
29
28
|
source: f
|
|
30
29
|
})), a();
|
|
30
|
+
}, x = (e) => {
|
|
31
|
+
if (i = !1, e.pointerType === "mouse" || typeof window > "u") return;
|
|
32
|
+
l(), s = { x: e.clientX, y: e.clientY };
|
|
33
|
+
const t = e.clientX, o = e.clientY;
|
|
34
|
+
n = window.setTimeout(() => {
|
|
35
|
+
n = null, C(t, o);
|
|
36
|
+
}, d);
|
|
31
37
|
}, M = (e) => {
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
t = null, y(n, o);
|
|
37
|
-
}, m);
|
|
38
|
-
}, g = (e) => {
|
|
39
|
-
if (t === null || !l) return;
|
|
40
|
-
const n = e.clientX - l.x, o = e.clientY - l.y;
|
|
41
|
-
Math.hypot(n, o) > w && (c(), a());
|
|
42
|
-
}, x = () => c(), P = () => c(), I = (e) => u ? (u = !1, e.preventDefault(), e.stopPropagation(), !0) : !1;
|
|
38
|
+
if (n === null || !s) return;
|
|
39
|
+
const t = e.clientX - s.x, o = e.clientY - s.y;
|
|
40
|
+
Math.hypot(t, o) > m && (l(), a());
|
|
41
|
+
}, y = () => l(), g = () => l(), P = (e) => i ? (i = !1, e.preventDefault(), e.stopPropagation(), !0) : !1;
|
|
43
42
|
return v(() => {
|
|
44
|
-
|
|
43
|
+
l();
|
|
45
44
|
}), {
|
|
46
|
-
onPointerDown:
|
|
47
|
-
onPointerMove:
|
|
48
|
-
onPointerUp:
|
|
49
|
-
onPointerCancel:
|
|
50
|
-
consumeClickSuppression:
|
|
45
|
+
onPointerDown: x,
|
|
46
|
+
onPointerMove: M,
|
|
47
|
+
onPointerUp: y,
|
|
48
|
+
onPointerCancel: g,
|
|
49
|
+
consumeClickSuppression: P
|
|
51
50
|
};
|
|
52
51
|
}
|
|
53
52
|
export {
|
|
54
|
-
|
|
53
|
+
O as createLongPressContextMenuHandlers
|
|
55
54
|
};
|
|
@@ -179,6 +179,11 @@ export interface ScrollPosition {
|
|
|
179
179
|
top: number;
|
|
180
180
|
left: number;
|
|
181
181
|
}
|
|
182
|
+
export interface ReplaceSelectionOptions {
|
|
183
|
+
anchorId?: string | null;
|
|
184
|
+
lastInteractedId?: string | null;
|
|
185
|
+
preserveAnchor?: boolean;
|
|
186
|
+
}
|
|
182
187
|
/**
|
|
183
188
|
* Represents an item being dragged in a file browser
|
|
184
189
|
*/
|
|
@@ -222,7 +227,12 @@ export interface FileBrowserContextValue {
|
|
|
222
227
|
navigateTo: (item: FileItem) => void;
|
|
223
228
|
homeLabel: Accessor<string>;
|
|
224
229
|
selectedItems: Accessor<Set<string>>;
|
|
230
|
+
selectionAnchorId: Accessor<string | null>;
|
|
231
|
+
lastInteractedId: Accessor<string | null>;
|
|
225
232
|
selectItem: (id: string, multi?: boolean) => void;
|
|
233
|
+
selectRangeTo: (id: string, additive?: boolean) => void;
|
|
234
|
+
replaceSelection: (ids: Iterable<string>, options?: ReplaceSelectionOptions) => void;
|
|
235
|
+
ensureContextMenuSelection: (id: string) => void;
|
|
226
236
|
clearSelection: () => void;
|
|
227
237
|
isSelected: (id: string) => boolean;
|
|
228
238
|
viewMode: Accessor<ViewMode>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Accessor } from 'solid-js';
|
|
2
|
+
import type { ReplaceSelectionOptions } from './types';
|
|
3
|
+
export interface FileBrowserMarqueeSelectionOptions {
|
|
4
|
+
getContainer: () => HTMLElement | null;
|
|
5
|
+
getVisibleItemIdsInOrder: () => string[];
|
|
6
|
+
getElementForId: (id: string) => HTMLElement | null | undefined;
|
|
7
|
+
getSelectedIds: () => string[];
|
|
8
|
+
replaceSelection: (ids: string[], options?: ReplaceSelectionOptions) => void;
|
|
9
|
+
clearSelection: () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface FileBrowserMarqueeSelectionResult {
|
|
12
|
+
overlayStyle: Accessor<Record<string, string> | null>;
|
|
13
|
+
onPointerDown: (event: PointerEvent) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const FILE_BROWSER_MARQUEE_OVERLAY_CLASS = "pointer-events-none fixed z-40 rounded-md floe-file-browser-marquee-overlay";
|
|
16
|
+
export declare function createFileBrowserMarqueeSelection(options: FileBrowserMarqueeSelectionOptions): FileBrowserMarqueeSelectionResult;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createSignal as R, createMemo as b, onCleanup as y } from "solid-js";
|
|
2
|
+
import { isPrimaryModKeyPressed as L } from "../../utils/keybind.js";
|
|
3
|
+
const w = 4, G = "pointer-events-none fixed z-40 rounded-md floe-file-browser-marquee-overlay";
|
|
4
|
+
function x(t, n, l, o) {
|
|
5
|
+
const r = Math.min(t, l), c = Math.min(n, o);
|
|
6
|
+
return {
|
|
7
|
+
left: r,
|
|
8
|
+
top: c,
|
|
9
|
+
width: Math.abs(l - t),
|
|
10
|
+
height: Math.abs(o - n)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function P(t, n) {
|
|
14
|
+
return !(t.left + t.width < n.left || n.right < t.left || t.top + t.height < n.top || n.bottom < t.top);
|
|
15
|
+
}
|
|
16
|
+
function _(t) {
|
|
17
|
+
return !(!(t instanceof Element) || t.closest("[data-file-browser-item-id]") || t.closest('button, input, textarea, select, a, [role="button"], [role="menuitem"]'));
|
|
18
|
+
}
|
|
19
|
+
function C(t) {
|
|
20
|
+
const [n, l] = R(null);
|
|
21
|
+
let o = null, r = !1, c = [], s = 0, a = 0, u = !1;
|
|
22
|
+
const g = () => {
|
|
23
|
+
typeof document > "u" || (document.removeEventListener("pointermove", m, !0), document.removeEventListener("pointerup", p, !0), document.removeEventListener("pointercancel", h, !0));
|
|
24
|
+
}, f = () => {
|
|
25
|
+
g(), o = null, r = !1, c = [], s = 0, a = 0, u = !1, l(null);
|
|
26
|
+
}, E = (e) => {
|
|
27
|
+
const d = t.getVisibleItemIdsInOrder().filter((M) => {
|
|
28
|
+
const I = t.getElementForId(M);
|
|
29
|
+
return I ? P(e, I.getBoundingClientRect()) : !1;
|
|
30
|
+
}), i = r ? [...c, ...d] : d;
|
|
31
|
+
t.replaceSelection(i, {
|
|
32
|
+
anchorId: r ? void 0 : i[0] ?? null,
|
|
33
|
+
lastInteractedId: i[i.length - 1] ?? null,
|
|
34
|
+
preserveAnchor: r
|
|
35
|
+
});
|
|
36
|
+
}, m = (e) => {
|
|
37
|
+
if (o !== e.pointerId) return;
|
|
38
|
+
const d = Math.hypot(e.clientX - s, e.clientY - a);
|
|
39
|
+
if (!u && d < w)
|
|
40
|
+
return;
|
|
41
|
+
e.preventDefault(), u = !0;
|
|
42
|
+
const i = x(s, a, e.clientX, e.clientY);
|
|
43
|
+
l(i), E(i);
|
|
44
|
+
}, p = (e) => {
|
|
45
|
+
o === e.pointerId && (!u && !r && t.clearSelection(), f());
|
|
46
|
+
}, h = (e) => {
|
|
47
|
+
o === e.pointerId && f();
|
|
48
|
+
}, S = (e) => {
|
|
49
|
+
e.pointerType !== "mouse" || e.button !== 0 || _(e.target) && t.getContainer() && (o = e.pointerId, r = L(e), c = r ? t.getSelectedIds() : [], s = e.clientX, a = e.clientY, u = !1, typeof document < "u" && (document.addEventListener("pointermove", m, !0), document.addEventListener("pointerup", p, !0), document.addEventListener("pointercancel", h, !0)), e.preventDefault());
|
|
50
|
+
}, v = b(() => {
|
|
51
|
+
const e = n();
|
|
52
|
+
return e ? {
|
|
53
|
+
left: `${e.left}px`,
|
|
54
|
+
top: `${e.top}px`,
|
|
55
|
+
width: `${e.width}px`,
|
|
56
|
+
height: `${e.height}px`
|
|
57
|
+
} : null;
|
|
58
|
+
});
|
|
59
|
+
return y(() => {
|
|
60
|
+
f();
|
|
61
|
+
}), {
|
|
62
|
+
overlayStyle: v,
|
|
63
|
+
onPointerDown: S
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
G as FILE_BROWSER_MARQUEE_OVERLAY_CLASS,
|
|
68
|
+
C as createFileBrowserMarqueeSelection
|
|
69
|
+
};
|
package/dist/floe.css
CHANGED
|
@@ -324,6 +324,14 @@
|
|
|
324
324
|
-webkit-touch-callout: none;
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
+
.floe-file-browser-marquee-overlay {
|
|
328
|
+
border: 2px solid color-mix(in srgb, var(--selection-bg) 96%, white 4%);
|
|
329
|
+
background-color: color-mix(in srgb, var(--selection-bg) 18%, transparent);
|
|
330
|
+
box-shadow:
|
|
331
|
+
0 0 0 1px color-mix(in srgb, var(--selection-bg) 24%, white 12%),
|
|
332
|
+
0 8px 24px color-mix(in srgb, var(--selection-bg) 18%, transparent);
|
|
333
|
+
}
|
|
334
|
+
|
|
327
335
|
[data-floe-touch-surface='true'],
|
|
328
336
|
[data-floe-touch-surface='true'] * {
|
|
329
337
|
-webkit-user-select: none;
|
package/dist/full.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { FloeProvider as r } from "./app/FloeProvider.js";
|
|
2
2
|
import { applyTheme as n, builtInThemes as i, getSystemTheme as a, mergeThemeTokenMaps as m, resolveThemeTokenOverrides as c, resolveThemeTokens as l, syncThemeTokenOverrides as s } from "./styles/themes/index.js";
|
|
3
3
|
import { floeColorTokenCategories as f, floeDesignTokens as d, floeFontFamilyTokens as x, floeMotionTokens as I, floeRadiusTokens as g, floeSharedCssVariables as C, floeSpacingTokens as u, floeThemeColorVariables as S, floeTypographyTokens as T, getFloeColorTokenValue as h } from "./styles/tokens.js";
|
|
4
|
-
import { Activity as F, ActivityIcon as P, AlertCircle as y, AlertTriangle as B, ArchiveIcon as v, ArrowDown as
|
|
4
|
+
import { Activity as F, ActivityIcon as P, AlertCircle as y, AlertTriangle as B, ArchiveIcon as v, ArrowDown as M, ArrowLeft as D, ArrowRight as L, ArrowRightLeft as w, ArrowUp as A, AtSign as E, AwardIcon as b, BarChart as W, BatteryIcon as R, Bell as O, BellIcon as N, Bookmark as _, BookmarkIcon as G, Bot as H, BotIcon as V, BugIcon as U, Calendar as K, CalendarIcon as z, Camera as X, CameraIcon as Z, ChartIcon as Q, Check as Y, CheckCircle as q, CheckIcon as J, ChevronDown as j, ChevronLeft as $, ChevronRight as ee, ChevronUp as oe, ChevronsUpDown as re, Clock as te, ClockIcon as ne, CloseIcon as ie, Cloud as ae, CloudIcon as me, Code as ce, CodeIcon as le, CompassIcon as se, Copy as pe, CopyCheck as fe, CopyCheckIcon as de, CopyIcon as xe, Cpu as Ie, CreditCardIcon as ge, Database as Ce, DatabaseIcon as ue, DollarIcon as Se, Download as Te, DownloadIcon as he, EditIcon as ke, ErrorIcon as Fe, ExternalLink as Pe, Eye as ye, EyeIcon as Be, EyeOff as ve, FileCode as Me, FilePlus as De, FilePlusIcon as Le, FileText as we, Files as Ae, Filter as Ee, FilterIcon as be, FireIcon as We, Folder as Re, FolderOpen as Oe, FolderPlus as Ne, FolderPlusIcon as _e, GiftIcon as Ge, GitBranch as He, GitBranchIcon as Ve, Globe as Ue, GlobeIcon as Ke, Grid as ze, Grid3x3 as Xe, GripVertical as Ze, Hash as Qe, HeadphonesIcon as Ye, Heart as qe, HeartIcon as Je, HelpIcon as je, Highlighter as $e, History as eo, Home as oo, HomeIcon as ro, Image as to, ImageIcon as no, Info as io, InfoIcon as ao, Key as mo, KeyIcon as co, Layers as lo, LayersIcon as so, LayoutDashboard as po, Link as fo, LinkIcon as xo, Loader2 as Io, LoadingIcon as go, Lock as Co, LockIcon as uo, MagicIcon as So, Mail as To, MailIcon as ho, MapPinIcon as ko, Maximize as Fo, Menu as Po, MessageIcon as yo, MessageSquare as Bo, Mic as vo, MicIcon as Mo, MicOff as Do, Minus as Lo, MinusIcon as wo, Moon as Ao, MoonIcon as Eo, MoreHorizontal as bo, MoreVertical as Wo, MuteIcon as Ro, Package as Oo, PackageIcon as No, Paperclip as _o, Paste as Go, PasteIcon as Ho, Pause as Vo, PauseIcon as Uo, Pencil as Ko, Phone as zo, PieChart as Xo, Pin as Zo, PinIcon as Qo, Play as Yo, PlayIcon as qo, Plus as Jo, PlusIcon as jo, PowerIcon as $o, PrinterIcon as er, Quote as or, Refresh as rr, RefreshIcon as tr, Restore as nr, RocketIcon as ir, Save as ar, SaveIcon as mr, Search as cr, SearchIcon as lr, Send as sr, SendIcon as pr, Settings as fr, SettingsIcon as dr, ShareIcon as xr, Shield as Ir, ShieldCheck as gr, ShieldIcon as Cr, SparkleIcon as ur, Sparkles as Sr, Star as Tr, StarIcon as hr, Stop as kr, SuccessIcon as Fr, Sun as Pr, SunIcon as yr, TagIcon as Br, TargetIcon as vr, Terminal as Mr, TerminalIcon as Dr, ThumbsDownIcon as Lr, ThumbsUpIcon as wr, Timer as Ar, Trash as Er, TrashIcon as br, TrendingDown as Wr, TrendingUp as Rr, Unlock as Or, Upload as Nr, UploadIcon as _r, User as Gr, UserIcon as Hr, Video as Vr, VideoIcon as Ur, Volume as Kr, VolumeIcon as zr, VolumeOff as Xr, Wand as Zr, WarningIcon as Qr, WifiIcon as Yr, WifiOffIcon as qr, Workflow as Jr, X as jr, XCircle as $r, Zap as et, ZapIcon as ot } from "./components/icons/index.js";
|
|
5
5
|
import { DEFAULT_TERMINAL_WORKSPACE_PROFILE as tt, normalizeTerminalWorkspaceProfile as nt } from "./terminal/workspaceProfile.js";
|
|
6
6
|
import { clampTerminalCursor as at, createTerminalEditorState as mt, deleteTerminalTextBackward as ct, insertTerminalText as lt, moveTerminalCursor as st, navigateTerminalHistory as pt } from "./terminal/editorModel.js";
|
|
7
7
|
import { applyTerminalSessionSuggestion as dt, createTerminalSessionState as xt, dispatchTerminalSessionKey as It, getTerminalPromptPreview as gt, getTerminalSessionSuggestions as Ct, setTerminalSessionInputValue as ut, submitTerminalSession as St } from "./terminal/sessionModel.js";
|
|
8
8
|
import { runTerminalMockCommand as ht } from "./terminal/mockRuntime.js";
|
|
9
|
-
import { DEFAULT_TERMINAL_SUGGESTION_PROVIDERS as Ft, applyTerminalSuggestion as Pt, autocompleteTerminalInput as yt, createTerminalFullLineSuggestion as Bt, createTerminalTokenSuggestion as vt, getTerminalSuggestions as
|
|
9
|
+
import { DEFAULT_TERMINAL_SUGGESTION_PROVIDERS as Ft, applyTerminalSuggestion as Pt, autocompleteTerminalInput as yt, createTerminalFullLineSuggestion as Bt, createTerminalTokenSuggestion as vt, getTerminalSuggestions as Mt, matchesTerminalSuggestionPrefix as Dt, parseTerminalSuggestionContext as Lt, terminalCommandTokenSuggestionProvider as wt, terminalHistorySuggestionProvider as At, terminalPathSuggestionProvider as Et, terminalRootSuggestionProvider as bt, terminalSnippetSuggestionProvider as Wt } from "./terminal/suggestionEngine.js";
|
|
10
10
|
import { ActivityAppsMain as Ot } from "./app/ActivityAppsMain.js";
|
|
11
11
|
import { ActivityBar as _t } from "./components/layout/ActivityBar.js";
|
|
12
12
|
import { AffixInput as Ht, Input as Vt, NumberInput as Ut, Textarea as Kt } from "./components/ui/Input.js";
|
|
@@ -16,7 +16,7 @@ import { AttachmentPreview as sn } from "./components/chat/input/AttachmentPrevi
|
|
|
16
16
|
import { BlockRenderer as fn } from "./components/chat/blocks/BlockRenderer.js";
|
|
17
17
|
import { BottomBar as xn, BottomBarItem as In, StatusIndicator as gn } from "./components/layout/BottomBar.js";
|
|
18
18
|
import { Breadcrumb as un } from "./components/file-browser/Breadcrumb.js";
|
|
19
|
-
import { BrokenSymlinkIcon as Tn, CodeFileIcon as hn, ConfigFileIcon as kn, DocumentFileIcon as Fn, FileIcon as Pn, FileItemIcon as yn, FolderIcon as Bn, FolderOpenIcon as vn, ImageFileIcon as
|
|
19
|
+
import { BrokenSymlinkIcon as Tn, CodeFileIcon as hn, ConfigFileIcon as kn, DocumentFileIcon as Fn, FileIcon as Pn, FileItemIcon as yn, FolderIcon as Bn, FolderOpenIcon as vn, ImageFileIcon as Mn, JavaScriptFileIcon as Dn, ShellScriptFileIcon as Ln, StyleFileIcon as wn, SymlinkFileIcon as An, SymlinkFolderIcon as En, SymlinkFolderOpenIcon as bn, TypeScriptFileIcon as Wn, getFileIcon as Rn, resolveFileItemIcon as On } from "./components/file-browser/FileIcons.js";
|
|
20
20
|
import { Button as _n } from "./components/ui/Button.js";
|
|
21
21
|
import { ChatContainer as Hn } from "./components/chat/ChatContainer.js";
|
|
22
22
|
import { ChatInput as Un } from "./components/chat/input/ChatInput.js";
|
|
@@ -31,7 +31,7 @@ import { CommandProvider as pi, createCommandService as fi, useCommand as di } f
|
|
|
31
31
|
import { ComponentRegistryProvider as Ii, createComponentRegistry as gi, hasComponentRegistryContext as Ci, useComponentContextFactory as ui, useComponentRegistry as Si, useOptionalComponentRegistry as Ti } from "./context/ComponentRegistry.js";
|
|
32
32
|
import { ConfirmDialog as ki, Dialog as Fi } from "./components/ui/Dialog.js";
|
|
33
33
|
import { ConnectionStatus as yi } from "./components/chat/status/ConnectionStatus.js";
|
|
34
|
-
import { DECK_GRID_CONFIG as vi, DeckGrid as
|
|
34
|
+
import { DECK_GRID_CONFIG as vi, DeckGrid as Mi, getGridConfigFromElement as Di } from "./components/deck/DeckGrid.js";
|
|
35
35
|
import { DEFAULT_FLOE_CONFIG as wi, FloeConfigProvider as Ai, useFloeConfig as Ei, useResolvedFloeConfig as bi } from "./context/FloeConfigContext.js";
|
|
36
36
|
import { DEFAULT_VIRTUAL_LIST_CONFIG as Ri } from "./components/chat/types.js";
|
|
37
37
|
import { DeckCell as Ni } from "./components/deck/DeckCell.js";
|
|
@@ -49,7 +49,7 @@ import { FileBrowser as Ca } from "./components/file-browser/FileBrowser.js";
|
|
|
49
49
|
import { FileBrowserDragPreview as Sa } from "./components/file-browser/DragPreview.js";
|
|
50
50
|
import { FileBrowserDragProvider as ha, hasFileBrowserDragContext as ka, useFileBrowserDrag as Fa } from "./context/FileBrowserDragContext.js";
|
|
51
51
|
import { FileBrowserProvider as ya, useFileBrowser as Ba } from "./components/file-browser/FileBrowserContext.js";
|
|
52
|
-
import { FileBrowserToolbar as
|
|
52
|
+
import { FileBrowserToolbar as Ma } from "./components/file-browser/FileBrowserToolbar.js";
|
|
53
53
|
import { FileContextMenu as La } from "./components/file-browser/FileContextMenu.js";
|
|
54
54
|
import { FileGridView as Aa } from "./components/file-browser/FileGridView.js";
|
|
55
55
|
import { FileListView as ba } from "./components/file-browser/FileListView.js";
|
|
@@ -68,7 +68,7 @@ import { LaunchpadItem as um } from "./components/launchpad/LaunchpadItem.js";
|
|
|
68
68
|
import { LaunchpadModal as Tm } from "./components/launchpad/LaunchpadModal.js";
|
|
69
69
|
import { LaunchpadPagination as km } from "./components/launchpad/LaunchpadPagination.js";
|
|
70
70
|
import { LaunchpadSearch as Pm } from "./components/launchpad/LaunchpadSearch.js";
|
|
71
|
-
import { LayoutProvider as Bm, createLayoutService as vm, useLayout as
|
|
71
|
+
import { LayoutProvider as Bm, createLayoutService as vm, useLayout as Mm } from "./context/LayoutContext.js";
|
|
72
72
|
import { LayoutSelector as Lm } from "./components/deck/LayoutSelector.js";
|
|
73
73
|
import { LoadingOverlay as Am } from "./components/loading/LoadingOverlay.js";
|
|
74
74
|
import { MarkdownBlock as bm } from "./components/chat/blocks/MarkdownBlock.js";
|
|
@@ -82,7 +82,7 @@ import { MetricsWidget as Qm } from "./widgets/MetricsWidget.js";
|
|
|
82
82
|
import { MobileKeyboard as qm } from "./components/ui/MobileKeyboard.js";
|
|
83
83
|
import { MobileTabBar as jm } from "./components/layout/MobileTabBar.js";
|
|
84
84
|
import { NOTES_CONTEXT_MENU_WIDTH_PX as ec, NotesContextMenu as oc, estimateNotesContextMenuHeight as rc } from "./components/notes/NotesContextMenu.js";
|
|
85
|
-
import { NOTES_SCALE_MAX as nc, NOTES_SCALE_MIN as ic, NOTE_BUCKET_METRICS as ac, NOTE_COLOR_TOKENS as mc, TOPIC_ACCENT_TOKENS as cc, TOPIC_ICON_KEYS as lc, applyNotesEvent as sc, centerViewportOnWorldPoint as pc, clampScale as fc, computeBoardBounds as dc, createDefaultNotesSnapshot as xc, groupTrashItems as Ic, mergeBoardBounds as gc, nextLocalZIndex as Cc, normalizeNotesSnapshot as uc, noteBucketMetrics as Sc, promoteLocalItem as Tc, removeSnapshotItem as hc, removeSnapshotTopic as kc, removeSnapshotTrashItem as Fc, replaceSnapshotItem as Pc, replaceSnapshotTopic as yc, replaceSnapshotTrashItem as Bc, screenToWorld as vc, visibleWorldRect as
|
|
85
|
+
import { NOTES_SCALE_MAX as nc, NOTES_SCALE_MIN as ic, NOTE_BUCKET_METRICS as ac, NOTE_COLOR_TOKENS as mc, TOPIC_ACCENT_TOKENS as cc, TOPIC_ICON_KEYS as lc, applyNotesEvent as sc, centerViewportOnWorldPoint as pc, clampScale as fc, computeBoardBounds as dc, createDefaultNotesSnapshot as xc, groupTrashItems as Ic, mergeBoardBounds as gc, nextLocalZIndex as Cc, normalizeNotesSnapshot as uc, noteBucketMetrics as Sc, promoteLocalItem as Tc, removeSnapshotItem as hc, removeSnapshotTopic as kc, removeSnapshotTrashItem as Fc, replaceSnapshotItem as Pc, replaceSnapshotTopic as yc, replaceSnapshotTrashItem as Bc, screenToWorld as vc, visibleWorldRect as Mc, worldToScreen as Dc, zoomViewportAtPoint as Lc } from "./components/notes/types.js";
|
|
86
86
|
import { NOTE_COLOR_LABELS as Ac, NotesAnimalIcon as Ec, NotesOverlayIcon as bc, NotesTrashCanIcon as Wc, TOPIC_ACCENT_LABELS as Rc } from "./components/notes/notesAppearance.js";
|
|
87
87
|
import { NotesOverlay as Nc } from "./components/notes/NotesOverlay.js";
|
|
88
88
|
import { NotificationContainer as Gc, NotificationProvider as Hc, createNotificationService as Vc, useNotification as Uc } from "./context/NotificationContext.js";
|
|
@@ -99,7 +99,7 @@ import { Sidebar as dl, SidebarContent as xl, SidebarItem as Il, SidebarItemList
|
|
|
99
99
|
import { SidebarPane as Sl } from "./components/layout/SidebarPane.js";
|
|
100
100
|
import { Skeleton as hl, SkeletonCard as kl, SkeletonList as Fl, SkeletonText as Pl } from "./components/loading/Skeleton.js";
|
|
101
101
|
import { SnakeLoader as Bl } from "./components/loading/SnakeLoader.js";
|
|
102
|
-
import { Stepper as
|
|
102
|
+
import { Stepper as Ml, Wizard as Dl, useWizard as Ll } from "./components/ui/Stepper.js";
|
|
103
103
|
import { StreamingCursor as Al } from "./components/chat/status/StreamingCursor.js";
|
|
104
104
|
import { SvgBlock as bl } from "./components/chat/blocks/SvgBlock.js";
|
|
105
105
|
import { Switch as Rl } from "./components/ui/Switch.js";
|
|
@@ -120,7 +120,7 @@ import { WidgetPalette as Is } from "./components/deck/WidgetPalette.js";
|
|
|
120
120
|
import { WidgetRegistryProvider as Cs, createWidgetRegistry as us, useWidgetRegistry as Ss } from "./context/WidgetRegistry.js";
|
|
121
121
|
import { WidgetResizeHandle as hs } from "./components/deck/WidgetResizeHandle.js";
|
|
122
122
|
import { WidgetStateProvider as Fs, useCurrentWidgetId as Ps, useWidgetState as ys, useWidgetStateContext as Bs } from "./context/WidgetStateContext.js";
|
|
123
|
-
import { WidgetTypeSwitcher as
|
|
123
|
+
import { WidgetTypeSwitcher as Ms } from "./components/deck/WidgetTypeSwitcher.js";
|
|
124
124
|
import { WorkingIndicator as Ls } from "./components/chat/status/WorkingIndicator.js";
|
|
125
125
|
import { applyDragDelta as As, applyResizeDelta as Es, getGridCellSize as bs, pixelDeltaToGridDelta as Ws, positionToGridArea as Rs, snapToGrid as Os } from "./utils/gridLayout.js";
|
|
126
126
|
import { buildAssistantNoticeEvents as _s, createStreamEventBuilder as Gs, isStreamEvent as Hs } from "./components/chat/streamEvents.js";
|
|
@@ -132,21 +132,21 @@ import { configureMermaidWorker as fp, configureSyncMermaid as dp, renderMermaid
|
|
|
132
132
|
import { configureShikiWorker as up, configureSyncHighlighter as Sp, highlightCode as Tp, terminateShikiWorker as hp, useCodeHighlight as kp } from "./components/chat/hooks/useCodeHighlight.js";
|
|
133
133
|
import { createSimpleContext as Pp } from "./context/createSimpleContext.js";
|
|
134
134
|
import { deferAfterPaint as Bp, deferNonBlocking as vp } from "./utils/defer.js";
|
|
135
|
-
import { duration as
|
|
136
|
-
import { formatKeybind as Kp,
|
|
137
|
-
import { isTypingElement as
|
|
138
|
-
import { lockBodyStyle as
|
|
139
|
-
import { registerCommandContributions as
|
|
140
|
-
import { useAttachments as
|
|
141
|
-
import { useAutoScroll as
|
|
142
|
-
import { useDebounce as
|
|
143
|
-
import { useDeckDrag as
|
|
144
|
-
import { useFileBrowserDropTarget as
|
|
145
|
-
import { useKeybind as
|
|
146
|
-
import { useMediaQuery as
|
|
147
|
-
import { usePersisted as
|
|
148
|
-
import { useResizeObserver as
|
|
149
|
-
import { useVirtualList as
|
|
135
|
+
import { duration as Dp, easing as Lp, fadeIn as wp, listContainer as Ap, listItem as Ep, panelResize as bp, popIn as Wp, scaleIn as Rp, sidebarVariants as Op, slideInFromBottom as Np, slideInFromLeft as _p, slideInFromRight as Gp, slideInFromTop as Hp, springConfig as Vp } from "./utils/animations.js";
|
|
136
|
+
import { formatKeybind as Kp, isMacLikePlatform as zp, isPrimaryModKeyPressed as Xp, matchKeybind as Zp, parseKeybind as Qp } from "./utils/keybind.js";
|
|
137
|
+
import { isTypingElement as qp, shouldIgnoreHotkeys as Jp } from "./utils/dom.js";
|
|
138
|
+
import { lockBodyStyle as $p } from "./utils/bodyStyleLock.js";
|
|
139
|
+
import { registerCommandContributions as of, useCommandContributions as rf } from "./hooks/useCommandContributions.js";
|
|
140
|
+
import { useAttachments as nf } from "./components/chat/hooks/useAttachments.js";
|
|
141
|
+
import { useAutoScroll as mf } from "./components/chat/hooks/useAutoScroll.js";
|
|
142
|
+
import { useDebounce as lf } from "./hooks/useDebounce.js";
|
|
143
|
+
import { useDeckDrag as pf } from "./hooks/useDeckDrag.js";
|
|
144
|
+
import { useFileBrowserDropTarget as df, useFileBrowserItemDrag as xf } from "./hooks/useFileBrowserDrag.js";
|
|
145
|
+
import { useKeybind as gf } from "./hooks/useKeybind.js";
|
|
146
|
+
import { useMediaQuery as uf } from "./hooks/useMediaQuery.js";
|
|
147
|
+
import { usePersisted as Tf } from "./hooks/usePersisted.js";
|
|
148
|
+
import { useResizeObserver as kf } from "./hooks/useResizeObserver.js";
|
|
149
|
+
import { useVirtualList as Pf } from "./components/chat/hooks/useVirtualList.js";
|
|
150
150
|
export {
|
|
151
151
|
F as Activity,
|
|
152
152
|
Ot as ActivityAppsMain,
|
|
@@ -158,8 +158,8 @@ export {
|
|
|
158
158
|
Xt as AnimatedBorderCard,
|
|
159
159
|
v as ArchiveIcon,
|
|
160
160
|
tn as AreaChart,
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
M as ArrowDown,
|
|
162
|
+
D as ArrowLeft,
|
|
163
163
|
L as ArrowRight,
|
|
164
164
|
w as ArrowRightLeft,
|
|
165
165
|
A as ArrowUp,
|
|
@@ -241,7 +241,7 @@ export {
|
|
|
241
241
|
Ce as Database,
|
|
242
242
|
ue as DatabaseIcon,
|
|
243
243
|
Ni as DeckCell,
|
|
244
|
-
|
|
244
|
+
Mi as DeckGrid,
|
|
245
245
|
Gi as DeckProvider,
|
|
246
246
|
Ki as DeckTopBar,
|
|
247
247
|
Fi as Dialog,
|
|
@@ -268,14 +268,14 @@ export {
|
|
|
268
268
|
Sa as FileBrowserDragPreview,
|
|
269
269
|
ha as FileBrowserDragProvider,
|
|
270
270
|
ya as FileBrowserProvider,
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
Ma as FileBrowserToolbar,
|
|
272
|
+
Me as FileCode,
|
|
273
273
|
La as FileContextMenu,
|
|
274
274
|
Aa as FileGridView,
|
|
275
275
|
Pn as FileIcon,
|
|
276
276
|
yn as FileItemIcon,
|
|
277
277
|
ba as FileListView,
|
|
278
|
-
|
|
278
|
+
De as FilePlus,
|
|
279
279
|
Le as FilePlusIcon,
|
|
280
280
|
Ra as FileSavePicker,
|
|
281
281
|
we as FileText,
|
|
@@ -325,7 +325,7 @@ export {
|
|
|
325
325
|
ro as HomeIcon,
|
|
326
326
|
to as Image,
|
|
327
327
|
cm as ImageBlock,
|
|
328
|
-
|
|
328
|
+
Mn as ImageFileIcon,
|
|
329
329
|
no as ImageIcon,
|
|
330
330
|
sm as InfiniteCanvas,
|
|
331
331
|
io as Info,
|
|
@@ -333,7 +333,7 @@ export {
|
|
|
333
333
|
ao as InfoIcon,
|
|
334
334
|
Vt as Input,
|
|
335
335
|
$t as Interactive3DCard,
|
|
336
|
-
|
|
336
|
+
Dn as JavaScriptFileIcon,
|
|
337
337
|
fm as KeepAliveStack,
|
|
338
338
|
mo as Key,
|
|
339
339
|
co as KeyIcon,
|
|
@@ -374,8 +374,8 @@ export {
|
|
|
374
374
|
Bo as MessageSquare,
|
|
375
375
|
Qm as MetricsWidget,
|
|
376
376
|
vo as Mic,
|
|
377
|
-
|
|
378
|
-
|
|
377
|
+
Mo as MicIcon,
|
|
378
|
+
Do as MicOff,
|
|
379
379
|
Lo as Minus,
|
|
380
380
|
wo as MinusIcon,
|
|
381
381
|
qm as MobileKeyboard,
|
|
@@ -474,7 +474,7 @@ export {
|
|
|
474
474
|
Tr as Star,
|
|
475
475
|
hr as StarIcon,
|
|
476
476
|
gn as StatusIndicator,
|
|
477
|
-
|
|
477
|
+
Ml as Stepper,
|
|
478
478
|
ti as StepsProgress,
|
|
479
479
|
kr as Stop,
|
|
480
480
|
Al as StreamingCursor,
|
|
@@ -496,8 +496,8 @@ export {
|
|
|
496
496
|
Hl as Tag,
|
|
497
497
|
Br as TagIcon,
|
|
498
498
|
vr as TargetIcon,
|
|
499
|
-
|
|
500
|
-
|
|
499
|
+
Mr as Terminal,
|
|
500
|
+
Dr as TerminalIcon,
|
|
501
501
|
Ul as TerminalWidget,
|
|
502
502
|
Xl as TextBlock,
|
|
503
503
|
Kt as Textarea,
|
|
@@ -536,10 +536,10 @@ export {
|
|
|
536
536
|
Cs as WidgetRegistryProvider,
|
|
537
537
|
hs as WidgetResizeHandle,
|
|
538
538
|
Fs as WidgetStateProvider,
|
|
539
|
-
|
|
539
|
+
Ms as WidgetTypeSwitcher,
|
|
540
540
|
Yr as WifiIcon,
|
|
541
541
|
qr as WifiOffIcon,
|
|
542
|
-
|
|
542
|
+
Dl as Wizard,
|
|
543
543
|
Jr as Workflow,
|
|
544
544
|
Ls as WorkingIndicator,
|
|
545
545
|
jr as X,
|
|
@@ -591,7 +591,7 @@ export {
|
|
|
591
591
|
vp as deferNonBlocking,
|
|
592
592
|
ct as deleteTerminalTextBackward,
|
|
593
593
|
It as dispatchTerminalSessionKey,
|
|
594
|
-
|
|
594
|
+
Dp as duration,
|
|
595
595
|
Lp as easing,
|
|
596
596
|
rc as estimateNotesContextMenuHeight,
|
|
597
597
|
wp as fadeIn,
|
|
@@ -609,11 +609,11 @@ export {
|
|
|
609
609
|
Rn as getFileIcon,
|
|
610
610
|
h as getFloeColorTokenValue,
|
|
611
611
|
bs as getGridCellSize,
|
|
612
|
-
|
|
612
|
+
Di as getGridConfigFromElement,
|
|
613
613
|
a as getSystemTheme,
|
|
614
614
|
gt as getTerminalPromptPreview,
|
|
615
615
|
Ct as getTerminalSessionSuggestions,
|
|
616
|
-
|
|
616
|
+
Mt as getTerminalSuggestions,
|
|
617
617
|
Ic as groupTrashItems,
|
|
618
618
|
Xs as hasCollision,
|
|
619
619
|
Ci as hasComponentRegistryContext,
|
|
@@ -622,13 +622,15 @@ export {
|
|
|
622
622
|
ap as hasMarkdownWorker,
|
|
623
623
|
Tp as highlightCode,
|
|
624
624
|
lt as insertTerminalText,
|
|
625
|
+
zp as isMacLikePlatform,
|
|
626
|
+
Xp as isPrimaryModKeyPressed,
|
|
625
627
|
Hs as isStreamEvent,
|
|
626
|
-
|
|
628
|
+
qp as isTypingElement,
|
|
627
629
|
Ap as listContainer,
|
|
628
630
|
Ep as listItem,
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
631
|
+
$p as lockBodyStyle,
|
|
632
|
+
Zp as matchKeybind,
|
|
633
|
+
Dt as matchesTerminalSuggestionPrefix,
|
|
632
634
|
gc as mergeBoardBounds,
|
|
633
635
|
m as mergeThemeTokenMaps,
|
|
634
636
|
st as moveTerminalCursor,
|
|
@@ -638,13 +640,13 @@ export {
|
|
|
638
640
|
nt as normalizeTerminalWorkspaceProfile,
|
|
639
641
|
Sc as noteBucketMetrics,
|
|
640
642
|
bp as panelResize,
|
|
641
|
-
|
|
643
|
+
Qp as parseKeybind,
|
|
642
644
|
Lt as parseTerminalSuggestionContext,
|
|
643
645
|
Ws as pixelDeltaToGridDelta,
|
|
644
646
|
Wp as popIn,
|
|
645
647
|
Rs as positionToGridArea,
|
|
646
648
|
Tc as promoteLocalItem,
|
|
647
|
-
|
|
649
|
+
of as registerCommandContributions,
|
|
648
650
|
hc as removeSnapshotItem,
|
|
649
651
|
kc as removeSnapshotTopic,
|
|
650
652
|
Fc as removeSnapshotTrashItem,
|
|
@@ -661,7 +663,7 @@ export {
|
|
|
661
663
|
Rp as scaleIn,
|
|
662
664
|
vc as screenToWorld,
|
|
663
665
|
ut as setTerminalSessionInputValue,
|
|
664
|
-
|
|
666
|
+
Jp as shouldIgnoreHotkeys,
|
|
665
667
|
Op as sidebarVariants,
|
|
666
668
|
Np as slideInFromBottom,
|
|
667
669
|
_p as slideInFromLeft,
|
|
@@ -681,43 +683,43 @@ export {
|
|
|
681
683
|
lp as terminateMarkdownWorker,
|
|
682
684
|
Ip as terminateMermaidWorker,
|
|
683
685
|
hp as terminateShikiWorker,
|
|
684
|
-
|
|
685
|
-
|
|
686
|
+
nf as useAttachments,
|
|
687
|
+
mf as useAutoScroll,
|
|
686
688
|
Xn as useChatContext,
|
|
687
689
|
kp as useCodeHighlight,
|
|
688
690
|
di as useCommand,
|
|
689
|
-
|
|
691
|
+
rf as useCommandContributions,
|
|
690
692
|
ui as useComponentContextFactory,
|
|
691
693
|
Si as useComponentRegistry,
|
|
692
694
|
Ps as useCurrentWidgetId,
|
|
693
|
-
|
|
695
|
+
lf as useDebounce,
|
|
694
696
|
Vi as useDeck,
|
|
695
|
-
|
|
697
|
+
pf as useDeckDrag,
|
|
696
698
|
Ba as useFileBrowser,
|
|
697
699
|
Fa as useFileBrowserDrag,
|
|
698
|
-
|
|
699
|
-
|
|
700
|
+
df as useFileBrowserDropTarget,
|
|
701
|
+
xf as useFileBrowserItemDrag,
|
|
700
702
|
Ei as useFloeConfig,
|
|
701
703
|
am as useFormSubmitting,
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
704
|
+
gf as useKeybind,
|
|
705
|
+
Mm as useLayout,
|
|
706
|
+
uf as useMediaQuery,
|
|
705
707
|
gp as useMermaid,
|
|
706
708
|
Uc as useNotification,
|
|
707
709
|
Ti as useOptionalComponentRegistry,
|
|
708
|
-
|
|
709
|
-
|
|
710
|
+
Tf as usePersisted,
|
|
711
|
+
kf as useResizeObserver,
|
|
710
712
|
bi as useResolvedFloeConfig,
|
|
711
713
|
ql as useTheme,
|
|
712
714
|
ls as useViewActivation,
|
|
713
|
-
|
|
715
|
+
Pf as useVirtualList,
|
|
714
716
|
Ss as useWidgetRegistry,
|
|
715
717
|
ys as useWidgetState,
|
|
716
718
|
Bs as useWidgetStateContext,
|
|
717
719
|
Ll as useWizard,
|
|
718
|
-
|
|
720
|
+
Mc as visibleWorldRect,
|
|
719
721
|
rp as waitForDiffWorker,
|
|
720
722
|
sp as waitForMarkdownWorker,
|
|
721
|
-
|
|
723
|
+
Dc as worldToScreen,
|
|
722
724
|
Lc as zoomViewportAtPoint
|
|
723
725
|
};
|