@code-yeongyu/senpi-tui 2026.9.12 → 2026.9.13-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +61 -4
  2. package/dist/alt-screen-search.d.ts +21 -1
  3. package/dist/alt-screen-search.d.ts.map +1 -1
  4. package/dist/alt-screen-search.js +199 -42
  5. package/dist/alt-screen-search.js.map +1 -1
  6. package/dist/components/box.d.ts +3 -1
  7. package/dist/components/box.d.ts.map +1 -1
  8. package/dist/components/box.js +28 -0
  9. package/dist/components/box.js.map +1 -1
  10. package/dist/components/editor.d.ts +6 -1
  11. package/dist/components/editor.d.ts.map +1 -1
  12. package/dist/components/editor.js +98 -18
  13. package/dist/components/editor.js.map +1 -1
  14. package/dist/components/input.d.ts +12 -1
  15. package/dist/components/input.d.ts.map +1 -1
  16. package/dist/components/input.js +40 -6
  17. package/dist/components/input.js.map +1 -1
  18. package/dist/components/latex.d.ts.map +1 -1
  19. package/dist/components/latex.js +7 -0
  20. package/dist/components/latex.js.map +1 -1
  21. package/dist/components/loader.d.ts +3 -0
  22. package/dist/components/loader.d.ts.map +1 -1
  23. package/dist/components/loader.js +20 -8
  24. package/dist/components/loader.js.map +1 -1
  25. package/dist/components/mouse-region.d.ts +12 -0
  26. package/dist/components/mouse-region.d.ts.map +1 -0
  27. package/dist/components/mouse-region.js +19 -0
  28. package/dist/components/mouse-region.js.map +1 -0
  29. package/dist/components/scroll-view.d.ts +6 -3
  30. package/dist/components/scroll-view.d.ts.map +1 -1
  31. package/dist/components/scroll-view.js +6 -1
  32. package/dist/components/scroll-view.js.map +1 -1
  33. package/dist/components/select-list.d.ts +4 -1
  34. package/dist/components/select-list.d.ts.map +1 -1
  35. package/dist/components/select-list.js +48 -2
  36. package/dist/components/select-list.js.map +1 -1
  37. package/dist/components/settings-list.d.ts +5 -1
  38. package/dist/components/settings-list.d.ts.map +1 -1
  39. package/dist/components/settings-list.js +54 -5
  40. package/dist/components/settings-list.js.map +1 -1
  41. package/dist/index.d.ts +5 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/layout.d.ts +3 -1
  46. package/dist/layout.d.ts.map +1 -1
  47. package/dist/layout.js +32 -9
  48. package/dist/layout.js.map +1 -1
  49. package/dist/mouse-input.d.ts +37 -0
  50. package/dist/mouse-input.d.ts.map +1 -0
  51. package/dist/mouse-input.js +97 -0
  52. package/dist/mouse-input.js.map +1 -0
  53. package/dist/native-modifiers.d.ts +2 -1
  54. package/dist/native-modifiers.d.ts.map +1 -1
  55. package/dist/native-modifiers.js +3 -44
  56. package/dist/native-modifiers.js.map +1 -1
  57. package/dist/native-platform.d.ts +18 -0
  58. package/dist/native-platform.d.ts.map +1 -0
  59. package/dist/native-platform.js +42 -0
  60. package/dist/native-platform.js.map +1 -0
  61. package/dist/stdin-buffer.d.ts +2 -0
  62. package/dist/stdin-buffer.d.ts.map +1 -1
  63. package/dist/stdin-buffer.js +38 -0
  64. package/dist/stdin-buffer.js.map +1 -1
  65. package/dist/terminal.d.ts +25 -1
  66. package/dist/terminal.d.ts.map +1 -1
  67. package/dist/terminal.js +112 -24
  68. package/dist/terminal.js.map +1 -1
  69. package/dist/tui-alt-screen.d.ts +31 -1
  70. package/dist/tui-alt-screen.d.ts.map +1 -1
  71. package/dist/tui-alt-screen.js +327 -78
  72. package/dist/tui-alt-screen.js.map +1 -1
  73. package/dist/tui-main-screen.d.ts +12 -0
  74. package/dist/tui-main-screen.d.ts.map +1 -1
  75. package/dist/tui-main-screen.js +129 -3
  76. package/dist/tui-main-screen.js.map +1 -1
  77. package/dist/tui.d.ts +111 -5
  78. package/dist/tui.d.ts.map +1 -1
  79. package/dist/tui.js +278 -4
  80. package/dist/tui.js.map +1 -1
  81. package/dist/utils.d.ts +2 -0
  82. package/dist/utils.d.ts.map +1 -1
  83. package/dist/utils.js +9 -0
  84. package/dist/utils.js.map +1 -1
  85. package/native/clipboard.h +170 -0
  86. package/native/darwin/README.md +8 -6
  87. package/native/darwin/build.sh +12 -5
  88. package/native/darwin/prebuilds/darwin-arm64/{darwin-modifiers.node → darwin-platform.node} +0 -0
  89. package/native/darwin/prebuilds/darwin-x64/{darwin-modifiers.node → darwin-platform.node} +0 -0
  90. package/native/darwin/src/darwin-platform.m +93 -0
  91. package/native/linux/README.md +23 -0
  92. package/native/linux/build.sh +65 -0
  93. package/native/linux/prebuilds/linux-arm64/linux-platform-x11.node +0 -0
  94. package/native/linux/prebuilds/linux-x64/linux-platform-x11.node +0 -0
  95. package/native/linux/src/clipboard-worker.h +70 -0
  96. package/native/linux/src/linux-platform-x11.c +274 -0
  97. package/native/napi.h +89 -0
  98. package/native/win32/README.md +18 -7
  99. package/native/win32/build.mjs +7 -4
  100. package/native/win32/prebuilds/win32-arm64/win32-platform.node +0 -0
  101. package/native/win32/prebuilds/win32-x64/win32-platform.node +0 -0
  102. package/native/win32/src/win32-platform.c +241 -0
  103. package/package.json +10 -3
  104. package/native/darwin/src/darwin-modifiers.c +0 -70
  105. package/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  106. package/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  107. package/native/win32/src/win32-console-mode.c +0 -119
