@corenel/editor 0.1.0

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.
Files changed (109) hide show
  1. package/dist/diagnostics.d.ts +9 -0
  2. package/dist/diagnostics.d.ts.map +1 -0
  3. package/dist/diagnostics.js +2 -0
  4. package/dist/diagnostics.js.map +1 -0
  5. package/dist/dock/PanelChooser.d.ts +13 -0
  6. package/dist/dock/PanelChooser.d.ts.map +1 -0
  7. package/dist/dock/PanelChooser.js +72 -0
  8. package/dist/dock/PanelChooser.js.map +1 -0
  9. package/dist/dock/PanelFrame.d.ts +37 -0
  10. package/dist/dock/PanelFrame.d.ts.map +1 -0
  11. package/dist/dock/PanelFrame.js +102 -0
  12. package/dist/dock/PanelFrame.js.map +1 -0
  13. package/dist/dock/PanelHost.d.ts +12 -0
  14. package/dist/dock/PanelHost.d.ts.map +1 -0
  15. package/dist/dock/PanelHost.js +331 -0
  16. package/dist/dock/PanelHost.js.map +1 -0
  17. package/dist/dock/config.d.ts +35 -0
  18. package/dist/dock/config.d.ts.map +1 -0
  19. package/dist/dock/config.js +2 -0
  20. package/dist/dock/config.js.map +1 -0
  21. package/dist/dock/index.d.ts +9 -0
  22. package/dist/dock/index.d.ts.map +1 -0
  23. package/dist/dock/index.js +13 -0
  24. package/dist/dock/index.js.map +1 -0
  25. package/dist/dock/layouts.d.ts +12 -0
  26. package/dist/dock/layouts.d.ts.map +1 -0
  27. package/dist/dock/layouts.js +50 -0
  28. package/dist/dock/layouts.js.map +1 -0
  29. package/dist/dock/tree.d.ts +73 -0
  30. package/dist/dock/tree.d.ts.map +1 -0
  31. package/dist/dock/tree.js +276 -0
  32. package/dist/dock/tree.js.map +1 -0
  33. package/dist/dock/types.d.ts +51 -0
  34. package/dist/dock/types.d.ts.map +1 -0
  35. package/dist/dock/types.js +42 -0
  36. package/dist/dock/types.js.map +1 -0
  37. package/dist/dock/use-layout.d.ts +41 -0
  38. package/dist/dock/use-layout.d.ts.map +1 -0
  39. package/dist/dock/use-layout.js +114 -0
  40. package/dist/dock/use-layout.js.map +1 -0
  41. package/dist/engine/index.d.ts +6 -0
  42. package/dist/engine/index.d.ts.map +1 -0
  43. package/dist/engine/index.js +8 -0
  44. package/dist/engine/index.js.map +1 -0
  45. package/dist/engine/runModel.d.ts +16 -0
  46. package/dist/engine/runModel.d.ts.map +1 -0
  47. package/dist/engine/runModel.js +7 -0
  48. package/dist/engine/runModel.js.map +1 -0
  49. package/dist/engine/useDocResults.d.ts +38 -0
  50. package/dist/engine/useDocResults.d.ts.map +1 -0
  51. package/dist/engine/useDocResults.js +51 -0
  52. package/dist/engine/useDocResults.js.map +1 -0
  53. package/dist/engine/useRunController.d.ts +18 -0
  54. package/dist/engine/useRunController.d.ts.map +1 -0
  55. package/dist/engine/useRunController.js +28 -0
  56. package/dist/engine/useRunController.js.map +1 -0
  57. package/dist/engine/useRunHistory.d.ts +22 -0
  58. package/dist/engine/useRunHistory.d.ts.map +1 -0
  59. package/dist/engine/useRunHistory.js +20 -0
  60. package/dist/engine/useRunHistory.js.map +1 -0
  61. package/dist/engine/useRunOutput.d.ts +32 -0
  62. package/dist/engine/useRunOutput.d.ts.map +1 -0
  63. package/dist/engine/useRunOutput.js +51 -0
  64. package/dist/engine/useRunOutput.js.map +1 -0
  65. package/dist/errorLog.d.ts +17 -0
  66. package/dist/errorLog.d.ts.map +1 -0
  67. package/dist/errorLog.js +44 -0
  68. package/dist/errorLog.js.map +1 -0
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +6 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/inlineAssist.d.ts +109 -0
  74. package/dist/inlineAssist.d.ts.map +1 -0
  75. package/dist/inlineAssist.js +272 -0
  76. package/dist/inlineAssist.js.map +1 -0
  77. package/dist/panels/DesignView.d.ts +9 -0
  78. package/dist/panels/DesignView.d.ts.map +1 -0
  79. package/dist/panels/DesignView.js +36 -0
  80. package/dist/panels/DesignView.js.map +1 -0
  81. package/dist/panels/ParamCard.d.ts +14 -0
  82. package/dist/panels/ParamCard.d.ts.map +1 -0
  83. package/dist/panels/ParamCard.js +138 -0
  84. package/dist/panels/ParamCard.js.map +1 -0
  85. package/dist/panels/ProblemsPanel.d.ts +9 -0
  86. package/dist/panels/ProblemsPanel.d.ts.map +1 -0
  87. package/dist/panels/ProblemsPanel.js +46 -0
  88. package/dist/panels/ProblemsPanel.js.map +1 -0
  89. package/dist/panels/UsageButton.d.ts +9 -0
  90. package/dist/panels/UsageButton.d.ts.map +1 -0
  91. package/dist/panels/UsageButton.js +40 -0
  92. package/dist/panels/UsageButton.js.map +1 -0
  93. package/dist/panels/index.d.ts +5 -0
  94. package/dist/panels/index.d.ts.map +1 -0
  95. package/dist/panels/index.js +8 -0
  96. package/dist/panels/index.js.map +1 -0
  97. package/dist/params.d.ts +27 -0
  98. package/dist/params.d.ts.map +1 -0
  99. package/dist/params.js +142 -0
  100. package/dist/params.js.map +1 -0
  101. package/dist/useWorkbench.d.ts +9 -0
  102. package/dist/useWorkbench.d.ts.map +1 -0
  103. package/dist/useWorkbench.js +21 -0
  104. package/dist/useWorkbench.js.map +1 -0
  105. package/dist/workflowModel.d.ts +128 -0
  106. package/dist/workflowModel.d.ts.map +1 -0
  107. package/dist/workflowModel.js +135 -0
  108. package/dist/workflowModel.js.map +1 -0
  109. package/package.json +62 -0
