@flyingrobots/bijou-tui 4.4.0 → 5.0.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 (149) hide show
  1. package/README.md +102 -600
  2. package/dist/app-frame-actions.d.ts.map +1 -1
  3. package/dist/app-frame-actions.js +6 -1
  4. package/dist/app-frame-actions.js.map +1 -1
  5. package/dist/app-frame-i18n.d.ts.map +1 -1
  6. package/dist/app-frame-i18n.js +53 -0
  7. package/dist/app-frame-i18n.js.map +1 -1
  8. package/dist/app-frame-layers.d.ts +11 -1
  9. package/dist/app-frame-layers.d.ts.map +1 -1
  10. package/dist/app-frame-layers.js +19 -0
  11. package/dist/app-frame-layers.js.map +1 -1
  12. package/dist/app-frame-overlays.d.ts +82 -0
  13. package/dist/app-frame-overlays.d.ts.map +1 -0
  14. package/dist/app-frame-overlays.js +480 -0
  15. package/dist/app-frame-overlays.js.map +1 -0
  16. package/dist/app-frame-render.d.ts +8 -8
  17. package/dist/app-frame-render.d.ts.map +1 -1
  18. package/dist/app-frame-render.js +84 -25
  19. package/dist/app-frame-render.js.map +1 -1
  20. package/dist/app-frame-types.d.ts +122 -5
  21. package/dist/app-frame-types.d.ts.map +1 -1
  22. package/dist/app-frame-types.js +17 -1
  23. package/dist/app-frame-types.js.map +1 -1
  24. package/dist/app-frame-utils.d.ts.map +1 -1
  25. package/dist/app-frame-utils.js +6 -5
  26. package/dist/app-frame-utils.js.map +1 -1
  27. package/dist/app-frame.d.ts +43 -83
  28. package/dist/app-frame.d.ts.map +1 -1
  29. package/dist/app-frame.js +499 -575
  30. package/dist/app-frame.js.map +1 -1
  31. package/dist/browsable-list.d.ts +12 -0
  32. package/dist/browsable-list.d.ts.map +1 -1
  33. package/dist/browsable-list.js +17 -6
  34. package/dist/browsable-list.js.map +1 -1
  35. package/dist/canvas.d.ts.map +1 -1
  36. package/dist/canvas.js +27 -7
  37. package/dist/canvas.js.map +1 -1
  38. package/dist/collection-surface.d.ts +8 -0
  39. package/dist/collection-surface.d.ts.map +1 -1
  40. package/dist/collection-surface.js +72 -8
  41. package/dist/collection-surface.js.map +1 -1
  42. package/dist/command-palette.d.ts +5 -3
  43. package/dist/command-palette.d.ts.map +1 -1
  44. package/dist/command-palette.js +5 -3
  45. package/dist/command-palette.js.map +1 -1
  46. package/dist/css/text-style.d.ts +2 -0
  47. package/dist/css/text-style.d.ts.map +1 -1
  48. package/dist/css/text-style.js +18 -8
  49. package/dist/css/text-style.js.map +1 -1
  50. package/dist/debug-overlay.d.ts +19 -0
  51. package/dist/debug-overlay.d.ts.map +1 -0
  52. package/dist/debug-overlay.js +25 -0
  53. package/dist/debug-overlay.js.map +1 -0
  54. package/dist/design-language.d.ts.map +1 -1
  55. package/dist/design-language.js +4 -5
  56. package/dist/design-language.js.map +1 -1
  57. package/dist/driver.d.ts +102 -0
  58. package/dist/driver.d.ts.map +1 -1
  59. package/dist/driver.js +259 -19
  60. package/dist/driver.js.map +1 -1
  61. package/dist/file-picker.d.ts.map +1 -1
  62. package/dist/file-picker.js +2 -2
  63. package/dist/file-picker.js.map +1 -1
  64. package/dist/flex.d.ts.map +1 -1
  65. package/dist/flex.js +6 -6
  66. package/dist/flex.js.map +1 -1
  67. package/dist/focus-area.d.ts +9 -1
  68. package/dist/focus-area.d.ts.map +1 -1
  69. package/dist/focus-area.js +69 -40
  70. package/dist/focus-area.js.map +1 -1
  71. package/dist/grid.d.ts +2 -2
  72. package/dist/grid.d.ts.map +1 -1
  73. package/dist/grid.js +11 -148
  74. package/dist/grid.js.map +1 -1
  75. package/dist/help.d.ts +2 -0
  76. package/dist/help.d.ts.map +1 -1
  77. package/dist/help.js +6 -4
  78. package/dist/help.js.map +1 -1
  79. package/dist/icon-presentation.d.ts +10 -0
  80. package/dist/icon-presentation.d.ts.map +1 -0
  81. package/dist/icon-presentation.js +12 -0
  82. package/dist/icon-presentation.js.map +1 -0
  83. package/dist/index.d.ts +14 -8
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +7 -5
  86. package/dist/index.js.map +1 -1
  87. package/dist/layout-preset.d.ts +1 -1
  88. package/dist/layout-preset.d.ts.map +1 -1
  89. package/dist/motion/reconciler.d.ts +6 -2
  90. package/dist/motion/reconciler.d.ts.map +1 -1
  91. package/dist/motion/reconciler.js +40 -10
  92. package/dist/motion/reconciler.js.map +1 -1
  93. package/dist/motion/types.d.ts +3 -1
  94. package/dist/motion/types.d.ts.map +1 -1
  95. package/dist/navigable-table.d.ts +9 -10
  96. package/dist/navigable-table.d.ts.map +1 -1
  97. package/dist/navigable-table.js +33 -14
  98. package/dist/navigable-table.js.map +1 -1
  99. package/dist/notification.d.ts +15 -0
  100. package/dist/notification.d.ts.map +1 -1
  101. package/dist/notification.js +98 -29
  102. package/dist/notification.js.map +1 -1
  103. package/dist/overlay.d.ts.map +1 -1
  104. package/dist/overlay.js +50 -19
  105. package/dist/overlay.js.map +1 -1
  106. package/dist/pager.d.ts +3 -1
  107. package/dist/pager.d.ts.map +1 -1
  108. package/dist/pager.js +4 -0
  109. package/dist/pager.js.map +1 -1
  110. package/dist/pipeline/middleware/grayscale.d.ts.map +1 -1
  111. package/dist/pipeline/middleware/grayscale.js +5 -5
  112. package/dist/pipeline/middleware/grayscale.js.map +1 -1
  113. package/dist/pipeline/middleware/motion.js +2 -2
  114. package/dist/pipeline/middleware/motion.js.map +1 -1
  115. package/dist/pipeline/middleware/surface-shaders.d.ts +37 -0
  116. package/dist/pipeline/middleware/surface-shaders.d.ts.map +1 -0
  117. package/dist/pipeline/middleware/surface-shaders.js +164 -0
  118. package/dist/pipeline/middleware/surface-shaders.js.map +1 -0
  119. package/dist/pipeline/pipeline.d.ts +29 -1
  120. package/dist/pipeline/pipeline.d.ts.map +1 -1
  121. package/dist/pipeline/pipeline.js +86 -23
  122. package/dist/pipeline/pipeline.js.map +1 -1
  123. package/dist/runtime.d.ts +19 -0
  124. package/dist/runtime.d.ts.map +1 -1
  125. package/dist/runtime.js +183 -30
  126. package/dist/runtime.js.map +1 -1
  127. package/dist/shell-quit.d.ts +1 -1
  128. package/dist/shell-quit.d.ts.map +1 -1
  129. package/dist/shell-quit.js +14 -3
  130. package/dist/shell-quit.js.map +1 -1
  131. package/dist/split-pane.d.ts +2 -2
  132. package/dist/split-pane.d.ts.map +1 -1
  133. package/dist/split-pane.js +28 -49
  134. package/dist/split-pane.js.map +1 -1
  135. package/dist/subapp/mount.d.ts +17 -0
  136. package/dist/subapp/mount.d.ts.map +1 -1
  137. package/dist/subapp/mount.js +13 -0
  138. package/dist/subapp/mount.js.map +1 -1
  139. package/dist/surface-layout.d.ts +8 -3
  140. package/dist/surface-layout.d.ts.map +1 -1
  141. package/dist/surface-layout.js +27 -12
  142. package/dist/surface-layout.js.map +1 -1
  143. package/dist/view-output.js +2 -2
  144. package/dist/view-output.js.map +1 -1
  145. package/dist/viewport.d.ts +13 -1
  146. package/dist/viewport.d.ts.map +1 -1
  147. package/dist/viewport.js +33 -11
  148. package/dist/viewport.js.map +1 -1
  149. package/package.json +3 -3
