@floegence/floe-webapp-core 0.86.73 → 0.86.74

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.
@@ -36,3 +36,10 @@ export declare function measureSplitWorkspace(layout: SplitWorkspaceLayout | nul
36
36
  panes: Map<string, SplitWorkspaceRect>;
37
37
  dividers: SplitWorkspaceDivider[];
38
38
  };
39
+ export interface SplitWorkspaceArrangement {
40
+ id: string;
41
+ kind: 'rows' | 'columns' | 'grid' | 'main-left' | 'main-right' | 'main-top' | 'main-bottom';
42
+ layout: SplitWorkspaceLayout;
43
+ }
44
+ /** Bounded alternatives that preserve every item in visual reading order. */
45
+ export declare function createSplitWorkspaceArrangements(itemIds: readonly string[], id: () => string): SplitWorkspaceArrangement[];
@@ -1,96 +1,159 @@
1
- const o = (i) => ({ type: "pane", id: i });
2
- function x(i) {
3
- return i ? i.type === "pane" ? [i.id] : [...x(i.first), ...x(i.second)] : [];
1
+ const w = (t) => ({ type: "pane", id: t });
2
+ function M(t) {
3
+ return t ? t.type === "pane" ? [t.id] : [...M(t.first), ...M(t.second)] : [];
4
4
  }
5
- function u(i) {
6
- const s = /* @__PURE__ */ new Set();
7
- let n = 0;
8
- const r = (t, c) => {
9
- if (!t || typeof t != "object" || c > 32 || ++n > 127) return !1;
10
- const e = t;
11
- return typeof e.id != "string" || !e.id.trim() || s.has(e.id) ? !1 : (s.add(e.id), e.type === "pane" ? !0 : e.type === "split" && (e.axis === "x" || e.axis === "y") && typeof e.ratio == "number" && Number.isFinite(e.ratio) && e.ratio >= 0.15 && e.ratio <= 0.85 && r(e.first, c + 1) && r(e.second, c + 1));
5
+ function v(t) {
6
+ const e = /* @__PURE__ */ new Set();
7
+ let r = 0;
8
+ const n = (i, f) => {
9
+ if (!i || typeof i != "object" || f > 32 || ++r > 127) return !1;
10
+ const c = i;
11
+ return typeof c.id != "string" || !c.id.trim() || e.has(c.id) ? !1 : (e.add(c.id), c.type === "pane" ? !0 : c.type === "split" && (c.axis === "x" || c.axis === "y") && typeof c.ratio == "number" && Number.isFinite(c.ratio) && c.ratio >= 0.15 && c.ratio <= 0.85 && n(c.first, f + 1) && n(c.second, f + 1));
12
12
  };
13
- return r(i, 0);
13
+ return n(t, 0);
14
14
  }
15
- function a(i, s, n) {
16
- if (i.id === s) return n(i);
17
- if (i.type === "pane") return i;
18
- const r = a(i.first, s, n), t = a(i.second, s, n);
19
- return r === i.first && t === i.second ? i : { ...i, first: r, second: t };
15
+ function k(t, e, r) {
16
+ if (t.id === e) return r(t);
17
+ if (t.type === "pane") return t;
18
+ const n = k(t.first, e, r), i = k(t.second, e, r);
19
+ return n === t.first && i === t.second ? t : { ...t, first: n, second: i };
20
20
  }
21
- function m(i, s) {
22
- if (!i || i.id === s) return null;
23
- if (i.type === "pane") return i;
24
- const n = m(i.first, s), r = m(i.second, s);
25
- return n ? r ? n === i.first && r === i.second ? i : { ...i, first: n, second: r } : n : r;
21
+ function W(t, e) {
22
+ if (!t || t.id === e) return null;
23
+ if (t.type === "pane") return t;
24
+ const r = W(t.first, e), n = W(t.second, e);
25
+ return r ? n ? r === t.first && n === t.second ? t : { ...t, first: r, second: n } : r : n;
26
26
  }
27
- function k(i, s) {
28
- const n = new Set(s);
29
- return x(i).reduce(
30
- (r, t) => n.has(t) ? r : m(r, t),
31
- i
27
+ function b(t, e) {
28
+ const r = new Set(e);
29
+ return M(t).reduce(
30
+ (n, i) => r.has(i) ? n : W(n, i),
31
+ t
32
32
  );
33
33
  }
34
- function w(i, s, n) {
35
- return Number.isFinite(n) ? a(
36
- i,
37
- s,
38
- (r) => r.type === "split" ? { ...r, ratio: Math.max(0.15, Math.min(0.85, n)) } : r
39
- ) : i;
34
+ function N(t, e, r) {
35
+ return Number.isFinite(r) ? k(
36
+ t,
37
+ e,
38
+ (n) => n.type === "split" ? { ...n, ratio: Math.max(0.15, Math.min(0.85, r)) } : n
39
+ ) : t;
40
40
  }
41
- function S(i, s, n, r, t) {
42
- if (!i || s === n || !x(i).includes(n))
43
- return i;
44
- const c = x(i).includes(s);
45
- if (r === "center") {
46
- const p = (f) => f.type === "pane" ? f.id === n ? o(s) : c && f.id === s ? o(n) : f : { ...f, first: p(f.first), second: p(f.second) };
47
- return p(i);
41
+ function q(t, e, r, n, i) {
42
+ if (!t || e === r || !M(t).includes(r))
43
+ return t;
44
+ const f = M(t).includes(e);
45
+ if (n === "center") {
46
+ const h = (o) => o.type === "pane" ? o.id === r ? w(e) : f && o.id === e ? w(r) : o : { ...o, first: h(o.first), second: h(o.second) };
47
+ return h(t);
48
48
  }
49
- const e = m(i, s);
50
- return e ? a(e, n, (p) => ({
49
+ const c = W(t, e);
50
+ return c ? k(c, r, (h) => ({
51
51
  type: "split",
52
- id: t,
53
- axis: r === "left" || r === "right" ? "x" : "y",
52
+ id: i,
53
+ axis: n === "left" || n === "right" ? "x" : "y",
54
54
  ratio: 0.5,
55
- first: r === "left" || r === "top" ? o(s) : p,
56
- second: r === "left" || r === "top" ? p : o(s)
57
- })) : i;
55
+ first: n === "left" || n === "top" ? w(e) : h,
56
+ second: n === "left" || n === "top" ? h : w(e)
57
+ })) : t;
58
58
  }
59
- function W(i, s, n) {
60
- const r = i === "single" ? 1 : i === "grid" ? 4 : i === "columns" || i === "rows" ? 2 : 3, t = [...new Set(s)].slice(0, r).map(o), c = (e, p, f, h = 0.5) => ({ type: "split", id: n(), axis: e, ratio: h, first: p, second: f });
61
- return t.length ? t.length === 1 ? t[0] : t.length === 2 ? c(i === "rows" ? "y" : "x", t[0], t[1]) : i === "grid" && t.length === 4 ? c("x", c("y", t[0], t[2]), c("y", t[1], t[3])) : c(
59
+ function A(t, e, r) {
60
+ const n = t === "single" ? 1 : t === "grid" ? 4 : t === "columns" || t === "rows" ? 2 : 3, i = [...new Set(e)].slice(0, n).map(w), f = (c, h, o, m = 0.5) => ({ type: "split", id: r(), axis: c, ratio: m, first: h, second: o });
61
+ return i.length ? i.length === 1 ? i[0] : i.length === 2 ? f(t === "rows" ? "y" : "x", i[0], i[1]) : t === "grid" && i.length === 4 ? f("x", f("y", i[0], i[2]), f("y", i[1], i[3])) : f(
62
62
  "x",
63
- t[0],
64
- c(i === "three-columns" ? "x" : "y", t[1], t[2]),
65
- i === "three-columns" ? 1 / 3 : 0.5
63
+ i[0],
64
+ f(t === "three-columns" ? "x" : "y", i[1], i[2]),
65
+ t === "three-columns" ? 1 / 3 : 0.5
66
66
  ) : null;
67
67
  }
68
- function l(i) {
69
- const s = /* @__PURE__ */ new Map(), n = [], r = (t, c) => {
70
- if (t.type === "pane") {
71
- s.set(t.id, c);
68
+ function z(t) {
69
+ const e = /* @__PURE__ */ new Map(), r = [], n = (i, f) => {
70
+ if (i.type === "pane") {
71
+ e.set(i.id, f);
72
72
  return;
73
73
  }
74
- n.push({ ...c, id: t.id, axis: t.axis, ratio: t.ratio });
75
- const { x: e, y: p, width: f, height: h } = c;
76
- t.axis === "x" ? (r(t.first, { x: e, y: p, width: f * t.ratio, height: h }), r(t.second, { x: e + f * t.ratio, y: p, width: f * (1 - t.ratio), height: h })) : (r(t.first, { x: e, y: p, width: f, height: h * t.ratio }), r(t.second, {
77
- x: e,
78
- y: p + h * t.ratio,
79
- width: f,
80
- height: h * (1 - t.ratio)
74
+ r.push({ ...f, id: i.id, axis: i.axis, ratio: i.ratio });
75
+ const { x: c, y: h, width: o, height: m } = f;
76
+ i.axis === "x" ? (n(i.first, { x: c, y: h, width: o * i.ratio, height: m }), n(i.second, { x: c + o * i.ratio, y: h, width: o * (1 - i.ratio), height: m })) : (n(i.first, { x: c, y: h, width: o, height: m * i.ratio }), n(i.second, {
77
+ x: c,
78
+ y: h + m * i.ratio,
79
+ width: o,
80
+ height: m * (1 - i.ratio)
81
81
  }));
82
82
  };
83
- return i && r(i, { x: 0, y: 0, width: 100, height: 100 }), { panes: s, dividers: n };
83
+ return t && n(t, { x: 0, y: 0, width: 100, height: 100 }), { panes: e, dividers: r };
84
+ }
85
+ function F(t, e) {
86
+ const r = t.length;
87
+ if (r < 2 || r > 32 || new Set(t).size !== r || t.some((s) => !s.trim()))
88
+ return [];
89
+ const n = (s, a, l, u) => ({ type: "split", id: e(), axis: s, ratio: u, first: a, second: l }), i = (s, a) => {
90
+ if (s.length === 1) return s[0];
91
+ const l = Math.ceil(s.length / 2);
92
+ return n(
93
+ a,
94
+ i(s.slice(0, l), a),
95
+ i(s.slice(l), a),
96
+ l / s.length
97
+ );
98
+ }, f = (s, a, l) => {
99
+ let u = 0;
100
+ const x = Array.from({ length: a }, (y, S) => {
101
+ const p = Math.floor(s.length / a) + (S < s.length % a ? 1 : 0), g = s.slice(u, u + p).map(w);
102
+ return u += p, i(g, l === "x" ? "y" : "x");
103
+ });
104
+ return i(x, l);
105
+ }, c = [], h = /* @__PURE__ */ new Set(), o = (s, a, l) => {
106
+ const u = [...z(l).panes.entries()].sort(
107
+ ([, p], [, g]) => Math.round(p.y * 1e6) - Math.round(g.y * 1e6) || p.x - g.x
108
+ ), x = JSON.stringify(
109
+ u.map(
110
+ ([, p]) => [p.x, p.y, p.width, p.height].map((g) => Math.round(g * 1e6))
111
+ )
112
+ );
113
+ if (h.has(x)) return;
114
+ h.add(x);
115
+ const y = new Map(u.map(([p], g) => [p, t[g]])), S = (p) => p.type === "pane" ? w(y.get(p.id)) : { ...p, first: S(p.first), second: S(p.second) };
116
+ c.push({ id: s, kind: a, layout: S(l) });
117
+ }, m = [.../* @__PURE__ */ new Set([Math.ceil(Math.sqrt(r)), 1, 2, 3, 4, r])].filter(
118
+ (s) => s <= r
119
+ );
120
+ for (const s of m)
121
+ o(
122
+ "rows-" + s,
123
+ s === 1 ? "columns" : s === r ? "rows" : "grid",
124
+ f(t, s, "y")
125
+ );
126
+ for (const s of [2, 3])
127
+ s < r && o("columns-" + s, "grid", f(t, s, "x"));
128
+ for (const s of ["left", "right", "top", "bottom"]) {
129
+ const a = s === "left" || s === "right", l = w(t[0]), u = f(
130
+ t.slice(1),
131
+ Math.ceil(Math.sqrt((r - 1) / 2)),
132
+ a ? "x" : "y"
133
+ ), x = s === "left" || s === "top";
134
+ o(
135
+ "main-" + s,
136
+ "main-" + s,
137
+ n(
138
+ a ? "x" : "y",
139
+ x ? l : u,
140
+ x ? u : l,
141
+ x ? 0.62 : 0.38
142
+ )
143
+ );
144
+ }
145
+ return c;
84
146
  }
85
147
  export {
86
- S as dockSplitWorkspaceItem,
87
- u as isSplitWorkspaceLayout,
88
- a as mapSplitWorkspace,
89
- l as measureSplitWorkspace,
90
- W as presetSplitWorkspace,
91
- k as reconcileSplitWorkspace,
92
- m as removeSplitWorkspaceItem,
93
- w as resizeSplitWorkspace,
94
- x as splitWorkspaceItems,
95
- o as splitWorkspacePane
148
+ F as createSplitWorkspaceArrangements,
149
+ q as dockSplitWorkspaceItem,
150
+ v as isSplitWorkspaceLayout,
151
+ k as mapSplitWorkspace,
152
+ z as measureSplitWorkspace,
153
+ A as presetSplitWorkspace,
154
+ b as reconcileSplitWorkspace,
155
+ W as removeSplitWorkspaceItem,
156
+ N as resizeSplitWorkspace,
157
+ M as splitWorkspaceItems,
158
+ w as splitWorkspacePane
96
159
  };
package/dist/full.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { FloeProvider as r } from "./app/FloeProvider.js";
2
2
  import { applyShellThemeAttribute as i, applySurfaceStyleAttribute as a, applyTheme as n, builtInThemes as l, getSystemTheme as c, isFloeSurfaceStyle as m, isThemeType as s, mergeThemeTokenMaps as p, resolveThemeTokenOverrides as f, resolveThemeTokens as d, syncThemeTokenOverrides as S } from "./styles/themes/index.js";
3
3
  import { floeColorTokenCategories as T, floeDesignTokens as I, floeFontFamilyTokens as u, floeMotionTokens as g, floeRadiusTokens as C, floeSharedCssVariables as k, floeSpacingTokens as h, floeSurfaceTokens as F, floeThemeColorVariables as E, floeTypographyTokens as P, getFloeColorTokenValue as R } from "./styles/tokens.js";
4
- import { Activity as A, ActivityIcon as y, AlertCircle as D, AlertTriangle as v, ArchiveIcon as _, ArrowDown as M, ArrowLeft as W, ArrowRight as B, ArrowRightLeft as O, ArrowUp as b, AtSign as w, AwardIcon as N, BarChart as H, BatteryIcon as U, Bell as G, BellIcon as V, Bookmark as K, BookmarkIcon as z, Bot as X, BotIcon as Z, BugIcon as Q, Calendar as Y, CalendarIcon as q, Camera as j, CameraIcon as J, ChartIcon as $, Check as ee, CheckCircle as oe, CheckIcon as re, ChevronDown as te, ChevronLeft as ie, ChevronRight as ae, ChevronUp as ne, ChevronsUpDown as le, CircleStop as ce, Clock as me, ClockIcon as se, CloseIcon as pe, Cloud as fe, CloudIcon as de, Code as Se, CodeIcon as xe, CompassIcon as Te, Copy as Ie, CopyCheck as ue, CopyCheckIcon as ge, CopyIcon as Ce, Cpu as ke, CreditCardIcon as he, Database as Fe, DatabaseIcon as Ee, DollarIcon as Pe, Download as Re, DownloadIcon as Le, EditIcon as Ae, ErrorIcon as ye, ExternalLink as De, Eye as ve, EyeIcon as _e, EyeOff as Me, FileCode as We, FilePlus as Be, FilePlusIcon as Oe, FileText as be, Files as we, Filter as Ne, FilterIcon as He, FireIcon as Ue, Folder as Ge, FolderOpen as Ve, FolderPlus as Ke, FolderPlusIcon as ze, GiftIcon as Xe, GitBranch as Ze, GitBranchIcon as Qe, Globe as Ye, GlobeIcon as qe, Grid as je, Grid3x3 as Je, GripVertical as $e, Hash as eo, HeadphonesIcon as oo, Heart as ro, HeartIcon as to, HelpIcon as io, Highlighter as ao, History as no, Home as lo, HomeIcon as co, Image as mo, ImageIcon as so, Info as po, InfoIcon as fo, Key as So, KeyIcon as xo, Layers as To, LayersIcon as Io, LayoutDashboard as uo, Link as go, LinkIcon as Co, Loader2 as ko, LoadingIcon as ho, Lock as Fo, LockIcon as Eo, MagicIcon as Po, Mail as Ro, MailIcon as Lo, MapPinIcon as Ao, Maximize as yo, Menu as Do, MessageIcon as vo, MessageSquare as _o, Mic as Mo, MicIcon as Wo, MicOff as Bo, Minus as Oo, MinusIcon as bo, MonitorPointer as wo, Moon as No, MoonIcon as Ho, MoreHorizontal as Uo, MoreVertical as Go, MuteIcon as Vo, Package as Ko, PackageIcon as zo, Paperclip as Xo, Paste as Zo, PasteIcon as Qo, Pause as Yo, PauseIcon as qo, Pencil as jo, Phone as Jo, PieChart as $o, Pin as er, PinIcon as or, Play as rr, PlayIcon as tr, Plus as ir, PlusIcon as ar, PowerIcon as nr, PrinterIcon as lr, Quote as cr, Refresh as mr, RefreshIcon as sr, Region as pr, Restore as fr, RocketIcon as dr, Save as Sr, SaveIcon as xr, Search as Tr, SearchIcon as Ir, Send as ur, SendIcon as gr, Settings as Cr, SettingsIcon as kr, ShareIcon as hr, Shield as Fr, ShieldCheck as Er, ShieldIcon as Pr, SparkleIcon as Rr, Sparkles as Lr, Star as Ar, StarIcon as yr, Stop as Dr, StopFilled as vr, SuccessIcon as _r, Sun as Mr, SunIcon as Wr, TagIcon as Br, TargetIcon as Or, Terminal as br, TerminalIcon as wr, TextTool as Nr, ThumbsDownIcon as Hr, ThumbsUpIcon as Ur, Timer as Gr, Trash as Vr, TrashIcon as Kr, TrendingDown as zr, TrendingUp as Xr, Unlock as Zr, Upload as Qr, UploadIcon as Yr, User as qr, UserIcon as jr, Video as Jr, VideoIcon as $r, Volume as et, VolumeIcon as ot, VolumeOff as rt, Wand as tt, WarningIcon as it, WifiIcon as at, WifiOffIcon as nt, Workflow as lt, X as ct, XCircle as mt, Zap as st, ZapIcon as pt } from "./components/icons/index.js";
4
+ import { Activity as L, ActivityIcon as y, AlertCircle as D, AlertTriangle as v, ArchiveIcon as _, ArrowDown as M, ArrowLeft as W, ArrowRight as B, ArrowRightLeft as O, ArrowUp as b, AtSign as w, AwardIcon as N, BarChart as H, BatteryIcon as U, Bell as G, BellIcon as V, Bookmark as K, BookmarkIcon as z, Bot as X, BotIcon as Z, BugIcon as Q, Calendar as Y, CalendarIcon as q, Camera as j, CameraIcon as J, ChartIcon as $, Check as ee, CheckCircle as oe, CheckIcon as re, ChevronDown as te, ChevronLeft as ie, ChevronRight as ae, ChevronUp as ne, ChevronsUpDown as le, CircleStop as ce, Clock as me, ClockIcon as se, CloseIcon as pe, Cloud as fe, CloudIcon as de, Code as Se, CodeIcon as xe, CompassIcon as Te, Copy as Ie, CopyCheck as ue, CopyCheckIcon as ge, CopyIcon as Ce, Cpu as ke, CreditCardIcon as he, Database as Fe, DatabaseIcon as Ee, DollarIcon as Pe, Download as Re, DownloadIcon as Ae, EditIcon as Le, ErrorIcon as ye, ExternalLink as De, Eye as ve, EyeIcon as _e, EyeOff as Me, FileCode as We, FilePlus as Be, FilePlusIcon as Oe, FileText as be, Files as we, Filter as Ne, FilterIcon as He, FireIcon as Ue, Folder as Ge, FolderOpen as Ve, FolderPlus as Ke, FolderPlusIcon as ze, GiftIcon as Xe, GitBranch as Ze, GitBranchIcon as Qe, Globe as Ye, GlobeIcon as qe, Grid as je, Grid3x3 as Je, GripVertical as $e, Hash as eo, HeadphonesIcon as oo, Heart as ro, HeartIcon as to, HelpIcon as io, Highlighter as ao, History as no, Home as lo, HomeIcon as co, Image as mo, ImageIcon as so, Info as po, InfoIcon as fo, Key as So, KeyIcon as xo, Layers as To, LayersIcon as Io, LayoutDashboard as uo, Link as go, LinkIcon as Co, Loader2 as ko, LoadingIcon as ho, Lock as Fo, LockIcon as Eo, MagicIcon as Po, Mail as Ro, MailIcon as Ao, MapPinIcon as Lo, Maximize as yo, Menu as Do, MessageIcon as vo, MessageSquare as _o, Mic as Mo, MicIcon as Wo, MicOff as Bo, Minus as Oo, MinusIcon as bo, MonitorPointer as wo, Moon as No, MoonIcon as Ho, MoreHorizontal as Uo, MoreVertical as Go, MuteIcon as Vo, Package as Ko, PackageIcon as zo, Paperclip as Xo, Paste as Zo, PasteIcon as Qo, Pause as Yo, PauseIcon as qo, Pencil as jo, Phone as Jo, PieChart as $o, Pin as er, PinIcon as or, Play as rr, PlayIcon as tr, Plus as ir, PlusIcon as ar, PowerIcon as nr, PrinterIcon as lr, Quote as cr, Refresh as mr, RefreshIcon as sr, Region as pr, Restore as fr, RocketIcon as dr, Save as Sr, SaveIcon as xr, Search as Tr, SearchIcon as Ir, Send as ur, SendIcon as gr, Settings as Cr, SettingsIcon as kr, ShareIcon as hr, Shield as Fr, ShieldCheck as Er, ShieldIcon as Pr, SparkleIcon as Rr, Sparkles as Ar, Star as Lr, StarIcon as yr, Stop as Dr, StopFilled as vr, SuccessIcon as _r, Sun as Mr, SunIcon as Wr, TagIcon as Br, TargetIcon as Or, Terminal as br, TerminalIcon as wr, TextTool as Nr, ThumbsDownIcon as Hr, ThumbsUpIcon as Ur, Timer as Gr, Trash as Vr, TrashIcon as Kr, TrendingDown as zr, TrendingUp as Xr, Unlock as Zr, Upload as Qr, UploadIcon as Yr, User as qr, UserIcon as jr, Video as Jr, VideoIcon as $r, Volume as et, VolumeIcon as ot, VolumeOff as rt, Wand as tt, WarningIcon as it, WifiIcon as at, WifiOffIcon as nt, Workflow as lt, X as ct, XCircle as mt, Zap as st, ZapIcon as pt } from "./components/icons/index.js";
5
5
  import { DEFAULT_TERMINAL_WORKSPACE_PROFILE as dt, normalizeTerminalWorkspaceProfile as St } from "./terminal/workspaceProfile.js";
6
6
  import { clampTerminalCursor as Tt, createTerminalEditorState as It, deleteTerminalTextBackward as ut, insertTerminalText as gt, moveTerminalCursor as Ct, navigateTerminalHistory as kt } from "./terminal/editorModel.js";
7
- import { applyTerminalSessionSuggestion as Ft, createTerminalSessionState as Et, dispatchTerminalSessionKey as Pt, getTerminalPromptPreview as Rt, getTerminalSessionSuggestions as Lt, setTerminalSessionInputValue as At, submitTerminalSession as yt } from "./terminal/sessionModel.js";
7
+ import { applyTerminalSessionSuggestion as Ft, createTerminalSessionState as Et, dispatchTerminalSessionKey as Pt, getTerminalPromptPreview as Rt, getTerminalSessionSuggestions as At, setTerminalSessionInputValue as Lt, submitTerminalSession as yt } from "./terminal/sessionModel.js";
8
8
  import { runTerminalMockCommand as vt } from "./terminal/mockRuntime.js";
9
9
  import { DEFAULT_TERMINAL_SUGGESTION_PROVIDERS as Mt, applyTerminalSuggestion as Wt, autocompleteTerminalInput as Bt, createTerminalFullLineSuggestion as Ot, createTerminalTokenSuggestion as bt, getTerminalSuggestions as wt, matchesTerminalSuggestionPrefix as Nt, parseTerminalSuggestionContext as Ht, terminalCommandTokenSuggestionProvider as Ut, terminalHistorySuggestionProvider as Gt, terminalPathSuggestionProvider as Vt, terminalRootSuggestionProvider as Kt, terminalSnippetSuggestionProvider as zt } from "./terminal/suggestionEngine.js";
10
10
  import { ActivityAppsMain as Zt } from "./app/ActivityAppsMain.js";
@@ -13,7 +13,7 @@ import { ActivityRailIcons as jt, RailChat as Jt, RailDesignTokens as $t, RailFi
13
13
  import { ActualSize as li, Clipboard as ci, ExitFullscreen as mi, Fullscreen as si, Keyboard as pi, Monitor as fi, Scan as di, SlidersHorizontal as Si, Unplug as xi } from "./components/icons/RemoteControlIcons.js";
14
14
  import { AffixInput as Ii, Input as ui, NumberInput as gi, Textarea as Ci } from "./components/ui/Input.js";
15
15
  import { AppViewport as hi } from "./components/layout/AppViewport.js";
16
- import { ArchiveFileIcon as Ei, AudioFileIcon as Pi, BrokenSymlinkIcon as Ri, CodeFileIcon as Li, ConfigFileIcon as Ai, DocumentFileIcon as yi, FileIcon as Di, FileItemIcon as vi, FolderIcon as _i, FolderOpenIcon as Mi, ImageFileIcon as Wi, JavaScriptFileIcon as Bi, ShellScriptFileIcon as Oi, StyleFileIcon as bi, SymlinkFileIcon as wi, SymlinkFolderIcon as Ni, SymlinkFolderOpenIcon as Hi, TypeScriptFileIcon as Ui, VideoFileIcon as Gi, getFileIcon as Vi, resolveFileItemIcon as Ki } from "./components/file-browser/FileIcons.js";
16
+ import { ArchiveFileIcon as Ei, AudioFileIcon as Pi, BrokenSymlinkIcon as Ri, CodeFileIcon as Ai, ConfigFileIcon as Li, DocumentFileIcon as yi, FileIcon as Di, FileItemIcon as vi, FolderIcon as _i, FolderOpenIcon as Mi, ImageFileIcon as Wi, JavaScriptFileIcon as Bi, ShellScriptFileIcon as Oi, StyleFileIcon as bi, SymlinkFileIcon as wi, SymlinkFolderIcon as Ni, SymlinkFolderOpenIcon as Hi, TypeScriptFileIcon as Ui, VideoFileIcon as Gi, getFileIcon as Vi, resolveFileItemIcon as Ki } from "./components/file-browser/FileIcons.js";
17
17
  import { AreaChart as Xi, DataBarChart as Zi, DataPieChart as Qi, LineChart as Yi, MonitoringChart as qi } from "./components/ui/Charts.js";
18
18
  import { AttachmentPreview as Ji } from "./components/chat/input/AttachmentPreview.js";
19
19
  import { BUILT_IN_SHELL_THEME_DEFAULTS as ea, REQUIRED_SHELL_THEME_TOKENS as oa, assertUniqueThemePresetNames as ra, builtInShellThemePresets as ta, createShellThemePreset as ia, getShellThemePresetsForMode as aa, normalizeShellThemeSelection as na, presetSupportsMode as la, resolveShellThemePresetName as ca } from "./styles/themes/presets.js";
@@ -21,7 +21,7 @@ import { BlockRenderer as sa } from "./components/chat/blocks/BlockRenderer.js";
21
21
  import { BottomBarCompanion as fa } from "./components/layout/BottomBarCompanion.js";
22
22
  import { Breadcrumb as Sa } from "./components/file-browser/Breadcrumb.js";
23
23
  import { Button as Ta } from "./components/ui/Button.js";
24
- import { CANVAS_WHEEL_INTERACTIVE_ATTR as ua, DEFAULT_CANVAS_WHEEL_INTERACTIVE_SELECTOR as ga, DEFAULT_LOCAL_INTERACTION_SURFACE_SELECTOR as Ca, DEFAULT_WORKBENCH_TEXT_SELECTION_SURFACE_SELECTOR as ka, DEFAULT_WORKBENCH_WIDGET_ACTIVATION_SURFACE_SELECTOR as ha, DEFAULT_WORKBENCH_WIDGET_SHELL_SELECTOR as Fa, LOCAL_INTERACTION_SURFACE_ATTR as Ea, WORKBENCH_TEXT_SELECTION_SURFACE_ATTR as Pa, WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR as Ra, WORKBENCH_WIDGET_SHELL_ATTR as La, isLocalInteractionSurfaceTarget as Aa, resolveSurfaceInteractionTargetRole as ya, resolveSurfaceWheelRouting as Da, resolveWorkbenchWidgetEventOwnership as va, resolveWorkbenchWidgetLocalTypingTarget as _a, resolveWorkbenchWidgetTextSelectionTarget as Ma, shouldActivateWorkbenchWidgetLocalTarget as Wa } from "./components/ui/localInteractionSurface.js";
24
+ import { CANVAS_WHEEL_INTERACTIVE_ATTR as ua, DEFAULT_CANVAS_WHEEL_INTERACTIVE_SELECTOR as ga, DEFAULT_LOCAL_INTERACTION_SURFACE_SELECTOR as Ca, DEFAULT_WORKBENCH_TEXT_SELECTION_SURFACE_SELECTOR as ka, DEFAULT_WORKBENCH_WIDGET_ACTIVATION_SURFACE_SELECTOR as ha, DEFAULT_WORKBENCH_WIDGET_SHELL_SELECTOR as Fa, LOCAL_INTERACTION_SURFACE_ATTR as Ea, WORKBENCH_TEXT_SELECTION_SURFACE_ATTR as Pa, WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR as Ra, WORKBENCH_WIDGET_SHELL_ATTR as Aa, isLocalInteractionSurfaceTarget as La, resolveSurfaceInteractionTargetRole as ya, resolveSurfaceWheelRouting as Da, resolveWorkbenchWidgetEventOwnership as va, resolveWorkbenchWidgetLocalTypingTarget as _a, resolveWorkbenchWidgetTextSelectionTarget as Ma, shouldActivateWorkbenchWidgetLocalTarget as Wa } from "./components/ui/localInteractionSurface.js";
25
25
  import { Card as Oa, CardContent as ba, CardDescription as wa, CardFooter as Na, CardHeader as Ha, CardTitle as Ua } from "./components/ui/Card.js";
26
26
  import { ChatContainer as Va } from "./components/chat/ChatContainer.js";
27
27
  import { ChatInput as za } from "./components/chat/input/ChatInput.js";
@@ -35,7 +35,7 @@ import { CommandPalette as fn } from "./components/ui/CommandPalette.js";
35
35
  import { CommandProvider as Sn, createCommandService as xn, useCommand as Tn } from "./context/CommandContext.js";
36
36
  import { ComponentRegistryProvider as un, createComponentRegistry as gn, hasComponentRegistryContext as Cn, useComponentContextFactory as kn, useComponentRegistry as hn, useOptionalComponentRegistry as Fn } from "./context/ComponentRegistry.js";
37
37
  import { ConfirmDialog as Pn, Dialog as Rn } from "./components/ui/Dialog.js";
38
- import { ConnectionStatus as An } from "./components/chat/status/ConnectionStatus.js";
38
+ import { ConnectionStatus as Ln } from "./components/chat/status/ConnectionStatus.js";
39
39
  import { DECK_GRID_CONFIG as Dn, getGridConfigFromElement as vn } from "./components/deck/deckGridMetrics.js";
40
40
  import { DEFAULT_FLOE_CONFIG as Mn, FloeConfigProvider as Wn, useFloeConfig as Bn, useResolvedFloeConfig as On } from "./context/FloeConfigContext.js";
41
41
  import { DEFAULT_VIRTUAL_LIST_CONFIG as wn } from "./components/chat/types.js";
@@ -52,7 +52,7 @@ import { DirectoryPicker as ul } from "./components/ui/DirectoryPicker.js";
52
52
  import { DirectoryTree as Cl } from "./components/file-browser/DirectoryTree.js";
53
53
  import { DisplayModePageShell as hl } from "./components/layout/DisplayModePageShell.js";
54
54
  import { DisplayModeSwitcher as El, sanitizeDisplayMode as Pl } from "./components/layout/DisplayModeSwitcher.js";
55
- import { DockActivity as Ll, DockBot as Al, DockCode as yl, DockCpu as Dl, DockFileCode as vl, DockFolder as _l, DockGlobe as Ml, DockLayers as Wl, DockLayoutDashboard as Bl, DockMessageSquare as Ol, DockRegion as bl, DockSearch as wl, DockSparkles as Nl, DockTerminal as Hl, DockText as Ul } from "./components/icons/DockIcons.js";
55
+ import { DockActivity as Al, DockBot as Ll, DockCode as yl, DockCpu as Dl, DockFileCode as vl, DockFolder as _l, DockGlobe as Ml, DockLayers as Wl, DockLayoutDashboard as Bl, DockMessageSquare as Ol, DockRegion as bl, DockSearch as wl, DockSparkles as Nl, DockTerminal as Hl, DockText as Ul } from "./components/icons/DockIcons.js";
56
56
  import { DropZonePreview as Vl } from "./components/deck/DropZonePreview.js";
57
57
  import { Dropdown as zl, Select as Xl } from "./components/ui/Dropdown.js";
58
58
  import { ErrorBlock as Ql, HighlightBlock as Yl, InfoBlock as ql, NoteBlock as jl, SuccessBlock as Jl, TipBlock as $l, WarningBlock as ec } from "./components/ui/HighlightBlock.js";
@@ -66,7 +66,7 @@ import { FileBrowserProvider as uc, useFileBrowser as gc } from "./components/fi
66
66
  import { FileBrowserStatusBar as kc } from "./components/file-browser/FileBrowserStatusBar.js";
67
67
  import { FileBrowserToolbar as Fc } from "./components/file-browser/FileBrowserToolbar.js";
68
68
  import { FileContextMenu as Pc } from "./components/file-browser/FileContextMenu.js";
69
- import { FileGridView as Lc } from "./components/file-browser/FileGridView.js";
69
+ import { FileGridView as Ac } from "./components/file-browser/FileGridView.js";
70
70
  import { FileListView as yc } from "./components/file-browser/FileListView.js";
71
71
  import { FileOpenPicker as vc, normalizeFileOpenSelection as _c, updateFileOpenSelection as Mc } from "./components/ui/FileOpenPicker.js";
72
72
  import { FileSavePicker as Bc } from "./components/ui/FileSavePicker.js";
@@ -85,7 +85,7 @@ import { LaunchpadGrid as gm } from "./components/launchpad/LaunchpadGrid.js";
85
85
  import { LaunchpadItem as km } from "./components/launchpad/LaunchpadItem.js";
86
86
  import { LaunchpadModal as Fm } from "./components/launchpad/LaunchpadModal.js";
87
87
  import { LaunchpadPagination as Pm } from "./components/launchpad/LaunchpadPagination.js";
88
- import { LaunchpadSearch as Lm } from "./components/launchpad/LaunchpadSearch.js";
88
+ import { LaunchpadSearch as Am } from "./components/launchpad/LaunchpadSearch.js";
89
89
  import { LayoutProvider as ym, createLayoutService as Dm, useLayout as vm, useMobileLayout as _m } from "./context/LayoutContext.js";
90
90
  import { LayoutSelector as Wm } from "./components/deck/LayoutSelector.js";
91
91
  import { LoadingOverlay as Om } from "./components/loading/LoadingOverlay.js";
@@ -102,7 +102,7 @@ import { MetricsWidget as ns } from "./widgets/MetricsWidget.js";
102
102
  import { MobileKeyboard as cs } from "./components/ui/MobileKeyboard.js";
103
103
  import { MobileTabBar as ss } from "./components/layout/MobileTabBar.js";
104
104
  import { NOTES_CONTEXT_MENU_WIDTH_PX as fs, NotesContextMenu as ds, estimateNotesContextMenuHeight as Ss } from "./components/notes/NotesContextMenu.js";
105
- import { NOTES_SCALE_MAX as Ts, NOTES_SCALE_MIN as Is, NOTE_BUCKET_METRICS as us, NOTE_COLOR_TOKENS as gs, TOPIC_ACCENT_TOKENS as Cs, TOPIC_ICON_KEYS as ks, applyNotesEvent as hs, centerViewportOnWorldPoint as Fs, clampScale as Es, computeBoardBounds as Ps, createDefaultNotesSnapshot as Rs, groupTrashItems as Ls, mergeBoardBounds as As, nextLocalZIndex as ys, normalizeNotesSnapshot as Ds, noteBucketMetrics as vs, promoteLocalItem as _s, removeSnapshotItem as Ms, removeSnapshotTopic as Ws, removeSnapshotTrashItem as Bs, replaceSnapshotItem as Os, replaceSnapshotTopic as bs, replaceSnapshotTrashItem as ws, screenToWorld as Ns, visibleWorldRect as Hs, worldToScreen as Us, zoomViewportAtPoint as Gs } from "./components/notes/types.js";
105
+ import { NOTES_SCALE_MAX as Ts, NOTES_SCALE_MIN as Is, NOTE_BUCKET_METRICS as us, NOTE_COLOR_TOKENS as gs, TOPIC_ACCENT_TOKENS as Cs, TOPIC_ICON_KEYS as ks, applyNotesEvent as hs, centerViewportOnWorldPoint as Fs, clampScale as Es, computeBoardBounds as Ps, createDefaultNotesSnapshot as Rs, groupTrashItems as As, mergeBoardBounds as Ls, nextLocalZIndex as ys, normalizeNotesSnapshot as Ds, noteBucketMetrics as vs, promoteLocalItem as _s, removeSnapshotItem as Ms, removeSnapshotTopic as Ws, removeSnapshotTrashItem as Bs, replaceSnapshotItem as Os, replaceSnapshotTopic as bs, replaceSnapshotTrashItem as ws, screenToWorld as Ns, visibleWorldRect as Hs, worldToScreen as Us, zoomViewportAtPoint as Gs } from "./components/notes/types.js";
106
106
  import { NOTE_COLOR_LABELS as Ks, NotesAnimalIcon as zs, NotesOverlayIcon as Xs, NotesTrashCanIcon as Zs, TOPIC_ACCENT_LABELS as Qs } from "./components/notes/notesAppearance.js";
107
107
  import { NotesOverlay as qs } from "./components/notes/NotesOverlay.js";
108
108
  import { NotificationContainer as Js, NotificationProvider as $s, createNotificationService as ep, useNotification as op } from "./context/NotificationContext.js";
@@ -115,7 +115,7 @@ import { ProcessingIndicator as up } from "./components/ui/ProcessingIndicator.j
115
115
  import { QuoteBlock as Cp } from "./components/ui/QuoteBlock.js";
116
116
  import { RadioGroup as hp, RadioList as Fp, RadioOption as Ep } from "./components/ui/Radio.js";
117
117
  import { ResizeHandle as Rp } from "./components/layout/ResizeHandle.js";
118
- import { SegmentedControl as Ap } from "./components/ui/SegmentedControl.js";
118
+ import { SegmentedControl as Lp } from "./components/ui/SegmentedControl.js";
119
119
  import { SettingRow as Dp, SettingsLayout as vp, SettingsList as _p, SettingsNavigation as Mp, SettingsSection as Wp } from "./components/ui/Settings.js";
120
120
  import { Shell as Op } from "./components/layout/Shell.js";
121
121
  import { ShellBlock as wp } from "./components/chat/blocks/ShellBlock.js";
@@ -134,7 +134,7 @@ import { SurfaceFloatingPanel as uf } from "./components/ui/SurfaceFloatingPanel
134
134
  import { SvgBlock as Cf } from "./components/chat/blocks/SvgBlock.js";
135
135
  import { Switch as hf } from "./components/ui/Switch.js";
136
136
  import { TabPanel as Ef, Tabs as Pf } from "./components/ui/Tabs.js";
137
- import { Tag as Lf } from "./components/ui/Tag.js";
137
+ import { Tag as Af } from "./components/ui/Tag.js";
138
138
  import { TerminalWidget as yf, createTerminalWidget as Df } from "./widgets/TerminalWidget.js";
139
139
  import { TextBlock as _f } from "./components/chat/blocks/TextBlock.js";
140
140
  import { ThemeProvider as Wf, createThemeService as Bf, useTheme as Of } from "./context/ThemeContext.js";
@@ -154,7 +154,7 @@ import { WidgetStateProvider as pd, useCurrentWidgetId as fd, useWidgetState as
154
154
  import { WidgetTypeSwitcher as Td } from "./components/deck/WidgetTypeSwitcher.js";
155
155
  import { WorkingIndicator as ud } from "./components/chat/status/WorkingIndicator.js";
156
156
  import { applyDragDelta as Cd, applyResizeDelta as kd, getGridCellSize as hd, pixelDeltaToGridDelta as Fd, positionToGridArea as Ed, snapToGrid as Pd } from "./utils/gridLayout.js";
157
- import { buildAssistantNoticeEvents as Ld, createStreamEventBuilder as Ad, isStreamEvent as yd } from "./components/chat/streamEvents.js";
157
+ import { buildAssistantNoticeEvents as Ad, createStreamEventBuilder as Ld, isStreamEvent as yd } from "./components/chat/streamEvents.js";
158
158
  import { calculateFitScale as vd } from "./utils/fitScale.js";
159
159
  import { checkCollision as Md, constrainPosition as Wd, findFreePosition as Bd, hasCollision as Od, sameGridPosition as bd } from "./utils/gridCollision.js";
160
160
  import { classifyArchiveFileName as Nd } from "./components/file-browser/archiveFiles.js";
@@ -166,39 +166,39 @@ import { configureMermaidWorker as pS, configureSyncMermaid as fS, renderMermaid
166
166
  import { configureShikiWorker as IS, configureSyncHighlighter as uS, highlightCode as gS, terminateShikiWorker as CS, useCodeHighlight as kS } from "./components/chat/hooks/useCodeHighlight.js";
167
167
  import { createAdaptiveSidebar as FS } from "./hooks/createAdaptiveSidebar.js";
168
168
  import { createDocumentAssetRecovery as PS } from "./app/createDocumentAssetRecovery.js";
169
- import { createFloatingPresence as LS } from "./components/ui/floatingPresence.js";
169
+ import { createFloatingPresence as AS } from "./components/ui/floatingPresence.js";
170
170
  import { createInputHistoryController as yS } from "./components/chat/input/createInputHistoryController.js";
171
171
  import { createLongPressContextMenuHandlers as vS } from "./components/file-browser/longPressContextMenu.js";
172
172
  import { createRetainedContent as MS } from "./hooks/createRetainedContent.js";
173
173
  import { createSimpleContext as BS } from "./context/createSimpleContext.js";
174
- import { createUIFirstSelection as bS } from "./utils/uiFirstSelection.js";
175
- import { createVirtualListLayout as NS } from "./components/chat/hooks/virtualListLayout.js";
176
- import { deferAfterPaint as US, deferNonBlocking as GS } from "./utils/defer.js";
177
- import { dockSplitWorkspaceItem as KS, isSplitWorkspaceLayout as zS, mapSplitWorkspace as XS, measureSplitWorkspace as ZS, presetSplitWorkspace as QS, reconcileSplitWorkspace as YS, removeSplitWorkspaceItem as qS, resizeSplitWorkspace as jS, splitWorkspaceItems as JS, splitWorkspacePane as $S } from "./components/layout/splitWorkspaceModel.js";
178
- import { duration as ox, easing as rx, fadeIn as tx, listContainer as ix, listItem as ax, panelResize as nx, popIn as lx, scaleIn as cx, sidebarVariants as mx, slideInFromBottom as sx, slideInFromLeft as px, slideInFromRight as fx, slideInFromTop as dx, springConfig as Sx } from "./utils/animations.js";
179
- import { formatKeybind as Tx, isMacLikePlatform as Ix, isPrimaryModKeyPressed as ux, matchKeybind as gx, parseKeybind as Cx } from "./utils/keybind.js";
180
- import { intersectSurfaceRects as hx } from "./components/ui/surfaceFloatingBoundary.js";
181
- import { isTypingElement as Ex, shouldIgnoreHotkeys as Px } from "./utils/dom.js";
174
+ import { createSplitWorkspaceArrangements as bS, dockSplitWorkspaceItem as wS, isSplitWorkspaceLayout as NS, mapSplitWorkspace as HS, measureSplitWorkspace as US, presetSplitWorkspace as GS, reconcileSplitWorkspace as VS, removeSplitWorkspaceItem as KS, resizeSplitWorkspace as zS, splitWorkspaceItems as XS, splitWorkspacePane as ZS } from "./components/layout/splitWorkspaceModel.js";
175
+ import { createUIFirstSelection as YS } from "./utils/uiFirstSelection.js";
176
+ import { createVirtualListLayout as jS } from "./components/chat/hooks/virtualListLayout.js";
177
+ import { deferAfterPaint as $S, deferNonBlocking as ex } from "./utils/defer.js";
178
+ import { duration as rx, easing as tx, fadeIn as ix, listContainer as ax, listItem as nx, panelResize as lx, popIn as cx, scaleIn as mx, sidebarVariants as sx, slideInFromBottom as px, slideInFromLeft as fx, slideInFromRight as dx, slideInFromTop as Sx, springConfig as xx } from "./utils/animations.js";
179
+ import { formatKeybind as Ix, isMacLikePlatform as ux, isPrimaryModKeyPressed as gx, matchKeybind as Cx, parseKeybind as kx } from "./utils/keybind.js";
180
+ import { intersectSurfaceRects as Fx } from "./components/ui/surfaceFloatingBoundary.js";
181
+ import { isTypingElement as Px, shouldIgnoreHotkeys as Rx } from "./utils/dom.js";
182
182
  import { lockBodyStyle as Lx } from "./utils/bodyStyleLock.js";
183
- import { markdownMediaKind as yx, markdownMediaPlaceholder as Dx, readMarkdownMediaPlaceholder as vx, safeMarkdownMediaURL as _x, sandboxedMarkdownHtml as Mx } from "./components/chat/markdown/media.js";
184
- import { observeDialogHeight as Bx } from "./components/ui/dialogHeightMotion.js";
185
- import { registerCommandContributions as bx, useCommandContributions as wx } from "./hooks/useCommandContributions.js";
186
- import { resolveFloatingWindowViewport as Hx } from "./components/ui/floatingWindowGeometry.js";
187
- import { secureRandomUUID as Gx } from "./utils/secureRandom.js";
188
- import { startPointerSession as Kx } from "./components/ui/pointerSession.js";
189
- import { useAttachments as Xx } from "./components/chat/hooks/useAttachments.js";
190
- import { useAutoScroll as Qx } from "./components/chat/hooks/useAutoScroll.js";
191
- import { useDebounce as qx } from "./hooks/useDebounce.js";
192
- import { useDeckDrag as Jx } from "./hooks/useDeckDrag.js";
193
- import { useFileBrowserDropTarget as eT, useFileBrowserItemDrag as oT } from "./hooks/useFileBrowserDrag.js";
194
- import { useKeybind as tT } from "./hooks/useKeybind.js";
195
- import { useMediaQuery as aT } from "./hooks/useMediaQuery.js";
196
- import { useOverlayMask as lT } from "./hooks/useOverlayMask.js";
197
- import { usePersisted as mT } from "./hooks/usePersisted.js";
198
- import { useResizeObserver as pT } from "./hooks/useResizeObserver.js";
199
- import { useVirtualList as dT } from "./components/chat/hooks/useVirtualList.js";
183
+ import { markdownMediaKind as Dx, markdownMediaPlaceholder as vx, readMarkdownMediaPlaceholder as _x, safeMarkdownMediaURL as Mx, sandboxedMarkdownHtml as Wx } from "./components/chat/markdown/media.js";
184
+ import { observeDialogHeight as Ox } from "./components/ui/dialogHeightMotion.js";
185
+ import { registerCommandContributions as wx, useCommandContributions as Nx } from "./hooks/useCommandContributions.js";
186
+ import { resolveFloatingWindowViewport as Ux } from "./components/ui/floatingWindowGeometry.js";
187
+ import { secureRandomUUID as Vx } from "./utils/secureRandom.js";
188
+ import { startPointerSession as zx } from "./components/ui/pointerSession.js";
189
+ import { useAttachments as Zx } from "./components/chat/hooks/useAttachments.js";
190
+ import { useAutoScroll as Yx } from "./components/chat/hooks/useAutoScroll.js";
191
+ import { useDebounce as jx } from "./hooks/useDebounce.js";
192
+ import { useDeckDrag as $x } from "./hooks/useDeckDrag.js";
193
+ import { useFileBrowserDropTarget as oT, useFileBrowserItemDrag as rT } from "./hooks/useFileBrowserDrag.js";
194
+ import { useKeybind as iT } from "./hooks/useKeybind.js";
195
+ import { useMediaQuery as nT } from "./hooks/useMediaQuery.js";
196
+ import { useOverlayMask as cT } from "./hooks/useOverlayMask.js";
197
+ import { usePersisted as sT } from "./hooks/usePersisted.js";
198
+ import { useResizeObserver as fT } from "./hooks/useResizeObserver.js";
199
+ import { useVirtualList as ST } from "./components/chat/hooks/useVirtualList.js";
200
200
  export {
201
- A as Activity,
201
+ L as Activity,
202
202
  Zt as ActivityAppsMain,
203
203
  Yt as ActivityBar,
204
204
  y as ActivityIcon,
@@ -273,15 +273,15 @@ export {
273
273
  Se as Code,
274
274
  cn as CodeBlock,
275
275
  sn as CodeDiffBlock,
276
- Li as CodeFileIcon,
276
+ Ai as CodeFileIcon,
277
277
  xe as CodeIcon,
278
278
  fn as CommandPalette,
279
279
  Sn as CommandProvider,
280
280
  Te as CompassIcon,
281
281
  un as ComponentRegistryProvider,
282
- Ai as ConfigFileIcon,
282
+ Li as ConfigFileIcon,
283
283
  Pn as ConfirmDialog,
284
- An as ConnectionStatus,
284
+ Ln as ConnectionStatus,
285
285
  Ie as Copy,
286
286
  ue as CopyCheck,
287
287
  ge as CopyCheckIcon,
@@ -317,8 +317,8 @@ export {
317
317
  Cl as DirectoryTree,
318
318
  hl as DisplayModePageShell,
319
319
  El as DisplayModeSwitcher,
320
- Ll as DockActivity,
321
- Al as DockBot,
320
+ Al as DockActivity,
321
+ Ll as DockBot,
322
322
  yl as DockCode,
323
323
  Dl as DockCpu,
324
324
  vl as DockFileCode,
@@ -335,10 +335,10 @@ export {
335
335
  yi as DocumentFileIcon,
336
336
  Pe as DollarIcon,
337
337
  Re as Download,
338
- Le as DownloadIcon,
338
+ Ae as DownloadIcon,
339
339
  Vl as DropZonePreview,
340
340
  zl as Dropdown,
341
- Ae as EditIcon,
341
+ Le as EditIcon,
342
342
  Ql as ErrorBlock,
343
343
  ye as ErrorIcon,
344
344
  mi as ExitFullscreen,
@@ -358,7 +358,7 @@ export {
358
358
  Fc as FileBrowserToolbar,
359
359
  We as FileCode,
360
360
  Pc as FileContextMenu,
361
- Lc as FileGridView,
361
+ Ac as FileGridView,
362
362
  Di as FileIcon,
363
363
  vi as FileItemIcon,
364
364
  yc as FileListView,
@@ -434,7 +434,7 @@ export {
434
434
  km as LaunchpadItem,
435
435
  Fm as LaunchpadModal,
436
436
  Pm as LaunchpadPagination,
437
- Lm as LaunchpadSearch,
437
+ Am as LaunchpadSearch,
438
438
  To as Layers,
439
439
  Io as LayersIcon,
440
440
  uo as LayoutDashboard,
@@ -452,8 +452,8 @@ export {
452
452
  wm as MENU_ITEM_SELECTOR,
453
453
  Po as MagicIcon,
454
454
  Ro as Mail,
455
- Lo as MailIcon,
456
- Ao as MapPinIcon,
455
+ Ao as MailIcon,
456
+ Lo as MapPinIcon,
457
457
  Km as MarkdownBlock,
458
458
  Xm as MarkdownMedia,
459
459
  yo as Maximize,
@@ -551,7 +551,7 @@ export {
551
551
  Tr as Search,
552
552
  Ir as SearchIcon,
553
553
  wc as SearchSidebarWidget,
554
- Ap as SegmentedControl,
554
+ Lp as SegmentedControl,
555
555
  an as SegmentedProgress,
556
556
  Xl as Select,
557
557
  ur as Send,
@@ -586,10 +586,10 @@ export {
586
586
  Si as SlidersHorizontal,
587
587
  $p as SnakeLoader,
588
588
  Rr as SparkleIcon,
589
- Lr as Sparkles,
589
+ Ar as Sparkles,
590
590
  of as SplitWorkspace,
591
591
  tf as StableText,
592
- Ar as Star,
592
+ Lr as Star,
593
593
  yr as StarIcon,
594
594
  nf as StatusRegion,
595
595
  cf as Stepper,
@@ -615,7 +615,7 @@ export {
615
615
  ks as TOPIC_ICON_KEYS,
616
616
  Ef as TabPanel,
617
617
  Pf as Tabs,
618
- Lf as Tag,
618
+ Af as Tag,
619
619
  Br as TagIcon,
620
620
  Or as TargetIcon,
621
621
  br as Terminal,
@@ -656,7 +656,7 @@ export {
656
656
  rt as VolumeOff,
657
657
  Pa as WORKBENCH_TEXT_SELECTION_SURFACE_ATTR,
658
658
  Ra as WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR,
659
- La as WORKBENCH_WIDGET_SHELL_ATTR,
659
+ Aa as WORKBENCH_WIDGET_SHELL_ATTR,
660
660
  tt as Wand,
661
661
  ec as WarningBlock,
662
662
  it as WarningIcon,
@@ -686,7 +686,7 @@ export {
686
686
  n as applyTheme,
687
687
  ra as assertUniqueThemePresetNames,
688
688
  Bt as autocompleteTerminalInput,
689
- Ld as buildAssistantNoticeEvents,
689
+ Ad as buildAssistantNoticeEvents,
690
690
  ta as builtInShellThemePresets,
691
691
  l as builtInThemes,
692
692
  vd as calculateFitScale,
@@ -716,7 +716,7 @@ export {
716
716
  Jd as createDiffWorker,
717
717
  PS as createDocumentAssetRecovery,
718
718
  fp as createFilesystemPickerDataSource,
719
- LS as createFloatingPresence,
719
+ AS as createFloatingPresence,
720
720
  yS as createInputHistoryController,
721
721
  Dm as createLayoutService,
722
722
  vS as createLongPressContextMenuHandlers,
@@ -725,27 +725,28 @@ export {
725
725
  MS as createRetainedContent,
726
726
  ia as createShellThemePreset,
727
727
  BS as createSimpleContext,
728
- Ad as createStreamEventBuilder,
728
+ bS as createSplitWorkspaceArrangements,
729
+ Ld as createStreamEventBuilder,
729
730
  It as createTerminalEditorState,
730
731
  Ot as createTerminalFullLineSuggestion,
731
732
  Et as createTerminalSessionState,
732
733
  bt as createTerminalTokenSuggestion,
733
734
  Df as createTerminalWidget,
734
735
  Bf as createThemeService,
735
- bS as createUIFirstSelection,
736
+ YS as createUIFirstSelection,
736
737
  Vd as createViewportFromZoomAnchor,
737
- NS as createVirtualListLayout,
738
+ jS as createVirtualListLayout,
738
739
  nd as createWidgetRegistry,
739
- US as deferAfterPaint,
740
- GS as deferNonBlocking,
740
+ $S as deferAfterPaint,
741
+ ex as deferNonBlocking,
741
742
  ut as deleteTerminalTextBackward,
742
743
  Pt as dispatchTerminalSessionKey,
743
- KS as dockSplitWorkspaceItem,
744
- ox as duration,
745
- rx as easing,
744
+ wS as dockSplitWorkspaceItem,
745
+ rx as duration,
746
+ tx as easing,
746
747
  zn as ensureSurfacePortalInteractionTracking,
747
748
  Ss as estimateNotesContextMenuHeight,
748
- tx as fadeIn,
749
+ ix as fadeIn,
749
750
  Bd as findFreePosition,
750
751
  T as floeColorTokenCategories,
751
752
  I as floeDesignTokens,
@@ -758,7 +759,7 @@ export {
758
759
  E as floeThemeColorVariables,
759
760
  P as floeTypographyTokens,
760
761
  Nm as focusMenuItem,
761
- Tx as formatKeybind,
762
+ Ix as formatKeybind,
762
763
  dp as formatPickerPath,
763
764
  Vi as getFileIcon,
764
765
  R as getFloeColorTokenValue,
@@ -768,9 +769,9 @@ export {
768
769
  aa as getShellThemePresetsForMode,
769
770
  c as getSystemTheme,
770
771
  Rt as getTerminalPromptPreview,
771
- Lt as getTerminalSessionSuggestions,
772
+ At as getTerminalSessionSuggestions,
772
773
  wt as getTerminalSuggestions,
773
- Ls as groupTrashItems,
774
+ As as groupTrashItems,
774
775
  Um as handleMenuKeyboardNavigation,
775
776
  Od as hasCollision,
776
777
  Cn as hasComponentRegistryContext,
@@ -779,28 +780,28 @@ export {
779
780
  aS as hasMarkdownWorker,
780
781
  gS as highlightCode,
781
782
  gt as insertTerminalText,
782
- hx as intersectSurfaceRects,
783
+ Fx as intersectSurfaceRects,
783
784
  m as isFloeSurfaceStyle,
784
- Aa as isLocalInteractionSurfaceTarget,
785
- Ix as isMacLikePlatform,
785
+ La as isLocalInteractionSurfaceTarget,
786
+ ux as isMacLikePlatform,
786
787
  Kd as isPointInsideCanvasRect,
787
- ux as isPrimaryModKeyPressed,
788
- zS as isSplitWorkspaceLayout,
788
+ gx as isPrimaryModKeyPressed,
789
+ NS as isSplitWorkspaceLayout,
789
790
  yd as isStreamEvent,
790
791
  Xn as isSurfacePortalMode,
791
792
  s as isThemeType,
792
- Ex as isTypingElement,
793
- ix as listContainer,
794
- ax as listItem,
793
+ Px as isTypingElement,
794
+ ax as listContainer,
795
+ nx as listItem,
795
796
  zd as localToCanvasWorld,
796
797
  Lx as lockBodyStyle,
797
- XS as mapSplitWorkspace,
798
- yx as markdownMediaKind,
799
- Dx as markdownMediaPlaceholder,
800
- gx as matchKeybind,
798
+ HS as mapSplitWorkspace,
799
+ Dx as markdownMediaKind,
800
+ vx as markdownMediaPlaceholder,
801
+ Cx as matchKeybind,
801
802
  Nt as matchesTerminalSuggestionPrefix,
802
- ZS as measureSplitWorkspace,
803
- As as mergeBoardBounds,
803
+ US as measureSplitWorkspace,
804
+ Ls as mergeBoardBounds,
804
805
  p as mergeThemeTokenMaps,
805
806
  Gm as moveMenuFocus,
806
807
  Ct as moveTerminalCursor,
@@ -811,35 +812,35 @@ export {
811
812
  na as normalizeShellThemeSelection,
812
813
  St as normalizeTerminalWorkspaceProfile,
813
814
  vs as noteBucketMetrics,
814
- Bx as observeDialogHeight,
815
- nx as panelResize,
816
- Cx as parseKeybind,
815
+ Ox as observeDialogHeight,
816
+ lx as panelResize,
817
+ kx as parseKeybind,
817
818
  Sp as parsePickerPath,
818
819
  Ht as parseTerminalSuggestionContext,
819
820
  Fd as pixelDeltaToGridDelta,
820
- lx as popIn,
821
+ cx as popIn,
821
822
  Ed as positionToGridArea,
822
- QS as presetSplitWorkspace,
823
+ GS as presetSplitWorkspace,
823
824
  la as presetSupportsMode,
824
825
  Zn as projectSurfacePortalPosition,
825
826
  Qn as projectSurfacePortalRect,
826
827
  _s as promoteLocalItem,
827
- vx as readMarkdownMediaPlaceholder,
828
- YS as reconcileSplitWorkspace,
829
- bx as registerCommandContributions,
828
+ _x as readMarkdownMediaPlaceholder,
829
+ VS as reconcileSplitWorkspace,
830
+ wx as registerCommandContributions,
830
831
  Ms as removeSnapshotItem,
831
832
  Ws as removeSnapshotTopic,
832
833
  Bs as removeSnapshotTrashItem,
833
- qS as removeSplitWorkspaceItem,
834
+ KS as removeSplitWorkspaceItem,
834
835
  nS as renderMarkdown,
835
836
  lS as renderMarkdownSync,
836
837
  dS as renderMermaid,
837
838
  Os as replaceSnapshotItem,
838
839
  bs as replaceSnapshotTopic,
839
840
  ws as replaceSnapshotTrashItem,
840
- jS as resizeSplitWorkspace,
841
+ zS as resizeSplitWorkspace,
841
842
  Ki as resolveFileItemIcon,
842
- Hx as resolveFloatingWindowViewport,
843
+ Ux as resolveFloatingWindowViewport,
843
844
  ca as resolveShellThemePresetName,
844
845
  ya as resolveSurfaceInteractionTargetRole,
845
846
  Yn as resolveSurfacePortalBoundaryRect,
@@ -853,27 +854,27 @@ export {
853
854
  _a as resolveWorkbenchWidgetLocalTypingTarget,
854
855
  Ma as resolveWorkbenchWidgetTextSelectionTarget,
855
856
  vt as runTerminalMockCommand,
856
- _x as safeMarkdownMediaURL,
857
+ Mx as safeMarkdownMediaURL,
857
858
  bd as sameGridPosition,
858
- Mx as sandboxedMarkdownHtml,
859
+ Wx as sandboxedMarkdownHtml,
859
860
  Pl as sanitizeDisplayMode,
860
- cx as scaleIn,
861
+ mx as scaleIn,
861
862
  Ns as screenToWorld,
862
- Gx as secureRandomUUID,
863
- At as setTerminalSessionInputValue,
863
+ Vx as secureRandomUUID,
864
+ Lt as setTerminalSessionInputValue,
864
865
  Wa as shouldActivateWorkbenchWidgetLocalTarget,
865
- Px as shouldIgnoreHotkeys,
866
- mx as sidebarVariants,
867
- sx as slideInFromBottom,
868
- px as slideInFromLeft,
869
- fx as slideInFromRight,
870
- dx as slideInFromTop,
866
+ Rx as shouldIgnoreHotkeys,
867
+ sx as sidebarVariants,
868
+ px as slideInFromBottom,
869
+ fx as slideInFromLeft,
870
+ dx as slideInFromRight,
871
+ Sx as slideInFromTop,
871
872
  Pd as snapToGrid,
872
- JS as splitWorkspaceItems,
873
- $S as splitWorkspacePane,
874
- Sx as springConfig,
873
+ XS as splitWorkspaceItems,
874
+ ZS as splitWorkspacePane,
875
+ xx as springConfig,
875
876
  ic as startHotInteraction,
876
- Kx as startPointerSession,
877
+ zx as startPointerSession,
877
878
  yt as submitTerminalSession,
878
879
  S as syncThemeTokenOverrides,
879
880
  Ut as terminalCommandTokenSuggestionProvider,
@@ -886,38 +887,38 @@ export {
886
887
  SS as terminateMermaidWorker,
887
888
  CS as terminateShikiWorker,
888
889
  Mc as updateFileOpenSelection,
889
- Xx as useAttachments,
890
- Qx as useAutoScroll,
890
+ Zx as useAttachments,
891
+ Yx as useAutoScroll,
891
892
  Qa as useChatContext,
892
893
  kS as useCodeHighlight,
893
894
  Tn as useCommand,
894
- wx as useCommandContributions,
895
+ Nx as useCommandContributions,
895
896
  kn as useComponentContextFactory,
896
897
  hn as useComponentRegistry,
897
898
  fd as useCurrentWidgetId,
898
- qx as useDebounce,
899
+ jx as useDebounce,
899
900
  cl as useDeck,
900
- Jx as useDeckDrag,
901
+ $x as useDeckDrag,
901
902
  gc as useFileBrowser,
902
903
  Tc as useFileBrowserDrag,
903
- eT as useFileBrowserDropTarget,
904
- oT as useFileBrowserItemDrag,
904
+ oT as useFileBrowserDropTarget,
905
+ rT as useFileBrowserItemDrag,
905
906
  Bn as useFloeConfig,
906
907
  lm as useFormSubmitting,
907
- tT as useKeybind,
908
+ iT as useKeybind,
908
909
  vm as useLayout,
909
- aT as useMediaQuery,
910
+ nT as useMediaQuery,
910
911
  xS as useMermaid,
911
912
  _m as useMobileLayout,
912
913
  op as useNotification,
913
914
  Fn as useOptionalComponentRegistry,
914
- lT as useOverlayMask,
915
- mT as usePersisted,
916
- pT as useResizeObserver,
915
+ cT as useOverlayMask,
916
+ sT as usePersisted,
917
+ fT as useResizeObserver,
917
918
  On as useResolvedFloeConfig,
918
919
  Of as useTheme,
919
920
  jf as useViewActivation,
920
- dT as useVirtualList,
921
+ ST as useVirtualList,
921
922
  ld as useWidgetRegistry,
922
923
  dd as useWidgetState,
923
924
  Sd as useWidgetStateContext,
package/dist/layout.js CHANGED
@@ -1,52 +1,53 @@
1
- import { ActivityBar as r } from "./components/layout/ActivityBar.js";
2
- import { AppViewport as t } from "./components/layout/AppViewport.js";
1
+ import { ActivityBar as o } from "./components/layout/ActivityBar.js";
2
+ import { AppViewport as p } from "./components/layout/AppViewport.js";
3
3
  import { BottomBarCompanion as i } from "./components/layout/BottomBarCompanion.js";
4
4
  import { DisplayModePageShell as l } from "./components/layout/DisplayModePageShell.js";
5
- import { DisplayModeSwitcher as S, sanitizeDisplayMode as c } from "./components/layout/DisplayModeSwitcher.js";
6
- import { KeepAliveStack as n } from "./components/layout/KeepAliveStack.js";
5
+ import { DisplayModeSwitcher as c, sanitizeDisplayMode as S } from "./components/layout/DisplayModeSwitcher.js";
6
+ import { KeepAliveStack as f } from "./components/layout/KeepAliveStack.js";
7
7
  import { MobileTabBar as k } from "./components/layout/MobileTabBar.js";
8
8
  import { Panel as W, PanelContent as b, PanelHeader as B } from "./components/layout/Panel.js";
9
9
  import { ResizeHandle as P } from "./components/layout/ResizeHandle.js";
10
10
  import { Shell as T } from "./components/layout/Shell.js";
11
- import { Sidebar as M, SidebarContent as g, SidebarItem as u, SidebarItemList as v, SidebarSection as z } from "./components/layout/Sidebar.js";
11
+ import { Sidebar as h, SidebarContent as A, SidebarItem as M, SidebarItemList as u, SidebarSection as v } from "./components/layout/Sidebar.js";
12
12
  import { SidebarPane as C } from "./components/layout/SidebarPane.js";
13
13
  import { SplitWorkspace as w } from "./components/layout/SplitWorkspace.js";
14
14
  import { ThemeToggle as L } from "./components/layout/ThemeToggle.js";
15
15
  import { TopBar as R } from "./components/layout/TopBar.js";
16
16
  import { TopBarIconButton as j } from "./components/layout/TopBarIconButton.js";
17
- import { dockSplitWorkspaceItem as E, isSplitWorkspaceLayout as F, mapSplitWorkspace as G, measureSplitWorkspace as J, presetSplitWorkspace as N, reconcileSplitWorkspace as O, removeSplitWorkspaceItem as Q, resizeSplitWorkspace as U, splitWorkspaceItems as X, splitWorkspacePane as Y } from "./components/layout/splitWorkspaceModel.js";
17
+ import { createSplitWorkspaceArrangements as E, dockSplitWorkspaceItem as F, isSplitWorkspaceLayout as G, mapSplitWorkspace as J, measureSplitWorkspace as N, presetSplitWorkspace as O, reconcileSplitWorkspace as Q, removeSplitWorkspaceItem as U, resizeSplitWorkspace as X, splitWorkspaceItems as Y, splitWorkspacePane as Z } from "./components/layout/splitWorkspaceModel.js";
18
18
  export {
19
- r as ActivityBar,
20
- t as AppViewport,
19
+ o as ActivityBar,
20
+ p as AppViewport,
21
21
  i as BottomBarCompanion,
22
22
  l as DisplayModePageShell,
23
- S as DisplayModeSwitcher,
24
- n as KeepAliveStack,
23
+ c as DisplayModeSwitcher,
24
+ f as KeepAliveStack,
25
25
  k as MobileTabBar,
26
26
  W as Panel,
27
27
  b as PanelContent,
28
28
  B as PanelHeader,
29
29
  P as ResizeHandle,
30
30
  T as Shell,
31
- M as Sidebar,
32
- g as SidebarContent,
33
- u as SidebarItem,
34
- v as SidebarItemList,
31
+ h as Sidebar,
32
+ A as SidebarContent,
33
+ M as SidebarItem,
34
+ u as SidebarItemList,
35
35
  C as SidebarPane,
36
- z as SidebarSection,
36
+ v as SidebarSection,
37
37
  w as SplitWorkspace,
38
38
  L as ThemeToggle,
39
39
  R as TopBar,
40
40
  j as TopBarIconButton,
41
- E as dockSplitWorkspaceItem,
42
- F as isSplitWorkspaceLayout,
43
- G as mapSplitWorkspace,
44
- J as measureSplitWorkspace,
45
- N as presetSplitWorkspace,
46
- O as reconcileSplitWorkspace,
47
- Q as removeSplitWorkspaceItem,
48
- U as resizeSplitWorkspace,
49
- c as sanitizeDisplayMode,
50
- X as splitWorkspaceItems,
51
- Y as splitWorkspacePane
41
+ E as createSplitWorkspaceArrangements,
42
+ F as dockSplitWorkspaceItem,
43
+ G as isSplitWorkspaceLayout,
44
+ J as mapSplitWorkspace,
45
+ N as measureSplitWorkspace,
46
+ O as presetSplitWorkspace,
47
+ Q as reconcileSplitWorkspace,
48
+ U as removeSplitWorkspaceItem,
49
+ X as resizeSplitWorkspace,
50
+ S as sanitizeDisplayMode,
51
+ Y as splitWorkspaceItems,
52
+ Z as splitWorkspacePane
52
53
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.86.73",
3
+ "version": "0.86.74",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",