@flyingrobots/bijou-tui 4.0.0 → 4.2.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 (95) hide show
  1. package/README.md +24 -7
  2. package/dist/app-frame-actions.d.ts +5 -5
  3. package/dist/app-frame-actions.d.ts.map +1 -1
  4. package/dist/app-frame-actions.js +71 -5
  5. package/dist/app-frame-actions.js.map +1 -1
  6. package/dist/app-frame-i18n.d.ts +12 -0
  7. package/dist/app-frame-i18n.d.ts.map +1 -0
  8. package/dist/app-frame-i18n.js +92 -0
  9. package/dist/app-frame-i18n.js.map +1 -0
  10. package/dist/app-frame-layers.d.ts +33 -0
  11. package/dist/app-frame-layers.d.ts.map +1 -0
  12. package/dist/app-frame-layers.js +136 -0
  13. package/dist/app-frame-layers.js.map +1 -0
  14. package/dist/app-frame-palette.d.ts +6 -2
  15. package/dist/app-frame-palette.d.ts.map +1 -1
  16. package/dist/app-frame-palette.js +42 -10
  17. package/dist/app-frame-palette.js.map +1 -1
  18. package/dist/app-frame-render.d.ts +13 -5
  19. package/dist/app-frame-render.d.ts.map +1 -1
  20. package/dist/app-frame-render.js +216 -70
  21. package/dist/app-frame-render.js.map +1 -1
  22. package/dist/app-frame-types.d.ts +120 -20
  23. package/dist/app-frame-types.d.ts.map +1 -1
  24. package/dist/app-frame-types.js +8 -6
  25. package/dist/app-frame-types.js.map +1 -1
  26. package/dist/app-frame-utils.d.ts +8 -3
  27. package/dist/app-frame-utils.d.ts.map +1 -1
  28. package/dist/app-frame-utils.js +42 -27
  29. package/dist/app-frame-utils.js.map +1 -1
  30. package/dist/app-frame.d.ts +125 -11
  31. package/dist/app-frame.d.ts.map +1 -1
  32. package/dist/app-frame.js +1406 -158
  33. package/dist/app-frame.js.map +1 -1
  34. package/dist/browsable-list.d.ts.map +1 -1
  35. package/dist/browsable-list.js +15 -5
  36. package/dist/browsable-list.js.map +1 -1
  37. package/dist/collection-surface.d.ts +8 -0
  38. package/dist/collection-surface.d.ts.map +1 -0
  39. package/dist/collection-surface.js +41 -0
  40. package/dist/collection-surface.js.map +1 -0
  41. package/dist/command-palette.d.ts.map +1 -1
  42. package/dist/command-palette.js +8 -3
  43. package/dist/command-palette.js.map +1 -1
  44. package/dist/commands.js +1 -1
  45. package/dist/commands.js.map +1 -1
  46. package/dist/eventbus.d.ts.map +1 -1
  47. package/dist/eventbus.js +21 -1
  48. package/dist/eventbus.js.map +1 -1
  49. package/dist/focus-area.d.ts +7 -0
  50. package/dist/focus-area.d.ts.map +1 -1
  51. package/dist/focus-area.js +33 -15
  52. package/dist/focus-area.js.map +1 -1
  53. package/dist/index.d.ts +7 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +6 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/inspector-drawer.d.ts +36 -0
  58. package/dist/inspector-drawer.d.ts.map +1 -0
  59. package/dist/inspector-drawer.js +68 -0
  60. package/dist/inspector-drawer.js.map +1 -0
  61. package/dist/layout-node-surface.d.ts +8 -0
  62. package/dist/layout-node-surface.d.ts.map +1 -1
  63. package/dist/layout-node-surface.js +26 -7
  64. package/dist/layout-node-surface.js.map +1 -1
  65. package/dist/notification.d.ts +10 -1
  66. package/dist/notification.d.ts.map +1 -1
  67. package/dist/notification.js +142 -17
  68. package/dist/notification.js.map +1 -1
  69. package/dist/overlay.d.ts +8 -0
  70. package/dist/overlay.d.ts.map +1 -1
  71. package/dist/overlay.js +23 -10
  72. package/dist/overlay.js.map +1 -1
  73. package/dist/runtime-engine.d.ts +223 -0
  74. package/dist/runtime-engine.d.ts.map +1 -0
  75. package/dist/runtime-engine.js +457 -0
  76. package/dist/runtime-engine.js.map +1 -0
  77. package/dist/runtime.d.ts.map +1 -1
  78. package/dist/runtime.js +27 -7
  79. package/dist/runtime.js.map +1 -1
  80. package/dist/shell-quit.d.ts +12 -0
  81. package/dist/shell-quit.d.ts.map +1 -0
  82. package/dist/shell-quit.js +36 -0
  83. package/dist/shell-quit.js.map +1 -0
  84. package/dist/subapp/mount.d.ts.map +1 -1
  85. package/dist/subapp/mount.js +3 -0
  86. package/dist/subapp/mount.js.map +1 -1
  87. package/dist/types.d.ts +19 -5
  88. package/dist/types.d.ts.map +1 -1
  89. package/dist/types.js +11 -0
  90. package/dist/types.js.map +1 -1
  91. package/dist/view-output.d.ts +1 -0
  92. package/dist/view-output.d.ts.map +1 -1
  93. package/dist/view-output.js +25 -15
  94. package/dist/view-output.js.map +1 -1
  95. package/package.json +5 -2
