@jitl/opentui-core 0.1.97-next.c8a3f05

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 (180) hide show
  1. package/3d/SpriteResourceManager.d.ts +74 -0
  2. package/3d/SpriteUtils.d.ts +13 -0
  3. package/3d/TextureUtils.d.ts +24 -0
  4. package/3d/ThreeRenderable.d.ts +40 -0
  5. package/3d/WGPURenderer.d.ts +61 -0
  6. package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
  7. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
  8. package/3d/animation/SpriteAnimator.d.ts +124 -0
  9. package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
  10. package/3d/canvas.d.ts +44 -0
  11. package/3d/index.d.ts +12 -0
  12. package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
  13. package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
  14. package/3d/physics/physics-interface.d.ts +27 -0
  15. package/3d.d.ts +2 -0
  16. package/3d.js +33843 -0
  17. package/3d.js.map +155 -0
  18. package/LICENSE +21 -0
  19. package/NativeSpanFeed.d.ts +41 -0
  20. package/README.md +65 -0
  21. package/Renderable.d.ts +334 -0
  22. package/Worker-vajwjk0s.js +94 -0
  23. package/Worker-vajwjk0s.js.map +10 -0
  24. package/animation/Timeline.d.ts +126 -0
  25. package/ansi.d.ts +13 -0
  26. package/assets/javascript/highlights.scm +205 -0
  27. package/assets/javascript/tree-sitter-javascript.wasm +0 -0
  28. package/assets/markdown/highlights.scm +150 -0
  29. package/assets/markdown/injections.scm +27 -0
  30. package/assets/markdown/tree-sitter-markdown.wasm +0 -0
  31. package/assets/markdown_inline/highlights.scm +115 -0
  32. package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  33. package/assets/typescript/highlights.scm +604 -0
  34. package/assets/typescript/tree-sitter-typescript.wasm +0 -0
  35. package/assets/zig/highlights.scm +284 -0
  36. package/assets/zig/tree-sitter-zig.wasm +0 -0
  37. package/buffer.d.ts +111 -0
  38. package/compat/FFIType.d.ts +304 -0
  39. package/compat/Worker.d.ts +1 -0
  40. package/compat/bun-ffi-structs.d.ts +2 -0
  41. package/compat/ffi.d.ts +86 -0
  42. package/compat/nodejs/Worker.d.ts +16 -0
  43. package/compat/nodejs/bun-ffi-structs/index.d.ts +46 -0
  44. package/compat/nodejs/ffi.d.ts +21 -0
  45. package/compat/nodejs/registerBun.d.ts +1 -0
  46. package/compat/nodejs/registerResolveJs.d.ts +1 -0
  47. package/compat/nodejs/runtime.d.ts +7 -0
  48. package/compat/nodejs/test.d.ts +4 -0
  49. package/compat/nodejs/trampoline.worker.d.ts +1 -0
  50. package/compat/runtime.d.ts +8 -0
  51. package/compat/test.d.ts +1 -0
  52. package/compat/testHelpers.d.ts +18 -0
  53. package/console.d.ts +144 -0
  54. package/edit-buffer.d.ts +98 -0
  55. package/editor-view.d.ts +73 -0
  56. package/ffi-x3zvcksd.js +25 -0
  57. package/ffi-x3zvcksd.js.map +9 -0
  58. package/index-5yqvbmcz.js +220 -0
  59. package/index-5yqvbmcz.js.map +10 -0
  60. package/index-bnfz2g63.js +654 -0
  61. package/index-bnfz2g63.js.map +10 -0
  62. package/index-cbvybypy.js +43 -0
  63. package/index-cbvybypy.js.map +10 -0
  64. package/index-hjna9d1h.js +12074 -0
  65. package/index-hjna9d1h.js.map +42 -0
  66. package/index-jjp8mmgk.js +19991 -0
  67. package/index-jjp8mmgk.js.map +70 -0
  68. package/index-re3ntm60.js +51 -0
  69. package/index-re3ntm60.js.map +9 -0
  70. package/index-t16hn6zn.js +411 -0
  71. package/index-t16hn6zn.js.map +10 -0
  72. package/index-tkk6cmr2.js +650 -0
  73. package/index-tkk6cmr2.js.map +10 -0
  74. package/index.d.ts +23 -0
  75. package/index.js +480 -0
  76. package/index.js.map +9 -0
  77. package/lib/KeyHandler.d.ts +61 -0
  78. package/lib/RGBA.d.ts +26 -0
  79. package/lib/ascii.font.d.ts +508 -0
  80. package/lib/border.d.ts +51 -0
  81. package/lib/bunfs.d.ts +7 -0
  82. package/lib/clipboard.d.ts +17 -0
  83. package/lib/clock.d.ts +15 -0
  84. package/lib/data-paths.d.ts +26 -0
  85. package/lib/debounce.d.ts +42 -0
  86. package/lib/detect-links.d.ts +6 -0
  87. package/lib/env.d.ts +42 -0
  88. package/lib/extmarks-history.d.ts +17 -0
  89. package/lib/extmarks.d.ts +89 -0
  90. package/lib/hast-styled-text.d.ts +17 -0
  91. package/lib/index.d.ts +21 -0
  92. package/lib/keymapping.d.ts +25 -0
  93. package/lib/objects-in-viewport.d.ts +24 -0
  94. package/lib/output.capture.d.ts +24 -0
  95. package/lib/parse.keypress-kitty.d.ts +2 -0
  96. package/lib/parse.keypress.d.ts +26 -0
  97. package/lib/parse.mouse.d.ts +30 -0
  98. package/lib/paste.d.ts +7 -0
  99. package/lib/queue.d.ts +15 -0
  100. package/lib/renderable.validations.d.ts +12 -0
  101. package/lib/scroll-acceleration.d.ts +43 -0
  102. package/lib/selection.d.ts +64 -0
  103. package/lib/singleton.d.ts +7 -0
  104. package/lib/stdin-parser.d.ts +87 -0
  105. package/lib/styled-text.d.ts +63 -0
  106. package/lib/terminal-capability-detection.d.ts +30 -0
  107. package/lib/terminal-palette.d.ts +50 -0
  108. package/lib/tree-sitter/assets/update.d.ts +11 -0
  109. package/lib/tree-sitter/client.d.ts +47 -0
  110. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  111. package/lib/tree-sitter/download-utils.d.ts +21 -0
  112. package/lib/tree-sitter/index.d.ts +8 -0
  113. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  114. package/lib/tree-sitter/parsers-config.d.ts +53 -0
  115. package/lib/tree-sitter/resolve-ft.d.ts +5 -0
  116. package/lib/tree-sitter/types.d.ts +82 -0
  117. package/lib/tree-sitter-styled-text.d.ts +14 -0
  118. package/lib/validate-dir-name.d.ts +1 -0
  119. package/lib/yoga.options.d.ts +32 -0
  120. package/package.json +80 -0
  121. package/parser.worker.js +888 -0
  122. package/parser.worker.js.map +12 -0
  123. package/plugins/core-slot.d.ts +72 -0
  124. package/plugins/registry.d.ts +42 -0
  125. package/plugins/types.d.ts +34 -0
  126. package/post/effects.d.ts +147 -0
  127. package/post/filters.d.ts +65 -0
  128. package/post/matrices.d.ts +20 -0
  129. package/renderables/ASCIIFont.d.ts +52 -0
  130. package/renderables/Box.d.ts +81 -0
  131. package/renderables/Code.d.ts +78 -0
  132. package/renderables/Diff.d.ts +142 -0
  133. package/renderables/EditBufferRenderable.d.ts +237 -0
  134. package/renderables/FrameBuffer.d.ts +16 -0
  135. package/renderables/Input.d.ts +67 -0
  136. package/renderables/LineNumberRenderable.d.ts +78 -0
  137. package/renderables/Markdown.d.ts +181 -0
  138. package/renderables/ScrollBar.d.ts +77 -0
  139. package/renderables/ScrollBox.d.ts +124 -0
  140. package/renderables/Select.d.ts +115 -0
  141. package/renderables/Slider.d.ts +47 -0
  142. package/renderables/TabSelect.d.ts +96 -0
  143. package/renderables/Text.d.ts +36 -0
  144. package/renderables/TextBufferRenderable.d.ts +105 -0
  145. package/renderables/TextNode.d.ts +91 -0
  146. package/renderables/TextTable.d.ts +140 -0
  147. package/renderables/Textarea.d.ts +63 -0
  148. package/renderables/TimeToFirstDraw.d.ts +24 -0
  149. package/renderables/__tests__/renderable-test-utils.d.ts +12 -0
  150. package/renderables/composition/VRenderable.d.ts +16 -0
  151. package/renderables/composition/constructs.d.ts +35 -0
  152. package/renderables/composition/vnode.d.ts +46 -0
  153. package/renderables/index.d.ts +23 -0
  154. package/renderables/markdown-parser.d.ts +10 -0
  155. package/renderer.d.ts +419 -0
  156. package/runtime-hdpkc6qf.js +220 -0
  157. package/runtime-hdpkc6qf.js.map +17 -0
  158. package/runtime-plugin-support.d.ts +3 -0
  159. package/runtime-plugin-support.js +31 -0
  160. package/runtime-plugin-support.js.map +10 -0
  161. package/runtime-plugin.d.ts +19 -0
  162. package/runtime-plugin.js +18 -0
  163. package/runtime-plugin.js.map +9 -0
  164. package/syntax-style.d.ts +54 -0
  165. package/testing/manual-clock.d.ts +17 -0
  166. package/testing/mock-keys.d.ts +81 -0
  167. package/testing/mock-mouse.d.ts +38 -0
  168. package/testing/mock-tree-sitter-client.d.ts +23 -0
  169. package/testing/spy.d.ts +7 -0
  170. package/testing/test-recorder.d.ts +61 -0
  171. package/testing/test-renderer.d.ts +23 -0
  172. package/testing.d.ts +6 -0
  173. package/testing.js +699 -0
  174. package/testing.js.map +15 -0
  175. package/text-buffer-view.d.ts +42 -0
  176. package/text-buffer.d.ts +67 -0
  177. package/types.d.ts +139 -0
  178. package/utils.d.ts +14 -0
  179. package/zig-structs.d.ts +155 -0
  180. package/zig.d.ts +353 -0
