@flyingrobots/bijou-tui 3.1.0 → 4.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.
- package/LICENSE +159 -21
- package/README.md +181 -32
- package/dist/app-frame-actions.d.ts.map +1 -1
- package/dist/app-frame-actions.js +4 -5
- package/dist/app-frame-actions.js.map +1 -1
- package/dist/app-frame-render.d.ts +17 -11
- package/dist/app-frame-render.d.ts.map +1 -1
- package/dist/app-frame-render.js +100 -99
- package/dist/app-frame-render.js.map +1 -1
- package/dist/app-frame-types.d.ts +1 -1
- package/dist/app-frame-types.d.ts.map +1 -1
- package/dist/app-frame.d.ts +3 -1
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.js +89 -61
- package/dist/app-frame.js.map +1 -1
- package/dist/browsable-list.d.ts +20 -1
- package/dist/browsable-list.d.ts.map +1 -1
- package/dist/browsable-list.js +38 -10
- package/dist/browsable-list.js.map +1 -1
- package/dist/command-palette.d.ts +17 -1
- package/dist/command-palette.d.ts.map +1 -1
- package/dist/command-palette.js +45 -20
- package/dist/command-palette.js.map +1 -1
- package/dist/css/text-style.d.ts +2 -1
- package/dist/css/text-style.d.ts.map +1 -1
- package/dist/css/text-style.js +33 -0
- package/dist/css/text-style.js.map +1 -1
- package/dist/design-language.d.ts +49 -0
- package/dist/design-language.d.ts.map +1 -0
- package/dist/design-language.js +70 -0
- package/dist/design-language.js.map +1 -0
- package/dist/driver.d.ts +6 -1
- package/dist/driver.d.ts.map +1 -1
- package/dist/driver.js +3 -0
- package/dist/driver.js.map +1 -1
- package/dist/file-picker.d.ts +19 -1
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +47 -20
- package/dist/file-picker.js.map +1 -1
- package/dist/flex.d.ts +35 -1
- package/dist/flex.d.ts.map +1 -1
- package/dist/flex.js +127 -1
- package/dist/flex.js.map +1 -1
- package/dist/focus-area.d.ts +13 -1
- package/dist/focus-area.d.ts.map +1 -1
- package/dist/focus-area.js +89 -12
- package/dist/focus-area.js.map +1 -1
- package/dist/grid.d.ts +10 -0
- package/dist/grid.d.ts.map +1 -1
- package/dist/grid.js +25 -0
- package/dist/grid.js.map +1 -1
- package/dist/help.d.ts +41 -0
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +50 -0
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +17 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -15
- package/dist/index.js.map +1 -1
- package/dist/layout-node-surface.d.ts +9 -0
- package/dist/layout-node-surface.d.ts.map +1 -0
- package/dist/layout-node-surface.js +42 -0
- package/dist/layout-node-surface.js.map +1 -0
- package/dist/navigable-table.d.ts +16 -1
- package/dist/navigable-table.d.ts.map +1 -1
- package/dist/navigable-table.js +32 -1
- package/dist/navigable-table.js.map +1 -1
- package/dist/notification.d.ts +16 -0
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +163 -35
- package/dist/notification.js.map +1 -1
- package/dist/overlay.d.ts +21 -8
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +236 -138
- package/dist/overlay.js.map +1 -1
- package/dist/pager.d.ts +16 -0
- package/dist/pager.d.ts.map +1 -1
- package/dist/pager.js +61 -1
- package/dist/pager.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +6 -12
- package/dist/runtime.js.map +1 -1
- package/dist/split-pane.d.ts +12 -1
- package/dist/split-pane.d.ts.map +1 -1
- package/dist/split-pane.js +31 -1
- package/dist/split-pane.js.map +1 -1
- package/dist/status-bar.d.ts +12 -0
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +45 -16
- package/dist/status-bar.js.map +1 -1
- package/dist/surface-layout.d.ts +19 -0
- package/dist/surface-layout.d.ts.map +1 -0
- package/dist/surface-layout.js +87 -0
- package/dist/surface-layout.js.map +1 -0
- package/dist/transition-shaders.d.ts +10 -8
- package/dist/transition-shaders.d.ts.map +1 -1
- package/dist/transition-shaders.js +65 -19
- package/dist/transition-shaders.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/view-output.d.ts +4 -4
- package/dist/view-output.d.ts.map +1 -1
- package/dist/view-output.js +24 -26
- package/dist/view-output.js.map +1 -1
- package/dist/viewport.d.ts +30 -1
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +77 -1
- package/dist/viewport.js.map +1 -1
- package/package.json +3 -3
- package/dist/layout-v3.d.ts +0 -10
- package/dist/layout-v3.d.ts.map +0 -1
- package/dist/layout-v3.js +0 -35
- package/dist/layout-v3.js.map +0 -1
package/dist/app-frame.js
CHANGED
|
@@ -4,20 +4,18 @@
|
|
|
4
4
|
* Provides tabs, pane focus/scroll isolation, shell key handling, help,
|
|
5
5
|
* panel-scoped overlay context, and optional frame-level command palette.
|
|
6
6
|
*/
|
|
7
|
-
import { createSurface,
|
|
7
|
+
import { createSurface, resolveClock, resolveSafeCtx, } from '@flyingrobots/bijou';
|
|
8
8
|
import { helpView } from './help.js';
|
|
9
9
|
import { isKeyMsg, isMouseMsg, isResizeMsg } from './types.js';
|
|
10
|
-
import { modal } from './overlay.js';
|
|
11
|
-
import { fitBlock } from './layout-utils.js';
|
|
10
|
+
import { compositeSurface, modal } from './overlay.js';
|
|
12
11
|
import { commandPalette, commandPaletteKeyMap, } from './command-palette.js';
|
|
13
12
|
import { restoreLayoutState } from './layout-preset.js';
|
|
14
|
-
import { createNotificationState, notificationsNeedTick, pushNotification, renderNotificationStack, tickNotifications, trimNotificationsToViewport, } from './notification.js';
|
|
13
|
+
import { createNotificationState, dismissNotification, hitTestNotificationStack, notificationsNeedTick, pushNotification, renderNotificationStack, tickNotifications, trimNotificationsToViewport, } from './notification.js';
|
|
15
14
|
import { isFrameScopedMsg, isPageScopedMsg, wrapCmdForPage, emitMsg, emitMsgForPage, wrapFrameMsg, } from './app-frame-types.js';
|
|
16
15
|
import { createFrameKeyMap, frameBodyRect, mergeBindingSources, } from './app-frame-utils.js';
|
|
17
|
-
import {
|
|
18
|
-
import { applyFrameAction, syncPageFrameState, } from './app-frame-actions.js';
|
|
16
|
+
import { resolveHeaderLine, renderHelpLine, renderPageContent, renderMaximizedPane, renderTransition, } from './app-frame-render.js';
|
|
17
|
+
import { applyFrameAction, switchTab, syncPageFrameState, } from './app-frame-actions.js';
|
|
19
18
|
import { handlePaletteKey, openCommandPalette, } from './app-frame-palette.js';
|
|
20
|
-
import { visibleLength } from './viewport.js';
|
|
21
19
|
// ---------------------------------------------------------------------------
|
|
22
20
|
// Frame Notification Helpers
|
|
23
21
|
// ---------------------------------------------------------------------------
|
|
@@ -95,6 +93,66 @@ export function createFramedApp(options) {
|
|
|
95
93
|
return [...cmds];
|
|
96
94
|
return [emitMsgForPage(model.activePageId, observed), ...cmds];
|
|
97
95
|
}
|
|
96
|
+
function updateTargetPage(model, targetPageId, targetMsg) {
|
|
97
|
+
const targetPage = pagesById.get(targetPageId);
|
|
98
|
+
if (targetPage == null)
|
|
99
|
+
return [model, []];
|
|
100
|
+
const pageModel = model.pageModels[targetPageId];
|
|
101
|
+
const updateResult = targetPage.update(targetMsg, pageModel);
|
|
102
|
+
let nextPageModel = pageModel;
|
|
103
|
+
let cmds = [];
|
|
104
|
+
if (updateResult !== undefined && updateResult !== null) {
|
|
105
|
+
if (Array.isArray(updateResult)) {
|
|
106
|
+
nextPageModel = (updateResult[0] ?? pageModel);
|
|
107
|
+
cmds = (updateResult[1] ?? []);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
nextPageModel = updateResult;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const nextModels = { ...model.pageModels, [targetPageId]: nextPageModel };
|
|
114
|
+
const synced = syncPageFrameState({ ...model, pageModels: nextModels }, targetPageId, pagesById);
|
|
115
|
+
const wrappedCmds = Array.isArray(cmds)
|
|
116
|
+
? cmds.map((cmd) => wrapCmdForPage(targetPageId, cmd))
|
|
117
|
+
: [];
|
|
118
|
+
return [synced, wrappedCmds];
|
|
119
|
+
}
|
|
120
|
+
function handleFrameMouse(msg, model) {
|
|
121
|
+
if (model.helpOpen || model.commandPalette != null)
|
|
122
|
+
return [model, []];
|
|
123
|
+
if (msg.action !== 'press' || msg.button !== 'left')
|
|
124
|
+
return undefined;
|
|
125
|
+
if (frameNotificationOptions.enabled) {
|
|
126
|
+
const nowMs = resolveClock(resolveSafeCtx()).now();
|
|
127
|
+
const notificationTarget = hitTestNotificationStack(model.runtimeNotifications, {
|
|
128
|
+
screenWidth: model.columns,
|
|
129
|
+
screenHeight: model.rows,
|
|
130
|
+
margin: frameNotificationOptions.margin,
|
|
131
|
+
gap: frameNotificationOptions.gap,
|
|
132
|
+
ctx: resolveSafeCtx() ?? undefined,
|
|
133
|
+
}, msg.col, msg.row);
|
|
134
|
+
if (notificationTarget?.kind === 'dismiss') {
|
|
135
|
+
return applyFrameNotificationState(model, dismissNotification(model.runtimeNotifications, notificationTarget.item.id, nowMs), nowMs);
|
|
136
|
+
}
|
|
137
|
+
if (notificationTarget != null) {
|
|
138
|
+
return [model, []];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (msg.row === 0) {
|
|
142
|
+
const header = resolveHeaderLine(model, options, pagesById);
|
|
143
|
+
const tab = header.tabTargets.find((target) => msg.col >= target.startCol && msg.col <= target.endCol);
|
|
144
|
+
if (tab != null) {
|
|
145
|
+
const currentIndex = model.pageOrder.indexOf(model.activePageId);
|
|
146
|
+
const nextIndex = model.pageOrder.indexOf(tab.pageId);
|
|
147
|
+
if (currentIndex >= 0 && nextIndex >= 0 && nextIndex !== currentIndex) {
|
|
148
|
+
return switchTab(model, nextIndex - currentIndex, pagesById, options);
|
|
149
|
+
}
|
|
150
|
+
return [model, []];
|
|
151
|
+
}
|
|
152
|
+
return [model, []];
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
98
156
|
function applyFrameNotificationState(model, notifications, nowMs, forceTick = false) {
|
|
99
157
|
const trimmed = trimNotificationsToViewport(notifications, {
|
|
100
158
|
screenWidth: model.columns,
|
|
@@ -251,6 +309,15 @@ export function createFramedApp(options) {
|
|
|
251
309
|
return [model, withObservedKey(model, [], msg, 'help')];
|
|
252
310
|
}
|
|
253
311
|
const activePage = pagesById.get(model.activePageId);
|
|
312
|
+
const activePageModel = model.pageModels[model.activePageId];
|
|
313
|
+
const modalKeyMap = activePage.modalKeyMap?.(activePageModel);
|
|
314
|
+
if (modalKeyMap != null) {
|
|
315
|
+
const modalAction = modalKeyMap.handle(msg);
|
|
316
|
+
if (modalAction !== undefined) {
|
|
317
|
+
return [model, withObservedKey(model, [emitMsgForPage(model.activePageId, modalAction)], msg, 'page')];
|
|
318
|
+
}
|
|
319
|
+
return [model, withObservedKey(model, [], msg, 'page')];
|
|
320
|
+
}
|
|
254
321
|
const pageAction = activePage.keyMap?.handle(msg);
|
|
255
322
|
const globalAction = options.globalKeys?.handle(msg);
|
|
256
323
|
const frameAction = frameKeys.handle(msg);
|
|
@@ -288,36 +355,20 @@ export function createFramedApp(options) {
|
|
|
288
355
|
return [model, withObservedKey(model, [], msg, 'unhandled')];
|
|
289
356
|
}
|
|
290
357
|
if (isMouseMsg(msg)) {
|
|
291
|
-
|
|
358
|
+
const frameResult = handleFrameMouse(msg, model);
|
|
359
|
+
if (frameResult != null)
|
|
360
|
+
return frameResult;
|
|
361
|
+
return updateTargetPage(model, model.activePageId, msg);
|
|
292
362
|
}
|
|
293
363
|
// Custom message path: route to originating page when command messages are scoped.
|
|
294
364
|
const scoped = isPageScopedMsg(msg) ? msg : undefined;
|
|
295
365
|
const targetPageId = scoped?.pageId ?? model.activePageId;
|
|
296
|
-
const targetPage = pagesById.get(targetPageId);
|
|
297
|
-
if (targetPage == null)
|
|
298
|
-
return [model, []];
|
|
299
366
|
const targetMsg = scoped?.msg ?? msg;
|
|
300
|
-
|
|
301
|
-
const updateResult = targetPage.update(targetMsg, pageModel);
|
|
302
|
-
let nextPageModel = pageModel; // Default to current
|
|
303
|
-
let cmds = [];
|
|
304
|
-
if (updateResult !== undefined && updateResult !== null) {
|
|
305
|
-
if (Array.isArray(updateResult)) {
|
|
306
|
-
nextPageModel = (updateResult[0] ?? pageModel);
|
|
307
|
-
cmds = (updateResult[1] ?? []);
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
nextPageModel = updateResult;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
const nextModels = { ...model.pageModels, [targetPageId]: nextPageModel };
|
|
314
|
-
const synced = syncPageFrameState({ ...model, pageModels: nextModels }, targetPageId, pagesById);
|
|
315
|
-
const wrappedCmds = Array.isArray(cmds) ? cmds.map((cmd) => wrapCmdForPage(targetPageId, cmd)) : [];
|
|
316
|
-
return [synced, wrappedCmds];
|
|
367
|
+
return updateTargetPage(model, targetPageId, targetMsg);
|
|
317
368
|
},
|
|
318
369
|
view(model) {
|
|
319
370
|
const activePage = pagesById.get(model.activePageId);
|
|
320
|
-
const header =
|
|
371
|
+
const header = resolveHeaderLine(model, options, pagesById).surface;
|
|
321
372
|
const helpLine = renderHelpLine(model, frameKeys, options, activePage);
|
|
322
373
|
const bodyRect = frameBodyRect(model.columns, model.rows);
|
|
323
374
|
// Check for maximized pane — if set, render only that pane at full body rect
|
|
@@ -326,16 +377,15 @@ export function createFramedApp(options) {
|
|
|
326
377
|
const activeResult = maximizedPaneId
|
|
327
378
|
? renderMaximizedPane(model.activePageId, model, bodyRect, pagesById, maximizedPaneId)
|
|
328
379
|
: renderPageContent(model.activePageId, model, bodyRect, pagesById);
|
|
329
|
-
let
|
|
380
|
+
let bodySurface = activeResult.surface;
|
|
330
381
|
const activeTransition = model.activeTransition ?? options.transition;
|
|
331
382
|
if (model.previousPageId != null && model.transitionProgress < 1 && activeTransition && activeTransition !== 'none') {
|
|
332
383
|
const ctx = resolveSafeCtx();
|
|
333
384
|
if (ctx) {
|
|
334
385
|
const prevResult = renderPageContent(model.previousPageId, model, bodyRect, pagesById);
|
|
335
|
-
|
|
386
|
+
bodySurface = renderTransition(prevResult.surface, activeResult.surface, activeTransition, model.transitionProgress, bodyRect.width, bodyRect.height, ctx, model.transitionFrame);
|
|
336
387
|
}
|
|
337
388
|
}
|
|
338
|
-
bodyOutput = fitBlock(bodyOutput, bodyRect.width, bodyRect.height).join('\n');
|
|
339
389
|
const overlays = [];
|
|
340
390
|
if (options.overlayFactory != null) {
|
|
341
391
|
overlays.push(...options.overlayFactory({
|
|
@@ -380,9 +430,9 @@ export function createFramedApp(options) {
|
|
|
380
430
|
return composeFrameSurface({
|
|
381
431
|
width: model.columns,
|
|
382
432
|
height: model.rows,
|
|
383
|
-
header,
|
|
384
|
-
helpLine,
|
|
385
|
-
|
|
433
|
+
headerSurface: header,
|
|
434
|
+
helpLineSurface: helpLine,
|
|
435
|
+
bodySurface,
|
|
386
436
|
bodyRect,
|
|
387
437
|
overlays,
|
|
388
438
|
dimBackground: overlays.length > 0,
|
|
@@ -398,35 +448,13 @@ export function createFramedApp(options) {
|
|
|
398
448
|
}
|
|
399
449
|
function composeFrameSurface(options) {
|
|
400
450
|
const frame = createSurface(options.width, options.height);
|
|
401
|
-
frame.blit(
|
|
451
|
+
frame.blit(options.headerSurface, 0, 0);
|
|
402
452
|
if (options.height > 1) {
|
|
403
|
-
frame.blit(
|
|
453
|
+
frame.blit(options.helpLineSurface, 0, 1);
|
|
404
454
|
}
|
|
405
455
|
if (options.bodyRect.width > 0 && options.bodyRect.height > 0) {
|
|
406
|
-
frame.blit(
|
|
456
|
+
frame.blit(options.bodySurface, options.bodyRect.col, options.bodyRect.row);
|
|
407
457
|
}
|
|
408
|
-
|
|
409
|
-
dimSurface(frame);
|
|
410
|
-
}
|
|
411
|
-
for (const overlay of options.overlays) {
|
|
412
|
-
const overlaySurface = overlay.surface ?? parseAnsiToSurface(overlay.content, maxVisibleWidth(overlay.content), overlay.content.split('\n').length);
|
|
413
|
-
frame.blit(overlaySurface, overlay.col, overlay.row);
|
|
414
|
-
}
|
|
415
|
-
return frame;
|
|
416
|
-
}
|
|
417
|
-
function dimSurface(surface) {
|
|
418
|
-
for (let y = 0; y < surface.height; y++) {
|
|
419
|
-
for (let x = 0; x < surface.width; x++) {
|
|
420
|
-
const cell = surface.get(x, y);
|
|
421
|
-
if (cell.empty || cell.char === ' ')
|
|
422
|
-
continue;
|
|
423
|
-
const modifiers = new Set(cell.modifiers ?? []);
|
|
424
|
-
modifiers.add('dim');
|
|
425
|
-
surface.set(x, y, { ...cell, modifiers: Array.from(modifiers) });
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
function maxVisibleWidth(text) {
|
|
430
|
-
return text.split('\n').reduce((max, line) => Math.max(max, visibleLength(line)), 0);
|
|
458
|
+
return compositeSurface(frame, options.overlays, { dim: options.dimBackground });
|
|
431
459
|
}
|
|
432
460
|
//# sourceMappingURL=app-frame.js.map
|
package/dist/app-frame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-frame.js","sourceRoot":"","sources":["../src/app-frame.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-frame.js","sourceRoot":"","sources":["../src/app-frame.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAsB,MAAM,WAAW,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAIvD,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,GAG5B,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,OAAO,EACP,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AA6NhC,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,sCAAsC,GAAG,KAAK,CAAC;AAWrD,SAAS,+BAA+B,CACtC,OAA+C;IAE/C,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,sCAAsC;YAClD,MAAM,EAAE,CAAC;YACT,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,KAAK,IAAI,IAAI,OAAO,CAAC,oBAAoB,IAAI,IAAI;QAC9F,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAEjC,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,IAAI;QACnC,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,aAAa;QAChD,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,sCAAsC;QAC3E,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC;QAC9B,GAAG,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,MAAM;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC7C,OAAO,YAAY,CAAC;YAClB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;SACxB,CAAmB,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,UAAU;AACV,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA+C;IAE/C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC/D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC;IAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,aAAa,sBAAsB,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,wBAAwB,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,oBAAoB,CAAgB;QACtD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;QAClC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KAC5B,CAAC,CAAC;IAEH,SAAS,eAAe,CACtB,KAAyC,EACzC,IAAyB,EACzB,GAAW,EACX,KAAqE;QAErE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,SAAS,gBAAgB,CACvB,KAAyC,EACzC,YAAoB,EACpB,SAAc;QAEd,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;QAClD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,aAAa,GAAc,SAAS,CAAC;QACzC,IAAI,IAAI,GAAe,EAAE,CAAC;QAE1B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,CAAc,CAAC;gBAC5D,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAe,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,YAAyB,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACjG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,gBAAgB,CACvB,GAAa,EACb,KAAyC;QAEzC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI;YAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAEtE,IAAI,wBAAwB,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACnD,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBAC9E,WAAW,EAAE,KAAK,CAAC,OAAO;gBAC1B,YAAY,EAAE,KAAK,CAAC,IAAI;gBACxB,MAAM,EAAE,wBAAwB,CAAC,MAAM;gBACvC,GAAG,EAAE,wBAAwB,CAAC,GAAG;gBACjC,GAAG,EAAE,cAAc,EAAE,IAAI,SAAS;aACnC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAErB,IAAI,kBAAkB,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,2BAA2B,CAChC,KAAK,EACL,mBAAmB,CAAC,KAAK,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAClF,KAAK,CACN,CAAC;YACJ,CAAC;YACD,IAAI,kBAAkB,IAAI,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5C,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CACvD,CAAC;YACF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;oBACtE,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,SAAS,2BAA2B,CAClC,KAAyC,EACzC,aAAuC,EACvC,KAAa,EACb,SAAS,GAAG,KAAK;QAEjB,MAAM,OAAO,GAAG,2BAA2B,CAAC,aAAa,EAAE;YACzD,WAAW,EAAE,KAAK,CAAC,OAAO;YAC1B,YAAY,EAAE,KAAK,CAAC,IAAI;YACxB,MAAM,EAAE,wBAAwB,CAAC,MAAM;YACvC,GAAG,EAAE,wBAAwB,CAAC,GAAG;SAClC,EAAE,KAAK,CAAC,CAAC;QACV,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAuC;YACpD,GAAG,KAAK;YACR,oBAAoB,EAAE,OAAO;YAC7B,6BAA6B,EAAE,SAAS;SACzC,CAAC;QAEF,IAAI,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,SAAS,EAAE,CAAC,8BAA8B,EAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAiD;QACxD,IAAI;YACF,MAAM,UAAU,GAA8B,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAe,EAAE,CAAC;YAEhC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,KAAK,GAAuC;gBAC9C,YAAY,EAAE,aAAa;gBAC3B,SAAS;gBACT,UAAU;gBACV,iBAAiB,EAAE,EAAE;gBACrB,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;gBAClD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC5C,QAAQ,EAAE,KAAK;gBACf,kBAAkB,EAAE,CAAC;gBACrB,oBAAoB,EAAE,CAAC;gBACvB,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,EAAE;gBACnB,mBAAmB,EAAE,EAAE;gBACvB,eAAe,EAAE,EAAE;gBACnB,mBAAmB,EAAE,EAAE;gBACvB,oBAAoB,EAAE,uBAAuB,EAAE;gBAC/C,6BAA6B,EAAE,KAAK;aACrC,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC/B,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YAED,mCAAmC;YACnC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC3D,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;oBAC/F,iBAAiB,EAAE,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,QAAQ,CAAC,iBAAiB,EAAE;oBAChF,eAAe,EAAE,QAAQ,CAAC,eAAe;oBACzC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;oBACjD,eAAe,EAAE,QAAQ,CAAC,eAAe;oBACzC,mBAAmB,EAAE,QAAQ,CAAC,iBAAiB;iBAChD,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,GAAG,EAAE,KAAK;YACf,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACpC,IAAI,CAAC,wBAAwB,CAAC,OAAO;wBAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1D,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,EAAE;wBACjE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe;wBAC/E,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;wBAC7B,OAAO,EAAE,OAAO;wBAChB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;wBAC5D,SAAS,EAAE,wBAAwB,CAAC,SAAS;wBAC7C,UAAU,EAAE,wBAAwB,CAAC,UAAU;wBAC/C,QAAQ,EAAE,wBAAwB,CAAC,QAAQ;qBAC5C,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtB,OAAO,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACxC,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBACjF,OAAO,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,2DAA2D;oBAC3D,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,oBAAoB;wBAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACzE,oDAAoD;oBACpD,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;wBAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CACzC,KAAK,CAAC,uBAAuB,EAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CACvB,CAAC;wBACF,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAE/E,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;4BAC1D,OAAO,CAAC;oCACN,GAAG,KAAK;oCACR,kBAAkB,EAAE,CAAC;oCACrB,eAAe,EAAE,CAAC;oCAClB,cAAc,EAAE,SAAS;oCACzB,gBAAgB,EAAE,SAAS;oCAC3B,iBAAiB,EAAE,SAAS;oCAC5B,kBAAkB,EAAE,SAAS;oCAC7B,uBAAuB,EAAE,SAAS;iCACnC,EAAE,EAAE,CAAC,CAAC;wBACT,CAAC;wBAED,OAAO,CAAC;gCACN,GAAG,KAAK;gCACR,kBAAkB,EAAE,QAAQ;gCAC5B,eAAe,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC;gCAC1C,uBAAuB,EAAE,KAAK;6BAC/B,EAAE,EAAE,CAAC,CAAC;oBACT,CAAC;oBACD,0DAA0D;oBAC1D,OAAO,CAAC;4BACN,GAAG,KAAK;4BACR,kBAAkB,EAAE,MAAM,CAAC,QAAQ;4BACnC,eAAe,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC;yBAC3C,EAAE,EAAE,CAAC,CAAC;gBACT,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBAC1C,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,oBAAoB;wBAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACzE,OAAO,CAAC;4BACN,GAAG,KAAK;4BACR,kBAAkB,EAAE,CAAC;4BACrB,eAAe,EAAE,CAAC;4BAClB,cAAc,EAAE,SAAS;4BACzB,gBAAgB,EAAE,SAAS;4BAC3B,iBAAiB,EAAE,SAAS;4BAC5B,kBAAkB,EAAE,SAAS;4BAC7B,uBAAuB,EAAE,SAAS;yBACnC,EAAE,EAAE,CAAC,CAAC;gBACT,CAAC;gBACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC;wBACN,GAAG,KAAK;wBACR,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf,EAAE,EAAE,CAAC,CAAC;YACT,CAAC;YAED,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;oBACjC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;oBACxF,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBACnE,CAAC;gBAED,qEAAqE;gBACrE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;wBACvE,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBAClF,CAAC;oBACD,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC;gBACtD,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC;gBAC9D,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,CAAC;gBAC9D,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBACzG,CAAC;oBACD,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC;gBAEzD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;oBACjC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;oBACxG,CAAC;oBACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC/B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACjF,CAAC;oBACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9B,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;4BACxE,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;wBAC9G,CAAC;wBACD,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;wBACnF,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBACjE,CAAC;oBACD,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,yFAAyF;oBACzF,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;wBACxE,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9G,CAAC;oBACD,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;oBACnF,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjE,CAAC;gBAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACjF,CAAC;gBAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxG,CAAC;gBAED,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,WAAW,IAAI,IAAI;oBAAE,OAAO,WAAW,CAAC;gBAC5C,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,GAAqB,CAAC,CAAC;YAC5E,CAAC;YAED,mFAAmF;YACnF,MAAM,MAAM,GAAG,eAAe,CAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,YAAY,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,EAAE,GAAG,IAAK,GAAW,CAAC;YAC9C,OAAO,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,KAAK;YACR,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC;YACtD,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC;YACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1D,6EAA6E;YAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,eAAe,GAAG,QAAQ,EAAE,eAAe,CAAC;YAElD,MAAM,YAAY,GAAG,eAAe;gBAClC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC;gBACtF,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACtE,IAAI,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;YAEvC,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;YACtE,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBACpH,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;gBAC7B,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACvF,WAAW,GAAG,gBAAgB,CAC5B,UAAU,CAAC,OAAO,EAClB,YAAY,CAAC,OAAO,EACpB,gBAAgB,EAChB,KAAK,CAAC,kBAAkB,EACxB,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,MAAM,EACf,GAAG,EACH,KAAK,CAAC,eAAe,CACtB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;oBACtC,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAE;oBAChD,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;iBACzE,CAAC,CAAC,CAAC;YACN,CAAC;YAED,IAAI,wBAAwB,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,oBAAoB,EAAE;oBACnE,WAAW,EAAE,KAAK,CAAC,OAAO;oBAC1B,YAAY,EAAE,KAAK,CAAC,IAAI;oBACxB,MAAM,EAAE,wBAAwB,CAAC,MAAM;oBACvC,GAAG,EAAE,wBAAwB,CAAC,GAAG;oBACjC,GAAG,EAAE,GAAG,IAAI,SAAS;iBACtB,CAAC,CAAC,CAAC;YACN,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtH,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClB,KAAK,EAAE,eAAe;oBACtB,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;oBAC5C,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EAAE,KAAK,CAAC,OAAO;oBAC1B,YAAY,EAAE,KAAK,CAAC,IAAI;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;YAED,IAAI,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;oBAClB,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,YAAY;oBACnB,WAAW,EAAE,KAAK,CAAC,OAAO;oBAC1B,YAAY,EAAE,KAAK,CAAC,IAAI;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;YAED,OAAO,mBAAmB,CAAC;gBACzB,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,QAAQ;gBACzB,WAAW;gBACX,QAAQ;gBACR,QAAQ;gBACR,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB,CAAC,KAAK;YACrB,IAAI,CAAC,wBAAwB,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YACxD,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAmB,CAAC;QAC1E,CAAC;KACF,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAaD,SAAS,mBAAmB,CAAC,OAA4B;IACvD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
package/dist/browsable-list.d.ts
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* // handle selection...
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
import type
|
|
23
|
+
import { type BijouContext, type Surface } from '@flyingrobots/bijou';
|
|
24
24
|
import { type KeyMap } from './keybindings.js';
|
|
25
25
|
/**
|
|
26
26
|
* A single item in a browsable list.
|
|
@@ -68,6 +68,13 @@ export interface BrowsableListRenderOptions {
|
|
|
68
68
|
/** Bijou context for theming and styling. */
|
|
69
69
|
readonly ctx?: BijouContext;
|
|
70
70
|
}
|
|
71
|
+
/** Options for rendering the browsable list into a `Surface`. */
|
|
72
|
+
export interface BrowsableListSurfaceOptions extends BrowsableListRenderOptions {
|
|
73
|
+
/** Fixed viewport width. Defaults to the widest rendered row. */
|
|
74
|
+
readonly width?: number;
|
|
75
|
+
/** Show a scrollbar track on the right edge. Default: false. */
|
|
76
|
+
readonly showScrollbar?: boolean;
|
|
77
|
+
}
|
|
71
78
|
/**
|
|
72
79
|
* Create initial browsable list state from items and optional height.
|
|
73
80
|
* Focus starts at index 0 with scroll at the top.
|
|
@@ -120,6 +127,18 @@ export declare function listPageUp<T>(state: BrowsableListState<T>): BrowsableLi
|
|
|
120
127
|
* @returns Rendered list string with focus indicator on the active item.
|
|
121
128
|
*/
|
|
122
129
|
export declare function browsableList<T>(state: BrowsableListState<T>, options?: BrowsableListRenderOptions): string;
|
|
130
|
+
/**
|
|
131
|
+
* Render the browsable list directly into a viewport-backed `Surface`.
|
|
132
|
+
*
|
|
133
|
+
* This keeps scroll ownership on the shared `viewportSurface()` masking
|
|
134
|
+
* primitive instead of each list carrying bespoke slice logic.
|
|
135
|
+
*
|
|
136
|
+
* @template T - Type of each item's value payload.
|
|
137
|
+
* @param state - Current list state.
|
|
138
|
+
* @param options - Rendering options plus optional fixed width.
|
|
139
|
+
* @returns Surface-sized list viewport using the list height as the visible window.
|
|
140
|
+
*/
|
|
141
|
+
export declare function browsableListSurface<T>(state: BrowsableListState<T>, options?: BrowsableListSurfaceOptions): Surface;
|
|
123
142
|
/**
|
|
124
143
|
* Create a preconfigured KeyMap for browsable list navigation.
|
|
125
144
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browsable-list.d.ts","sourceRoot":"","sources":["../src/browsable-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"browsable-list.d.ts","sourceRoot":"","sources":["../src/browsable-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO7D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,MAAM;IAC3C,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,KAAK,EAAE,CAAC,CAAC;IACT,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM;IAC5C,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,MAAM;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,qDAAqD;IACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qDAAqD;AACrD,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,iEAAiE;AACjE,MAAM,WAAW,2BAA4B,SAAQ,0BAA0B;IAC7E,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAMD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,GAAG,MAAM,EACjD,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,kBAAkB,CAAC,CAAC,CAAC,CAQvB;AAMD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAIpF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAIpF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAInF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAIjF;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,OAAO,CAAC,EAAE,0BAA0B,GACnC,MAAM,CAOR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAoBT;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE;IAChD,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC;CACX,GAAG,MAAM,CAAC,GAAG,CAAC,CAed"}
|
package/dist/browsable-list.js
CHANGED
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
* // handle selection...
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
+
import { createSurface } from '@flyingrobots/bijou';
|
|
23
24
|
import { createKeyMap } from './keybindings.js';
|
|
25
|
+
import { viewportSurface, visibleLength } from './viewport.js';
|
|
24
26
|
// ---------------------------------------------------------------------------
|
|
25
27
|
// State creation
|
|
26
28
|
// ---------------------------------------------------------------------------
|
|
@@ -118,6 +120,14 @@ function adjustScroll(focusIndex, scrollY, height, totalItems) {
|
|
|
118
120
|
const maxScroll = Math.max(0, totalItems - height);
|
|
119
121
|
return Math.min(newScrollY, maxScroll);
|
|
120
122
|
}
|
|
123
|
+
function renderBrowsableListLines(state, indicator) {
|
|
124
|
+
const pad = ' '.repeat(indicator.length);
|
|
125
|
+
return state.items.map((item, index) => {
|
|
126
|
+
const prefix = index === state.focusIndex ? indicator : pad;
|
|
127
|
+
const desc = item.description ? ` \u2014 ${item.description}` : '';
|
|
128
|
+
return `${prefix} ${item.label}${desc}`;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
121
131
|
// ---------------------------------------------------------------------------
|
|
122
132
|
// Render
|
|
123
133
|
// ---------------------------------------------------------------------------
|
|
@@ -136,17 +146,35 @@ export function browsableList(state, options) {
|
|
|
136
146
|
if (state.items.length === 0)
|
|
137
147
|
return '';
|
|
138
148
|
const indicator = options?.focusIndicator ?? '\u25b8';
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
return renderBrowsableListLines(state, indicator)
|
|
150
|
+
.slice(state.scrollY, state.scrollY + state.height)
|
|
151
|
+
.join('\n');
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Render the browsable list directly into a viewport-backed `Surface`.
|
|
155
|
+
*
|
|
156
|
+
* This keeps scroll ownership on the shared `viewportSurface()` masking
|
|
157
|
+
* primitive instead of each list carrying bespoke slice logic.
|
|
158
|
+
*
|
|
159
|
+
* @template T - Type of each item's value payload.
|
|
160
|
+
* @param state - Current list state.
|
|
161
|
+
* @param options - Rendering options plus optional fixed width.
|
|
162
|
+
* @returns Surface-sized list viewport using the list height as the visible window.
|
|
163
|
+
*/
|
|
164
|
+
export function browsableListSurface(state, options) {
|
|
165
|
+
const indicator = options?.focusIndicator ?? '\u25b8';
|
|
166
|
+
const lines = renderBrowsableListLines(state, indicator);
|
|
167
|
+
const width = Math.max(1, options?.width ?? 0, ...lines.map((line) => visibleLength(line)));
|
|
168
|
+
if (lines.length === 0) {
|
|
169
|
+
return createSurface(width, Math.max(1, state.height));
|
|
148
170
|
}
|
|
149
|
-
return
|
|
171
|
+
return viewportSurface({
|
|
172
|
+
width,
|
|
173
|
+
height: Math.max(1, state.height),
|
|
174
|
+
content: lines.join('\n'),
|
|
175
|
+
scrollY: state.scrollY,
|
|
176
|
+
showScrollbar: options?.showScrollbar ?? false,
|
|
177
|
+
});
|
|
150
178
|
}
|
|
151
179
|
// ---------------------------------------------------------------------------
|
|
152
180
|
// Convenience keymap
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browsable-list.js","sourceRoot":"","sources":["../src/browsable-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"browsable-list.js","sourceRoot":"","sources":["../src/browsable-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* // handle selection...
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
import type
|
|
22
|
+
import { type BijouContext, type Surface } from '@flyingrobots/bijou';
|
|
23
23
|
import { type KeyMap } from './keybindings.js';
|
|
24
24
|
/** A single item in the command palette. */
|
|
25
25
|
export interface CommandPaletteItem {
|
|
@@ -60,6 +60,11 @@ export interface CommandPaletteOptions {
|
|
|
60
60
|
/** Bijou context for theming and styling. */
|
|
61
61
|
readonly ctx?: BijouContext;
|
|
62
62
|
}
|
|
63
|
+
/** Options for rendering the command palette into a `Surface`. */
|
|
64
|
+
export interface CommandPaletteSurfaceOptions extends CommandPaletteOptions {
|
|
65
|
+
/** Show a scrollbar track on the results viewport. Default: false. */
|
|
66
|
+
readonly showScrollbar?: boolean;
|
|
67
|
+
}
|
|
63
68
|
/**
|
|
64
69
|
* Create initial command palette state from items and optional height.
|
|
65
70
|
* Focus starts at index 0 with empty query showing all items.
|
|
@@ -127,6 +132,17 @@ export declare function cpSelectedItem(state: CommandPaletteState): CommandPalet
|
|
|
127
132
|
* @returns Rendered command palette string with search line and item list.
|
|
128
133
|
*/
|
|
129
134
|
export declare function commandPalette(state: CommandPaletteState, options: CommandPaletteOptions): string;
|
|
135
|
+
/**
|
|
136
|
+
* Render the command palette into a `Surface`.
|
|
137
|
+
*
|
|
138
|
+
* The search prompt stays fixed while results are masked by the shared
|
|
139
|
+
* `viewportSurface()` primitive rather than carrying bespoke slice logic.
|
|
140
|
+
*
|
|
141
|
+
* @param state - Current command palette state.
|
|
142
|
+
* @param options - Width, display flags, and context for rendering.
|
|
143
|
+
* @returns Surface containing the search line and scrollable result list.
|
|
144
|
+
*/
|
|
145
|
+
export declare function commandPaletteSurface(state: CommandPaletteState, options: CommandPaletteSurfaceOptions): Surface;
|
|
130
146
|
/**
|
|
131
147
|
* Create a preconfigured KeyMap for command palette navigation.
|
|
132
148
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../src/command-palette.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../src/command-palette.ts"],"names":[],"mappings":"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"}
|
package/dist/command-palette.js
CHANGED
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
* // handle selection...
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
+
import { parseAnsiToSurface } from '@flyingrobots/bijou';
|
|
22
23
|
import { createKeyMap } from './keybindings.js';
|
|
23
|
-
import { clipToWidth } from './viewport.js';
|
|
24
|
+
import { clipToWidth, viewportSurface } from './viewport.js';
|
|
25
|
+
import { vstackSurface } from './surface-layout.js';
|
|
24
26
|
// ---------------------------------------------------------------------------
|
|
25
27
|
// State creation
|
|
26
28
|
// ---------------------------------------------------------------------------
|
|
@@ -194,24 +196,27 @@ export function cpSelectedItem(state) {
|
|
|
194
196
|
*/
|
|
195
197
|
export function commandPalette(state, options) {
|
|
196
198
|
const { width, showCategory = true, showShortcut = true, ctx } = options;
|
|
197
|
-
const lines = [];
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
const lines = [clipToWidth(`> ${state.query}`, width)];
|
|
200
|
+
const itemLines = renderCommandPaletteLines(state, {
|
|
201
|
+
showCategory,
|
|
202
|
+
showShortcut,
|
|
203
|
+
ctx,
|
|
204
|
+
});
|
|
205
|
+
lines.push(...itemLines
|
|
206
|
+
.slice(state.scrollY, state.scrollY + state.height)
|
|
207
|
+
.map((line) => clipToWidth(line, width)));
|
|
208
|
+
return lines.join('\n');
|
|
209
|
+
}
|
|
210
|
+
function renderCommandPaletteLines(state, options) {
|
|
211
|
+
const { showCategory = true, showShortcut = true, ctx } = options;
|
|
202
212
|
if (state.filteredItems.length === 0) {
|
|
203
|
-
|
|
204
|
-
return lines.join('\n');
|
|
213
|
+
return [' No matches'];
|
|
205
214
|
}
|
|
206
|
-
|
|
207
|
-
const visible = state.filteredItems.slice(state.scrollY, state.scrollY + state.height);
|
|
208
|
-
const indicator = '\u25b8'; // ▸
|
|
215
|
+
const indicator = '\u25b8';
|
|
209
216
|
const pad = ' ';
|
|
210
217
|
const muted = (text) => ctx ? ctx.style.styled(ctx.semantic('muted'), text) : text;
|
|
211
|
-
|
|
212
|
-
const
|
|
213
|
-
const globalIndex = state.scrollY + i;
|
|
214
|
-
const prefix = globalIndex === state.focusIndex ? indicator : pad;
|
|
218
|
+
return state.filteredItems.map((item, index) => {
|
|
219
|
+
const prefix = index === state.focusIndex ? indicator : pad;
|
|
215
220
|
const parts = [];
|
|
216
221
|
if (showCategory && item.category) {
|
|
217
222
|
parts.push(muted(`[${item.category}]`));
|
|
@@ -223,11 +228,31 @@ export function commandPalette(state, options) {
|
|
|
223
228
|
if (showShortcut && item.shortcut) {
|
|
224
229
|
parts.push(muted(item.shortcut));
|
|
225
230
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
+
return `${prefix} ${parts.join(' ')}`;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Render the command palette into a `Surface`.
|
|
236
|
+
*
|
|
237
|
+
* The search prompt stays fixed while results are masked by the shared
|
|
238
|
+
* `viewportSurface()` primitive rather than carrying bespoke slice logic.
|
|
239
|
+
*
|
|
240
|
+
* @param state - Current command palette state.
|
|
241
|
+
* @param options - Width, display flags, and context for rendering.
|
|
242
|
+
* @returns Surface containing the search line and scrollable result list.
|
|
243
|
+
*/
|
|
244
|
+
export function commandPaletteSurface(state, options) {
|
|
245
|
+
const width = Math.max(1, options.width);
|
|
246
|
+
const itemLines = renderCommandPaletteLines(state, options);
|
|
247
|
+
const searchSurface = parseAnsiToSurface(clipToWidth(`> ${state.query}`, width), width, 1);
|
|
248
|
+
const listSurface = viewportSurface({
|
|
249
|
+
width,
|
|
250
|
+
height: Math.max(1, state.height),
|
|
251
|
+
content: itemLines.join('\n'),
|
|
252
|
+
scrollY: state.scrollY,
|
|
253
|
+
showScrollbar: options.showScrollbar ?? false,
|
|
254
|
+
});
|
|
255
|
+
return vstackSurface(searchSurface, listSurface);
|
|
231
256
|
}
|
|
232
257
|
// ---------------------------------------------------------------------------
|
|
233
258
|
// Convenience keymap
|