@@ -4,52 +4,158 @@
4
4
  * Recursive tree renderer, page content, maximized pane, header/help lines,
5
5
  * transition shader, and surface/string bridge helpers.
6
6
  */
7
- import { createSurface, parseAnsiToSurface, resolveSafeCtx, } from '@flyingrobots/bijou';
7
+ import { createSurface, darken, hexToRgb, lighten, mix, parseAnsiToSurface, saturate, resolveSafeCtx, } from '@flyingrobots/bijou';
8
8
  import { TRANSITION_SHADERS } from './transition-shaders.js';
9
9
  import { fitBlock } from './layout-utils.js';
10
10
  import { splitPaneLayout } from './split-pane.js';
11
11
  import { gridLayout } from './grid.js';
12
- import { createFocusAreaStateForSurface, focusAreaSurface, focusAreaScrollTo, focusAreaScrollToX, } from './focus-area.js';
12
+ import { createFocusAreaStateForSurface, focusAreaSurfaceInto, focusAreaScrollTo, focusAreaScrollToX, } from './focus-area.js';
13
13
  import { isMinimized, createPanelVisibilityState } from './panel-state.js';
14
14
  import { createPanelDockState, resolveChildOrder, getNodeId } from './panel-dock.js';
15
15
  import { visibleLength } from './viewport.js';
16
16
  import { helpShort } from './help.js';
17
- import { findPaneNode, isPaneMinimized, mergeMaps, offsetRect, fitLine, mergeBindingSources, } from './app-frame-utils.js';
18
- import { normalizeViewOutput } from './view-output.js';
17
+ import { findPaneNode, isPaneMinimized, mergeMaps, offsetRect, fitLine, } from './app-frame-utils.js';
18
+ import { normalizeViewOutput, normalizeViewOutputInto } from './view-output.js';
19
19
  import { createStyledTextSurfaceWithBCSS } from './css/text-style.js';