@@ -1,10 +1,136 @@
1
+ import { isMouseSequence, MOUSE_TRACKING, MouseClickSynthesizer, parseSgrMouseEvent, toTuiMouseEvent, } from "./mouse-input.js";
1
2
  import { isImageLine } from "./terminal-image.js";
2
- import { TuiBase } from "./tui.js";
3
+ import { Container, dispatchMouseEvent, retargetMouseEvent, TuiBase, } from "./tui.js";
3
4
  /** TUI implementation that renders into the terminal's main screen and scrollback. */
4
5
  export class TuiMainScreen extends TuiBase {
5
- constructor() {
6
- super(...arguments);
6
+ constructor(...args) {
7
+ super(...args);
7
8
  this.mode = "regular";
9
+ this.trackingEnabled = false;
10
+ this.clicks = new MouseClickSynthesizer();
11
+ this.layoutRevision = 0;
12
+ this.committedMouseLines = [];
13
+ this.committedMouseComponents = [];
14
+ this.addInputListener((data) => this.handleMouseInput(data));
15
+ }
16
+ applyMouseTracking(enabled) {
17
+ const supported = Boolean(process.stdout.isTTY) &&
18
+ !process.env.TERMUX_VERSION &&
19
+ (process.platform !== "win32" || Boolean(process.env.WT_SESSION));
20
+ const next = enabled && supported && !this.stopped;
21
+ this.clicks.cancel();
22
+ this.mousePress = undefined;
23
+ if (this.trackingEnabled === next)
24
+ return;
25
+ this.trackingEnabled = next;
26
+ this.terminal.write(next ? MOUSE_TRACKING.inline : MOUSE_TRACKING.disable);
27
+ }
28
+ beforeTerminalStop() {
29
+ this.terminal.write(MOUSE_TRACKING.disable);
30
+ this.trackingEnabled = false;
31
+ this.clicks.cancel();
32
+ this.mousePress = undefined;
33
+ }
34
+ doRender() {
35
+ if (this.stopped)
36
+ return;
37
+ if (this.mouseExternalWritePending) {
38
+ // CPR locates the cursor, not an old frame displaced by arbitrary output.
39
+ // Append a new working frame without erasing diagnostics or scrollback.
40
+ this.mouseExternalWritePending = false;
41
+ this.terminal.write("\r\n");
42
+ this.restoreRenderState({
43
+ previousLines: [],
44
+ previousWidth: 0,
45
+ previousHeight: 0,
46
+ cursorRow: 0,
47
+ hardwareCursorRow: 0,
48
+ maxLinesRendered: 0,
49
+ previousViewportTop: 0,
50
+ });
51
+ }
52
+ super.doRender();
53
+ this.noteCommittedMouseFrame();
54
+ const components = [];
55
+ const visit = (component) => {
56
+ components.push(component);
57
+ if (component instanceof Container)
58
+ for (const child of component.children)
59
+ visit(child);
60
+ };
61
+ for (const root of this.getMouseLayoutRoots())
62
+ visit(root);
63
+ if (this.previousLines.length !== this.committedMouseLines.length ||
64
+ this.previousLines.some((line, index) => line !== this.committedMouseLines[index]) ||
65
+ components.length !== this.committedMouseComponents.length ||
66
+ components.some((component, index) => component !== this.committedMouseComponents[index])) {
67
+ this.layoutRevision++;
68
+ }
69
+ this.committedMouseLines = [...this.previousLines];
70
+ this.committedMouseComponents = components;
71
+ this.calibrateMouseAnchor();
72
+ }
73
+ applyMouseResult(result) {
74
+ if (result?.focus)
75
+ this.setFocus(this.resolveMouseFocusTarget(result.focusTarget ?? result.target.component));
76
+ }
77
+ handleMouseInput(data) {
78
+ if (!isMouseSequence(data))
79
+ return { consume: false };
80
+ const raw = parseSgrMouseEvent(data);
81
+ if (!this.trackingEnabled || !raw || raw.button !== 0) {
82
+ this.clicks.cancel();
83
+ this.mousePress = undefined;
84
+ return { consume: true };
85
+ }
86
+ const frameLine = this.resolveFrameLine(raw.y + 1);
87
+ if (frameLine === undefined || raw.x >= this.terminal.columns) {
88
+ this.clicks.cancel();
89
+ this.mousePress = undefined;
90
+ return { consume: true };
91
+ }
92
+ const event = toTuiMouseEvent(raw.release ? "release" : "press", raw, this.terminal);
93
+ if (!raw.release) {
94
+ const overlay = this.dispatchMouseToOverlay(event);
95
+ const result = overlay.result ??
96
+ (overlay.hit
97
+ ? undefined
98
+ : dispatchMouseEvent(this, { ...event, y: frameLine, height: this.previousLines.length }));
99
+ this.mousePress = undefined;
100
+ if (result) {
101
+ this.applyMouseResult(result);
102
+ this.mousePress = {
103
+ target: result.target,
104
+ epoch: this.placementEpoch,
105
+ revision: this.layoutRevision,
106
+ x: raw.x,
107
+ y: raw.y,
108
+ };
109
+ this.clicks.press(raw, result.target.component, this.placementEpoch);
110
+ }
111
+ else
112
+ this.clicks.cancel();
113
+ this.requestRender();
114
+ }
115
+ else {
116
+ const press = this.mousePress;
117
+ this.mousePress = undefined;
118
+ if (!press ||
119
+ press.epoch !== this.placementEpoch ||
120
+ press.revision !== this.layoutRevision ||
121
+ press.x !== raw.x ||
122
+ press.y !== raw.y) {
123
+ this.clicks.cancel();
124
+ return { consume: true };
125
+ }
126
+ const count = this.clicks.release(raw, press.target.component, this.placementEpoch);
127
+ if (count !== undefined) {
128
+ const click = { ...event, type: "click", clickCount: count };
129
+ this.applyMouseResult(dispatchMouseEvent(press.target.component, retargetMouseEvent(click, press.target)));
130
+ this.requestRender();
131
+ }
132
+ }
133
+ return { consume: true };
8
134
  }
9
135
  captureRenderState() {
10
136
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"tui-main-screen.js","sourceRoot":"","sources":["../src/tui-main-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAYnC,sFAAsF;AACtF,MAAM,OAAO,aAAc,SAAQ,OAAO;IAA1C;;QACU,SAAI,GAAG,SAAkB,CAAC;IAwBpC,CAAC;IAtBA,kBAAkB;QACjB,OAAO;YACN,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC7C,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,KAA+B;QACjD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACtD,CAAC;CACD","sourcesContent":["import { isImageLine } from \"./terminal-image.ts\";\nimport { TuiBase } from \"./tui.ts\";\n\nexport interface TuiMainScreenRenderState {\n\tpreviousLines: string[];\n\tpreviousWidth: number;\n\tpreviousHeight: number;\n\tcursorRow: number;\n\thardwareCursorRow: number;\n\tmaxLinesRendered: number;\n\tpreviousViewportTop: number;\n}\n\n/** TUI implementation that renders into the terminal's main screen and scrollback. */\nexport class TuiMainScreen extends TuiBase {\n\treadonly mode = \"regular\" as const;\n\n\tcaptureRenderState(): TuiMainScreenRenderState {\n\t\treturn {\n\t\t\tpreviousLines: [...this.previousLines],\n\t\t\tpreviousWidth: this.previousWidth,\n\t\t\tpreviousHeight: this.previousHeight,\n\t\t\tcursorRow: this.cursorRow,\n\t\t\thardwareCursorRow: this.hardwareCursorRow,\n\t\t\tmaxLinesRendered: this.maxLinesRendered,\n\t\t\tpreviousViewportTop: this.previousViewportTop,\n\t\t};\n\t}\n\n\trestoreRenderState(state: TuiMainScreenRenderState): void {\n\t\tthis.previousLines = state.previousLines.map((line) => (isImageLine(line) ? \"\" : line));\n\t\tthis.previousKittyImageIds = new Set();\n\t\tthis.previousWidth = state.previousWidth;\n\t\tthis.previousHeight = state.previousHeight;\n\t\tthis.cursorRow = state.cursorRow;\n\t\tthis.hardwareCursorRow = state.hardwareCursorRow;\n\t\tthis.maxLinesRendered = state.maxLinesRendered;\n\t\tthis.previousViewportTop = state.previousViewportTop;\n\t}\n}\n"]}
1
+ {"version":3,"file":"tui-main-screen.js","sourceRoot":"","sources":["../src/tui-main-screen.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tisMouseSequence,\n\tMOUSE_TRACKING,\n\tMouseClickSynthesizer,\n\tparseSgrMouseEvent,\n\ttoTuiMouseEvent,\n} from \"./mouse-input.ts\";\nimport { isImageLine } from \"./terminal-image.ts\";\nimport {\n\ttype Component,\n\tContainer,\n\tdispatchMouseEvent,\n\tretargetMouseEvent,\n\tTuiBase,\n\ttype TuiMouseDispatchResult,\n\ttype TuiMouseDispatchTarget,\n\ttype TuiMouseEvent,\n} from \"./tui.ts\";\n\nexport interface TuiMainScreenRenderState {\n\tpreviousLines: string[];\n\tpreviousWidth: number;\n\tpreviousHeight: number;\n\tcursorRow: number;\n\thardwareCursorRow: number;\n\tmaxLinesRendered: number;\n\tpreviousViewportTop: number;\n}\n\n/** TUI implementation that renders into the terminal's main screen and scrollback. */\nexport class TuiMainScreen extends TuiBase {\n\treadonly mode = \"regular\" as const;\n\tprivate trackingEnabled = false;\n\tprivate readonly clicks = new MouseClickSynthesizer();\n\tprivate mousePress?: { target: TuiMouseDispatchTarget; epoch: number; revision: number; x: number; y: number };\n\tprivate layoutRevision = 0;\n\tprivate committedMouseLines: string[] = [];\n\tprivate committedMouseComponents: Component[] = [];\n\n\tconstructor(...args: ConstructorParameters<typeof TuiBase>) {\n\t\tsuper(...args);\n\t\tthis.addInputListener((data) => this.handleMouseInput(data));\n\t}\n\n\tprotected override applyMouseTracking(enabled: boolean): void {\n\t\tconst supported =\n\t\t\tBoolean(process.stdout.isTTY) &&\n\t\t\t!process.env.TERMUX_VERSION &&\n\t\t\t(process.platform !== \"win32\" || Boolean(process.env.WT_SESSION));\n\t\tconst next = enabled && supported && !this.stopped;\n\t\tthis.clicks.cancel();\n\t\tthis.mousePress = undefined;\n\t\tif (this.trackingEnabled === next) return;\n\t\tthis.trackingEnabled = next;\n\t\tthis.terminal.write(next ? MOUSE_TRACKING.inline : MOUSE_TRACKING.disable);\n\t}\n\n\tprotected override beforeTerminalStop(): void {\n\t\tthis.terminal.write(MOUSE_TRACKING.disable);\n\t\tthis.trackingEnabled = false;\n\t\tthis.clicks.cancel();\n\t\tthis.mousePress = undefined;\n\t}\n\n\tprotected override doRender(): void {\n\t\tif (this.stopped) return;\n\t\tif (this.mouseExternalWritePending) {\n\t\t\t// CPR locates the cursor, not an old frame displaced by arbitrary output.\n\t\t\t// Append a new working frame without erasing diagnostics or scrollback.\n\t\t\tthis.mouseExternalWritePending = false;\n\t\t\tthis.terminal.write(\"\\r\\n\");\n\t\t\tthis.restoreRenderState({\n\t\t\t\tpreviousLines: [],\n\t\t\t\tpreviousWidth: 0,\n\t\t\t\tpreviousHeight: 0,\n\t\t\t\tcursorRow: 0,\n\t\t\t\thardwareCursorRow: 0,\n\t\t\t\tmaxLinesRendered: 0,\n\t\t\t\tpreviousViewportTop: 0,\n\t\t\t});\n\t\t}\n\t\tsuper.doRender();\n\t\tthis.noteCommittedMouseFrame();\n\t\tconst components: Component[] = [];\n\t\tconst visit = (component: Component): void => {\n\t\t\tcomponents.push(component);\n\t\t\tif (component instanceof Container) for (const child of component.children) visit(child);\n\t\t};\n\t\tfor (const root of this.getMouseLayoutRoots()) visit(root);\n\t\tif (\n\t\t\tthis.previousLines.length !== this.committedMouseLines.length ||\n\t\t\tthis.previousLines.some((line, index) => line !== this.committedMouseLines[index]) ||\n\t\t\tcomponents.length !== this.committedMouseComponents.length ||\n\t\t\tcomponents.some((component, index) => component !== this.committedMouseComponents[index])\n\t\t) {\n\t\t\tthis.layoutRevision++;\n\t\t}\n\t\tthis.committedMouseLines = [...this.previousLines];\n\t\tthis.committedMouseComponents = components;\n\t\tthis.calibrateMouseAnchor();\n\t}\n\n\tprivate applyMouseResult(result: TuiMouseDispatchResult | undefined): void {\n\t\tif (result?.focus) this.setFocus(this.resolveMouseFocusTarget(result.focusTarget ?? result.target.component));\n\t}\n\n\tprivate handleMouseInput(data: string): { consume: boolean } {\n\t\tif (!isMouseSequence(data)) return { consume: false };\n\t\tconst raw = parseSgrMouseEvent(data);\n\t\tif (!this.trackingEnabled || !raw || raw.button !== 0) {\n\t\t\tthis.clicks.cancel();\n\t\t\tthis.mousePress = undefined;\n\t\t\treturn { consume: true };\n\t\t}\n\t\tconst frameLine = this.resolveFrameLine(raw.y + 1);\n\t\tif (frameLine === undefined || raw.x >= this.terminal.columns) {\n\t\t\tthis.clicks.cancel();\n\t\t\tthis.mousePress = undefined;\n\t\t\treturn { consume: true };\n\t\t}\n\t\tconst event = toTuiMouseEvent(raw.release ? \"release\" : \"press\", raw, this.terminal);\n\t\tif (!raw.release) {\n\t\t\tconst overlay = this.dispatchMouseToOverlay(event);\n\t\t\tconst result =\n\t\t\t\toverlay.result ??\n\t\t\t\t(overlay.hit\n\t\t\t\t\t? undefined\n\t\t\t\t\t: dispatchMouseEvent(this, { ...event, y: frameLine, height: this.previousLines.length }));\n\t\t\tthis.mousePress = undefined;\n\t\t\tif (result) {\n\t\t\t\tthis.applyMouseResult(result);\n\t\t\t\tthis.mousePress = {\n\t\t\t\t\ttarget: result.target,\n\t\t\t\t\tepoch: this.placementEpoch,\n\t\t\t\t\trevision: this.layoutRevision,\n\t\t\t\t\tx: raw.x,\n\t\t\t\t\ty: raw.y,\n\t\t\t\t};\n\t\t\t\tthis.clicks.press(raw, result.target.component, this.placementEpoch);\n\t\t\t} else this.clicks.cancel();\n\t\t\tthis.requestRender();\n\t\t} else {\n\t\t\tconst press = this.mousePress;\n\t\t\tthis.mousePress = undefined;\n\t\t\tif (\n\t\t\t\t!press ||\n\t\t\t\tpress.epoch !== this.placementEpoch ||\n\t\t\t\tpress.revision !== this.layoutRevision ||\n\t\t\t\tpress.x !== raw.x ||\n\t\t\t\tpress.y !== raw.y\n\t\t\t) {\n\t\t\t\tthis.clicks.cancel();\n\t\t\t\treturn { consume: true };\n\t\t\t}\n\t\t\tconst count = this.clicks.release(raw, press.target.component, this.placementEpoch);\n\t\t\tif (count !== undefined) {\n\t\t\t\tconst click: TuiMouseEvent = { ...event, type: \"click\", clickCount: count };\n\t\t\t\tthis.applyMouseResult(dispatchMouseEvent(press.target.component, retargetMouseEvent(click, press.target)));\n\t\t\t\tthis.requestRender();\n\t\t\t}\n\t\t}\n\t\treturn { consume: true };\n\t}\n\n\tcaptureRenderState(): TuiMainScreenRenderState {\n\t\treturn {\n\t\t\tpreviousLines: [...this.previousLines],\n\t\t\tpreviousWidth: this.previousWidth,\n\t\t\tpreviousHeight: this.previousHeight,\n\t\t\tcursorRow: this.cursorRow,\n\t\t\thardwareCursorRow: this.hardwareCursorRow,\n\t\t\tmaxLinesRendered: this.maxLinesRendered,\n\t\t\tpreviousViewportTop: this.previousViewportTop,\n\t\t};\n\t}\n\n\trestoreRenderState(state: TuiMainScreenRenderState): void {\n\t\tthis.previousLines = state.previousLines.map((line) => (isImageLine(line) ? \"\" : line));\n\t\tthis.previousKittyImageIds = new Set();\n\t\tthis.previousWidth = state.previousWidth;\n\t\tthis.previousHeight = state.previousHeight;\n\t\tthis.cursorRow = state.cursorRow;\n\t\tthis.hardwareCursorRow = state.hardwareCursorRow;\n\t\tthis.maxLinesRendered = state.maxLinesRendered;\n\t\tthis.previousViewportTop = state.previousViewportTop;\n\t}\n}\n"]}
package/dist/tui.d.ts CHANGED
@@ -7,6 +7,64 @@ import { visibleWidth } from "./utils.ts";
7
7
  /**
8
8
  * Component interface - all components must implement this
9
9
  */
10
+ export type TuiMouseEventType = "press" | "release" | "move" | "drag" | "click" | "wheel";
11
+ export type TuiMouseButton = "left" | "middle" | "right" | "none";
12
+ /** Normalized cell-based mouse event. Coordinates are zero-based. */
13
+ export interface TuiMouseEvent {
14
+ type: TuiMouseEventType;
15
+ button: TuiMouseButton;
16
+ /** Coordinates local to the receiving component. */
17
+ x: number;
18
+ y: number;
19
+ /** Absolute terminal coordinates. */
20
+ screenX: number;
21
+ screenY: number;
22
+ /** Current component bounds. */
23
+ width: number;
24
+ height: number;
25
+ shift: boolean;
26
+ alt: boolean;
27
+ ctrl: boolean;
28
+ /** Logical lines. Negative values scroll up. */
29
+ wheelDelta?: number;
30
+ /** Consecutive click count when type is click. */
31
+ clickCount?: number;
32
+ }
33
+ export interface TuiMouseEventResult {
34
+ /** Stop propagation and suppress renderer-level fallback behavior. */
35
+ handled?: boolean;
36
+ /** Route subsequent drag/release events to this component. Implies handled. */
37
+ capture?: boolean;
38
+ /** Give keyboard focus to this component. Implies handled. */
39
+ focus?: boolean;
40
+ /**
41
+ * Explicitly request or suppress a render. Move and release default to false;
42
+ * press, click, drag, and wheel default to true.
43
+ */
44
+ render?: boolean;
45
+ }
46
+ /** Internal target metadata used by containers and alternate-screen dispatch. */
47
+ export interface TuiMouseDispatchTarget {
48
+ component: Component;
49
+ originX: number;
50
+ originY: number;
51
+ width: number;
52
+ height: number;
53
+ }
54
+ /** Result of dispatching to a concrete component. */
55
+ export interface TuiMouseDispatchResult extends TuiMouseEventResult {
56
+ handled: true;
57
+ target: TuiMouseDispatchTarget;
58
+ /** Keyboard focus target, which may be a delegating parent container. */
59
+ focusTarget?: Component;
60
+ }
61
+ /**
62
+ * Dispatch an event to a component and retain the exact target and coordinate
63
+ * transform. Containers use this when forwarding events to nested children.
64
+ */
65
+ export declare function dispatchMouseEvent(component: Component, event: TuiMouseEvent): TuiMouseDispatchResult | undefined;
66
+ /** Recreate local coordinates for a previously dispatched mouse target. */
67
+ export declare function retargetMouseEvent(event: TuiMouseEvent, target: TuiMouseDispatchTarget): TuiMouseEvent;
10
68
  export interface Component {
11
69
  /**
12
70
  * Render the component to lines for the given viewport width
@@ -14,10 +72,10 @@ export interface Component {
14
72
  * @returns Array of strings, each representing a line
15
73
  */
16
74
  render(width: number): string[];
17
- /**
18
- * Optional handler for keyboard input when component has focus
19
- */
75
+ /** Optional handler for keyboard input when component has focus. */
20
76
  handleInput?(data: string): void;
77
+ /** Optional normalized mouse handler. */
78
+ handleMouse?(event: TuiMouseEvent): TuiMouseEventResult | undefined;
21
79
  /**
22
80
  * If true, component receives key release events (Kitty protocol).
23
81
  * Default is false - release events are filtered out.
@@ -123,6 +181,13 @@ export interface OverlayUnfocusOptions {
123
181
  /** Explicit target to focus after releasing this overlay. */
124
182
  target: Component | null;
125
183
  }
184
+ /** Last rendered terminal-relative overlay rectangle. */
185
+ export interface OverlayBounds {
186
+ row: number;
187
+ col: number;
188
+ width: number;
189
+ height: number;
190
+ }
126
191
  /**
127
192
  * Handle returned by showOverlay for controlling the overlay
128
193
  */
@@ -139,6 +204,8 @@ export interface OverlayHandle {
139
204
  unfocus(options?: OverlayUnfocusOptions): void;
140
205
  /** Check if this overlay currently has focus */
141
206
  isFocused(): boolean;
207
+ /** Get the most recent rendered bounds for a visible overlay. */
208
+ getBounds(): OverlayBounds | undefined;
142
209
  }
143
210
  type TuiConstructorOptions = {
144
211
  showHardwareCursor?: boolean;
@@ -150,6 +217,7 @@ type TuiConstructorOptions = {
150
217
  export declare class Container implements Component {
151
218
  children: Component[];
152
219
  private disposed;
220
+ private mouseLayout?;
153
221
  addChild(component: Component): void;
154
222
  removeChild(component: Component): void;
155
223
  detachChild(component: Component): void;
@@ -157,6 +225,7 @@ export declare class Container implements Component {
157
225
  detachAll(): void;
158
226
  dispose(): void;
159
227
  invalidate(): void;
228
+ handleMouse(event: TuiMouseEvent): TuiMouseDispatchResult | undefined;
160
229
  render(width: number): string[];
161
230
  }
162
231
  /** Composite overlay content into a terminal line at a fixed column. */
@@ -211,12 +280,42 @@ export declare abstract class TuiBase extends Container {
211
280
  private pendingOsc11BackgroundQueries;
212
281
  private terminalColorSchemeListeners;
213
282
  private terminalColorSchemeNotificationsEnabled;
283
+ /** Directory for debug/crash logs. The fork keeps a concrete default (`~/.senpi/agent`) so PI_DEBUG_REDRAW and crash dumps stay in the agent directory. */
214
284
  protected readonly logDirectory: string;
215
285
  private focusOrderCounter;
216
286
  private overlayStack;
287
+ private renderedOverlayLayouts;
217
288
  get hasOverlayEntries(): boolean;
218
289
  private overlayFocusRestore;
219
290
  constructor(terminal: Terminal, options?: boolean | TuiConstructorOptions, logDirectory?: string);
291
+ private mouseLeases;
292
+ private mouseBlockers;
293
+ protected placementEpoch: number;
294
+ protected anchor: {
295
+ kind: "unknown" | "cleared" | "viewport" | "cpr";
296
+ frameTopScreenRow?: number;
297
+ epoch: number;
298
+ rows: number;
299
+ columns: number;
300
+ };
301
+ private mouseCommittedLineCount;
302
+ private mouseAnchorPending;
303
+ private mouseWriteUnsubscribe?;
304
+ protected mouseExternalWritePending: boolean;
305
+ /** Host-owned intent. A replacement renderer starts with no leases. */
306
+ acquireMouseCapture(reason: string): () => void;
307
+ private resetMouseCaptureState;
308
+ protected get mouseCaptureEnabled(): boolean;
309
+ protected applyMouseTracking(_enabled: boolean): void;
310
+ protected getMouseLayoutRoots(): readonly Component[];
311
+ protected setMouseBlocker(name: "suspended" | "external-editor" | "shutting-down", on: boolean): void;
312
+ protected noteFullRender(clear: boolean): void;
313
+ /** Called only after the renderer has published its geometry and bytes. */
314
+ protected noteCommittedMouseFrame(): void;
315
+ /** Never block a frame on terminal protocol negotiation or a missing reply. */
316
+ protected calibrateMouseAnchor(): void;
317
+ /** Input rows are one-based; the returned committed frame line is zero-based. */
318
+ protected resolveFrameLine(screenRow: number): number | undefined;
220
319
  protected resetRenderState(): void;
221
320
  protected beforeTerminalStart(): void;
222
321
  protected afterTerminalStart(): void;
@@ -229,8 +328,8 @@ export declare abstract class TuiBase extends Container {
229
328
  getClearOnShrink(): boolean;
230
329
  /**
231
330
  * Set whether to trigger full re-render when content shrinks.
232
- * When true (default), empty rows are cleared when content shrinks.
233
- * When false, empty rows remain (reduces redraws on slower terminals).
331
+ * When true, empty rows are cleared when content shrinks.
332
+ * When false (default), empty rows remain (reduces redraws on slower terminals).
234
333
  */
235
334
  setClearOnShrink(enabled: boolean): void;
236
335
  getFocusedComponent(): Component | null;
@@ -256,6 +355,13 @@ export declare abstract class TuiBase extends Container {
256
355
  hasOverlay(): boolean;
257
356
  /** Check if the focused component is a visible overlay */
258
357
  protected isOverlayFocused(): boolean;
358
+ /** Keep overlay containers as keyboard focus owners when a nested control is clicked. */
359
+ protected resolveMouseFocusTarget(component: Component): Component;
360
+ /** Dispatch to the visually topmost overlay under the pointer. */
361
+ protected dispatchMouseToOverlay(event: TuiMouseEvent): {
362
+ hit: boolean;
363
+ result?: TuiMouseDispatchResult;
364
+ };
259
365
  /** Check if an overlay entry is currently visible */
260
366
  private isOverlayVisible;
261
367
  /** Find the visual-frontmost visible capturing overlay, if any */
package/dist/tui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}