@@ -20,7 +20,6 @@
20
20
  * ```
21
21
  */
22
22
  import { createSurface, parseAnsiToSurface, renderByMode } from '@flyingrobots/bijou';
23
- import { parseHex, encodeModifiers } from '@flyingrobots/bijou/perf';
24
23
  import { resolveBCSSTextToken } from './css/text-style.js';
25
24
  import { viewport, createScrollState, scrollBy, scrollTo, scrollToTop, scrollToBottom, pageDown, pageUp, scrollByX, scrollToX, } from './viewport.js';
26
25
  import { createKeyMap } from './keybindings.js';
@@ -33,6 +32,7 @@ const EMPTY_CELL = { char: ' ', empty: false };
33
32
  const SCROLLBAR_TRACK_CELL = { char: '│', empty: false };
34
33
  const SCROLLBAR_THUMB_CELL = { char: '█', empty: false };
35
34
  const gutterCellCache = new Map();
35
+ const scrollbarCellCache = new Map();
36
36
  // ---------------------------------------------------------------------------
37
37
  // State creation
38
38
  // ---------------------------------------------------------------------------
@@ -47,16 +47,17 @@ const gutterCellCache = new Map();
47
47
  * @returns Fresh focus area state with scroll at the top-left.
48
48
  */
49
49
  export function createFocusAreaState(options) {
50
- const { content, overflowX = 'hidden' } = options;
50
+ const { content, overflowX = 'hidden', scrollbarMode = 'gutter' } = options;
51
51
  // Clamp dimensions to at least 1
52
52
  const width = Math.max(1, options.width);
53
53
  const height = Math.max(1, options.height);
54
54
  return {
55
55
  content,
56
- scroll: createScrollState(content, height, resolveFocusAreaViewportWidth(content.split('\n').length, width, height, overflowX)),
56
+ scroll: createScrollState(content, height, resolveFocusAreaViewportWidth(content.split('\n').length, width, height, overflowX, scrollbarMode)),
57
57
  width,
58
58
  height,
59
59
  overflowX,
60
+ scrollbarMode,
60
61
  };
61
62
  }
62
63
  /**
@@ -66,10 +67,10 @@ export function createFocusAreaState(options) {
66
67
  * keep pane rendering surface-native without string round-tripping.
67
68
  */
68
69
  export function createFocusAreaStateForSurface(surface, options) {
69
- const { overflowX = 'hidden' } = options;
70
+ const { overflowX = 'hidden', scrollbarMode = 'gutter' } = options;
70
71
  const width = Math.max(1, options.width);
71
72
  const height = Math.max(1, options.height);
72
- const viewportWidth = resolveFocusAreaViewportWidth(surface.height, width, height, overflowX);
73
+ const viewportWidth = resolveFocusAreaViewportWidth(surface.height, width, height, overflowX, scrollbarMode);
73
74
  const maxX = viewportWidth === undefined ? 0 : Math.max(0, surface.width - viewportWidth);
74
75
  return {
75
76
  content: '',
@@ -84,6 +85,7 @@ export function createFocusAreaStateForSurface(surface, options) {
84
85
  width,
85
86
  height,
86
87
  overflowX,
88
+ scrollbarMode,
87
89
  };
88
90
  }
89
91
  // ---------------------------------------------------------------------------
@@ -180,7 +182,7 @@ export function focusAreaScrollToX(state, x) {
180
182
  */
181
183
  export function focusAreaSetContent(state, content) {
182
184
  const totalLines = content.split('\n').length;
183
- const viewportWidth = resolveFocusAreaViewportWidth(totalLines, state.width, state.height, state.overflowX);
185
+ const viewportWidth = resolveFocusAreaViewportWidth(totalLines, state.width, state.height, state.overflowX, state.scrollbarMode);
184
186
  const newScroll = createScrollState(content, state.height, viewportWidth);
185
187
  const clampedY = Math.min(state.scroll.y, newScroll.maxY);
186
188
  const clampedX = Math.min(state.scroll.x, newScroll.maxX);
@@ -228,6 +230,7 @@ export function focusArea(state, options) {
228
230
  scrollY: state.scroll.y,
229
231
  scrollX,
230
232
  showScrollbar,
233
+ scrollbarMode: state.scrollbarMode,
231
234
  });
232
235
  if (!hasGutter)
233
236
  return body;
@@ -260,7 +263,9 @@ export function focusAreaSurfaceInto(content, state, target, options, offsetX =
260
263
  const gutterWidth = hasGutter ? 1 : 0;
261
264
  const bodyWidth = Math.max(0, state.width - gutterWidth);
262
265
  const needsScrollbar = showScrollbar && content.height > state.height && bodyWidth > 0;
263
- const contentWidth = needsScrollbar ? Math.max(0, bodyWidth - 1) : bodyWidth;
266
+ const contentWidth = needsScrollbar && state.scrollbarMode === 'gutter'
267
+ ? Math.max(0, bodyWidth - 1)
268
+ : bodyWidth;
264
269
  const scrollY = Math.max(0, Math.min(state.scroll.y, Math.max(0, content.height - state.height)));
265
270
  const scrollX = state.overflowX === 'scroll'
266
271
  ? Math.max(0, Math.min(state.scroll.x, Math.max(0, content.width - contentWidth)))
@@ -269,31 +274,32 @@ export function focusAreaSurfaceInto(content, state, target, options, offsetX =
269
274
  target.blit(content, offsetX + gutterWidth, offsetY, scrollX, scrollY, contentWidth, state.height);
270
275
  }
271
276
  if (needsScrollbar) {
272
- paintScrollbarInto(target, offsetX + gutterWidth + contentWidth, offsetY, state.height, content.height, scrollY);
277
+ const scrollbarX = offsetX + gutterWidth + bodyWidth - 1;
278
+ const scrollbarCells = resolveScrollbarCells(ctx, options);
279
+ paintScrollbarInto(target, scrollbarX, offsetY, state.height, content.height, scrollY, scrollbarCells.track, scrollbarCells.thumb);
273
280
  }
274
281
  if (hasGutter) {
275
282
  const gutterCell = resolveGutterCell(focused, ctx, options);
276
- const packed = 'buffer' in target;
277
- const fgRgb = packed && gutterCell.fg ? parseHex(gutterCell.fg) : undefined;
278
- if (fgRgb) {
279
- const [fR, fG, fB] = fgRgb;
280
- let bR = -1, bG = 0, bB = 0;
281
- const bgRgb = gutterCell.bg ? parseHex(gutterCell.bg) : undefined;
282
- if (bgRgb) {
283
- [bR, bG, bB] = bgRgb;
284
- }
285
- for (let y = 0; y < state.height; y++) {
286
- target.setRGB(offsetX, offsetY + y, gutterCell.char, fR, fG, fB, bR, bG, bB, encodeModifiers(gutterCell.modifiers));
287
- }
288
- }
289
- else {
290
- for (let y = 0; y < state.height; y++) {
291
- target.set(offsetX, offsetY + y, gutterCell);
292
- }
283
+ for (let y = 0; y < state.height; y++) {
284
+ paintCellPreservingBackground(target, offsetX, offsetY + y, gutterCell);
293
285
  }
294
286
  }
295
287
  return target;
296
288
  }
289
+ function paintCellPreservingBackground(target, x, y, cell) {
290
+ const existing = target.get(x, y);
291
+ const hasExplicitBackground = cell.bg != null || cell.bgRGB != null;
292
+ target.set(x, y, {
293
+ char: cell.char,
294
+ fg: cell.fg,
295
+ bg: hasExplicitBackground ? cell.bg : existing.bg,
296
+ fgRGB: cell.fgRGB,
297
+ bgRGB: hasExplicitBackground ? cell.bgRGB : existing.bgRGB,
298
+ modifiers: cell.modifiers,
299
+ opacity: hasExplicitBackground ? cell.opacity : (cell.opacity ?? existing.opacity),
300
+ empty: false,
301
+ });
302
+ }
297
303
  /**
298
304
  * Resolve the styled gutter string based on focus state and context.
299
305
  */
@@ -328,14 +334,41 @@ function resolveGutterCell(focused, ctx, options) {
328
334
  gutterCellCache.set(key, parsed);
329
335
  return parsed;
330
336
  }
331
- function paintScrollbarInto(target, column, row, viewportHeight, totalLines, scrollY) {
337
+ function resolveScrollbarCells(ctx, options) {
338
+ return {
339
+ track: resolveScrollbarCell('track', ctx, options),
340
+ thumb: resolveScrollbarCell('thumb', ctx, options),
341
+ };
342
+ }
343
+ function resolveScrollbarCell(kind, ctx, options) {
344
+ if (!ctx) {
345
+ return kind === 'thumb' ? SCROLLBAR_THUMB_CELL : SCROLLBAR_TRACK_CELL;
346
+ }
347
+ const baseToken = kind === 'thumb'
348
+ ? (options?.scrollbarThumbToken ?? ctx.semantic('accent'))
349
+ : (options?.scrollbarTrackToken ?? ctx.semantic('muted'));
350
+ const baseChar = kind === 'thumb' ? SCROLLBAR_THUMB_CELL.char : SCROLLBAR_TRACK_CELL.char;
351
+ const key = `${kind}:${baseChar}:${JSON.stringify(baseToken)}:${options?.id ?? ''}:${(options?.classes ?? []).join(',')}`;
352
+ const cached = scrollbarCellCache.get(key);
353
+ if (cached != null)
354
+ return cached;
355
+ const token = resolveBCSSTextToken(ctx, {
356
+ type: kind === 'thumb' ? 'FocusAreaScrollbarThumb' : 'FocusAreaScrollbarTrack',
357
+ id: options?.id,
358
+ classes: [...(options?.classes ?? []), 'scrollbar', `scrollbar-${kind}`],
359
+ }, {
360
+ hex: baseToken.hex,
361
+ bg: baseToken.bg,
362
+ modifiers: baseToken.modifiers,
363
+ });
364
+ const parsed = parseAnsiToSurface(ctx.style.styled(token, baseChar), 1, 1).get(0, 0);
365
+ scrollbarCellCache.set(key, parsed);
366
+ return parsed;
367
+ }
368
+ function paintScrollbarInto(target, column, row, viewportHeight, totalLines, scrollY, trackCell, thumbCell) {
332
369
  if (totalLines <= viewportHeight) {
333
- const p = 'buffer' in target;
334
370
  for (let y = 0; y < viewportHeight; y++) {
335
- if (p)
336
- target.setRGB(column, row + y, 0x20, -1, 0, 0, -1, 0, 0);
337
- else
338
- target.set(column, row + y, EMPTY_CELL);
371
+ paintCellPreservingBackground(target, column, row + y, EMPTY_CELL);
339
372
  }
340
373
  return;
341
374
  }
@@ -343,22 +376,18 @@ function paintScrollbarInto(target, column, row, viewportHeight, totalLines, scr
343
376
  const maxScroll = totalLines - viewportHeight;
344
377
  const scrollFraction = maxScroll > 0 ? scrollY / maxScroll : 0;
345
378
  const thumbStart = Math.round(scrollFraction * (viewportHeight - thumbSize));
346
- const sp = 'buffer' in target;
347
379
  for (let index = 0; index < viewportHeight; index++) {
348
380
  const isThumb = index >= thumbStart && index < thumbStart + thumbSize;
349
- if (sp) {
350
- target.setRGB(column, row + index, isThumb ? 0x2588 : 0x2502, -1, 0, 0, -1, 0, 0);
351
- }
352
- else {
353
- target.set(column, row + index, isThumb ? SCROLLBAR_THUMB_CELL : SCROLLBAR_TRACK_CELL);
354
- }
381
+ paintCellPreservingBackground(target, column, row + index, isThumb ? thumbCell : trackCell);
355
382
  }
356
383
  }
357
- function resolveFocusAreaViewportWidth(totalLines, width, height, overflowX) {
384
+ function resolveFocusAreaViewportWidth(totalLines, width, height, overflowX, scrollbarMode) {
358
385
  const gutterWidth = width > 1 ? 1 : 0;
359
386
  const contentWidth = Math.max(1, width - gutterWidth);
360
387
  const hasScrollbar = totalLines > height && contentWidth > 1;
361
- const scrollableWidth = hasScrollbar ? Math.max(1, contentWidth - 1) : contentWidth;
388
+ const scrollableWidth = hasScrollbar && scrollbarMode === 'gutter'
389
+ ? Math.max(1, contentWidth - 1)
390
+ : contentWidth;
362
391
  return overflowX === 'scroll' ? scrollableWidth : undefined;
363
392
  }
364
393
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"focus-area.js","sourceRoot":"","sources":["../src/focus-area.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-area.js","sourceRoot":"","sources":["../src/focus-area.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAGL,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAe,MAAM,kBAAkB,CAAC;AA6D7D,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,yDAAyD;AACzD,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,UAAU,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrD,MAAM,oBAAoB,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/D,MAAM,oBAAoB,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgB,CAAC;AAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEnD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,QAAQ,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC5E,iCAAiC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACL,OAAO;QACP,MAAM,EAAE,iBAAiB,CACvB,OAAO,EACP,MAAM,EACN,6BAA6B,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CACnG;QACD,KAAK;QACL,MAAM;QACN,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAgB,EAChB,OAA0C;IAE1C,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,6BAA6B,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;IAC1F,OAAO;QACL,OAAO,EAAE,EAAE;QACX,MAAM,EAAE;YACN,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YAC1C,CAAC,EAAE,CAAC;YACJ,IAAI;YACJ,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,YAAY,EAAE,MAAM;SACrB;QACD,KAAK;QACL,MAAM;QACN,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB,EAAE,EAAU;IACjE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB,EAAE,CAAS;IAChE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAqB;IACxD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAqB;IAC3D,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAqB,EAAE,EAAU;IAClE,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAqB,EAAE,CAAS;IACjE,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAqB,EAAE,OAAe;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,aAAa,GAAG,6BAA6B,CACjD,UAAU,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,CACpB,CAAC;IACF,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO;QACL,GAAG,KAAK;QACR,OAAO;QACP,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE;KACnD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB,EAAE,OAAgC;IAC/E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,aAAa,CAAC;IAExC,8DAA8D;IAC9D,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;IAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAE5E,yEAAyE;IACzE,sDAAsD;IACtD,IAAI,OAA2B,CAAC;IAChC,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC;QACpB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO;QACP,aAAa;QACb,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,0BAA0B;IAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAEpD,8BAA8B;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,KAAqB,EACrB,OAAgC;IAEhC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,KAAqB,EACrB,MAAe,EACf,OAAgC,EAChC,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC;IAEX,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACzC,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;IACzB,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,aAAa,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;IACvF,MAAM,YAAY,GAAG,cAAc,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ;QACrE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,QAAQ;QAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC,CAAC;IAEN,IAAI,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;QACzD,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3D,kBAAkB,CAChB,MAAM,EACN,UAAU,EACV,OAAO,EACP,KAAK,CAAC,MAAM,EACZ,OAAO,CAAC,MAAM,EACd,OAAO,EACP,cAAc,CAAC,KAAK,EACpB,cAAc,CAAC,KAAK,CACrB,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,6BAA6B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAe,EAAE,CAAS,EAAE,CAAS,EAAE,IAAU;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,qBAAqB,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;QACjD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;QAC1D,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;QAClF,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,OAAgB,EAChB,GAA6B,EAC7B,OAA2C;IAE3C,IAAI,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC;IAE7B,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;QAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW;QACzB,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,SAAS,GAAG,OAAO;gBACvB,CAAC,CAAC,CAAC,OAAO,EAAE,kBAAkB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,oBAAoB,CAChC,GAAG,EACH;gBACE,IAAI,EAAE,WAAW;gBACjB,EAAE,EAAE,OAAO,EAAE,EAAE;gBACf,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;aAC1E,EACD;gBACE,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,SAAS,EAAE,SAAS,CAAC,SAAiC;aACvD,CACF,CAAC;YAEF,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;KACF,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAgB,EAChB,GAA6B,EAC7B,OAA2C;IAE3C,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAA6B,EAC7B,OAA2C;IAE3C,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;QAClD,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAuB,EACvB,GAA6B,EAC7B,OAA2C;IAE3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACxE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO;QAChC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAC1F,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1H,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAElC,MAAM,KAAK,GAAG,oBAAoB,CAChC,GAAG,EACH;QACE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB;QAC9E,EAAE,EAAE,OAAO,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,aAAa,IAAI,EAAE,CAAC;KACzE,EACD;QACE,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,SAAS,EAAE,SAAS,CAAC,SAAiC;KACvD,CACF,CAAC;IACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAe,EACf,MAAc,EACd,GAAW,EACX,cAAsB,EACtB,UAAkB,EAClB,OAAe,EACf,SAAe,EACf,SAAe;IAEf,IAAI,UAAU,IAAI,cAAc,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;IAC9C,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC;IAE7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,IAAI,UAAU,IAAI,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;QACtE,6BAA6B,CAC3B,MAAM,EACN,MAAM,EACN,GAAG,GAAG,KAAK,EACX,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,UAAkB,EAClB,KAAa,EACb,MAAc,EACd,SAAoB,EACpB,aAA4B;IAE5B,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,YAAY,IAAI,aAAa,KAAK,QAAQ;QAChE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC;IACjB,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAM,OASpC;IACC,MAAM,EAAE,GAAG,YAAY,EAAO;SAC3B,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QACrB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;aACxC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;aAC7B,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACL,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/dist/grid.d.ts CHANGED
@@ -4,10 +4,10 @@
4
4
  * Supports fixed and fractional (`fr`) tracks, named areas, and a pure layout
5
5
  * solver returning per-area rectangles.
6
6
  */
7
- import { type Surface } from '@flyingrobots/bijou';
7
+ import { type GridTrack as SharedGridTrack, type Surface } from '@flyingrobots/bijou';
8
8
  import type { LayoutRect } from './layout-rect.js';
9
9
  /** Grid track definition. */
10
- export type GridTrack = number | `${number}fr`;
10
+ export type GridTrack = SharedGridTrack;
11
11
  /** Grid render options. */
12
12
  export interface GridOptions {
13
13
  /** Total grid width in columns. */
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,6BAA6B;AAC7B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;AAE/C,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;CACrF;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpE,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;CACtF;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAaD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CA2E/F;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA6BjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAuBhE"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,SAAS,IAAI,eAAe,EACjC,KAAK,OAAO,EACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,6BAA6B;AAC7B,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC;AAExC,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;CACrF;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IACpE,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC;CACtF;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAaD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAa/F;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA6BjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAuBhE"}
package/dist/grid.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Supports fixed and fractional (`fr`) tracks, named areas, and a pure layout
5
5
  * solver returning per-area rectangles.
6
6
  */
7
- import { createSurface } from '@flyingrobots/bijou';
7
+ import { createSurface, solveGridRects, } from '@flyingrobots/bijou';
8
8
  import { composite } from './overlay.js';
9
9
  import { fitBlock } from './layout-utils.js';
10
10
  import { placeSurface } from './surface-layout.js';
@@ -22,64 +22,16 @@ function sanitiseDimension(value) {
22
22
  * Compute area rectangles from grid constraints and area template.
23
23
  */
24
24
  export function gridLayout(options) {
25
- const width = sanitiseDimension(options.width);
26
- const height = sanitiseDimension(options.height);
27
- const gap = sanitiseDimension(options.gap ?? 0);
28
- if (options.columns.length === 0 || options.rows.length === 0) {
29
- throw new Error('gridLayout: columns and rows must be non-empty');
30
- }
31
- if (options.areas.length !== options.rows.length) {
32
- throw new Error(`gridLayout: areas row count (${options.areas.length}) must match rows track count (${options.rows.length})`);
33
- }
34
- const matrix = options.areas.map((row, r) => {
35
- const tokens = row.trim().length === 0 ? [] : row.trim().split(/\s+/);
36
- if (tokens.length !== options.columns.length) {
37
- throw new Error(`gridLayout: area row ${r} has ${tokens.length} columns, expected ${options.columns.length}`);
38
- }
39
- return tokens;
40
- });
41
- const colSizes = solveTracks(width, options.columns, gap);
42
- const rowSizes = solveTracks(height, options.rows, gap);
43
- const colStarts = trackStarts(colSizes, gap);
44
- const rowStarts = trackStarts(rowSizes, gap);
45
- const areaCells = new Map();
46
- for (let r = 0; r < matrix.length; r++) {
47
- for (let c = 0; c < matrix[r].length; c++) {
48
- const area = matrix[r][c];
49
- if (area === '.')
50
- continue;
51
- const list = areaCells.get(area) ?? [];
52
- list.push({ r, c });
53
- areaCells.set(area, list);
54
- }
55
- }
56
- const rects = new Map();
57
- for (const [name, cells] of areaCells) {
58
- const rows = cells.map((x) => x.r);
59
- const cols = cells.map((x) => x.c);
60
- const minR = Math.min(...rows);
61
- const maxR = Math.max(...rows);
62
- const minC = Math.min(...cols);
63
- const maxC = Math.max(...cols);
64
- for (let r = minR; r <= maxR; r++) {
65
- for (let c = minC; c <= maxC; c++) {
66
- if (matrix[r][c] !== name) {
67
- throw new Error(`gridLayout: area "${name}" must form a contiguous rectangle; gap at row ${r}, column ${c}`);
68
- }
69
- }
70
- }
71
- const colSpan = maxC - minC + 1;
72
- const rowSpan = maxR - minR + 1;
73
- const rectWidth = Math.min(width, sum(colSizes.slice(minC, maxC + 1)) + gap * Math.max(0, colSpan - 1));
74
- const rectHeight = Math.min(height, sum(rowSizes.slice(minR, maxR + 1)) + gap * Math.max(0, rowSpan - 1));
75
- rects.set(name, {
76
- row: rowStarts[minR] ?? 0,
77
- col: colStarts[minC] ?? 0,
78
- width: rectWidth,
79
- height: rectHeight,
80
- });
81
- }
82
- return rects;
25
+ const rects = solveGridRects(options);
26
+ return new Map([...rects.entries()].map(([name, rect]) => [
27
+ name,
28
+ {
29
+ row: rect.y,
30
+ col: rect.x,
31
+ width: rect.width,
32
+ height: rect.height,
33
+ },
34
+ ]));
83
35
  }
84
36
  /**
85
37
  * Render a named-area grid.
@@ -133,93 +85,4 @@ export function gridSurface(options) {
133
85
  }
134
86
  return result;
135
87
  }
136
- /** Distribute space among fixed-pixel and fractional tracks, respecting gaps. */
137
- function solveTracks(total, tracks, gap) {
138
- const available = Math.max(0, total - gap * Math.max(0, tracks.length - 1));
139
- const sizes = new Array(tracks.length).fill(0);
140
- let fixed = 0;
141
- let frTotal = 0;
142
- for (let i = 0; i < tracks.length; i++) {
143
- const t = tracks[i];
144
- if (typeof t === 'number') {
145
- const sz = Math.max(0, Math.floor(t));
146
- sizes[i] = sz;
147
- fixed += sz;
148
- }
149
- else {
150
- const fr = parseFr(t);
151
- frTotal += fr;
152
- }
153
- }
154
- // If fixed tracks over-allocate the container, clamp them in declaration order
155
- // and leave all fractional tracks at 0. This keeps total size deterministic and bounded.
156
- if (fixed > available) {
157
- let remainingBudget = available;
158
- for (let i = 0; i < tracks.length; i++) {
159
- if (typeof tracks[i] !== 'number')
160
- continue;
161
- const next = Math.min(sizes[i] ?? 0, remainingBudget);
162
- sizes[i] = next;
163
- remainingBudget -= next;
164
- if (remainingBudget <= 0)
165
- remainingBudget = 0;
166
- }
167
- return sizes.map((x) => Math.max(0, x));
168
- }
169
- const remaining = Math.max(0, available - fixed);
170
- if (frTotal > 0) {
171
- let assigned = 0;
172
- const frAllocations = [];
173
- for (let i = 0; i < tracks.length; i++) {
174
- const t = tracks[i];
175
- if (typeof t !== 'number') {
176
- const fr = parseFr(t);
177
- const rawShare = (remaining * fr) / frTotal;
178
- const sz = Math.floor(rawShare);
179
- sizes[i] = sz;
180
- assigned += sz;
181
- frAllocations.push({ index: i, remainder: rawShare - sz });
182
- }
183
- }
184
- let leftover = remaining - assigned;
185
- // Prefer largest fractional remainders first to reduce declaration-order bias.
186
- frAllocations.sort((a, b) => {
187
- if (b.remainder !== a.remainder)
188
- return b.remainder - a.remainder;
189
- return a.index - b.index;
190
- });
191
- for (let i = 0; i < frAllocations.length && leftover > 0; i++) {
192
- const idx = frAllocations[i].index;
193
- sizes[idx] = (sizes[idx] ?? 0) + 1;
194
- leftover -= 1;
195
- }
196
- }
197
- return sizes.map((x) => Math.max(0, x));
198
- }
199
- /** Parse a CSS-grid-style `fr` unit string into a positive integer. */
200
- function parseFr(track) {
201
- const raw = track.slice(0, -2);
202
- const n = Number(raw);
203
- if (!Number.isFinite(n) || !Number.isInteger(n) || n <= 0) {
204
- throw new Error(`gridLayout: invalid fr track "${track}"`);
205
- }
206
- return n;
207
- }
208
- /** Compute cumulative start positions from solved track sizes and gap. */
209
- function trackStarts(sizes, gap) {
210
- const starts = [];
211
- let cursor = 0;
212
- for (let i = 0; i < sizes.length; i++) {
213
- starts.push(cursor);
214
- cursor += sizes[i] + (i < sizes.length - 1 ? gap : 0);
215
- }
216
- return starts;
217
- }
218
- /** Sum an array of numbers. */
219
- function sum(values) {
220
- let acc = 0;
221
- for (const n of values)
222
- acc += n;
223
- return acc;
224
- }
225
88
  //# sourceMappingURL=grid.js.map
package/dist/grid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"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"}
package/dist/help.d.ts CHANGED
@@ -31,6 +31,8 @@ export interface HelpOptions {
31
31
  separator?: string;
32
32
  /** Title shown at the top (default: none). */
33
33
  title?: string;
34
+ /** Label used when a binding does not declare a group (default: `General`). */
35
+ defaultGroupName?: string;
34
36
  }
35
37
  /** Options for rendering help into a `Surface`. */
36
38
  export interface HelpSurfaceOptions extends HelpOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,QAAQ,IAAI,SAAS,WAAW,EAAE,CAAC;CACpC;AAMD,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAoD7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAE5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,MAAM,CAenH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC,GAC1E,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAET"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAA0D,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,QAAQ,IAAI,SAAS,WAAW,EAAE,CAAC;CACpC;AAMD,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAqD7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAE5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,MAAM,CAenH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC,GAC1E,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAET"}
package/dist/help.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * helpFor(kb, 'Nav') // filter by group prefix
15
15
  * ```