@@ -0,0 +1,23 @@
1
+ export * from "./ASCIIFont.js";
2
+ export * from "./Box.js";
3
+ export * from "./Code.js";
4
+ export * from "./composition/constructs.js";
5
+ export * from "./composition/VRenderable.js";
6
+ export * from "./composition/vnode.js";
7
+ export * from "./Diff.js";
8
+ export * from "./EditBufferRenderable.js";
9
+ export * from "./FrameBuffer.js";
10
+ export * from "./Input.js";
11
+ export * from "./LineNumberRenderable.js";
12
+ export * from "./Markdown.js";
13
+ export * from "./ScrollBar.js";
14
+ export * from "./ScrollBox.js";
15
+ export * from "./Select.js";
16
+ export * from "./Slider.js";
17
+ export * from "./TextTable.js";
18
+ export * from "./TabSelect.js";
19
+ export * from "./Text.js";
20
+ export * from "./TimeToFirstDraw.js";
21
+ export * from "./TextBufferRenderable.js";
22
+ export * from "./TextNode.js";
23
+ export * from "./Textarea.js";
@@ -0,0 +1,10 @@
1
+ import { type MarkedToken } from "marked";
2
+ export interface ParseState {
3
+ content: string;
4
+ tokens: MarkedToken[];
5
+ }
6
+ /**
7
+ * Incrementally parse markdown, reusing unchanged tokens from previous parse.
8
+ * Compares token.raw at each offset - matching tokens keep same object reference.
9
+ */
10
+ export declare function parseMarkdownIncremental(newContent: string, prevState: ParseState | null, trailingUnstable?: number): ParseState;
package/renderer.d.ts ADDED
@@ -0,0 +1,419 @@
1
+ import { Renderable, RootRenderable } from "./Renderable.js";
2
+ import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type ThemeMode, type WidthMethod } from "./types.js";
3
+ import { RGBA, type ColorInput } from "./lib/RGBA.js";
4
+ import type { Pointer } from "./compat/ffi.js";
5
+ import { OptimizedBuffer } from "./buffer.js";
6
+ import { type RenderLib } from "./zig.js";
7
+ import { TerminalConsole, type ConsoleOptions } from "./console.js";
8
+ import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/parse.mouse.js";
9
+ import { Selection } from "./lib/selection.js";
10
+ import { type ClipboardTarget } from "./lib/clipboard.js";
11
+ import { EventEmitter } from "events";
12
+ import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler.js";
13
+ import { type EditBufferRenderable } from "./renderables/EditBufferRenderable.js";
14
+ import { type TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette.js";
15
+ import { type Clock } from "./lib/clock.js";
16
+ export interface CliRendererConfig {
17
+ stdin?: NodeJS.ReadStream;
18
+ stdout?: NodeJS.WriteStream;
19
+ remote?: boolean;
20
+ testing?: boolean;
21
+ exitOnCtrlC?: boolean;
22
+ exitSignals?: NodeJS.Signals[];
23
+ forwardEnvKeys?: string[];
24
+ debounceDelay?: number;
25
+ targetFps?: number;
26
+ maxFps?: number;
27
+ memorySnapshotInterval?: number;
28
+ useThread?: boolean;
29
+ gatherStats?: boolean;
30
+ maxStatSamples?: number;
31
+ consoleOptions?: Omit<ConsoleOptions, "clock">;
32
+ postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[];
33
+ enableMouseMovement?: boolean;
34
+ useMouse?: boolean;
35
+ autoFocus?: boolean;
36
+ screenMode?: ScreenMode;
37
+ footerHeight?: number;
38
+ externalOutputMode?: ExternalOutputMode;
39
+ consoleMode?: ConsoleMode;
40
+ useKittyKeyboard?: KittyKeyboardOptions | null;
41
+ backgroundColor?: ColorInput;
42
+ openConsoleOnError?: boolean;
43
+ prependInputHandlers?: ((sequence: string) => boolean)[];
44
+ stdinParserMaxBufferBytes?: number;
45
+ clock?: Clock;
46
+ onDestroy?: () => void;
47
+ }
48
+ export type ScreenMode = "alternate-screen" | "main-screen" | "split-footer";
49
+ export type ExternalOutputMode = "capture-stdout" | "passthrough";
50
+ export type ConsoleMode = "console-overlay" | "disabled";
51
+ export type PixelResolution = {
52
+ width: number;
53
+ height: number;
54
+ };
55
+ /**
56
+ * Kitty Keyboard Protocol configuration options
57
+ * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement
58
+ */
59
+ export interface KittyKeyboardOptions {
60
+ /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */
61
+ disambiguate?: boolean;
62
+ /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */
63
+ alternateKeys?: boolean;
64
+ /** Report event types (press/repeat/release). Default: false */
65
+ events?: boolean;
66
+ /** Report all keys as escape codes. Default: false */
67
+ allKeysAsEscapes?: boolean;
68
+ /** Report text associated with key events. Default: false */
69
+ reportText?: boolean;
70
+ }
71
+ /**
72
+ * Build kitty keyboard protocol flags based on configuration
73
+ * @param config Kitty keyboard configuration object (null/undefined = disabled)
74
+ * @returns The combined flags value (0 = disabled, >0 = enabled)
75
+ * @internal Exported for testing
76
+ */
77
+ export declare function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number;
78
+ export declare class MouseEvent {
79
+ readonly type: MouseEventType;
80
+ readonly button: number;
81
+ readonly x: number;
82
+ readonly y: number;
83
+ readonly source?: Renderable;
84
+ readonly modifiers: {
85
+ shift: boolean;
86
+ alt: boolean;
87
+ ctrl: boolean;
88
+ };
89
+ readonly scroll?: ScrollInfo;
90
+ readonly target: Renderable | null;
91
+ readonly isDragging?: boolean;
92
+ private _propagationStopped;
93
+ private _defaultPrevented;
94
+ get propagationStopped(): boolean;
95
+ get defaultPrevented(): boolean;
96
+ constructor(target: Renderable | null, attributes: RawMouseEvent & {
97
+ source?: Renderable;
98
+ isDragging?: boolean;
99
+ });
100
+ stopPropagation(): void;
101
+ preventDefault(): void;
102
+ }
103
+ export declare enum MouseButton {
104
+ LEFT = 0,
105
+ MIDDLE = 1,
106
+ RIGHT = 2,
107
+ WHEEL_UP = 4,
108
+ WHEEL_DOWN = 5
109
+ }
110
+ export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
111
+ export declare enum CliRenderEvents {
112
+ RESIZE = "resize",
113
+ FOCUS = "focus",
114
+ BLUR = "blur",
115
+ FOCUSED_EDITOR = "focused_editor",
116
+ THEME_MODE = "theme_mode",
117
+ CAPABILITIES = "capabilities",
118
+ SELECTION = "selection",
119
+ DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
120
+ DESTROY = "destroy",
121
+ MEMORY_SNAPSHOT = "memory:snapshot"
122
+ }
123
+ export declare enum RendererControlState {
124
+ IDLE = "idle",
125
+ AUTO_STARTED = "auto_started",
126
+ EXPLICIT_STARTED = "explicit_started",
127
+ EXPLICIT_PAUSED = "explicit_paused",
128
+ EXPLICIT_SUSPENDED = "explicit_suspended",
129
+ EXPLICIT_STOPPED = "explicit_stopped"
130
+ }
131
+ export declare class CliRenderer extends EventEmitter implements RenderContext {
132
+ private static animationFrameId;
133
+ private lib;
134
+ rendererPtr: Pointer;
135
+ stdin: NodeJS.ReadStream;
136
+ private stdout;
137
+ private exitOnCtrlC;
138
+ private exitSignals;
139
+ private _exitListenersAdded;
140
+ private _isDestroyed;
141
+ private _destroyPending;
142
+ private _destroyFinalized;
143
+ private _destroyCleanupPrepared;
144
+ nextRenderBuffer: OptimizedBuffer;
145
+ currentRenderBuffer: OptimizedBuffer;
146
+ private _isRunning;
147
+ private _targetFps;
148
+ private _maxFps;
149
+ private automaticMemorySnapshot;
150
+ private memorySnapshotInterval;
151
+ private memorySnapshotTimer;
152
+ private lastMemorySnapshot;
153
+ readonly root: RootRenderable;
154
+ width: number;
155
+ height: number;
156
+ private _useThread;
157
+ private gatherStats;
158
+ private frameTimes;
159
+ private maxStatSamples;
160
+ private postProcessFns;
161
+ private backgroundColor;
162
+ private waitingForPixelResolution;
163
+ private readonly clock;
164
+ private rendering;
165
+ private renderingNative;
166
+ private renderTimeout;
167
+ private lastTime;
168
+ private frameCount;
169
+ private lastFpsTime;
170
+ private currentFps;
171
+ private targetFrameTime;
172
+ private minTargetFrameTime;
173
+ private immediateRerenderRequested;
174
+ private updateScheduled;
175
+ private liveRequestCounter;
176
+ private _controlState;
177
+ private frameCallbacks;
178
+ private renderStats;
179
+ debugOverlay: {
180
+ enabled: any;
181
+ corner: DebugOverlayCorner;
182
+ };
183
+ private _console;
184
+ private _resolution;
185
+ private _keyHandler;
186
+ private stdinParser;
187
+ private readonly oscSubscribers;
188
+ private hasLoggedStdinParserError;
189
+ private animationRequest;
190
+ private resizeTimeoutId;
191
+ private capabilityTimeoutId;
192
+ private resizeDebounceDelay;
193
+ private enableMouseMovement;
194
+ private _useMouse;
195
+ private autoFocus;
196
+ private _screenMode;
197
+ private _footerHeight;
198
+ private _externalOutputMode;
199
+ private _suspendedMouseEnabled;
200
+ private _previousControlState;
201
+ private capturedRenderable?;
202
+ private lastOverRenderableNum;
203
+ private lastOverRenderable?;
204
+ private currentSelection;
205
+ private selectionContainers;
206
+ private clipboard;
207
+ private _splitHeight;
208
+ private renderOffset;
209
+ private _terminalWidth;
210
+ private _terminalHeight;
211
+ private _terminalIsSetup;
212
+ private realStdoutWrite;
213
+ private captureCallback;
214
+ private _useConsole;
215
+ private sigwinchHandler;
216
+ private _capabilities;
217
+ private _latestPointer;
218
+ private _hasPointer;
219
+ private _lastPointerModifiers;
220
+ private _currentMousePointerStyle;
221
+ private _currentFocusedRenderable;
222
+ private lifecyclePasses;
223
+ private _openConsoleOnError;
224
+ private _paletteDetector;
225
+ private _cachedPalette;
226
+ private _paletteDetectionPromise;
227
+ private _onDestroy?;
228
+ private _themeMode;
229
+ private _terminalFocusState;
230
+ private sequenceHandlers;
231
+ private prependedInputHandlers;
232
+ private shouldRestoreModesOnNextFocus;
233
+ private idleResolvers;
234
+ private _debugInputs;
235
+ private _debugModeEnabled;
236
+ private handleError;
237
+ private dumpOutputCache;
238
+ private exitHandler;
239
+ private warningHandler;
240
+ get controlState(): RendererControlState;
241
+ constructor(lib: RenderLib, rendererPtr: Pointer, stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig);
242
+ private addExitListeners;
243
+ private removeExitListeners;
244
+ get isDestroyed(): boolean;
245
+ registerLifecyclePass(renderable: Renderable): void;
246
+ unregisterLifecyclePass(renderable: Renderable): void;
247
+ getLifecyclePasses(): Set<Renderable>;
248
+ get currentFocusedRenderable(): Renderable | null;
249
+ get currentFocusedEditor(): EditBufferRenderable | null;
250
+ private normalizeClockTime;
251
+ private getElapsedMs;
252
+ focusRenderable(renderable: Renderable): void;
253
+ private setCapturedRenderable;
254
+ addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
255
+ pushHitGridScissorRect(x: number, y: number, width: number, height: number): void;
256
+ popHitGridScissorRect(): void;
257
+ clearHitGridScissorRects(): void;
258
+ get widthMethod(): WidthMethod;
259
+ private writeOut;
260
+ requestRender(): void;
261
+ private activateFrame;
262
+ get consoleMode(): ConsoleMode;
263
+ set consoleMode(mode: ConsoleMode);
264
+ get isRunning(): boolean;
265
+ private isIdleNow;
266
+ private resolveIdleIfNeeded;
267
+ idle(): Promise<void>;
268
+ get resolution(): PixelResolution | null;
269
+ get console(): TerminalConsole;
270
+ get keyInput(): KeyHandler;
271
+ get _internalKeyInput(): InternalKeyHandler;
272
+ get terminalWidth(): number;
273
+ get terminalHeight(): number;
274
+ get useThread(): boolean;
275
+ get targetFps(): number;
276
+ set targetFps(targetFps: number);
277
+ get maxFps(): number;
278
+ set maxFps(maxFps: number);
279
+ get useMouse(): boolean;
280
+ set useMouse(useMouse: boolean);
281
+ get screenMode(): ScreenMode;
282
+ set screenMode(mode: ScreenMode);
283
+ get footerHeight(): number;
284
+ set footerHeight(footerHeight: number);
285
+ get externalOutputMode(): ExternalOutputMode;
286
+ set externalOutputMode(mode: ExternalOutputMode);
287
+ get liveRequestCount(): number;
288
+ get currentControlState(): string;
289
+ get capabilities(): any | null;
290
+ get themeMode(): ThemeMode | null;
291
+ getDebugInputs(): Array<{
292
+ timestamp: string;
293
+ sequence: string;
294
+ }>;
295
+ get useKittyKeyboard(): boolean;
296
+ set useKittyKeyboard(use: boolean);
297
+ private interceptStdoutWrite;
298
+ private applyScreenMode;
299
+ private flushStdoutCache;
300
+ private enableMouse;
301
+ private disableMouse;
302
+ enableKittyKeyboard(flags?: number): void;
303
+ disableKittyKeyboard(): void;
304
+ set useThread(useThread: boolean);
305
+ setupTerminal(): Promise<void>;
306
+ private stdinListener;
307
+ addInputHandler(handler: (sequence: string) => boolean): void;
308
+ prependInputHandler(handler: (sequence: string) => boolean): void;
309
+ removeInputHandler(handler: (sequence: string) => boolean): void;
310
+ private updateStdinParserProtocolContext;
311
+ subscribeOsc(handler: (sequence: string) => void): () => void;
312
+ private capabilityHandler;
313
+ private focusHandler;
314
+ private themeModeHandler;
315
+ private dispatchSequenceHandlers;
316
+ private drainStdinParser;
317
+ private handleStdinEvent;
318
+ private handleStdinParserFailure;
319
+ private setupInput;
320
+ private dispatchMouseEvent;
321
+ private processSingleMouseEvent;
322
+ /**
323
+ * Recheck hover state after hit grid changes.
324
+ * Called after render when native code detects the hit grid changed.
325
+ * Fires out/over events if the element under the cursor changed.
326
+ */
327
+ private recheckHoverState;
328
+ setMousePointer(style: MousePointerStyle): void;
329
+ hitTest(x: number, y: number): number;
330
+ private takeMemorySnapshot;
331
+ private startMemorySnapshotTimer;
332
+ private stopMemorySnapshotTimer;
333
+ setMemorySnapshotInterval(interval: number): void;
334
+ private handleResize;
335
+ private queryPixelResolution;
336
+ private processResize;
337
+ setBackgroundColor(color: ColorInput): void;
338
+ toggleDebugOverlay(): void;
339
+ configureDebugOverlay(options: {
340
+ enabled?: boolean;
341
+ corner?: DebugOverlayCorner;
342
+ }): void;
343
+ setTerminalTitle(title: string): void;
344
+ copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
345
+ clearClipboardOSC52(target?: ClipboardTarget): boolean;
346
+ isOsc52Supported(): boolean;
347
+ dumpHitGrid(): void;
348
+ dumpBuffers(timestamp?: number): void;
349
+ dumpStdoutBuffer(timestamp?: number): void;
350
+ static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible?: boolean): void;
351
+ static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void;
352
+ static setCursorColor(renderer: CliRenderer, color: RGBA): void;
353
+ setCursorPosition(x: number, y: number, visible?: boolean): void;
354
+ setCursorStyle(options: CursorStyleOptions): void;
355
+ setCursorColor(color: RGBA): void;
356
+ getCursorState(): import("./zig.js").CursorState;
357
+ addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
358
+ removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
359
+ clearPostProcessFns(): void;
360
+ setFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
361
+ removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
362
+ clearFrameCallbacks(): void;
363
+ requestLive(): void;
364
+ dropLive(): void;
365
+ start(): void;
366
+ auto(): void;
367
+ private internalStart;
368
+ pause(): void;
369
+ suspend(): void;
370
+ resume(): void;
371
+ private internalPause;
372
+ stop(): void;
373
+ private internalStop;
374
+ destroy(): void;
375
+ private cleanupBeforeDestroy;
376
+ private prepareDestroyDuringRender;
377
+ private finalizeDestroy;
378
+ private startRenderLoop;
379
+ private loop;
380
+ intermediateRender(): void;
381
+ private renderNative;
382
+ private collectStatSample;
383
+ getStats(): {
384
+ fps: number;
385
+ frameCount: number;
386
+ frameTimes: number[];
387
+ averageFrameTime: number;
388
+ minFrameTime: number;
389
+ maxFrameTime: number;
390
+ };
391
+ resetStats(): void;
392
+ setGatherStats(enabled: boolean): void;
393
+ getSelection(): Selection | null;
394
+ get hasSelection(): boolean;
395
+ getSelectionContainer(): Renderable | null;
396
+ clearSelection(): void;
397
+ /**
398
+ * Start a new selection at the given coordinates.
399
+ * Used by both mouse and keyboard selection.
400
+ */
401
+ startSelection(renderable: Renderable, x: number, y: number): void;
402
+ updateSelection(currentRenderable: Renderable | undefined, x: number, y: number, options?: {
403
+ finishDragging?: boolean;
404
+ }): void;
405
+ requestSelectionUpdate(): void;
406
+ private isWithinContainer;
407
+ private finishSelection;
408
+ private notifySelectablesOfSelectionChange;
409
+ private walkSelectableRenderables;
410
+ get paletteDetectionStatus(): "idle" | "detecting" | "cached";
411
+ clearPaletteCache(): void;
412
+ /**
413
+ * Detects the terminal's color palette
414
+ *
415
+ * @returns Promise resolving to TerminalColors object containing palette and special colors
416
+ * @throws Error if renderer is suspended
417
+ */
418
+ getPalette(options?: GetPaletteOptions): Promise<TerminalColors>;
419
+ }
@@ -0,0 +1,220 @@
1
+ // @bun
2
+ import"./index-re3ntm60.js";
3
+
4
+ // src/compat/nodejs/runtime.ts
5
+ import { mkdir, writeFile as writeFileNode } from "fs/promises";
6
+ import { dirname } from "path";
7
+ import { fileURLToPath } from "url";
8
+
9
+ // ../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
10
+ function ansiRegex({ onlyFirst = false } = {}) {
11
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
12
+ const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
13
+ const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
14
+ const pattern = `${osc}|${csi}`;
15
+ return new RegExp(pattern, onlyFirst ? undefined : "g");
16
+ }
17
+
18
+ // ../../node_modules/.bun/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
19
+ var regex = ansiRegex();
20
+ function stripAnsi(string) {
21
+ if (typeof string !== "string") {
22
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
23
+ }
24
+ if (!string.includes("\x1B") && !string.includes("\x9B")) {
25
+ return string;
26
+ }
27
+ return string.replace(regex, "");
28
+ }
29
+
30
+ // ../../node_modules/.bun/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup-data.js
31
+ var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
32
+ var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
33
+ var halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
34
+ var narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
35
+ var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
36
+
37
+ // ../../node_modules/.bun/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/utilities.js
38
+ var isInRange = (ranges, codePoint) => {
39
+ let low = 0;
40
+ let high = Math.floor(ranges.length / 2) - 1;
41
+ while (low <= high) {
42
+ const mid = Math.floor((low + high) / 2);
43
+ const i = mid * 2;
44
+ if (codePoint < ranges[i]) {
45
+ high = mid - 1;
46
+ } else if (codePoint > ranges[i + 1]) {
47
+ low = mid + 1;
48
+ } else {
49
+ return true;
50
+ }
51
+ }
52
+ return false;
53
+ };
54
+
55
+ // ../../node_modules/.bun/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/lookup.js
56
+ var minimumAmbiguousCodePoint = ambiguousRanges[0];
57
+ var maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
58
+ var minimumFullWidthCodePoint = fullwidthRanges[0];
59
+ var maximumFullWidthCodePoint = fullwidthRanges.at(-1);
60
+ var minimumHalfWidthCodePoint = halfwidthRanges[0];
61
+ var maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
62
+ var minimumNarrowCodePoint = narrowRanges[0];
63
+ var maximumNarrowCodePoint = narrowRanges.at(-1);
64
+ var minimumWideCodePoint = wideRanges[0];
65
+ var maximumWideCodePoint = wideRanges.at(-1);
66
+ var commonCjkCodePoint = 19968;
67
+ var [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
68
+ function findWideFastPathRange(ranges) {
69
+ let fastPathStart = ranges[0];
70
+ let fastPathEnd = ranges[1];
71
+ for (let index = 0;index < ranges.length; index += 2) {
72
+ const start = ranges[index];
73
+ const end = ranges[index + 1];
74
+ if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
75
+ return [start, end];
76
+ }
77
+ if (end - start > fastPathEnd - fastPathStart) {
78
+ fastPathStart = start;
79
+ fastPathEnd = end;
80
+ }
81
+ }
82
+ return [fastPathStart, fastPathEnd];
83
+ }
84
+ var isAmbiguous = (codePoint) => {
85
+ if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
86
+ return false;
87
+ }
88
+ return isInRange(ambiguousRanges, codePoint);
89
+ };
90
+ var isFullWidth = (codePoint) => {
91
+ if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
92
+ return false;
93
+ }
94
+ return isInRange(fullwidthRanges, codePoint);
95
+ };
96
+ var isWide = (codePoint) => {
97
+ if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
98
+ return true;
99
+ }
100
+ if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
101
+ return false;
102
+ }
103
+ return isInRange(wideRanges, codePoint);
104
+ };
105
+
106
+ // ../../node_modules/.bun/get-east-asian-width@1.5.0/node_modules/get-east-asian-width/index.js
107
+ function validate(codePoint) {
108
+ if (!Number.isSafeInteger(codePoint)) {
109
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
110
+ }
111
+ }
112
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
113
+ validate(codePoint);
114
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
115
+ return 2;
116
+ }
117
+ return 1;
118
+ }
119
+
120
+ // ../../node_modules/.bun/string-width@8.2.0/node_modules/string-width/index.js
121
+ var segmenter = new Intl.Segmenter;
122
+ var zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Mark}|\p{Surrogate})+$/v;
123
+ var leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
124
+ var rgiEmojiRegex = /^\p{RGI_Emoji}$/v;
125
+ var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
126
+ var extendedPictographicRegex = /\p{Extended_Pictographic}/gu;
127
+ function isDoubleWidthNonRgiEmojiSequence(segment) {
128
+ if (segment.length > 50) {
129
+ return false;
130
+ }
131
+ if (unqualifiedKeycapRegex.test(segment)) {
132
+ return true;
133
+ }
134
+ if (segment.includes("\u200D")) {
135
+ const pictographics = segment.match(extendedPictographicRegex);
136
+ return pictographics !== null && pictographics.length >= 2;
137
+ }
138
+ return false;
139
+ }
140
+ function baseVisible(segment) {
141
+ return segment.replace(leadingNonPrintingRegex, "");
142
+ }
143
+ function isZeroWidthCluster(segment) {
144
+ return zeroWidthClusterRegex.test(segment);
145
+ }
146
+ function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
147
+ let extra = 0;
148
+ if (segment.length > 1) {
149
+ for (const char of segment.slice(1)) {
150
+ if (char >= "\uFF00" && char <= "\uFFEF") {
151
+ extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
152
+ }
153
+ }
154
+ }
155
+ return extra;
156
+ }
157
+ function stringWidth(input, options = {}) {
158
+ if (typeof input !== "string" || input.length === 0) {
159
+ return 0;
160
+ }
161
+ const {
162
+ ambiguousIsNarrow = true,
163
+ countAnsiEscapeCodes = false
164
+ } = options;
165
+ let string = input;
166
+ if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("\x9B"))) {
167
+ string = stripAnsi(string);
168
+ }
169
+ if (string.length === 0) {
170
+ return 0;
171
+ }
172
+ if (/^[\u0020-\u007E]*$/.test(string)) {
173
+ return string.length;
174
+ }
175
+ let width = 0;
176
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
177
+ for (const { segment } of segmenter.segment(string)) {
178
+ if (isZeroWidthCluster(segment)) {
179
+ continue;
180
+ }
181
+ if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
182
+ width += 2;
183
+ continue;
184
+ }
185
+ const codePoint = baseVisible(segment).codePointAt(0);
186
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
187
+ width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
188
+ }
189
+ return width;
190
+ }
191
+
192
+ // src/compat/nodejs/runtime.ts
193
+ function sleep(msOrDate) {
194
+ const ms = msOrDate instanceof Date ? msOrDate.getTime() - Date.now() : msOrDate;
195
+ return new Promise((resolve) => setTimeout(resolve, ms));
196
+ }
197
+ var stringWidth2 = stringWidth;
198
+ var stripANSI = stripAnsi;
199
+ async function writeFile(destination, data, options) {
200
+ const destinationPath = destination instanceof URL ? fileURLToPath(destination) : destination;
201
+ if (options?.createPath) {
202
+ await mkdir(dirname(destinationPath), { recursive: true });
203
+ }
204
+ if (typeof data === "string") {
205
+ await writeFileNode(destination, data, { mode: options?.mode, encoding: "utf8" });
206
+ return new TextEncoder().encode(data).length;
207
+ }
208
+ const bytes = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
209
+ await writeFileNode(destination, bytes, { mode: options?.mode });
210
+ return bytes.length;
211
+ }
212
+ export {
213
+ writeFile,
214
+ stripANSI,
215
+ stringWidth2 as stringWidth,
216
+ sleep
217
+ };
218
+
219
+ //# debugId=A6AAD9748045471764756E2164756E21
220
+ //# sourceMappingURL=runtime-hdpkc6qf.js.map