20
+ import { frameModeLabel } from './app-frame-i18n.js';
21
+ const framePaneScratchBySize = new Map();
22
+ function relativeLuminance(hex) {
23
+ const [red, green, blue] = hexToRgb(hex);
24
+ const r = srgbChannelToLinear(red);
25
+ const g = srgbChannelToLinear(green);
26
+ const b = srgbChannelToLinear(blue);
27
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
28
+ }
29
+ function srgbChannelToLinear(channel) {
30
+ const normalized = channel / 255;
31
+ return normalized <= 0.03928
32
+ ? normalized / 12.92
33
+ : ((normalized + 0.055) / 1.055) ** 2.4;
34
+ }
35
+ function contrastRatio(a, b) {
36
+ const lighter = Math.max(relativeLuminance(a), relativeLuminance(b));
37
+ const darker = Math.min(relativeLuminance(a), relativeLuminance(b));
38
+ return (lighter + 0.05) / (darker + 0.05);
39
+ }
40
+ function colorDistance(a, b) {
41
+ const [ar, ag, ab] = hexToRgb(a);
42
+ const [br, bg, bb] = hexToRgb(b);
43
+ return Math.sqrt((ar - br) ** 2 + (ag - bg) ** 2 + (ab - bb) ** 2);
44
+ }
45
+ function deriveActiveHeaderTabToken(ctx, backgroundHex, baseHex) {
46
+ const darkBackground = relativeLuminance(backgroundHex) < 0.35;
47
+ const accent = ctx.semantic('accent');
48
+ const info = ctx.semantic('info');
49
+ const primary = ctx.semantic('primary');
50
+ const warning = ctx.semantic('warning');
51
+ const seeds = [
52
+ accent,
53
+ info,
54
+ mix(accent, info, 0.5),
55
+ mix(accent, warning, 0.3),
56
+ mix(primary, accent, 0.3),
57
+ ];
58
+ const candidates = seeds.flatMap((seed) => {
59
+ const emphasized = saturate(seed, 0.35);
60
+ return darkBackground
61
+ ? [
62
+ emphasized,
63
+ lighten(seed, 0.18),
64
+ lighten(emphasized, 0.3),
65
+ lighten(mix(seed, primary, 0.25), 0.2),
66
+ ]
67
+ : [
68
+ darken(seed, 0.18),
69
+ darken(emphasized, 0.28),
70
+ darken(mix(seed, primary, 0.1), 0.22),
71
+ ];
72
+ });
73
+ let best = candidates[0] ?? accent;
74
+ let bestScore = Number.NEGATIVE_INFINITY;
75
+ for (const candidate of candidates) {
76
+ const contrast = contrastRatio(candidate.hex, backgroundHex);
77
+ const distance = colorDistance(candidate.hex, baseHex) / Math.sqrt(3 * 255 * 255);
78
+ const score = contrast * 3 + distance;
79
+ if (score > bestScore) {
80
+ bestScore = score;
81
+ best = candidate;
82
+ }
83
+ }
84
+ return {
85
+ hex: best.hex,
86
+ modifiers: ['bold'],
87
+ };
88
+ }
89
+ function paintActiveHeaderTab(surface, tabTargets, activePageId, ctx, tokenOverride) {
90
+ if (ctx == null)
91
+ return;
92
+ const activeTarget = tabTargets.find((target) => target.pageId === activePageId);
93
+ if (activeTarget == null)
94
+ return;
95
+ const sampleCell = surface.get(activeTarget.startCol, 0);
96
+ const backgroundHex = sampleCell.bg
97
+ ?? ctx.surface('primary').bg
98
+ ?? ctx.surface('secondary').bg
99
+ ?? '#000000';
100
+ const baseHex = sampleCell.fg
101
+ ?? ctx.surface('primary').hex
102
+ ?? ctx.semantic('primary').hex;
103
+ const token = tokenOverride ?? deriveActiveHeaderTabToken(ctx, backgroundHex, baseHex);
104
+ for (let x = activeTarget.startCol; x <= activeTarget.endCol; x++) {
105
+ const cell = surface.get(x, 0);
106
+ surface.set(x, 0, {
107
+ ...cell,
108
+ fg: token.hex,
109
+ bg: token.bg ?? cell.bg,
110
+ modifiers: token.modifiers == null
111
+ ? cell.modifiers
112
+ : Array.from(new Set([...(cell.modifiers ?? []), ...token.modifiers])),
113
+ empty: false,
114
+ });
115
+ }
116
+ }
20
117
  /** Recursively render a layout tree node (pane, split, or grid) into a rect. */