@@ -0,0 +1,331 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment, useCallback, useEffect, useRef, useState } from 'react';
3
+ import { PanelFrame } from './PanelFrame';
4
+ import { isInert } from './tree';
5
+ /** A row/col flex container with a draggable resizer between adjacent expanded
6
+ * panes. Collapsed panes shrink to their rail and lose their resizer. */
7
+ function SplitView({ node, ctx }) {
8
+ const ref = useRef(null);
9
+ const isRow = node.dir === 'row';
10
+ // Resizers act on a pair of EXPANDED panes (a, b). b may be more than one index
11
+ // past a when collapsed rails sit between them — so a rail never breaks resizing.
12
+ const equalize = (a, b) => () => {
13
+ const sizes = [...node.sizes];
14
+ const avg = ((sizes[a] ?? 1) + (sizes[b] ?? 1)) / 2;
15
+ sizes[a] = avg;
16
+ sizes[b] = avg;
17
+ ctx.dock.resize(node.id, sizes);
18
+ };
19
+ const startResize = (a, b) => (e) => {
20
+ e.preventDefault();
21
+ const el = ref.current;
22
+ if (!el)
23
+ return;
24
+ const handle = e.currentTarget;
25
+ // Measure the two panes being resized. A drag only redistributes weight
26
+ // BETWEEN this pair (their combined weight is conserved), so the conversion
27
+ // must use their own pixel span — not the whole container's. Using the
28
+ // container span counts collapsed rails + other panes' pixels and weights
29
+ // that this drag never touches, which makes it oversensitive (the doubling).
30
+ const paneA = el.querySelector(`:scope > [data-dock-pane="${a}"]`);
31
+ const paneB = el.querySelector(`:scope > [data-dock-pane="${b}"]`);
32
+ if (!paneA || !paneB)
33
+ return;
34
+ const ra = paneA.getBoundingClientRect();
35
+ const rb = paneB.getBoundingClientRect();
36
+ const pairSpan = isRow ? ra.width + rb.width : ra.height + rb.height;
37
+ if (pairSpan <= 0)
38
+ return;
39
+ handle.classList.add('dragging');
40
+ const startPos = isRow ? e.clientX : e.clientY;
41
+ const sizes = [...node.sizes];
42
+ const a0 = sizes[a] ?? 1;
43
+ const b0 = sizes[b] ?? 1;
44
+ const pairWeight = a0 + b0;
45
+ const min = (40 / pairSpan) * pairWeight; // keep each pane >= ~40px
46
+ const onMove = (ev) => {
47
+ const pos = isRow ? ev.clientX : ev.clientY;
48
+ const delta = ((pos - startPos) / pairSpan) * pairWeight;
49
+ let na = a0 + delta;
50
+ let nb = b0 - delta;
51
+ if (na < min) {
52
+ nb -= min - na;
53
+ na = min;
54
+ }
55
+ if (nb < min) {
56
+ na -= min - nb;
57
+ nb = min;
58
+ }
59
+ const next = [...sizes];
60
+ next[a] = na;
61
+ next[b] = nb;
62
+ ctx.dock.resize(node.id, next);
63
+ };
64
+ const onUp = () => {
65
+ window.removeEventListener('mousemove', onMove);
66
+ window.removeEventListener('mouseup', onUp);
67
+ document.body.style.cursor = '';
68
+ document.body.style.userSelect = '';
69
+ handle.classList.remove('dragging');
70
+ };
71
+ document.body.style.cursor = isRow ? 'col-resize' : 'row-resize';
72
+ document.body.style.userSelect = 'none';
73
+ window.addEventListener('mousemove', onMove);
74
+ window.addEventListener('mouseup', onUp);
75
+ };
76
+ const gatherLeaves = (n, index, acc) => {
77
+ if (n.type === 'panel')
78
+ acc.push({ child: n, index });
79
+ else
80
+ n.children.forEach((c) => gatherLeaves(c, index, acc));
81
+ };
82
+ const groups = [];
83
+ for (let i = 0; i < node.children.length;) {
84
+ if (isInert(node.children[i])) {
85
+ const items = [];
86
+ while (i < node.children.length && isInert(node.children[i])) {
87
+ gatherLeaves(node.children[i], i, items);
88
+ i++;
89
+ }
90
+ if (items.length)
91
+ groups.push({ kind: 'tabs', items });
92
+ }
93
+ else {
94
+ groups.push({ kind: 'node', child: node.children[i], index: i });
95
+ i++;
96
+ }
97
+ }
98
+ return (_jsx("div", { ref: ref, style: { display: 'flex', flexDirection: isRow ? 'row' : 'column', flex: 1, minWidth: 0, minHeight: 0 }, children: groups.map((g, gi) => {
99
+ if (g.kind === 'tabs') {
100
+ const tabKey = g.items.map((it) => (it.child.type === 'panel' ? it.child.id : '')).join('-');
101
+ return _jsx(CollapsedTabBar, { items: g.items, dir: node.dir, ctx: ctx }, `tabs-${tabKey}`);
102
+ }
103
+ const child = g.child;
104
+ const i = g.index;
105
+ const style = { flexGrow: node.sizes[i] ?? 1, flexShrink: 1, flexBasis: 0, minWidth: 0, minHeight: 0, display: 'flex' };
106
+ // Resizer to the next expanded track, spanning any collapsed tab bar in
107
+ // between (so a collapsed group never removes the handle between two opens).
108
+ const nextNode = groups.slice(gi + 1).find((x) => x.kind === 'node');
109
+ const key = child.type === 'split' ? child.id : `p-${child.id}`;
110
+ return (_jsxs(Fragment, { children: [_jsx("div", { "data-dock-pane": i, style: style, children: renderNode(child, node.dir, ctx) }), nextNode && (_jsx("div", { className: `dock-rsz ${isRow ? 'dock-rsz--col' : 'dock-rsz--row'}`, title: "Drag to resize \u00B7 double-click to even out", onMouseDown: startResize(i, nextNode.index), onDoubleClick: equalize(i, nextNode.index), children: _jsx("span", { className: "dock-rsz-line" }) }))] }, key));
111
+ }) }));
112
+ }
113
+ /** Collapsed sibling panels shown as ONE tab bar instead of separate rails. In a
114
+ * row split it's a vertical icon bar; in a col split a horizontal icon+label bar.
115
+ * Clicking a tab expands that panel back inline. Monochrome per the design system. */
116
+ function CollapsedTabBar({ items, dir, ctx }) {
117
+ const vertical = dir === 'row';
118
+ return (_jsx("div", { style: vertical ? T.barV : T.barH, children: items.map(({ child }) => {
119
+ if (child.type !== 'panel')
120
+ return null;
121
+ const def = ctx.panels[child.id];
122
+ if (!def)
123
+ return null;
124
+ return (_jsxs("button", { className: "dock-tab", "data-dock-rail": true, style: vertical ? T.tabV : T.tabH, title: `Peek ${def.label}`, "aria-label": `Peek ${def.label}`, onClick: (e) => ctx.onPeek(child.id, e.currentTarget.getBoundingClientRect()), children: [_jsx("span", { style: T.tabIcon, children: def.icon ?? def.label.charAt(0) }), !vertical && _jsx("span", { style: T.tabLabel, children: def.label })] }, child.id));
125
+ }) }));
126
+ }
127
+ const T = {
128
+ barV: { display: 'flex', flexDirection: 'column', alignItems: 'stretch', gap: 2, width: 40, flex: '0 0 auto', height: '100%', padding: '6px 4px', borderLeft: '1px solid var(--border-subtle)', background: 'var(--surface-rail)' },
129
+ barH: { display: 'flex', flexDirection: 'row', alignItems: 'center', gap: 2, height: 34, flex: '0 0 auto', padding: '0 6px', borderTop: '1px solid var(--border-subtle)', background: 'var(--surface-rail)' },
130
+ tabV: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', height: 32, width: '100%', border: 0, borderRadius: 'var(--radius-sm)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer' },
131
+ tabH: { display: 'inline-flex', alignItems: 'center', gap: 6, height: 26, padding: '0 10px', border: 0, borderRadius: 'var(--radius-sm)', background: 'transparent', color: 'var(--text-tertiary)', cursor: 'pointer', font: 'inherit' },
132
+ tabIcon: { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: 12, fontWeight: 700 },
133
+ tabLabel: { fontSize: 11.5, fontWeight: 600, letterSpacing: '0.04em', textTransform: 'uppercase' },
134
+ };
135
+ function renderNode(node, parentDir, ctx) {
136
+ if (node.type === 'panel') {
137
+ return (_jsx(PanelFrame, { id: node.id, def: ctx.panels[node.id], dir: parentDir, collapsed: Boolean(node.collapsed), dragId: ctx.dragId, onDragStart: ctx.setDragId, onDragEnd: () => ctx.setDragId(null), onDrop: (targetId, edge) => { if (ctx.dragId)
138
+ ctx.dock.move(ctx.dragId, targetId, edge); ctx.setDragId(null); }, onCollapse: ctx.dock.collapse, onClose: ctx.dock.close, onMaximize: ctx.onMaximize, onPeek: ctx.onPeek }));
139
+ }
140
+ return _jsx(SplitView, { node: node, ctx: ctx });
141
+ }
142
+ /** Nearest surface edge to the clicked rail — so the overlay slides in from the
143
+ * side the panel actually lives on (right-edge rail → slides from the right). */
144
+ function nearestEdge(origin, host) {
145
+ const cx = origin.left + origin.width / 2;
146
+ const cy = origin.top + origin.height / 2;
147
+ const d = {
148
+ left: Math.abs(cx - host.left),
149
+ right: Math.abs(host.right - cx),
150
+ top: Math.abs(cy - host.top),
151
+ bottom: Math.abs(host.bottom - cy),
152
+ };
153
+ return Object.keys(d).reduce((a, b) => (d[b] < d[a] ? b : a), 'right');
154
+ }
155
+ /** Whether a panel currently sits as a collapsed rail (the only state a peek is
156
+ * valid for — once pinned or closed the overlay must clear). */
157
+ function isCollapsedRail(node, id) {
158
+ if (node.type === 'panel')
159
+ return node.id === id && Boolean(node.collapsed);
160
+ return node.children.some((c) => isCollapsedRail(c, id));
161
+ }
162
+ const isHorizontalEdge = (e) => e === 'left' || e === 'right';
163
+ const defaultOverlaySize = (e) => (isHorizontalEdge(e) ? 380 : 300);
164
+ // Lifetime of the slide-out copy: must be >= the CSS transform transition
165
+ // (--motion-base, 200ms) so the exiting overlay is unmounted only AFTER it has
166
+ // finished sliding off. Kept slightly longer as a deliberate buffer.
167
+ const OVERLAY_ANIM_MS = 240;
168
+ /**
169
+ * One peek overlay: a floating, resizable PanelFrame anchored to a surface edge.
170
+ * It animates by mounting in the closed (off-edge) position and flipping to the
171
+ * target on the next frame — so an incoming peek slides IN and an outgoing one
172
+ * (target=false) slides OUT, letting a switch animate both at once.
173
+ */
174
+ function Overlay({ peek, target, panels, sizePx, onResize, onPin, onHide, onMaximize }) {
175
+ const { id, edge } = peek;
176
+ const [open, setOpen] = useState(false);
177
+ useEffect(() => {
178
+ const r = requestAnimationFrame(() => setOpen(target));
179
+ return () => cancelAnimationFrame(r);
180
+ }, [target]);
181
+ const horizontal = isHorizontalEdge(edge);
182
+ const startResize = (e) => {
183
+ e.preventDefault();
184
+ const startX = e.clientX;
185
+ const startY = e.clientY;
186
+ const start = sizePx;
187
+ const onMove = (ev) => {
188
+ // The handle sits on the overlay's INNER edge; dragging inward shrinks it.
189
+ const delta = edge === 'right' ? startX - ev.clientX
190
+ : edge === 'left' ? ev.clientX - startX
191
+ : edge === 'bottom' ? startY - ev.clientY
192
+ : ev.clientY - startY;
193
+ onResize(start + delta);
194
+ };
195
+ const onUp = () => {
196
+ window.removeEventListener('mousemove', onMove);
197
+ window.removeEventListener('mouseup', onUp);
198
+ document.body.style.cursor = '';
199
+ document.body.style.userSelect = '';
200
+ };
201
+ document.body.style.cursor = horizontal ? 'col-resize' : 'row-resize';
202
+ document.body.style.userSelect = 'none';
203
+ window.addEventListener('mousemove', onMove);
204
+ window.addEventListener('mouseup', onUp);
205
+ };
206
+ if (!panels[id])
207
+ return null;
208
+ const closed = `translate${horizontal ? 'X' : 'Y'}(${edge === 'left' || edge === 'top' ? '-100%' : '100%'})`;
209
+ const pos = edge === 'left' ? { top: 0, bottom: 0, left: 0, width: sizePx }
210
+ : edge === 'right' ? { top: 0, bottom: 0, right: 0, width: sizePx }
211
+ : edge === 'top' ? { top: 0, left: 0, right: 0, height: sizePx }
212
+ : { bottom: 0, left: 0, right: 0, height: sizePx };
213
+ return (_jsxs("div", { "data-dock-overlay": true, style: {
214
+ position: 'absolute', ...pos, zIndex: 40, display: 'flex',
215
+ background: 'var(--surface-1)', boxShadow: 'var(--shadow-4)',
216
+ border: '1px solid var(--border-default)', borderRadius: 'var(--radius-md)', overflow: 'hidden',
217
+ transform: open ? 'translate(0,0)' : closed,
218
+ transition: 'transform var(--motion-base)',
219
+ }, children: [_jsx("div", { style: { flex: 1, display: 'flex', minWidth: 0, minHeight: 0 }, children: _jsx(PanelFrame, { id: id, def: panels[id], dir: horizontal ? 'row' : 'col', collapsed: false, dragId: null, onDragStart: () => { }, onDragEnd: () => { }, onDrop: () => { }, onCollapse: () => { }, overlay: true, onPin: onPin, onHidePeek: onHide, onMaximize: () => onMaximize(id) }) }), _jsx("div", { className: "dock-overlay-rsz", onMouseDown: startResize, title: "Drag to resize", style: {
220
+ position: 'absolute', cursor: horizontal ? 'col-resize' : 'row-resize', zIndex: 1,
221
+ ...(edge === 'left' ? { top: 0, bottom: 0, right: 0, width: 6 }
222
+ : edge === 'right' ? { top: 0, bottom: 0, left: 0, width: 6 }
223
+ : edge === 'top' ? { left: 0, right: 0, bottom: 0, height: 6 }
224
+ : { left: 0, right: 0, top: 0, height: 6 }),
225
+ } })] }));
226
+ }
227
+ /** Root of a dockable surface: renders the persisted split tree and owns the
228
+ * transient drag id, maximized panel, and peek overlay (none persisted; only an
229
+ * overlay's resized extent persists, via the dock api). */
230
+ export function PanelHost({ panels, dock }) {
231
+ const [dragId, setDragId] = useState(null);
232
+ const [maximized, setMaximized] = useState(null);
233
+ // The visible peek and, briefly, the one sliding out as it's replaced/closed —
234
+ // so a switch animates both at once (one transient at a time, per the model).
235
+ const [peek, setPeek] = useState(null);
236
+ const [exiting, setExiting] = useState(null);
237
+ const hostRef = useRef(null);
238
+ const exitTimer = useRef(null);
239
+ const scheduleClearExit = useCallback((p) => {
240
+ if (exitTimer.current)
241
+ window.clearTimeout(exitTimer.current);
242
+ setExiting(p);
243
+ if (p)
244
+ exitTimer.current = window.setTimeout(() => setExiting(null), OVERLAY_ANIM_MS);
245
+ }, []);
246
+ // Drop both overlays immediately, no slide-out — used when the panel has left
247
+ // rail state (pinned/closed) and a lingering exit copy would double-mount it.
248
+ const clearPeekNow = useCallback(() => {
249
+ if (exitTimer.current)
250
+ window.clearTimeout(exitTimer.current);
251
+ setExiting(null);
252
+ setPeek(null);
253
+ }, []);
254
+ // Cancel any pending exit timer on unmount so it can't fire into a dead surface.
255
+ useEffect(() => () => { if (exitTimer.current)
256
+ window.clearTimeout(exitTimer.current); }, []);
257
+ const closePeek = useCallback(() => {
258
+ setPeek((cur) => { if (cur)
259
+ scheduleClearExit(cur); return null; });
260
+ }, [scheduleClearExit]);
261
+ const onPeek = useCallback((id, origin) => {
262
+ const host = hostRef.current?.getBoundingClientRect();
263
+ const edge = host ? nearestEdge(origin, host) : 'right';
264
+ setPeek((cur) => {
265
+ if (cur?.id === id) {
266
+ scheduleClearExit(cur);
267
+ return null;
268
+ } // tapping the same rail toggles it off
269
+ // A different rail replaces the current peek; slide the old one out only when
270
+ // it lives on another edge (same-edge swaps just exchange content in place).
271
+ scheduleClearExit(cur && cur.edge !== edge ? cur : null);
272
+ return { id, edge };
273
+ });
274
+ }, [scheduleClearExit]);
275
+ const pin = useCallback((id) => {
276
+ setPeek(null);
277
+ scheduleClearExit(null);
278
+ dock.collapse(id, false); // dock inline — the panel now lives in the tree, stationary
279
+ }, [dock, scheduleClearExit]);
280
+ // Maximizing from a peek promotes it out of the overlay layer entirely.
281
+ const maximizeFromPeek = useCallback((id) => {
282
+ setPeek(null);
283
+ scheduleClearExit(null);
284
+ setMaximized(id);
285
+ }, [scheduleClearExit]);
286
+ // Esc closes a peek (and, separately, restores a maximized panel).
287
+ useEffect(() => {
288
+ if (!maximized && !peek)
289
+ return;
290
+ const onKey = (e) => {
291
+ if (e.key !== 'Escape')
292
+ return;
293
+ if (peek)
294
+ closePeek();
295
+ else
296
+ setMaximized(null);
297
+ };
298
+ window.addEventListener('keydown', onKey);
299
+ return () => window.removeEventListener('keydown', onKey);
300
+ }, [maximized, peek, closePeek]);
301
+ // Click-away dismiss: any mousedown outside the overlay closes it. Clicks on a
302
+ // rail are excluded — onPeek already owns that transition (old out, new in).
303
+ // A context menu is excluded too: it's a <body> portal (outside the overlay)
304
+ // but OWNED by a panel inside it, so closing the peek on mousedown would unmount
305
+ // the menu before its click fired — e.g. "New file/folder" would be lost.
306
+ useEffect(() => {
307
+ if (!peek)
308
+ return;
309
+ const onDown = (e) => {
310
+ const t = e.target;
311
+ if (t.closest('[data-dock-overlay]') || t.closest('[data-dock-rail]') || t.closest('[data-context-menu]'))
312
+ return;
313
+ closePeek();
314
+ };
315
+ window.addEventListener('mousedown', onDown);
316
+ return () => window.removeEventListener('mousedown', onDown);
317
+ }, [peek, closePeek]);
318
+ // A peek is only valid while its panel is a collapsed rail. If it gets pinned,
319
+ // closed, or the layout is swapped out from under it, drop the overlay outright
320
+ // (no slide-out) — the panel may now be mounted inline, so an exit copy would
321
+ // briefly double-mount the same body.
322
+ useEffect(() => {
323
+ if (peek && !isCollapsedRail(dock.tree, peek.id))
324
+ clearPeekNow();
325
+ }, [dock.tree, peek, clearPeekNow]);
326
+ const ctx = { panels, dock, dragId, setDragId, onMaximize: setMaximized, onPeek };
327
+ const maxId = maximized && panels[maximized] ? maximized : null;
328
+ const sizeFor = (p) => dock.overlaySizes[p.id] ?? defaultOverlaySize(p.edge);
329
+ return (_jsxs("div", { ref: hostRef, style: { position: 'relative', display: 'flex', flex: 1, minHeight: 0, minWidth: 0, background: 'var(--surface-canvas)', overflow: 'hidden' }, children: [maxId ? (_jsx(PanelFrame, { id: maxId, def: panels[maxId], dir: "col", collapsed: false, dragId: null, onDragStart: () => { }, onDragEnd: () => { }, onDrop: () => { }, onCollapse: () => { }, maximized: true, onMaximize: setMaximized })) : (renderNode(dock.tree, 'col', ctx)), !maxId && exiting && (_jsx(Overlay, { peek: exiting, target: false, panels: panels, sizePx: sizeFor(exiting), onResize: () => { }, onPin: pin, onHide: closePeek, onMaximize: maximizeFromPeek }, `x-${exiting.edge}`)), !maxId && peek && (_jsx(Overlay, { peek: peek, target: true, panels: panels, sizePx: sizeFor(peek), onResize: (px) => dock.setOverlaySize(peek.id, px), onPin: pin, onHide: closePeek, onMaximize: maximizeFromPeek }, `p-${peek.edge}`))] }));
330
+ }
331
+ //# sourceMappingURL=PanelHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelHost.js","sourceRoot":"","sources":["../../dock/PanelHost.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { LayoutNode, PanelId } from './types';
3
+ /** One dockable panel: chrome (label/title/icon) + the body rendered into the
4
+ * pane. The body is a thunk so the surface owner (EditorApp) closes over its
5
+ * state; panels stay decoupled from where they live in the tree. */
6
+ export interface PanelDef {
7
+ id: PanelId;
8
+ /** Plain text for the collapsed rail + drag label. */
9
+ label: string;
10
+ /** Header content (may include a live count/status). Defaults to `label`. */
11
+ title?: ReactNode;
12
+ /** Small monochrome icon for the header + collapsed rail. */
13
+ icon?: ReactNode;
14
+ /** Optional controls rendered on the right of the header (e.g. the editor's
15
+ * Design/Code/Preview switcher), so a panel needs no second toolbar bar. */
16
+ actions?: ReactNode;
17
+ /** Section this panel lists under in the panel chooser (e.g. "Editor",
18
+ * "Run"). Uncategorized panels collect in a trailing "Other" section. */
19
+ category?: string;
20
+ /** The panel body. */
21
+ render: () => ReactNode;
22
+ }
23
+ /** A dock surface's configuration: which panels exist, how to validate/seed the
24
+ * persisted tree, and where it's stored. */
25
+ export interface DockConfig {
26
+ panels: Record<PanelId, PanelDef>;
27
+ /** Valid panel ids — a persisted layout must hold a duplicate-free subset
28
+ * (panels can be closed; unknown ids invalidate the tree — see isValidLayout). */
29
+ ids: readonly PanelId[];
30
+ /** localStorage key for this surface's layout. */
31
+ storageKey: string;
32
+ /** Starting arrangement when nothing valid is persisted. */
33
+ makeDefault: () => LayoutNode;
34
+ }
35
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../dock/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEnD;;oEAEoE;AACpE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;gFAC4E;IAC5E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;6EACyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,MAAM,EAAE,MAAM,SAAS,CAAC;CACzB;AAED;4CAC4C;AAC5C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClC;sFACkF;IAClF,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,UAAU,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../dock/config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export * from './types';
2
+ export * from './config';
3
+ export { PRESET_NAMES, PRESET_LABELS, PRESETS, defaultLayout, editorPreset, chatPreset, balancedPreset, movePanel, setCollapsed, setSizes, collectPanels, isPanelVisible, isValidLayout, type PresetName, } from './tree';
4
+ export { useDockLayout, type DockApi, type DockLayoutConfig } from './use-layout';
5
+ export { PanelHost } from './PanelHost';
6
+ export { PanelFrame } from './PanelFrame';
7
+ export { PanelChooser } from './PanelChooser';
8
+ export { listLayouts, saveLayout, getLayout, deleteLayout, type SavedLayout } from './layouts';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../dock/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EACnD,YAAY,EAAE,UAAU,EAAE,cAAc,EACxC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAC/E,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,13 @@
1
+ /* Dockable panel system (ported from the Marshal web dock, adapted for
2
+ * prompd-web). Recursive split tree, single-panel leaves, drag-to-dock, resize,
3
+ * collapse, maximize, one-tap presets. Pure tree ops in `tree.ts`; one registry
4
+ * feeds both this desktop host and the mobile bottom-nav. */
5
+ export * from './types';
6
+ export * from './config';
7
+ export { PRESET_NAMES, PRESET_LABELS, PRESETS, defaultLayout, editorPreset, chatPreset, balancedPreset, movePanel, setCollapsed, setSizes, collectPanels, isPanelVisible, isValidLayout, } from './tree';
8
+ export { useDockLayout } from './use-layout';
9
+ export { PanelHost } from './PanelHost';
10
+ export { PanelFrame } from './PanelFrame';
11
+ export { PanelChooser } from './PanelChooser';
12
+ export { listLayouts, saveLayout, getLayout, deleteLayout } from './layouts';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../dock/index.ts"],"names":[],"mappings":"AAAA;;;6DAG6D;AAC7D,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EACnD,YAAY,EAAE,UAAU,EAAE,cAAc,EACxC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,GAEhF,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAuC,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAoB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type LayoutNode, type PanelId } from './types';
2
+ export interface SavedLayout {
3
+ name: string;
4
+ tree: LayoutNode;
5
+ overlaySizes?: Record<PanelId, number>;
6
+ }
7
+ export declare function listLayouts(): SavedLayout[];
8
+ /** Upsert a layout by name, capturing its tree and overlay extents. */
9
+ export declare function saveLayout(name: string, tree: LayoutNode, overlaySizes?: Record<PanelId, number>): void;
10
+ export declare function getLayout(name: string): SavedLayout | null;
11
+ export declare function deleteLayout(name: string): void;
12
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../dock/layouts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAI9E,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE;AASvG,wBAAgB,WAAW,IAAI,WAAW,EAAE,CAY3C;AAMD,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAMvG;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C"}
@@ -0,0 +1,50 @@
1
+ /* Saved custom dock layouts (localStorage). Named snapshots of the panel tree
2
+ * the user can save and load from Settings. A snapshot also carries each panel's
3
+ * peek-overlay extent, so loading a layout restores how wide its overlays were. */
4
+ import { isValidLayout } from './tree';
5
+ import { sanitizeOverlaySizes } from './types';
6
+ const LS = 'prompd.web.layouts.v1';
7
+ /** As the shared sanitizer, but collapse an empty map to undefined so a layout
8
+ * with no resized overlays stores nothing extra. */
9
+ function overlaySizesOrUndefined(value) {
10
+ const out = sanitizeOverlaySizes(value);
11
+ return Object.keys(out).length ? out : undefined;
12
+ }
13
+ export function listLayouts() {
14
+ try {
15
+ const raw = localStorage.getItem(LS);
16
+ if (!raw)
17
+ return [];
18
+ const parsed = JSON.parse(raw);
19
+ if (!Array.isArray(parsed))
20
+ return [];
21
+ return parsed
22
+ .filter((l) => l && typeof l.name === 'string' && isValidLayout(l.tree))
23
+ .map((l) => ({ name: l.name, tree: l.tree, overlaySizes: overlaySizesOrUndefined(l.overlaySizes) }));
24
+ }
25
+ catch {
26
+ return [];
27
+ }
28
+ }
29
+ function write(list) {
30
+ try {
31
+ localStorage.setItem(LS, JSON.stringify(list));
32
+ }
33
+ catch { /* ignore quota */ }
34
+ }
35
+ /** Upsert a layout by name, capturing its tree and overlay extents. */
36
+ export function saveLayout(name, tree, overlaySizes) {
37
+ const trimmed = name.trim();
38
+ if (!trimmed)
39
+ return;
40
+ const list = listLayouts().filter((l) => l.name !== trimmed);
41
+ list.push({ name: trimmed, tree, overlaySizes: overlaySizesOrUndefined(overlaySizes) });
42
+ write(list);
43
+ }
44
+ export function getLayout(name) {
45
+ return listLayouts().find((l) => l.name === name) ?? null;
46
+ }
47
+ export function deleteLayout(name) {
48
+ write(listLayouts().filter((l) => l.name !== name));
49
+ }
50
+ //# sourceMappingURL=layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.js","sourceRoot":"","sources":["../../dock/layouts.ts"],"names":[],"mappings":"AAAA;;mFAEmF;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAiC,MAAM,SAAS,CAAC;AAE9E,MAAM,EAAE,GAAG,uBAAuB,CAAC;AAInC;oDACoD;AACpD,SAAS,uBAAuB,CAAC,KAAc;IAC7C,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACvE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAkB,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACjI,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,IAAmB;IAChC,IAAI,CAAC;QAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACtF,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAgB,EAAE,YAAsC;IAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { type DropEdge, type LayoutNode, type PanelId, type PanelNode, type SplitNode } from './types';
2
+ export declare const PRESET_NAMES: readonly ["editor", "chat", "balanced"];
3
+ export type PresetName = (typeof PRESET_NAMES)[number];
4
+ export declare const PRESET_LABELS: Record<PresetName, string>;
5
+ /** Editor-focused: editor large in the center, params/result on the right, the
6
+ * agent + file/package surfaces as collapsed rails. The factory default. */
7
+ export declare function editorPreset(): SplitNode;
8
+ /** Chat-focused (brainstorm mode): the agent fills the surface; the editor and the
9
+ * rest collapse to rails on the left, one click away. */
10
+ export declare function chatPreset(): SplitNode;
11
+ /** Balanced: editor and agent side by side, params/result tucked to the right,
12
+ * file/package rails on the left. */
13
+ export declare function balancedPreset(): SplitNode;
14
+ export declare const PRESETS: Record<PresetName, () => SplitNode>;
15
+ export declare function defaultLayout(): SplitNode;
16
+ /** Every panel id present in the tree, in left-to-right / top-to-bottom order. */
17
+ export declare function collectPanels(node: LayoutNode, acc?: PanelId[]): PanelId[];
18
+ /** Whether a panel is showing its content right now: present in the tree AND not
19
+ * collapsed (a collapsed panel renders only as a rail, so it isn't "visible"). */
20
+ export declare function isPanelVisible(node: LayoutNode, id: PanelId): boolean;
21
+ /**
22
+ * Whether a node contributes NO expanded content: a collapsed panel, a childless
23
+ * split, or a split whose every descendant is itself inert. The renderer must not
24
+ * give such a node a flex-growing pane — it would keep its slot while rendering
25
+ * only a rail (or, for an empty split, nothing at all), leaving dead space a
26
+ * sibling can't reclaim. Its panel leaves are gathered into the collapsed tab bar.
27
+ *
28
+ * The empty-split case (`children.length === 0`) is load-bearing: a childless
29
+ * split is inert. Treating it as expanded is exactly the bug that left a growing
30
+ * blank pane beside the editor.
31
+ */
32
+ export declare function isInert(node: LayoutNode): boolean;
33
+ /**
34
+ * Remove a panel from the tree. Splits left with a single child are lifted (that
35
+ * child replaces the split, keeping the tree minimal); empty splits vanish.
36
+ * Returns null only if `node` itself was the removed panel.
37
+ */
38
+ export declare function removePanel(node: LayoutNode, id: PanelId): LayoutNode | null;
39
+ /** Replace the target panel leaf with a 2-way split that places `p` on the given
40
+ * edge. (Adjacent same-direction splits are merged later by `normalize`.) */
41
+ export declare function insertBeside(node: LayoutNode, targetId: PanelId, p: PanelNode, edge: DropEdge): LayoutNode;
42
+ /**
43
+ * Flatten the tree: merge a split into its parent when they share a direction (so
44
+ * dragging never produces redundant nesting), and lift any single-child split.
45
+ * Child weights are scaled into the parent's slot so sizes stay sensible.
46
+ */
47
+ export declare function normalize(node: LayoutNode): LayoutNode;
48
+ /** Move `dragId` to the given edge of `targetId`, returning a normalized tree.
49
+ * No-op if the ids match or the dragged panel isn't present. */
50
+ export declare function movePanel(root: LayoutNode, dragId: PanelId, targetId: PanelId, edge: DropEdge): LayoutNode;
51
+ /**
52
+ * Set the collapsed flag on a single panel, moving its flex weight to (collapse)
53
+ * or back from (expand) its nearest expanded sibling. Without this, collapsing a
54
+ * panel leaves flexbox to spread the freed space across every remaining pane by
55
+ * weight — so a heavy auxiliary pane (e.g. an empty result column) greedily
56
+ * inflates while the panel you're actually working in shrinks, reading as
57
+ * unrecoverable dead space. Keeping the freed space with the neighbor is local and
58
+ * symmetric: a collapse/expand round-trip restores the prior sizes.
59
+ */
60
+ export declare function setCollapsed(node: LayoutNode, id: PanelId, collapsed: boolean): LayoutNode;
61
+ /** Replace a split's child weights (used by the resizer). */
62
+ export declare function setSizes(node: LayoutNode, splitId: string, sizes: number[]): LayoutNode;
63
+ /** Close a panel (remove it from the tree). Splits collapse via removePanel.
64
+ * Returns the tree unchanged if it would empty the surface (never close the last). */
65
+ export declare function closePanel(root: LayoutNode, id: PanelId): LayoutNode;
66
+ /** Dock a panel against an edge of the whole surface (top/right/bottom/left).
67
+ * Removes it first if already present, so this also re-docks an open panel. */
68
+ export declare function addPanelAtEdge(root: LayoutNode, id: PanelId, edge: DropEdge): LayoutNode;
69
+ /** A persisted tree is trusted if it holds a non-empty, duplicate-free SUBSET of
70
+ * `expected`'s panels (panels can be closed, so not all need be present). `isNode`
71
+ * already rejects unknown ids. Otherwise fall back to the default. */
72
+ export declare function isValidLayout(node: unknown, expected?: readonly PanelId[]): node is LayoutNode;
73
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../dock/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAiB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAiBnJ,eAAO,MAAM,YAAY,yCAA0C,CAAC;AACpE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAIpD,CAAC;AAUF;4EAC4E;AAC5E,wBAAgB,YAAY,IAAI,SAAS,CAQxC;AAED;yDACyD;AACzD,wBAAgB,UAAU,IAAI,SAAS,CAWtC;AAED;qCACqC;AACrC,wBAAgB,cAAc,IAAI,SAAS,CAO1C;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,SAAS,CAIvD,CAAC;AAEF,wBAAgB,aAAa,IAAI,SAAS,CAEzC;AAID,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,GAAE,OAAO,EAAO,GAAG,OAAO,EAAE,CAI9E;AAED;kFACkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAGrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAIjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAc5E;AAQD;6EAC6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAG1G;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA0BtD;AAED;gEACgE;AAChE,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAO1G;AAcD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,UAAU,CAgB1F;AAED,6DAA6D;AAC7D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAIvF;AAED;sFACsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,UAAU,CAGpE;AAED;+EAC+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAWxF;AAED;;sEAEsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAE,SAAS,OAAO,EAAqB,GAAG,IAAI,IAAI,UAAU,CAKhH"}