16
16
  */
17
- import { createSurface, parseAnsiToSurface } from '@flyingrobots/bijou';
17
+ import { createSurface, parseAnsiToSurface, sanitizePositiveInt } from '@flyingrobots/bijou';
18
18
  import { formatKeyCombo } from './keybindings.js';
19
19
  import { visibleLength } from './viewport.js';
20
20
  // ---------------------------------------------------------------------------
@@ -41,6 +41,7 @@ export function helpView(keymap, options) {
41
41
  const enabledOnly = options?.enabledOnly ?? true;
42
42
  const sep = options?.separator ?? ' ';
43
43
  const groupFilter = options?.groupFilter;
44
+ const defaultGroupName = options?.defaultGroupName ?? 'General';
44
45
  let all = keymap.bindings();
45
46
  if (enabledOnly)
46
47
  all = all.filter((b) => b.enabled);
@@ -52,7 +53,7 @@ export function helpView(keymap, options) {
52
53
  // Group by group name
53
54
  const groups = new Map();
54
55
  for (const b of all) {
55
- const group = b.group || 'General';
56
+ const group = b.group || defaultGroupName;
56
57
  let list = groups.get(group);
57
58
  if (!list) {
58
59
  list = [];
@@ -157,8 +158,9 @@ export function helpForSurface(keymap, groupPrefix, options) {
157
158
  }
158
159
  function renderHelpSurface(text, options) {
159
160
  const lines = text.length === 0 ? [''] : text.split('\n');
160
- const width = Math.max(1, options?.width ?? 0, ...lines.map((line) => visibleLength(line)));
161
- const height = Math.max(1, options?.height ?? lines.length);
161
+ const contentWidth = Math.max(1, ...lines.map((line) => visibleLength(line)));
162
+ const width = Math.max(contentWidth, sanitizePositiveInt(options?.width, 1));
163
+ const height = sanitizePositiveInt(options?.height, lines.length);
162
164
  if (text.length === 0) {
163
165
  return createSurface(width, height);
164
166
  }
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** Unicode text presentation selector (VS15). */
2
+ export declare const TEXT_PRESENTATION_SELECTOR = "\uFE0E";
3
+ /**
4
+ * Force text presentation for an icon glyph.
5
+ *
6
+ * Bijou TUI uses this for first-party status symbols so terminals that prefer
7
+ * emoji presentation do not widen otherwise text-sized glyphs.
8
+ */
9
+ export declare function forceTextPresentation(icon: string): string;
10
+ //# sourceMappingURL=icon-presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-presentation.d.ts","sourceRoot":"","sources":["../src/icon-presentation.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,eAAO,MAAM,0BAA0B,WAAW,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,12 @@
1
+ /** Unicode text presentation selector (VS15). */
2
+ export const TEXT_PRESENTATION_SELECTOR = '\uFE0E';
3
+ /**
4
+ * Force text presentation for an icon glyph.
5
+ *
6
+ * Bijou TUI uses this for first-party status symbols so terminals that prefer
7
+ * emoji presentation do not widen otherwise text-sized glyphs.
8
+ */
9
+ export function forceTextPresentation(icon) {
10
+ return `${icon}${TEXT_PRESENTATION_SELECTOR}`;
11
+ }
12
+ //# sourceMappingURL=icon-presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-presentation.js","sourceRoot":"","sources":["../src/icon-presentation.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,GAAG,IAAI,GAAG,0BAA0B,EAAE,CAAC;AAChD,CAAC"}