@mnmal-ai/surface-core 0.16.0 → 0.17.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/dist/app.d.ts.map +1 -1
- package/dist/compose.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +484 -22
- package/dist/keys.d.ts +7 -0
- package/dist/keys.d.ts.map +1 -1
- package/dist/list-pager-state.d.ts +76 -0
- package/dist/list-pager-state.d.ts.map +1 -0
- package/dist/list-pager.d.ts +24 -0
- package/dist/list-pager.d.ts.map +1 -0
- package/dist/module.d.ts +19 -3
- package/dist/module.d.ts.map +1 -1
- package/dist/{overlay-By-Ewn3S.js → overlay-5s8slC38.js} +145 -4
- package/dist/pure.d.ts +1 -0
- package/dist/pure.d.ts.map +1 -1
- package/dist/pure.js +2 -2
- package/package.json +3 -3
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,yBAAyB,CAAC;AAa3D,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAuB7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/compose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,KAAK,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAEhC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAC1B,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CACnE,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC3F,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IAC7E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;CAC9E;AAED,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAyC,CAAC;AAE5F,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAyB,CAAC;AAK3E,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;IAAhD,YAAqB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAG/C;CACF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,KAAK,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAEhC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAC1B,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KAAE,CACnE,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC3F,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IAC7E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;CAC9E;AAED,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAyC,CAAC;AAE5F,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAyB,CAAC;AAK3E,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;IAAhD,YAAqB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAG/C;CACF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,QAAQ,CAqJtE;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAElE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { FOLLOWING, linesBelow, pageStep, resolveFullscreen, type Scroll, scroll
|
|
|
8
8
|
export { EMPTY_HISTORY, HISTORY_MAX, type HistoryState, mayWalk, remember, settle, walk } from './history.js';
|
|
9
9
|
export { normaliseKeySpec } from './key-spec.js';
|
|
10
10
|
export { type KeyState, keySpecOf, type Route, resolveKey } from './keys.js';
|
|
11
|
+
export { INLINE_LIST_ROWS, LIST_REPLY_KIND, listPager, pageSizeFor } from './list-pager.js';
|
|
12
|
+
export { back, backspace, cursorRow, type DetailStep, endFilter, type ListDetail, type ListHooks, type ListStep, listStep, move, type PagerState, pagerAt, placement, push, type RelatedLoadingStep, type Step, scrollDetail, startFilter, turn, typeChar, visibleRows } from './list-pager-state.js';
|
|
11
13
|
export { type ArgSpec, type Armed, type Chip, type CommandSpec, type Completer, type ConfirmBinding, defineModule, type GlobalBinding, type Key, type KeySpec, type ModuleCtx, type ModuleSpec, type PanelDef, type PresenceSpec, type RailItem, type Renderer, type Reply, type Size, type SubmitOptions, type Suggestion, type TuiEvents, type TuiModule, type TurnContext, type TurnHandler, type TurnPhase, type TurnUpdate } from './module.js';
|
|
12
14
|
export { type Overlay, panelOf, setPanel } from './overlay.js';
|
|
13
15
|
export { clampSelection, commandUsage, completeDraft, enterRuns, MENU_NAME_WIDTH, menuWindow, moveSelection, type PaletteRow, paletteMatches, paletteQuery, paletteRows, parseCommandLine } from './palette.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import { spinnerFrame } from "@mnmal-ai/surface-kit";
|
|
1
|
+
import { $ as parseCommandLine, A as RESET_GROUND, At as normaliseKeySpec, B as sanitise, C as emptyTranscript, Ct as wordLeft, D as CLEAR_PANE, Dt as RESERVED_GLOBAL_KEYS, E as sendTurn, Et as CompositionError, F as liveShrink, G as commandUsage, H as unavailableReason, I as prepareSequence, J as menuWindow, K as completeDraft, L as prepareTerminal, M as WHEEL_ARROWS_ON, Mt as mergeCompletions, N as anchorPadding, O as DEFAULT_GROUND, Ot as assertComposes, P as groundSequence, Q as paletteRows, R as reflowSequence, S as dropGaps, St as pasteToLine, T as markedFlights, Tt as applyInput, U as MENU_NAME_WIDTH, V as routeInput, W as clampSelection, X as paletteMatches, Y as moveSelection, Z as paletteQuery, _ as visibleRows, _t as atEnd, a as backspace, at as remember, b as arriveTurn, bt as insertChunk, c as listStep, ct as FOLLOWING, d as placement, dt as resolveFullscreen, et as keySpecOf, f as push, ft as scrollBy, g as typeChar, gt as EMPTY_DRAFT, h as turn, ht as ctrlC, i as back, it as mayWalk, j as WHEEL_ARROWS_OFF, jt as applySuggestion, k as REPRINT_LINES, kt as composeModules, l as move, lt as linesBelow, m as startFilter, mt as CTRL_C_WINDOW_MS, n as setPanel, nt as EMPTY_HISTORY, o as cursorRow, ot as settle, p as scrollDetail, pt as viewTop, q as enterRuns, r as defineModule, rt as HISTORY_MAX, s as endFilter, st as walk, t as panelOf, tt as resolveKey, u as pagerAt, ut as pageStep, v as addGap, vt as editKey, w as heldAsks, wt as wordRight, x as commitEntry, xt as maskDraft, y as answerEntry, yt as graphemeAt, z as reprintStart } from "./overlay-5s8slC38.js";
|
|
2
|
+
import { ListRows, spinnerFrame } from "@mnmal-ai/surface-kit";
|
|
3
3
|
import { Box, Static, Text, measureElement, render, useApp, useInput, usePaste, useStdout } from "ink";
|
|
4
4
|
import { Component, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { listLines, wrapCells } from "@mnmal-ai/surface-kit/list";
|
|
6
7
|
|
|
7
8
|
//#region src/app.tsx
|
|
8
9
|
/** Calls a module's view as a component, so a throw lands in the boundary and not in the shell. */
|
|
@@ -71,6 +72,15 @@ const OVERLAY_PAD_Y = 1;
|
|
|
71
72
|
* not scanned; both come out of the size the panel view is handed (operator, 2026-10-09). */
|
|
72
73
|
const PANEL_PAD_X = 4;
|
|
73
74
|
const PANEL_PAD_Y = 1;
|
|
75
|
+
/** What a panel view may draw in: its insets, its own or the default, come out of the outer size. */
|
|
76
|
+
function panelInner(outer, def) {
|
|
77
|
+
const x = def?.inset?.x ?? PANEL_PAD_X;
|
|
78
|
+
const y = def?.inset?.y ?? PANEL_PAD_Y;
|
|
79
|
+
return {
|
|
80
|
+
columns: Math.max(1, outer.columns - 2 * x),
|
|
81
|
+
rows: Math.max(1, outer.rows - 2 * y)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
74
84
|
/**
|
|
75
85
|
* The `/` palette and the completion menu, directly above the input on the band's ground: a fixed name column, the detail dimmed, the selection on the `selection` tone, a window
|
|
76
86
|
* that follows the selection, and a hint line.
|
|
@@ -144,7 +154,8 @@ function createApp(opts) {
|
|
|
144
154
|
const fs = resolveFullscreen(opts.fullscreen, process.env.SURFACE_FULLSCREEN);
|
|
145
155
|
function App({ columns, rows }) {
|
|
146
156
|
const { exit } = useApp();
|
|
147
|
-
const
|
|
157
|
+
const ink = useStdout();
|
|
158
|
+
const stdout = ink.stdout;
|
|
148
159
|
const full = fs.on && stdout.isTTY === true;
|
|
149
160
|
const relays = anchored && !full;
|
|
150
161
|
const [term, setTerm] = useState(() => ({
|
|
@@ -161,12 +172,16 @@ function createApp(opts) {
|
|
|
161
172
|
const heights = useRef(/* @__PURE__ */ new Map());
|
|
162
173
|
const [reprintFrom, setReprintFrom] = useState(0);
|
|
163
174
|
const relayout = useCallback(() => {
|
|
164
|
-
if (stdout.isTTY)
|
|
175
|
+
if (stdout.isTTY) ink.write(reflowSequence(stdout.rows));
|
|
165
176
|
putTranscript(dropGaps);
|
|
166
177
|
const kept = transcriptRef.current.committed;
|
|
167
178
|
setReprintFrom(reprintStart(kept.map((e) => heights.current.get(e.key) ?? 1), REPRINT_LINES));
|
|
168
179
|
setEpoch((e) => e + 1);
|
|
169
|
-
}, [
|
|
180
|
+
}, [
|
|
181
|
+
stdout,
|
|
182
|
+
ink,
|
|
183
|
+
putTranscript
|
|
184
|
+
]);
|
|
170
185
|
useEffect(() => {
|
|
171
186
|
const laidOut = {
|
|
172
187
|
columns: stdout.columns ?? 120,
|
|
@@ -209,12 +224,8 @@ function createApp(opts) {
|
|
|
209
224
|
columns: Math.max(1, width - (showRail ? RAIL_COLUMNS : 0)),
|
|
210
225
|
rows: Math.max(1, panelRows(height))
|
|
211
226
|
};
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
rows: Math.max(1, panelOuter.rows - 2)
|
|
215
|
-
};
|
|
216
|
-
const sizeRef = useRef(panelSize);
|
|
217
|
-
sizeRef.current = panelSize;
|
|
227
|
+
const outerRef = useRef(panelOuter);
|
|
228
|
+
outerRef.current = panelOuter;
|
|
218
229
|
const [live, setLive] = useState(/* @__PURE__ */ new Map());
|
|
219
230
|
const [draft, setDraft] = useState(EMPTY_DRAFT);
|
|
220
231
|
const [, setHistory] = useState(EMPTY_HISTORY);
|
|
@@ -341,7 +352,7 @@ function createApp(opts) {
|
|
|
341
352
|
const ctxFor = useCallback((moduleId) => ({
|
|
342
353
|
theme,
|
|
343
354
|
signal: appAbort.current.signal,
|
|
344
|
-
size: () =>
|
|
355
|
+
size: () => panelInner(outerRef.current, defOf(overlayRef.current)),
|
|
345
356
|
open: (panel, state, opts) => {
|
|
346
357
|
if (disposed.current) return;
|
|
347
358
|
if (!registry.panels.has(`${moduleId}/${panel}`)) throw new Error(`module '${moduleId}' has no panel '${panel}'`);
|
|
@@ -352,6 +363,7 @@ function createApp(opts) {
|
|
|
352
363
|
state
|
|
353
364
|
});
|
|
354
365
|
},
|
|
366
|
+
panelOpen: () => overlayRef.current !== null,
|
|
355
367
|
update: (panel, fn) => {
|
|
356
368
|
if (disposed.current) return;
|
|
357
369
|
const o = overlayRef.current;
|
|
@@ -400,7 +412,8 @@ function createApp(opts) {
|
|
|
400
412
|
say,
|
|
401
413
|
guard,
|
|
402
414
|
putOverlay,
|
|
403
|
-
showToast
|
|
415
|
+
showToast,
|
|
416
|
+
defOf
|
|
404
417
|
]);
|
|
405
418
|
const runTurn = useCallback(async (line, module, handler, sent) => {
|
|
406
419
|
const id = nextId.current++;
|
|
@@ -690,12 +703,16 @@ function createApp(opts) {
|
|
|
690
703
|
}
|
|
691
704
|
return;
|
|
692
705
|
}
|
|
693
|
-
case "panel":
|
|
694
|
-
|
|
695
|
-
|
|
706
|
+
case "panel":
|
|
707
|
+
case "panel-text": {
|
|
708
|
+
const def = registry.panels.get(`${route.module}/${route.panel}`)?.def;
|
|
709
|
+
const act = route.kind === "panel" ? def?.on?.[route.act] : void 0;
|
|
710
|
+
const typed = route.kind === "panel-text" ? def?.text : void 0;
|
|
711
|
+
if (!act && !typed || !overlay) return;
|
|
696
712
|
let next;
|
|
697
713
|
try {
|
|
698
|
-
|
|
714
|
+
const c = ctxFor(route.module);
|
|
715
|
+
next = act ? act(overlay.state, c) : typed?.(overlay.state, route.text, c);
|
|
699
716
|
} catch (err) {
|
|
700
717
|
guard(route.module, () => {
|
|
701
718
|
throw err;
|
|
@@ -1020,9 +1037,9 @@ function createApp(opts) {
|
|
|
1020
1037
|
}, f.id))] });
|
|
1021
1038
|
const overlayRows = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1022
1039
|
panel && overlay ? /* @__PURE__ */ jsx(Box, {
|
|
1023
|
-
backgroundColor: theme.color.raised,
|
|
1024
|
-
paddingX: PANEL_PAD_X,
|
|
1025
|
-
paddingY: PANEL_PAD_Y,
|
|
1040
|
+
backgroundColor: panel.ground ?? theme.color.raised,
|
|
1041
|
+
paddingX: panel.inset?.x ?? PANEL_PAD_X,
|
|
1042
|
+
paddingY: panel.inset?.y ?? PANEL_PAD_Y,
|
|
1026
1043
|
flexDirection: "column",
|
|
1027
1044
|
children: /* @__PURE__ */ jsx(Safe, {
|
|
1028
1045
|
module: overlay.module,
|
|
@@ -1030,7 +1047,7 @@ function createApp(opts) {
|
|
|
1030
1047
|
render: () => panel.view({
|
|
1031
1048
|
state: overlay.state,
|
|
1032
1049
|
theme,
|
|
1033
|
-
size:
|
|
1050
|
+
size: panelInner(panelOuter, panel),
|
|
1034
1051
|
...armed !== null && armed.module === overlay.module && armed.panel === overlay.panel && draft.text === armed.key ? { armed: {
|
|
1035
1052
|
key: armed.key,
|
|
1036
1053
|
label: armed.label
|
|
@@ -1266,4 +1283,449 @@ function createApp(opts) {
|
|
|
1266
1283
|
}
|
|
1267
1284
|
|
|
1268
1285
|
//#endregion
|
|
1269
|
-
|
|
1286
|
+
//#region src/list-pager.tsx
|
|
1287
|
+
/** A list longer than this is paged rather than printed. */
|
|
1288
|
+
const INLINE_LIST_ROWS = 10;
|
|
1289
|
+
const LIST_REPLY_KIND = "surface.list";
|
|
1290
|
+
/** Rows a page holds in a panel `rows` tall: the heading, filter and hint lines take the rest. */
|
|
1291
|
+
const pageSizeFor = (rows) => Math.max(5, rows - 6);
|
|
1292
|
+
const cleanSpan = (s) => s.em === true ? {
|
|
1293
|
+
text: sanitise(s.text),
|
|
1294
|
+
em: true
|
|
1295
|
+
} : { text: sanitise(s.text) };
|
|
1296
|
+
const cleanRow = (r) => ({
|
|
1297
|
+
key: r.key,
|
|
1298
|
+
name: typeof r.name === "string" ? sanitise(r.name) : r.name.map(cleanSpan),
|
|
1299
|
+
...r.details ? { details: r.details.map(sanitise) } : {},
|
|
1300
|
+
...r.value !== void 0 ? { value: sanitise(r.value) } : {}
|
|
1301
|
+
});
|
|
1302
|
+
/** Everything an app hands in reaches the terminal sanitised. */
|
|
1303
|
+
const cleanList = (l) => ({
|
|
1304
|
+
heading: sanitise(l.heading),
|
|
1305
|
+
rows: l.rows.map(cleanRow),
|
|
1306
|
+
...l.total !== void 0 ? { total: l.total } : {},
|
|
1307
|
+
...l.notes ? { notes: l.notes.map(sanitise) } : {}
|
|
1308
|
+
});
|
|
1309
|
+
const cleanDetail = (d) => ({
|
|
1310
|
+
title: sanitise(d.title),
|
|
1311
|
+
...d.meta !== void 0 ? { meta: sanitise(d.meta) } : {},
|
|
1312
|
+
...d.body !== void 0 ? { body: sanitise(d.body) } : {}
|
|
1313
|
+
});
|
|
1314
|
+
const inAll = (l) => l.total !== void 0 && l.total > l.rows.length ? `, ${l.total} in all` : "";
|
|
1315
|
+
const isPromise = (v) => typeof v?.then === "function";
|
|
1316
|
+
const errorText = (e) => sanitise(e instanceof Error ? e.message : String(e));
|
|
1317
|
+
/** The detail's body lines and the room the panel gives them. */
|
|
1318
|
+
function detailLayout(d, size) {
|
|
1319
|
+
const lines = d.body === void 0 ? [] : wrapCells(d.body, size.columns);
|
|
1320
|
+
const room = Math.max(1, size.rows - (d.meta === void 0 ? 3 : 4));
|
|
1321
|
+
return {
|
|
1322
|
+
lines,
|
|
1323
|
+
room,
|
|
1324
|
+
maxScroll: Math.max(0, lines.length - room)
|
|
1325
|
+
};
|
|
1326
|
+
}
|
|
1327
|
+
function Hint({ theme, parts }) {
|
|
1328
|
+
return /* @__PURE__ */ jsx(Box, {
|
|
1329
|
+
marginTop: 1,
|
|
1330
|
+
children: /* @__PURE__ */ jsx(Text, {
|
|
1331
|
+
color: theme.color.dim,
|
|
1332
|
+
wrap: "truncate",
|
|
1333
|
+
children: parts.join(" · ")
|
|
1334
|
+
})
|
|
1335
|
+
});
|
|
1336
|
+
}
|
|
1337
|
+
function ListPage({ step, depth, theme, size }) {
|
|
1338
|
+
const shown = visibleRows(step);
|
|
1339
|
+
const per = pageSizeFor(size.rows);
|
|
1340
|
+
const pages = Math.max(1, Math.ceil(shown.length / per));
|
|
1341
|
+
const at = placement(step, per);
|
|
1342
|
+
const page = Math.min(at.page, pages - 1);
|
|
1343
|
+
const slice = shown.slice(page * per, page * per + per);
|
|
1344
|
+
const total = step.list.total;
|
|
1345
|
+
const of = total !== void 0 && total > step.list.rows.length ? ` · ${step.list.rows.length} of ${total}` : "";
|
|
1346
|
+
const hint = [
|
|
1347
|
+
"↑↓ row",
|
|
1348
|
+
"←→ page",
|
|
1349
|
+
...step.hooks.open ? ["enter open"] : [],
|
|
1350
|
+
...step.hooks.related ? ["r related"] : [],
|
|
1351
|
+
"/ filter",
|
|
1352
|
+
depth > 1 || step.filter !== "" || step.filtering ? "esc back" : "esc close"
|
|
1353
|
+
];
|
|
1354
|
+
return /* @__PURE__ */ jsxs(Box, {
|
|
1355
|
+
flexDirection: "column",
|
|
1356
|
+
children: [
|
|
1357
|
+
/* @__PURE__ */ jsxs(Text, {
|
|
1358
|
+
wrap: "truncate",
|
|
1359
|
+
children: [
|
|
1360
|
+
/* @__PURE__ */ jsx(Text, {
|
|
1361
|
+
color: theme.color.accent,
|
|
1362
|
+
children: "📋 List "
|
|
1363
|
+
}),
|
|
1364
|
+
/* @__PURE__ */ jsx(Text, {
|
|
1365
|
+
bold: true,
|
|
1366
|
+
children: step.list.heading
|
|
1367
|
+
}),
|
|
1368
|
+
/* @__PURE__ */ jsx(Text, {
|
|
1369
|
+
color: theme.color.dim,
|
|
1370
|
+
children: `${of} · page ${page + 1} of ${pages}`
|
|
1371
|
+
})
|
|
1372
|
+
]
|
|
1373
|
+
}),
|
|
1374
|
+
step.filtering || step.filter !== "" ? /* @__PURE__ */ jsx(Text, {
|
|
1375
|
+
color: theme.color.dim,
|
|
1376
|
+
children: `filter: ${step.filter}${step.filtering ? "▌" : ""}`
|
|
1377
|
+
}) : null,
|
|
1378
|
+
/* @__PURE__ */ jsx(Box, {
|
|
1379
|
+
marginTop: 1,
|
|
1380
|
+
flexDirection: "column",
|
|
1381
|
+
children: slice.length === 0 ? /* @__PURE__ */ jsx(Text, {
|
|
1382
|
+
color: theme.color.dim,
|
|
1383
|
+
children: `no rows match ${step.filter}`
|
|
1384
|
+
}) : /* @__PURE__ */ jsx(ListRows, {
|
|
1385
|
+
lines: listLines(slice, size.columns, page * per + 1),
|
|
1386
|
+
theme,
|
|
1387
|
+
cursor: at.cursor
|
|
1388
|
+
})
|
|
1389
|
+
}),
|
|
1390
|
+
/* @__PURE__ */ jsx(Hint, {
|
|
1391
|
+
theme,
|
|
1392
|
+
parts: hint
|
|
1393
|
+
})
|
|
1394
|
+
]
|
|
1395
|
+
});
|
|
1396
|
+
}
|
|
1397
|
+
function DetailPage({ step, theme, size }) {
|
|
1398
|
+
const hint = [
|
|
1399
|
+
"↑↓ scroll",
|
|
1400
|
+
...step.hooks.related ? ["r related"] : [],
|
|
1401
|
+
"esc back"
|
|
1402
|
+
];
|
|
1403
|
+
if (step.detail === "loading" || "error" in step.detail) return /* @__PURE__ */ jsxs(Box, {
|
|
1404
|
+
flexDirection: "column",
|
|
1405
|
+
children: [step.detail === "loading" ? /* @__PURE__ */ jsx(Text, {
|
|
1406
|
+
color: theme.color.dim,
|
|
1407
|
+
children: "loading…"
|
|
1408
|
+
}) : /* @__PURE__ */ jsx(Text, {
|
|
1409
|
+
color: theme.color.warn,
|
|
1410
|
+
children: step.detail.error
|
|
1411
|
+
}), /* @__PURE__ */ jsx(Hint, {
|
|
1412
|
+
theme,
|
|
1413
|
+
parts: ["esc back"]
|
|
1414
|
+
})]
|
|
1415
|
+
});
|
|
1416
|
+
const d = step.detail;
|
|
1417
|
+
const { lines, room } = detailLayout(d, size);
|
|
1418
|
+
return /* @__PURE__ */ jsxs(Box, {
|
|
1419
|
+
flexDirection: "column",
|
|
1420
|
+
children: [
|
|
1421
|
+
/* @__PURE__ */ jsxs(Text, {
|
|
1422
|
+
wrap: "truncate",
|
|
1423
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
1424
|
+
color: theme.color.accent,
|
|
1425
|
+
children: "📋 "
|
|
1426
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
1427
|
+
bold: true,
|
|
1428
|
+
children: d.title
|
|
1429
|
+
})]
|
|
1430
|
+
}),
|
|
1431
|
+
d.meta !== void 0 ? /* @__PURE__ */ jsx(Text, {
|
|
1432
|
+
color: theme.color.dim,
|
|
1433
|
+
wrap: "truncate",
|
|
1434
|
+
children: d.meta
|
|
1435
|
+
}) : null,
|
|
1436
|
+
/* @__PURE__ */ jsx(Box, {
|
|
1437
|
+
marginTop: 1,
|
|
1438
|
+
flexDirection: "column",
|
|
1439
|
+
children: lines.slice(step.scroll, step.scroll + room).map((l, i) => /* @__PURE__ */ jsx(Text, { children: l }, i))
|
|
1440
|
+
}),
|
|
1441
|
+
/* @__PURE__ */ jsx(Hint, {
|
|
1442
|
+
theme,
|
|
1443
|
+
parts: hint
|
|
1444
|
+
})
|
|
1445
|
+
]
|
|
1446
|
+
});
|
|
1447
|
+
}
|
|
1448
|
+
function PagerView({ state, theme, size }) {
|
|
1449
|
+
const step = state.steps[state.steps.length - 1];
|
|
1450
|
+
if (step === void 0) return null;
|
|
1451
|
+
if (step.kind === "list") return /* @__PURE__ */ jsx(ListPage, {
|
|
1452
|
+
step,
|
|
1453
|
+
depth: state.steps.length,
|
|
1454
|
+
theme,
|
|
1455
|
+
size
|
|
1456
|
+
});
|
|
1457
|
+
if (step.kind === "detail") return /* @__PURE__ */ jsx(DetailPage, {
|
|
1458
|
+
step,
|
|
1459
|
+
theme,
|
|
1460
|
+
size
|
|
1461
|
+
});
|
|
1462
|
+
return /* @__PURE__ */ jsxs(Box, {
|
|
1463
|
+
flexDirection: "column",
|
|
1464
|
+
children: [step.error === void 0 ? /* @__PURE__ */ jsx(Text, {
|
|
1465
|
+
color: theme.color.dim,
|
|
1466
|
+
children: "loading…"
|
|
1467
|
+
}) : /* @__PURE__ */ jsx(Text, {
|
|
1468
|
+
color: theme.color.warn,
|
|
1469
|
+
children: step.error
|
|
1470
|
+
}), /* @__PURE__ */ jsx(Hint, {
|
|
1471
|
+
theme,
|
|
1472
|
+
parts: ["esc back"]
|
|
1473
|
+
})]
|
|
1474
|
+
});
|
|
1475
|
+
}
|
|
1476
|
+
function ListReply({ data, theme, columns }) {
|
|
1477
|
+
const { list, paged } = data;
|
|
1478
|
+
const n = list.rows.length;
|
|
1479
|
+
const width = Math.max(1, columns - 2);
|
|
1480
|
+
let tail = null;
|
|
1481
|
+
if (paged) tail = `${n} rows — in the list (/list)${inAll(list)}`;
|
|
1482
|
+
else if (n > 10) tail = `…and ${n - 10} more — /list to page through them${inAll(list)}`;
|
|
1483
|
+
else if (list.total !== void 0 && list.total > n) tail = `… ${list.total} in all`;
|
|
1484
|
+
return /* @__PURE__ */ jsxs(Box, {
|
|
1485
|
+
flexDirection: "column",
|
|
1486
|
+
children: [
|
|
1487
|
+
/* @__PURE__ */ jsx(Text, {
|
|
1488
|
+
bold: true,
|
|
1489
|
+
wrap: "wrap",
|
|
1490
|
+
children: `${list.heading}:`
|
|
1491
|
+
}),
|
|
1492
|
+
paged ? null : /* @__PURE__ */ jsx(Box, {
|
|
1493
|
+
marginTop: 1,
|
|
1494
|
+
children: /* @__PURE__ */ jsx(ListRows, {
|
|
1495
|
+
lines: listLines(list.rows.slice(0, 10), width),
|
|
1496
|
+
theme
|
|
1497
|
+
})
|
|
1498
|
+
}),
|
|
1499
|
+
tail !== null ? /* @__PURE__ */ jsx(Text, {
|
|
1500
|
+
color: theme.color.dim,
|
|
1501
|
+
children: ` ${tail}`
|
|
1502
|
+
}) : null,
|
|
1503
|
+
(list.notes ?? []).length > 0 ? /* @__PURE__ */ jsx(Box, {
|
|
1504
|
+
marginTop: 1,
|
|
1505
|
+
flexDirection: "column",
|
|
1506
|
+
children: (list.notes ?? []).map((note, i) => /* @__PURE__ */ jsx(Text, {
|
|
1507
|
+
color: theme.color.dim,
|
|
1508
|
+
italic: true,
|
|
1509
|
+
wrap: "wrap",
|
|
1510
|
+
children: note
|
|
1511
|
+
}, i))
|
|
1512
|
+
}) : null
|
|
1513
|
+
]
|
|
1514
|
+
});
|
|
1515
|
+
}
|
|
1516
|
+
/**
|
|
1517
|
+
* The pager module and `present`, which a turn handler yields as its reply:
|
|
1518
|
+
* `yield { phase: 'final', reply: pager.present(list, { open, related }) }`. A list of up to
|
|
1519
|
+
* `INLINE_LIST_ROWS` prints inline. A longer one opens the pager when no panel is open, and the
|
|
1520
|
+
* transcript then carries only its heading and a pointer; otherwise its first rows print inline.
|
|
1521
|
+
* `/list` reopens the last long list where it was left.
|
|
1522
|
+
*/
|
|
1523
|
+
function listPager() {
|
|
1524
|
+
let own;
|
|
1525
|
+
let last = null;
|
|
1526
|
+
/**
|
|
1527
|
+
* Keeps the first step as the operator left it, and returns the state to show. Only for the
|
|
1528
|
+
* list `/list` would reopen: an older list paged while a newer one landed must not take its place.
|
|
1529
|
+
*/
|
|
1530
|
+
const keep = (s) => {
|
|
1531
|
+
const first = s.steps[0];
|
|
1532
|
+
const was = last?.steps[0];
|
|
1533
|
+
if (first?.kind === "list" && was?.kind === "list" && first.list === was.list) last = {
|
|
1534
|
+
steps: [first],
|
|
1535
|
+
token: s.token
|
|
1536
|
+
};
|
|
1537
|
+
return s;
|
|
1538
|
+
};
|
|
1539
|
+
const top = (s) => s.steps[s.steps.length - 1];
|
|
1540
|
+
const replaceTop = (s, step) => ({
|
|
1541
|
+
...s,
|
|
1542
|
+
steps: [...s.steps.slice(0, -1), step]
|
|
1543
|
+
});
|
|
1544
|
+
/** Settles an async step, only while the pager still shows the step it was started for. */
|
|
1545
|
+
const settle = (ctx, token, step) => ctx.update("pager", (cur) => {
|
|
1546
|
+
const t = top(cur);
|
|
1547
|
+
return cur.token === token && t !== void 0 ? replaceTop(cur, step(t)) : cur;
|
|
1548
|
+
});
|
|
1549
|
+
const open = (s, ctx) => {
|
|
1550
|
+
const t = top(s);
|
|
1551
|
+
if (t?.kind !== "list") return s;
|
|
1552
|
+
if (t.filtering) return keep(endFilter(s));
|
|
1553
|
+
const row = cursorRow(s);
|
|
1554
|
+
const hook = t.hooks.open;
|
|
1555
|
+
if (row === void 0 || hook === void 0) return s;
|
|
1556
|
+
const base = {
|
|
1557
|
+
kind: "detail",
|
|
1558
|
+
row,
|
|
1559
|
+
hooks: t.hooks,
|
|
1560
|
+
detail: "loading",
|
|
1561
|
+
scroll: 0
|
|
1562
|
+
};
|
|
1563
|
+
let got;
|
|
1564
|
+
try {
|
|
1565
|
+
got = hook(row);
|
|
1566
|
+
} catch (e) {
|
|
1567
|
+
return push(s, {
|
|
1568
|
+
...base,
|
|
1569
|
+
detail: { error: errorText(e) }
|
|
1570
|
+
});
|
|
1571
|
+
}
|
|
1572
|
+
if (!isPromise(got)) return push(s, {
|
|
1573
|
+
...base,
|
|
1574
|
+
detail: cleanDetail(got)
|
|
1575
|
+
});
|
|
1576
|
+
const next = push(s, base);
|
|
1577
|
+
got.then((d) => settle(ctx, next.token, (cur) => cur.kind === "detail" ? {
|
|
1578
|
+
...cur,
|
|
1579
|
+
detail: cleanDetail(d)
|
|
1580
|
+
} : cur), (e) => settle(ctx, next.token, (cur) => cur.kind === "detail" ? {
|
|
1581
|
+
...cur,
|
|
1582
|
+
detail: { error: errorText(e) }
|
|
1583
|
+
} : cur));
|
|
1584
|
+
return next;
|
|
1585
|
+
};
|
|
1586
|
+
const related = (s, ctx) => {
|
|
1587
|
+
const t = top(s);
|
|
1588
|
+
if (t?.kind === "list" && t.filtering) return keep(typeChar(s, "r"));
|
|
1589
|
+
if (t === void 0 || t.kind === "loading-related") return s;
|
|
1590
|
+
const row = cursorRow(s);
|
|
1591
|
+
const hook = t.hooks.related;
|
|
1592
|
+
if (row === void 0 || hook === void 0) return s;
|
|
1593
|
+
const hooks = t.hooks;
|
|
1594
|
+
let got;
|
|
1595
|
+
try {
|
|
1596
|
+
got = hook(row);
|
|
1597
|
+
} catch (e) {
|
|
1598
|
+
return push(s, {
|
|
1599
|
+
kind: "loading-related",
|
|
1600
|
+
row,
|
|
1601
|
+
error: errorText(e)
|
|
1602
|
+
});
|
|
1603
|
+
}
|
|
1604
|
+
if (!isPromise(got)) return push(s, listStep(cleanList(got), hooks));
|
|
1605
|
+
const next = push(s, {
|
|
1606
|
+
kind: "loading-related",
|
|
1607
|
+
row
|
|
1608
|
+
});
|
|
1609
|
+
got.then((l) => settle(ctx, next.token, () => listStep(cleanList(l), hooks)), (e) => settle(ctx, next.token, () => ({
|
|
1610
|
+
kind: "loading-related",
|
|
1611
|
+
row,
|
|
1612
|
+
error: errorText(e)
|
|
1613
|
+
})));
|
|
1614
|
+
return next;
|
|
1615
|
+
};
|
|
1616
|
+
const vertical = (delta) => (s, ctx) => {
|
|
1617
|
+
const t = top(s);
|
|
1618
|
+
if (t?.kind === "detail" && t.detail !== "loading" && !("error" in t.detail)) return scrollDetail(s, delta, detailLayout(t.detail, ctx.size()).maxScroll);
|
|
1619
|
+
return keep(move(s, delta, pageSizeFor(ctx.size().rows)));
|
|
1620
|
+
};
|
|
1621
|
+
const page = (delta) => (s, ctx) => keep(turn(s, delta, pageSizeFor(ctx.size().rows)));
|
|
1622
|
+
return {
|
|
1623
|
+
module: defineModule("surface.list", {
|
|
1624
|
+
init(ctx) {
|
|
1625
|
+
own = ctx;
|
|
1626
|
+
return () => {
|
|
1627
|
+
own = void 0;
|
|
1628
|
+
};
|
|
1629
|
+
},
|
|
1630
|
+
commands: [{
|
|
1631
|
+
name: "list",
|
|
1632
|
+
summary: "page through the last long list",
|
|
1633
|
+
args: [],
|
|
1634
|
+
run(_args, ctx) {
|
|
1635
|
+
if (last === null) {
|
|
1636
|
+
ctx.print("nothing to page through");
|
|
1637
|
+
return;
|
|
1638
|
+
}
|
|
1639
|
+
ctx.open("pager", last);
|
|
1640
|
+
}
|
|
1641
|
+
}],
|
|
1642
|
+
renderers: { [LIST_REPLY_KIND]: ({ data, theme, size }) => /* @__PURE__ */ jsx(ListReply, {
|
|
1643
|
+
data,
|
|
1644
|
+
theme,
|
|
1645
|
+
columns: size.columns
|
|
1646
|
+
}) },
|
|
1647
|
+
panels: { pager: {
|
|
1648
|
+
view: ({ state, theme, size }) => /* @__PURE__ */ jsx(PagerView, {
|
|
1649
|
+
state,
|
|
1650
|
+
theme,
|
|
1651
|
+
size
|
|
1652
|
+
}),
|
|
1653
|
+
keymap: [
|
|
1654
|
+
{
|
|
1655
|
+
key: "up",
|
|
1656
|
+
act: "up"
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
key: "down",
|
|
1660
|
+
act: "down"
|
|
1661
|
+
},
|
|
1662
|
+
{
|
|
1663
|
+
key: "left",
|
|
1664
|
+
act: "left"
|
|
1665
|
+
},
|
|
1666
|
+
{
|
|
1667
|
+
key: "right",
|
|
1668
|
+
act: "right"
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
key: "enter",
|
|
1672
|
+
act: "open"
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
key: "r",
|
|
1676
|
+
act: "related"
|
|
1677
|
+
},
|
|
1678
|
+
{
|
|
1679
|
+
key: "/",
|
|
1680
|
+
act: "filter"
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
key: "backspace",
|
|
1684
|
+
act: "backspace"
|
|
1685
|
+
}
|
|
1686
|
+
],
|
|
1687
|
+
on: {
|
|
1688
|
+
up: vertical(-1),
|
|
1689
|
+
down: vertical(1),
|
|
1690
|
+
left: page(-1),
|
|
1691
|
+
right: page(1),
|
|
1692
|
+
open,
|
|
1693
|
+
related,
|
|
1694
|
+
filter: (s) => {
|
|
1695
|
+
const t = top(s);
|
|
1696
|
+
return keep(t?.kind === "list" && t.filtering ? typeChar(s, "/") : startFilter(s));
|
|
1697
|
+
},
|
|
1698
|
+
backspace: (s) => keep(backspace(s))
|
|
1699
|
+
},
|
|
1700
|
+
text: (s, text) => keep(typeChar(s, text)),
|
|
1701
|
+
escape: (s) => {
|
|
1702
|
+
const prev = back(s);
|
|
1703
|
+
return prev === void 0 ? void 0 : keep(prev);
|
|
1704
|
+
}
|
|
1705
|
+
} }
|
|
1706
|
+
}),
|
|
1707
|
+
present(list, hooks = {}) {
|
|
1708
|
+
const clean = cleanList(list);
|
|
1709
|
+
if (clean.rows.length <= 10) return {
|
|
1710
|
+
kind: LIST_REPLY_KIND,
|
|
1711
|
+
data: {
|
|
1712
|
+
list: clean,
|
|
1713
|
+
paged: false
|
|
1714
|
+
}
|
|
1715
|
+
};
|
|
1716
|
+
last = pagerAt(clean, hooks);
|
|
1717
|
+
const paged = own !== void 0 && !own.panelOpen();
|
|
1718
|
+
if (paged) own?.open("pager", last);
|
|
1719
|
+
return {
|
|
1720
|
+
kind: LIST_REPLY_KIND,
|
|
1721
|
+
data: {
|
|
1722
|
+
list: clean,
|
|
1723
|
+
paged
|
|
1724
|
+
}
|
|
1725
|
+
};
|
|
1726
|
+
}
|
|
1727
|
+
};
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
//#endregion
|
|
1731
|
+
export { CLEAR_PANE, CTRL_C_WINDOW_MS, CompositionError, DEFAULT_GROUND, EMPTY_DRAFT, EMPTY_HISTORY, FOLLOWING, HISTORY_MAX, INLINE_LIST_ROWS, LIST_REPLY_KIND, MENU_NAME_WIDTH, RESERVED_GLOBAL_KEYS, RESET_GROUND, WHEEL_ARROWS_OFF, WHEEL_ARROWS_ON, addGap, anchorPadding, answerEntry, applyInput, applySuggestion, arriveTurn, assertComposes, atEnd, back, backspace, clampSelection, commandUsage, commitEntry, completeDraft, composeModules, createApp, ctrlC, cursorRow, defaultPanelRows, defineModule, editKey, emptyTranscript, endFilter, enterRuns, groundSequence, heldAsks, insertChunk, keySpecOf, linesBelow, listPager, listStep, liveShrink, markedFlights, maskDraft, mayWalk, menuWindow, mergeCompletions, move, moveSelection, normaliseKeySpec, pageSizeFor, pageStep, pagerAt, paletteMatches, paletteQuery, paletteRows, panelOf, parseCommandLine, pasteToLine, placement, prepareSequence, prepareTerminal, push, reflowSequence, remember, resolveFullscreen, resolveKey, routeInput, sanitise, scrollBy, scrollDetail, sendTurn, setPanel, settle, startFilter, turn, typeChar, viewTop, visibleRows, walk, wordLeft, wordRight };
|
package/dist/keys.d.ts
CHANGED
|
@@ -40,6 +40,13 @@ export type Route = {
|
|
|
40
40
|
readonly kind: 'global';
|
|
41
41
|
readonly module: string;
|
|
42
42
|
readonly key: KeySpec;
|
|
43
|
+
}
|
|
44
|
+
/** Typed text for a focused panel's `text` hook: a key its keymap does not bind, or a chunk. */
|
|
45
|
+
| {
|
|
46
|
+
readonly kind: 'panel-text';
|
|
47
|
+
readonly module: string;
|
|
48
|
+
readonly panel: string;
|
|
49
|
+
readonly text: string;
|
|
43
50
|
} | {
|
|
44
51
|
readonly kind: 'cancel-turn';
|
|
45
52
|
}
|
package/dist/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,GAAG,IAAI,CAiBhD;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7E,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAC1C;AAED,MAAM,MAAM,KAAK,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;CAAE,GACnE;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE;AAClC,sEAAsE;GACpE;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type ListRow, type ListSpec } from '@mnmal-ai/surface-kit/list';
|
|
2
|
+
/** One row in full, as an app's `open` hook describes it. */
|
|
3
|
+
export interface ListDetail {
|
|
4
|
+
readonly title: string;
|
|
5
|
+
/** A dim line under the title: status, area, when. */
|
|
6
|
+
readonly meta?: string;
|
|
7
|
+
/** Wrapped to the panel's width and scrolled with ↑↓. */
|
|
8
|
+
readonly body?: string;
|
|
9
|
+
}
|
|
10
|
+
/** What the app does with a row. Either may be left out, and its key then does nothing. */
|
|
11
|
+
export interface ListHooks {
|
|
12
|
+
readonly open?: (row: ListRow) => ListDetail | Promise<ListDetail>;
|
|
13
|
+
readonly related?: (row: ListRow) => ListSpec | Promise<ListSpec>;
|
|
14
|
+
}
|
|
15
|
+
export interface ListStep {
|
|
16
|
+
readonly kind: 'list';
|
|
17
|
+
readonly list: ListSpec;
|
|
18
|
+
readonly hooks: ListHooks;
|
|
19
|
+
readonly page: number;
|
|
20
|
+
readonly cursor: number;
|
|
21
|
+
readonly filter: string;
|
|
22
|
+
readonly filtering: boolean;
|
|
23
|
+
/** The page size it was last moved with: `page` and `cursor` are measured in it. */
|
|
24
|
+
readonly size: number;
|
|
25
|
+
}
|
|
26
|
+
export interface DetailStep {
|
|
27
|
+
readonly kind: 'detail';
|
|
28
|
+
readonly row: ListRow;
|
|
29
|
+
readonly hooks: ListHooks;
|
|
30
|
+
readonly detail: ListDetail | 'loading' | {
|
|
31
|
+
readonly error: string;
|
|
32
|
+
};
|
|
33
|
+
readonly scroll: number;
|
|
34
|
+
}
|
|
35
|
+
export interface RelatedLoadingStep {
|
|
36
|
+
readonly kind: 'loading-related';
|
|
37
|
+
readonly row: ListRow;
|
|
38
|
+
/** Set when the related list could not be found. */
|
|
39
|
+
readonly error?: string;
|
|
40
|
+
}
|
|
41
|
+
export type Step = ListStep | DetailStep | RelatedLoadingStep;
|
|
42
|
+
export interface PagerState {
|
|
43
|
+
readonly steps: readonly Step[];
|
|
44
|
+
/** Bumped on every push and pop, so an async result can tell the step it was for is gone. */
|
|
45
|
+
readonly token: number;
|
|
46
|
+
}
|
|
47
|
+
export declare const listStep: (list: ListSpec, hooks: ListHooks) => ListStep;
|
|
48
|
+
export declare const pagerAt: (list: ListSpec, hooks: ListHooks) => PagerState;
|
|
49
|
+
export declare const push: (s: PagerState, step: Step) => PagerState;
|
|
50
|
+
/** Where the cursor's row falls at page size `per`, whatever size it was last moved with. */
|
|
51
|
+
export declare function placement(l: ListStep, per: number): {
|
|
52
|
+
page: number;
|
|
53
|
+
cursor: number;
|
|
54
|
+
};
|
|
55
|
+
/** The list's rows as the filter leaves them. */
|
|
56
|
+
export declare const visibleRows: (l: ListStep) => ListRow[];
|
|
57
|
+
/** The highlighted row, or the open detail's row; undefined when the filter matches nothing. */
|
|
58
|
+
export declare function cursorRow(s: PagerState): ListRow | undefined;
|
|
59
|
+
/** ↑↓: one row, walking onto the next or previous page at an edge; stops at either end. */
|
|
60
|
+
export declare function move(s: PagerState, delta: -1 | 1, pageSize: number): PagerState;
|
|
61
|
+
/** ←→: a page, the cursor on its first row; stays on the first or last page. */
|
|
62
|
+
export declare function turn(s: PagerState, delta: -1 | 1, pageSize: number): PagerState;
|
|
63
|
+
export declare const startFilter: (s: PagerState) => PagerState;
|
|
64
|
+
/** While filtering: the character joins the filter, and the list starts again from its top. */
|
|
65
|
+
export declare const typeChar: (s: PagerState, ch: string) => PagerState;
|
|
66
|
+
export declare const backspace: (s: PagerState) => PagerState;
|
|
67
|
+
/** Enter while filtering: keep the filter, stop typing into it. */
|
|
68
|
+
export declare const endFilter: (s: PagerState) => PagerState;
|
|
69
|
+
/**
|
|
70
|
+
* Esc: filtering → the filter cleared; a detail or a related list → the step before it, where it
|
|
71
|
+
* was left; the first list with a filter kept → the filter cleared; otherwise undefined (close).
|
|
72
|
+
*/
|
|
73
|
+
export declare function back(s: PagerState): PagerState | undefined;
|
|
74
|
+
/** ↑↓ on a detail: scroll between 0 and `maxScroll`. */
|
|
75
|
+
export declare function scrollDetail(s: PagerState, delta: -1 | 1, maxScroll: number): PagerState;
|
|
76
|
+
//# sourceMappingURL=list-pager-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-pager-state.d.ts","sourceRoot":"","sources":["../src/list-pager-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ListSpec } from '@mnmal-ai/surface-kit/list';
|
|
2
|
+
import { type ListHooks, type PagerState } from './list-pager-state.js';
|
|
3
|
+
import { type Reply, type TuiModule } from './module.js';
|
|
4
|
+
/** A list longer than this is paged rather than printed. */
|
|
5
|
+
export declare const INLINE_LIST_ROWS = 10;
|
|
6
|
+
export declare const LIST_REPLY_KIND = "surface.list";
|
|
7
|
+
type Panels = {
|
|
8
|
+
pager: PagerState;
|
|
9
|
+
};
|
|
10
|
+
/** Rows a page holds in a panel `rows` tall: the heading, filter and hint lines take the rest. */
|
|
11
|
+
export declare const pageSizeFor: (rows: number) => number;
|
|
12
|
+
/**
|
|
13
|
+
* The pager module and `present`, which a turn handler yields as its reply:
|
|
14
|
+
* `yield { phase: 'final', reply: pager.present(list, { open, related }) }`. A list of up to
|
|
15
|
+
* `INLINE_LIST_ROWS` prints inline. A longer one opens the pager when no panel is open, and the
|
|
16
|
+
* transcript then carries only its heading and a pointer; otherwise its first rows print inline.
|
|
17
|
+
* `/list` reopens the last long list where it was left.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listPager(): {
|
|
20
|
+
module: TuiModule<Panels>;
|
|
21
|
+
present(list: ListSpec, hooks?: ListHooks): Reply;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=list-pager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-pager.d.ts","sourceRoot":"","sources":["../src/list-pager.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAOL,KAAK,SAAS,EAId,KAAK,UAAU,EAUhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAgC,KAAK,KAAK,EAAa,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAGlG,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAE9C,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAMpC,kGAAkG;AAClG,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAA+B,CAAC;AAmN3E;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI;IAC3B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;CACnD,CAqKA"}
|
package/dist/module.d.ts
CHANGED
|
@@ -99,6 +99,8 @@ export interface ModuleCtx<P> {
|
|
|
99
99
|
open<K extends keyof P & string>(panel: K, state: P[K], opts?: {
|
|
100
100
|
readonly ifNoneOpen?: boolean;
|
|
101
101
|
}): void;
|
|
102
|
+
/** Whether any panel is open now, this module's or another's: what `ifNoneOpen` checks. */
|
|
103
|
+
panelOpen(): boolean;
|
|
102
104
|
update<K extends keyof P & string>(panel: K, fn: (state: P[K]) => P[K]): void;
|
|
103
105
|
close(): void;
|
|
104
106
|
print(text: string, tone?: Tone): void;
|
|
@@ -170,6 +172,14 @@ export interface PanelDef<S, P = unknown> {
|
|
|
170
172
|
/** The room the panel has: the columns left beside the rail, and `AppOptions.panelRows`. */
|
|
171
173
|
readonly size: Size;
|
|
172
174
|
}) => ReactNode;
|
|
175
|
+
/** Columns each side and rows top and bottom between the panel's edge and its view. Defaults
|
|
176
|
+
* to 4 and 1; the insets come out of the `size` the view is handed. */
|
|
177
|
+
readonly inset?: {
|
|
178
|
+
readonly x: number;
|
|
179
|
+
readonly y: number;
|
|
180
|
+
};
|
|
181
|
+
/** The panel's background colour. Defaults to `theme.color.raised`; `''` paints none. */
|
|
182
|
+
readonly ground?: string;
|
|
173
183
|
readonly keymap?: readonly {
|
|
174
184
|
readonly key: KeySpec;
|
|
175
185
|
readonly act: string;
|
|
@@ -189,9 +199,9 @@ export interface PanelDef<S, P = unknown> {
|
|
|
189
199
|
*/
|
|
190
200
|
readonly submit?: (state: S, line: string, ctx: ModuleCtx<P>) => S | undefined;
|
|
191
201
|
/**
|
|
192
|
-
* Escape
|
|
193
|
-
*
|
|
194
|
-
*
|
|
202
|
+
* Escape: return a state to stay open with it (abandoning an edit, or stepping back), or
|
|
203
|
+
* undefined to close as usual. A different panel opened here with `ctx.open` replaces this one
|
|
204
|
+
* rather than being closed with it.
|
|
195
205
|
*/
|
|
196
206
|
readonly escape?: (state: S, ctx: ModuleCtx<P>) => S | undefined;
|
|
197
207
|
/**
|
|
@@ -204,6 +214,12 @@ export interface PanelDef<S, P = unknown> {
|
|
|
204
214
|
* printable single-character key in `keymap`.
|
|
205
215
|
*/
|
|
206
216
|
readonly mask?: boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Typed text the keymap does not bind: a printable key, or a pasted chunk whole. Without it such
|
|
219
|
+
* keys are ignored. Not for a panel that keeps the draft live (`confirm`, `submit`), where they
|
|
220
|
+
* edit the line. Return the next state, or undefined to keep it.
|
|
221
|
+
*/
|
|
222
|
+
readonly text?: (state: S, text: string, ctx: ModuleCtx<P>) => S | undefined;
|
|
207
223
|
/** act -> handler. Returning a state replaces the panel's state. */
|
|
208
224
|
readonly on?: Readonly<Record<string, (state: S, ctx: ModuleCtx<P>) => S | undefined>>;
|
|
209
225
|
}
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_GROUND } from "@mnmal-ai/surface-theme";
|
|
2
|
+
import { filterRows } from "@mnmal-ai/surface-kit/list";
|
|
2
3
|
|
|
3
4
|
//#region src/complete.ts
|
|
4
5
|
const TIMEOUT_MS = 150;
|
|
@@ -179,7 +180,6 @@ function composeModules(modules) {
|
|
|
179
180
|
confirmed.add(c.key);
|
|
180
181
|
if (def.on?.[c.act] === void 0) problems.push(`${key} confirms '${c.key}' with act '${c.act}', which it has no handler for`);
|
|
181
182
|
}
|
|
182
|
-
if (def.escape !== void 0 && def.submit === void 0) problems.push(`${key} handles escape without submit, which only an input panel may`);
|
|
183
183
|
if (def.mask === true && def.submit === void 0) problems.push(`${key} masks its input without submit, which only an input panel may`);
|
|
184
184
|
if (def.mask === true && (def.confirm?.length ?? 0) > 0) problems.push(`${key} masks its input but declares confirm keys, which would arm on a secret's characters`);
|
|
185
185
|
if (def.mask === true) {
|
|
@@ -605,7 +605,16 @@ function resolveKey(state, key, registry) {
|
|
|
605
605
|
const spec = keySpecOf(key);
|
|
606
606
|
const focused = state.overlay === null ? void 0 : registry.panels.get(`${state.overlay.module}/${state.overlay.panel}`);
|
|
607
607
|
const live = (focused?.def.confirm?.length ?? 0) > 0 || focused?.def.submit !== void 0;
|
|
608
|
-
|
|
608
|
+
const takesText = (text) => state.overlay !== null && !live && focused?.def.text !== void 0 ? {
|
|
609
|
+
kind: "panel-text",
|
|
610
|
+
module: state.overlay.module,
|
|
611
|
+
panel: state.overlay.panel,
|
|
612
|
+
text
|
|
613
|
+
} : null;
|
|
614
|
+
if (spec === null) {
|
|
615
|
+
if (state.menu !== null || state.overlay === null || live) return { kind: "edit" };
|
|
616
|
+
return takesText(key.input) ?? { kind: "ignore" };
|
|
617
|
+
}
|
|
609
618
|
if (spec === "ctrl+c") return { kind: "exit-chord" };
|
|
610
619
|
if (state.menu !== null) {
|
|
611
620
|
if (spec === "up") return {
|
|
@@ -647,7 +656,7 @@ function resolveKey(state, key, registry) {
|
|
|
647
656
|
module: g.module,
|
|
648
657
|
key: spec
|
|
649
658
|
};
|
|
650
|
-
if (!live) return { kind: "ignore" };
|
|
659
|
+
if (!live) return ([...spec].length === 1 ? takesText(key.input) : null) ?? { kind: "ignore" };
|
|
651
660
|
if (spec === "enter") {
|
|
652
661
|
const armed = focused?.def.confirm?.find((c) => c.key === state.armed);
|
|
653
662
|
return armed === void 0 ? { kind: "submit" } : {
|
|
@@ -1060,6 +1069,138 @@ function dropGaps(t) {
|
|
|
1060
1069
|
};
|
|
1061
1070
|
}
|
|
1062
1071
|
|
|
1072
|
+
//#endregion
|
|
1073
|
+
//#region src/list-pager-state.ts
|
|
1074
|
+
const listStep = (list, hooks) => ({
|
|
1075
|
+
kind: "list",
|
|
1076
|
+
list,
|
|
1077
|
+
hooks,
|
|
1078
|
+
page: 0,
|
|
1079
|
+
cursor: 0,
|
|
1080
|
+
filter: "",
|
|
1081
|
+
filtering: false,
|
|
1082
|
+
size: 1
|
|
1083
|
+
});
|
|
1084
|
+
let tokens = 0;
|
|
1085
|
+
const fresh = () => {
|
|
1086
|
+
tokens += 1;
|
|
1087
|
+
return tokens;
|
|
1088
|
+
};
|
|
1089
|
+
const pagerAt = (list, hooks) => ({
|
|
1090
|
+
steps: [listStep(list, hooks)],
|
|
1091
|
+
token: fresh()
|
|
1092
|
+
});
|
|
1093
|
+
const top = (s) => s.steps[s.steps.length - 1];
|
|
1094
|
+
const withTop = (s, step) => ({
|
|
1095
|
+
...s,
|
|
1096
|
+
steps: [...s.steps.slice(0, -1), step]
|
|
1097
|
+
});
|
|
1098
|
+
const onList = (s, fn) => {
|
|
1099
|
+
const t = top(s);
|
|
1100
|
+
return t?.kind === "list" ? withTop(s, fn(t)) : s;
|
|
1101
|
+
};
|
|
1102
|
+
const push = (s, step) => ({
|
|
1103
|
+
steps: [...s.steps, step],
|
|
1104
|
+
token: fresh()
|
|
1105
|
+
});
|
|
1106
|
+
/** Where the cursor's row falls at page size `per`, whatever size it was last moved with. */
|
|
1107
|
+
function placement(l, per) {
|
|
1108
|
+
const at = l.page * l.size + l.cursor;
|
|
1109
|
+
return {
|
|
1110
|
+
page: Math.floor(at / per),
|
|
1111
|
+
cursor: at % per
|
|
1112
|
+
};
|
|
1113
|
+
}
|
|
1114
|
+
/** The list's rows as the filter leaves them. */
|
|
1115
|
+
const visibleRows = (l) => filterRows(l.list.rows, l.filter);
|
|
1116
|
+
/** The highlighted row, or the open detail's row; undefined when the filter matches nothing. */
|
|
1117
|
+
function cursorRow(s) {
|
|
1118
|
+
const t = top(s);
|
|
1119
|
+
if (t === void 0) return void 0;
|
|
1120
|
+
if (t.kind !== "list") return t.row;
|
|
1121
|
+
return visibleRows(t)[t.page * t.size + t.cursor];
|
|
1122
|
+
}
|
|
1123
|
+
/** ↑↓: one row, walking onto the next or previous page at an edge; stops at either end. */
|
|
1124
|
+
function move(s, delta, pageSize) {
|
|
1125
|
+
return onList(s, (l) => {
|
|
1126
|
+
const n = visibleRows(l).length;
|
|
1127
|
+
if (n === 0) return {
|
|
1128
|
+
...l,
|
|
1129
|
+
size: pageSize
|
|
1130
|
+
};
|
|
1131
|
+
const at = Math.min(Math.max(0, l.page * l.size + l.cursor + delta), n - 1);
|
|
1132
|
+
return {
|
|
1133
|
+
...l,
|
|
1134
|
+
page: Math.floor(at / pageSize),
|
|
1135
|
+
cursor: at % pageSize,
|
|
1136
|
+
size: pageSize
|
|
1137
|
+
};
|
|
1138
|
+
});
|
|
1139
|
+
}
|
|
1140
|
+
/** ←→: a page, the cursor on its first row; stays on the first or last page. */
|
|
1141
|
+
function turn(s, delta, pageSize) {
|
|
1142
|
+
return onList(s, (l) => {
|
|
1143
|
+
const pages = Math.max(1, Math.ceil(visibleRows(l).length / pageSize));
|
|
1144
|
+
const { page } = placement(l, pageSize);
|
|
1145
|
+
return {
|
|
1146
|
+
...l,
|
|
1147
|
+
page: Math.min(Math.max(0, page + delta), pages - 1),
|
|
1148
|
+
cursor: 0,
|
|
1149
|
+
size: pageSize
|
|
1150
|
+
};
|
|
1151
|
+
});
|
|
1152
|
+
}
|
|
1153
|
+
const startFilter = (s) => onList(s, (l) => ({
|
|
1154
|
+
...l,
|
|
1155
|
+
filtering: true
|
|
1156
|
+
}));
|
|
1157
|
+
/** While filtering: the character joins the filter, and the list starts again from its top. */
|
|
1158
|
+
const typeChar = (s, ch) => onList(s, (l) => l.filtering ? {
|
|
1159
|
+
...l,
|
|
1160
|
+
filter: l.filter + ch,
|
|
1161
|
+
page: 0,
|
|
1162
|
+
cursor: 0
|
|
1163
|
+
} : l);
|
|
1164
|
+
const backspace = (s) => onList(s, (l) => l.filtering ? {
|
|
1165
|
+
...l,
|
|
1166
|
+
filter: [...l.filter].slice(0, -1).join(""),
|
|
1167
|
+
page: 0,
|
|
1168
|
+
cursor: 0
|
|
1169
|
+
} : l);
|
|
1170
|
+
/** Enter while filtering: keep the filter, stop typing into it. */
|
|
1171
|
+
const endFilter = (s) => onList(s, (l) => ({
|
|
1172
|
+
...l,
|
|
1173
|
+
filtering: false
|
|
1174
|
+
}));
|
|
1175
|
+
/**
|
|
1176
|
+
* Esc: filtering → the filter cleared; a detail or a related list → the step before it, where it
|
|
1177
|
+
* was left; the first list with a filter kept → the filter cleared; otherwise undefined (close).
|
|
1178
|
+
*/
|
|
1179
|
+
function back(s) {
|
|
1180
|
+
const t = top(s);
|
|
1181
|
+
if (t === void 0) return void 0;
|
|
1182
|
+
if (t.kind === "list" && (t.filtering || t.filter !== "")) return withTop(s, {
|
|
1183
|
+
...t,
|
|
1184
|
+
filter: "",
|
|
1185
|
+
filtering: false,
|
|
1186
|
+
page: 0,
|
|
1187
|
+
cursor: 0
|
|
1188
|
+
});
|
|
1189
|
+
if (s.steps.length > 1) return {
|
|
1190
|
+
steps: s.steps.slice(0, -1),
|
|
1191
|
+
token: fresh()
|
|
1192
|
+
};
|
|
1193
|
+
}
|
|
1194
|
+
/** ↑↓ on a detail: scroll between 0 and `maxScroll`. */
|
|
1195
|
+
function scrollDetail(s, delta, maxScroll) {
|
|
1196
|
+
const t = top(s);
|
|
1197
|
+
if (t?.kind !== "detail") return s;
|
|
1198
|
+
return withTop(s, {
|
|
1199
|
+
...t,
|
|
1200
|
+
scroll: Math.min(Math.max(0, t.scroll + delta), Math.max(0, maxScroll))
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1063
1204
|
//#endregion
|
|
1064
1205
|
//#region src/module.ts
|
|
1065
1206
|
const MODULE_ID = /^[a-z][a-z0-9-]*(\.[a-z][a-z0-9-]*)*$/;
|
|
@@ -1099,4 +1240,4 @@ function setPanel(o, kind, next) {
|
|
|
1099
1240
|
}
|
|
1100
1241
|
|
|
1101
1242
|
//#endregion
|
|
1102
|
-
export {
|
|
1243
|
+
export { parseCommandLine as $, RESET_GROUND as A, normaliseKeySpec as At, sanitise as B, emptyTranscript as C, wordLeft as Ct, CLEAR_PANE as D, RESERVED_GLOBAL_KEYS as Dt, sendTurn as E, CompositionError as Et, liveShrink as F, commandUsage as G, unavailableReason as H, prepareSequence as I, menuWindow as J, completeDraft as K, prepareTerminal as L, WHEEL_ARROWS_ON as M, mergeCompletions as Mt, anchorPadding as N, DEFAULT_GROUND as O, assertComposes as Ot, groundSequence as P, paletteRows as Q, reflowSequence as R, dropGaps as S, pasteToLine as St, markedFlights as T, applyInput as Tt, MENU_NAME_WIDTH as U, routeInput as V, clampSelection as W, paletteMatches as X, moveSelection as Y, paletteQuery as Z, visibleRows as _, atEnd as _t, backspace as a, remember as at, arriveTurn as b, insertChunk as bt, listStep as c, FOLLOWING as ct, placement as d, resolveFullscreen as dt, keySpecOf as et, push as f, scrollBy as ft, typeChar as g, EMPTY_DRAFT as gt, turn as h, ctrlC as ht, back as i, mayWalk as it, WHEEL_ARROWS_OFF as j, applySuggestion as jt, REPRINT_LINES as k, composeModules as kt, move as l, linesBelow as lt, startFilter as m, CTRL_C_WINDOW_MS as mt, setPanel as n, EMPTY_HISTORY as nt, cursorRow as o, settle as ot, scrollDetail as p, viewTop as pt, enterRuns as q, defineModule as r, HISTORY_MAX as rt, endFilter as s, walk as st, panelOf as t, resolveKey as tt, pagerAt as u, pageStep as ut, addGap as v, editKey as vt, heldAsks as w, wordRight as wt, commitEntry as x, maskDraft as xt, answerEntry as y, graphemeAt as yt, reprintStart as z };
|
package/dist/pure.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export { FOLLOWING, linesBelow, pageStep, resolveFullscreen, type Scroll, scroll
|
|
|
7
7
|
export { EMPTY_HISTORY, HISTORY_MAX, type HistoryState, mayWalk, remember, settle, walk } from './history.js';
|
|
8
8
|
export { normaliseKeySpec } from './key-spec.js';
|
|
9
9
|
export { type KeyState, keySpecOf, type Route, resolveKey } from './keys.js';
|
|
10
|
+
export { back, backspace, cursorRow, type DetailStep, endFilter, type ListDetail, type ListHooks, type ListStep, listStep, move, type PagerState, pagerAt, placement, push, type RelatedLoadingStep, type Step, scrollDetail, startFilter, turn, typeChar, visibleRows } from './list-pager-state.js';
|
|
10
11
|
export { type ArgSpec, type Armed, type Chip, type CommandSpec, type Completer, type ConfirmBinding, defineModule, type GlobalBinding, type Key, type KeySpec, type ModuleCtx, type ModuleSpec, type PanelDef, type PresenceSpec, type RailItem, type Renderer, type Reply, type Size, type SubmitOptions, type Suggestion, type TuiEvents, type TuiModule, type TurnContext, type TurnHandler, type TurnPhase, type TurnUpdate } from './module.js';
|
|
11
12
|
export { type Overlay, panelOf, setPanel } from './overlay.js';
|
|
12
13
|
export { clampSelection, commandUsage, completeDraft, enterRuns, MENU_NAME_WIDTH, menuWindow, moveSelection, type PaletteRow, paletteMatches, paletteQuery, paletteRows, parseCommandLine } from './palette.js';
|
package/dist/pure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../src/pure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,EACL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,KAAK,MAAM,EACX,QAAQ,EACR,OAAO,EACR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,YAAY,EACjB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,EACL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,aAAa,EACb,KAAK,UAAU,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,KAAK,WAAW,EAChB,UAAU,EACV,KAAK,sBAAsB,EAC3B,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,gBAAgB,EAChB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,EACX,KAAK,KAAK,EACV,eAAe,EACf,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,QAAQ,EACR,aAAa,EACb,KAAK,SAAS,EACd,QAAQ,EACR,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../src/pure.ts"],"names":[],"mappings":"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"}
|
package/dist/pure.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as parseCommandLine, A as RESET_GROUND, At as normaliseKeySpec, B as sanitise, C as emptyTranscript, Ct as wordLeft, D as CLEAR_PANE, Dt as RESERVED_GLOBAL_KEYS, E as sendTurn, Et as CompositionError, F as liveShrink, G as commandUsage, I as prepareSequence, J as menuWindow, K as completeDraft, L as prepareTerminal, M as WHEEL_ARROWS_ON, Mt as mergeCompletions, N as anchorPadding, O as DEFAULT_GROUND, Ot as assertComposes, P as groundSequence, Q as paletteRows, R as reflowSequence, St as pasteToLine, T as markedFlights, Tt as applyInput, U as MENU_NAME_WIDTH, V as routeInput, W as clampSelection, X as paletteMatches, Y as moveSelection, Z as paletteQuery, _ as visibleRows, _t as atEnd, a as backspace, at as remember, b as arriveTurn, bt as insertChunk, c as listStep, ct as FOLLOWING, d as placement, dt as resolveFullscreen, et as keySpecOf, f as push, ft as scrollBy, g as typeChar, gt as EMPTY_DRAFT, h as turn, ht as ctrlC, i as back, it as mayWalk, j as WHEEL_ARROWS_OFF, jt as applySuggestion, kt as composeModules, l as move, lt as linesBelow, m as startFilter, mt as CTRL_C_WINDOW_MS, n as setPanel, nt as EMPTY_HISTORY, o as cursorRow, ot as settle, p as scrollDetail, pt as viewTop, q as enterRuns, r as defineModule, rt as HISTORY_MAX, s as endFilter, st as walk, t as panelOf, tt as resolveKey, u as pagerAt, ut as pageStep, v as addGap, vt as editKey, w as heldAsks, wt as wordRight, x as commitEntry, xt as maskDraft, y as answerEntry } from "./overlay-5s8slC38.js";
|
|
2
2
|
|
|
3
|
-
export { CLEAR_PANE, CTRL_C_WINDOW_MS, CompositionError, DEFAULT_GROUND, EMPTY_DRAFT, EMPTY_HISTORY, FOLLOWING, HISTORY_MAX, MENU_NAME_WIDTH, RESERVED_GLOBAL_KEYS, RESET_GROUND, WHEEL_ARROWS_OFF, WHEEL_ARROWS_ON, addGap, anchorPadding, answerEntry, applyInput, applySuggestion, arriveTurn, assertComposes, atEnd, clampSelection, commandUsage, commitEntry, completeDraft, composeModules, ctrlC, defineModule, editKey, emptyTranscript, enterRuns, groundSequence, heldAsks, insertChunk, keySpecOf, linesBelow, liveShrink, markedFlights, maskDraft, mayWalk, menuWindow, mergeCompletions, moveSelection, normaliseKeySpec, pageStep, paletteMatches, paletteQuery, paletteRows, panelOf, parseCommandLine, pasteToLine, prepareSequence, prepareTerminal, reflowSequence, remember, resolveFullscreen, resolveKey, routeInput, sanitise, scrollBy, sendTurn, setPanel, settle, viewTop, walk, wordLeft, wordRight };
|
|
3
|
+
export { CLEAR_PANE, CTRL_C_WINDOW_MS, CompositionError, DEFAULT_GROUND, EMPTY_DRAFT, EMPTY_HISTORY, FOLLOWING, HISTORY_MAX, MENU_NAME_WIDTH, RESERVED_GLOBAL_KEYS, RESET_GROUND, WHEEL_ARROWS_OFF, WHEEL_ARROWS_ON, addGap, anchorPadding, answerEntry, applyInput, applySuggestion, arriveTurn, assertComposes, atEnd, back, backspace, clampSelection, commandUsage, commitEntry, completeDraft, composeModules, ctrlC, cursorRow, defineModule, editKey, emptyTranscript, endFilter, enterRuns, groundSequence, heldAsks, insertChunk, keySpecOf, linesBelow, listStep, liveShrink, markedFlights, maskDraft, mayWalk, menuWindow, mergeCompletions, move, moveSelection, normaliseKeySpec, pageStep, pagerAt, paletteMatches, paletteQuery, paletteRows, panelOf, parseCommandLine, pasteToLine, placement, prepareSequence, prepareTerminal, push, reflowSequence, remember, resolveFullscreen, resolveKey, routeInput, sanitise, scrollBy, scrollDetail, sendTurn, setPanel, settle, startFilter, turn, typeChar, viewTop, visibleRows, walk, wordLeft, wordRight };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnmal-ai/surface-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Pluggable terminal UI base on Ink 8 + React 19: module registry, createApp, the turn engine and the shell.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"dist"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@mnmal-ai/surface-kit": "0.
|
|
27
|
-
"@mnmal-ai/surface-theme": "0.
|
|
26
|
+
"@mnmal-ai/surface-kit": "0.17.0",
|
|
27
|
+
"@mnmal-ai/surface-theme": "0.17.0"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"ink": "^8.0.0",
|