21
118
  export function renderFrameNode(node, rect, ctx) {
22
119
  if (rect.width <= 0 || rect.height <= 0) {
23
120
  return { surface: createSurface(rect.width, rect.height), paneRects: new Map(), paneOrder: [] };
24
121
  }
122
+ const surface = createSurface(rect.width, rect.height);
123
+ const painted = paintFrameNodeInto(node, { row: 0, col: 0, width: rect.width, height: rect.height }, rect, ctx, surface);
124
+ return { surface, paneRects: painted.paneRects, paneOrder: painted.paneOrder };
125
+ }
126
+ function paintFrameNodeInto(node, localRect, absoluteRect, ctx, target) {
127
+ if (localRect.width <= 0 || localRect.height <= 0) {
128
+ return { paneRects: new Map(), paneOrder: [] };
129
+ }
25
130
  if (node.kind === 'pane') {
26
131
  // Minimized pane: render as collapsed title bar
27
132
  if (isMinimized(ctx.visibility, node.paneId)) {
28
133
  const titleBar = `[${node.paneId}] \u25b8`; // ▸
134
+ target.blit(blockSurface(titleBar, localRect.width, localRect.height), localRect.col, localRect.row);
29
135
  return {
30
- surface: blockSurface(titleBar, rect.width, rect.height),
31
- paneRects: new Map([[node.paneId, rect]]),
136
+ paneRects: new Map([[node.paneId, absoluteRect]]),
32
137
  paneOrder: [node.paneId],
33
138
  };
34
139
  }
35
140
  const prior = ctx.scrollByPane[node.paneId] ?? { x: 0, y: 0 };
36
- const contentSurface = framePaneOutputToSurface(node.render(rect.width, rect.height), rect.width, rect.height);
141
+ const contentSurface = framePaneOutputToSurface(node.render(localRect.width, localRect.height), localRect.width, localRect.height, getFramePaneScratch(localRect.width, localRect.height));
37
142
  let state = createFocusAreaStateForSurface(contentSurface, {
38
- width: rect.width,
39
- height: rect.height,
143
+ width: localRect.width,
144
+ height: localRect.height,
40
145
  overflowX: node.overflowX ?? 'hidden',
41
146
  });
42
147
  state = focusAreaScrollTo(state, prior.y);
43
148
  state = focusAreaScrollToX(state, prior.x);
44
- const surface = focusAreaSurface(contentSurface, state, {
149
+ focusAreaSurfaceInto(contentSurface, state, target, {
45
150
  focused: node.paneId === ctx.focusedPaneId,
46
151
  ctx: resolveSafeCtx(),
47
152
  id: node.paneId,
48
153
  classes: [node.paneId === ctx.focusedPaneId ? 'focused' : 'unfocused'],
49
- });
154
+ focusedGutterToken: node.focusedGutterToken,
155
+ unfocusedGutterToken: node.unfocusedGutterToken,
156
+ }, localRect.col, localRect.row);
50
157
  return {
51
- surface,
52
- paneRects: new Map([[node.paneId, rect]]),
158
+ paneRects: new Map([[node.paneId, absoluteRect]]),
53
159
  paneOrder: [node.paneId],
54
160
  };
55
161
  }
@@ -72,65 +178,56 @@ export function renderFrameNode(node, rect, ctx) {
72
178
  }
73
179
  if (aMinimized && !bMinimized) {
74
180
  // A is minimized: give it minimal space
75
- const mainAxisTotal = direction === 'row' ? rect.width : rect.height;
181
+ const mainAxisTotal = direction === 'row' ? localRect.width : localRect.height;
76
182
  const minimizedSize = Math.min(1, mainAxisTotal);
77
183
  splitState = { ...splitState, ratio: minimizedSize / Math.max(1, mainAxisTotal) };
78
184
  }
79
185
  else if (bMinimized && !aMinimized) {
80
186
  // B is minimized: give A most of the space
81
- const mainAxisTotal = direction === 'row' ? rect.width : rect.height;
187
+ const mainAxisTotal = direction === 'row' ? localRect.width : localRect.height;
82
188
  const minimizedSize = Math.min(1, mainAxisTotal);
83
189
  splitState = { ...splitState, ratio: 1 - minimizedSize / Math.max(1, mainAxisTotal) };
84
190
  }
85
191
  const layout = splitPaneLayout(splitState, {
86
192
  direction,
87
- width: rect.width,
88
- height: rect.height,
193
+ width: localRect.width,
194
+ height: localRect.height,
89
195
  minA: node.minA,
90
196
  minB: node.minB,
91
197
  });
92
- const aRect = offsetRect(layout.paneA, rect.row, rect.col);
93
- const bRect = offsetRect(layout.paneB, rect.row, rect.col);
94
- const a = renderFrameNode(effectiveA, aRect, ctx);
95
- const b = renderFrameNode(effectiveB, bRect, ctx);
96
- const surface = createSurface(rect.width, rect.height);
97
- surface.blit(a.surface, layout.paneA.col, layout.paneA.row);
98
- surface.blit(b.surface, layout.paneB.col, layout.paneB.row);
99
- paintDivider(surface, layout.divider, node.dividerChar, direction);
198
+ const localARect = offsetRect(layout.paneA, localRect.row, localRect.col);
199
+ const localBRect = offsetRect(layout.paneB, localRect.row, localRect.col);
200
+ const absoluteARect = offsetRect(layout.paneA, absoluteRect.row, absoluteRect.col);
201
+ const absoluteBRect = offsetRect(layout.paneB, absoluteRect.row, absoluteRect.col);
202
+ const a = paintFrameNodeInto(effectiveA, localARect, absoluteARect, ctx, target);
203
+ const b = paintFrameNodeInto(effectiveB, localBRect, absoluteBRect, ctx, target);
204
+ paintDivider(target, offsetRect(layout.divider, localRect.row, localRect.col), node.dividerChar, direction);
100
205
  return {
101
- surface,
102
206
  paneRects: mergeMaps(a.paneRects, b.paneRects),
103
207
  paneOrder: [...a.paneOrder, ...b.paneOrder],
104
208
  };
105
209
  }
106
210
  const relRects = gridLayout({
107
- width: rect.width,
108
- height: rect.height,
211
+ width: localRect.width,
212
+ height: localRect.height,
109
213
  columns: node.columns,
110
214
  rows: node.rows,
111
215
  areas: node.areas,
112
216
  gap: node.gap,
113
217
  });
114
- const renderedByArea = new Map();
218
+ let paneRects = new Map();
219
+ const seenPaneIds = new Set();
220
+ const paneOrder = [];
115
221
  for (const [areaName, areaRect] of relRects) {
116
- const absoluteAreaRect = offsetRect(areaRect, rect.row, rect.col);
222
+ const localAreaRect = offsetRect(areaRect, localRect.row, localRect.col);
223
+ const absoluteAreaRect = offsetRect(areaRect, absoluteRect.row, absoluteRect.col);
117
224
  const child = node.cells[areaName];
118
225
  if (child == null) {
119
226
  resolveSafeCtx()?.io.writeError(`createFramedApp: grid cell "${areaName}" missing in page "${ctx.pageId}" — rendering placeholder\n`);
120
- renderedByArea.set(areaName, renderMissingGridCell(areaName, absoluteAreaRect));
227
+ target.blit(blockSurface(`[missing grid cell: ${areaName}]`, localAreaRect.width, localAreaRect.height), localAreaRect.col, localAreaRect.row);
121
228
  continue;
122
229
  }
123
- renderedByArea.set(areaName, renderFrameNode(child, absoluteAreaRect, ctx));
124
- }
125
- const surface = createSurface(rect.width, rect.height);
126
- for (const [areaName, areaRect] of relRects) {
127
- const rendered = renderedByArea.get(areaName);
128
- surface.blit(rendered.surface, areaRect.col, areaRect.row);
129
- }
130
- let paneRects = new Map();
131
- const seenPaneIds = new Set();
132
- const paneOrder = [];
133
- for (const rendered of renderedByArea.values()) {
230
+ const rendered = paintFrameNodeInto(child, localAreaRect, absoluteAreaRect, ctx, target);
134
231
  for (const [paneId, paneRect] of rendered.paneRects.entries()) {
135
232
  if (paneRects.has(paneId)) {
136
233
  throw new Error(`createFramedApp: duplicate paneId "${paneId}" in rendered layout`);
@@ -145,7 +242,7 @@ export function renderFrameNode(node, rect, ctx) {
145
242
  paneOrder.push(paneId);
146
243
  }
147
244
  }
148
- return { surface, paneRects, paneOrder };
245
+ return { paneRects, paneOrder };
149
246
  }
150
247
  /** Render a placeholder for a grid area that has no matching cell definition. */
151
248
  export function renderMissingGridCell(areaName, rect) {
@@ -157,6 +254,12 @@ export function renderMissingGridCell(areaName, rect) {
157
254
  }
158
255
  /** Render a page's layout tree within the frame body rect. */
159
256
  export function renderPageContent(pageId, model, bodyRect, pagesById) {
257
+ const surface = createSurface(bodyRect.width, bodyRect.height);
258
+ const geometry = renderPageContentInto(pageId, model, bodyRect, pagesById, surface, 0, 0);
259
+ return { surface, paneRects: geometry.paneRects, paneOrder: geometry.paneOrder };
260
+ }
261
+ /** Paint a page's layout tree directly into an existing target surface. */
262
+ export function renderPageContentInto(pageId, model, bodyRect, pagesById, target, offsetRow = bodyRect.row, offsetCol = bodyRect.col) {
160
263
  const page = pagesById.get(pageId);
161
264
  const pageModel = model.pageModels[pageId];
162
265
  const renderCtx = {
@@ -167,20 +270,26 @@ export function renderPageContent(pageId, model, bodyRect, pagesById) {
167
270
  visibility: model.minimizedByPage[pageId] ?? createPanelVisibilityState(),
168
271
  dockState: model.dockStateByPage[pageId] ?? createPanelDockState(),
169
272
  };
170
- return renderFrameNode(page.layout(pageModel), bodyRect, renderCtx);
273
+ return paintFrameNodeInto(page.layout(pageModel), { row: offsetRow, col: offsetCol, width: bodyRect.width, height: bodyRect.height }, bodyRect, renderCtx, target);
171
274
  }
172
275
  /** Render only the maximized pane at the full body rect. */
173
276
  export function renderMaximizedPane(pageId, model, bodyRect, pagesById, maximizedPaneId) {
277
+ const surface = createSurface(bodyRect.width, bodyRect.height);
278
+ const geometry = renderMaximizedPaneInto(pageId, model, bodyRect, pagesById, maximizedPaneId, surface, 0, 0);
279
+ return { surface, paneRects: geometry.paneRects, paneOrder: geometry.paneOrder };
280
+ }
281
+ /** Paint only the maximized pane directly into an existing target surface. */
282
+ export function renderMaximizedPaneInto(pageId, model, bodyRect, pagesById, maximizedPaneId, target, offsetRow = bodyRect.row, offsetCol = bodyRect.col) {
174
283
  const page = pagesById.get(pageId);
175
284
  const pageModel = model.pageModels[pageId];
176
285
  const layoutTree = page.layout(pageModel);
177
286
  const paneNode = findPaneNode(layoutTree, maximizedPaneId);
178
287
  if (paneNode == null) {
179
288
  // Pane not found, fall back to normal rendering
180
- return renderPageContent(pageId, model, bodyRect, pagesById);
289
+ return renderPageContentInto(pageId, model, bodyRect, pagesById, target, offsetRow, offsetCol);
181
290
  }
182
291
  const prior = model.scrollByPage[pageId]?.[maximizedPaneId] ?? { x: 0, y: 0 };
183
- const contentSurface = framePaneOutputToSurface(paneNode.render(bodyRect.width, bodyRect.height), bodyRect.width, bodyRect.height);
292
+ const contentSurface = framePaneOutputToSurface(paneNode.render(bodyRect.width, bodyRect.height), bodyRect.width, bodyRect.height, getFramePaneScratch(bodyRect.width, bodyRect.height));
184
293
  let state = createFocusAreaStateForSurface(contentSurface, {
185
294
  width: bodyRect.width,
186
295
  height: bodyRect.height,
@@ -188,20 +297,29 @@ export function renderMaximizedPane(pageId, model, bodyRect, pagesById, maximize
188
297
  });
189
298
  state = focusAreaScrollTo(state, prior.y);
190
299
  state = focusAreaScrollToX(state, prior.x);
191
- const surface = focusAreaSurface(contentSurface, state, {
300
+ focusAreaSurfaceInto(contentSurface, state, target, {
192
301
  focused: true,
193
302
  ctx: resolveSafeCtx(),
194
303
  id: maximizedPaneId,
195
304
  classes: ['focused', 'maximized'],
196
- });
305
+ focusedGutterToken: paneNode.focusedGutterToken,
306
+ unfocusedGutterToken: paneNode.unfocusedGutterToken,
307
+ }, offsetCol, offsetRow);
197
308
  return {
198
- surface,
199
309
  paneRects: new Map([[maximizedPaneId, bodyRect]]),
200
310
  paneOrder: [maximizedPaneId],
201
311
  };
202
312
  }
203
313
  /** Resolve the top header line plus clickable tab target geometry. */
204
314
  export function resolveHeaderLine(model, options, pagesById) {
315
+ const ctx = resolveSafeCtx();
316
+ const activePage = pagesById.get(model.activePageId);
317
+ const activePageModel = model.pageModels[model.activePageId];
318
+ const headerStyle = options.headerStyle?.({
319
+ model,
320
+ activePage,
321
+ pageModel: activePageModel,
322
+ });
205
323
  const title = options.title ?? 'App';
206
324
  let cursor = visibleLength(title) + 2;
207
325
  const tabTargets = [];
@@ -225,33 +343,50 @@ export function resolveHeaderLine(model, options, pagesById) {
225
343
  return label;
226
344
  }).join(' ');
227
345
  const line = fitLine(`${title} ${tabs}`, model.columns);
346
+ const surface = createStyledTextSurfaceWithBCSS(line, model.columns, ctx, {
347
+ type: 'FrameHeader',
348
+ id: 'frame-header',
349
+ classes: [`page-${model.activePageId}`],
350
+ });
351
+ paintActiveHeaderTab(surface, tabTargets, model.activePageId, ctx, headerStyle?.activeTabToken);
228
352
  return {
229
- surface: createStyledTextSurfaceWithBCSS(line, model.columns, resolveSafeCtx(), {
230
- type: 'FrameHeader',
231
- id: 'frame-header',
232
- classes: [`page-${model.activePageId}`],
233
- }),
353
+ surface,
234
354
  tabTargets,
235
355
  };
236
356
  }
237
- /** Render the bottom status line showing mode, focused pane, and key hints. */
238
- export function renderHelpLine(model, frameKeys, options, activePage) {
239
- const mode = model.commandPalette != null
357
+ /** Render the footer status line showing mode, focused pane, and key hints. */
358
+ export function renderHelpLine(model, activeLayer, i18n, notificationCue) {
359
+ const mode = activeLayer.kind === 'search' || activeLayer.kind === 'command-palette'
240
360
  ? 'PALETTE'
241
- : model.helpOpen
361
+ : activeLayer.kind === 'help'
242
362
  ? 'HELP'
243
- : 'NORMAL';
363
+ : activeLayer.kind === 'quit-confirm'
364
+ ? 'QUIT'
365
+ : activeLayer.kind === 'settings'
366
+ ? 'SETTINGS'
367
+ : activeLayer.kind === 'notification-center'
368
+ ? 'NOTICES'
369
+ : activeLayer.kind === 'page-modal'
370
+ ? 'MODAL'
371
+ : 'NORMAL';
244
372
  const focusedPane = model.focusedPaneByPage[model.activePageId] ?? '-';
245
- const status = `[${mode}] page:${model.activePageId} pane:${focusedPane}`;
246
- const source = options.helpLineSource?.({
247
- model,
248
- activePage,
249
- frameKeys,
250
- globalKeys: options.globalKeys,
251
- }) ?? mergeBindingSources(frameKeys, options.globalKeys, activePage.helpSource ?? activePage.keyMap);
252
- const hint = helpShort(source);
373
+ const modeLabel = frameModeLabel(i18n, mode);
374
+ const status = notificationCue == null || notificationCue.length === 0
375
+ ? `[${modeLabel}] page:${model.activePageId} pane:${focusedPane}`
376
+ : `[${modeLabel}] page:${model.activePageId} pane:${focusedPane} ${notificationCue}`;
377
+ const hint = typeof activeLayer.hintSource === 'string'
378
+ ? activeLayer.hintSource
379
+ : activeLayer.hintSource == null
380
+ ? ''
381
+ : helpShort(activeLayer.hintSource);
253
382
  const line = hint.length > 0
254
- ? ` ${status} ${hint}`
383
+ ? (() => {
384
+ const statusWithPadding = ` ${status}`;
385
+ const gap = model.columns - visibleLength(statusWithPadding) - visibleLength(hint);
386
+ return gap >= 2
387
+ ? `${statusWithPadding}${' '.repeat(gap)}${hint}`
388
+ : `${statusWithPadding} ${hint}`;
389
+ })()
255
390
  : ` ${status}`;
256
391
  return createStyledTextSurfaceWithBCSS(fitLine(line, model.columns), model.columns, resolveSafeCtx(), {
257
392
  type: 'FrameHelp',
@@ -282,8 +417,10 @@ export function renderTransition(prev, next, style, progress, width, height, ctx
282
417
  }
283
418
  return surface;
284
419
  }
285
- export function framePaneOutputToSurface(output, width, height) {
286
- return normalizeViewOutput(output, { width, height }).surface;
420
+ export function framePaneOutputToSurface(output, width, height, scratch) {
421
+ return scratch == null
422
+ ? normalizeViewOutput(output, { width, height }).surface
423
+ : normalizeViewOutputInto(output, { width, height }, scratch).surface;
287
424
  }
288
425
  export function blockSurface(content, width, height) {
289
426
  return parseAnsiToSurface(fitBlock(content, width, height).join('\n'), width, height);
@@ -301,6 +438,15 @@ function resolveDividerUnit(dividerChar, fallback) {
301
438
  return fallback;
302
439
  return dividerChar[0] ?? fallback;
303
440
  }
441
+ function getFramePaneScratch(width, height) {
442
+ const key = `${width}x${height}`;
443
+ let scratch = framePaneScratchBySize.get(key);
444
+ if (scratch == null) {
445
+ scratch = createSurface(width, height);
446
+ framePaneScratchBySize.set(key, scratch);
447
+ }
448
+ return scratch;
449
+ }
304
450
  function applyTransitionCell(baseCell, result) {
305
451
  if (result.overrideCell != null) {
306
452
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"app-frame-render.js","sourceRoot":"","sources":["../src/app-frame-render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-frame-render.js","sourceRoot":"","sources":["../src/app-frame-render.ts"],"names":[],"mappings":"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"}