@fairyhunter13/opentui-core 0.1.88

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 (147) 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 +34042 -0
  17. package/3d.js.map +155 -0
  18. package/LICENSE +21 -0
  19. package/NativeSpanFeed.d.ts +41 -0
  20. package/README.md +62 -0
  21. package/Renderable.d.ts +334 -0
  22. package/animation/Timeline.d.ts +126 -0
  23. package/ansi.d.ts +13 -0
  24. package/assets/javascript/highlights.scm +205 -0
  25. package/assets/javascript/tree-sitter-javascript.wasm +0 -0
  26. package/assets/markdown/highlights.scm +150 -0
  27. package/assets/markdown/injections.scm +27 -0
  28. package/assets/markdown/tree-sitter-markdown.wasm +0 -0
  29. package/assets/markdown_inline/highlights.scm +115 -0
  30. package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  31. package/assets/typescript/highlights.scm +604 -0
  32. package/assets/typescript/tree-sitter-typescript.wasm +0 -0
  33. package/assets/zig/highlights.scm +284 -0
  34. package/assets/zig/tree-sitter-zig.wasm +0 -0
  35. package/buffer.d.ts +107 -0
  36. package/console.d.ts +143 -0
  37. package/edit-buffer.d.ts +98 -0
  38. package/editor-view.d.ts +73 -0
  39. package/index-e4hzc2j2.js +113 -0
  40. package/index-e4hzc2j2.js.map +10 -0
  41. package/index-nkrr8a4c.js +18415 -0
  42. package/index-nkrr8a4c.js.map +64 -0
  43. package/index-nyw5p3ep.js +12619 -0
  44. package/index-nyw5p3ep.js.map +43 -0
  45. package/index.d.ts +21 -0
  46. package/index.js +430 -0
  47. package/index.js.map +9 -0
  48. package/lib/KeyHandler.d.ts +61 -0
  49. package/lib/RGBA.d.ts +25 -0
  50. package/lib/ascii.font.d.ts +508 -0
  51. package/lib/border.d.ts +49 -0
  52. package/lib/bunfs.d.ts +7 -0
  53. package/lib/clipboard.d.ts +17 -0
  54. package/lib/clock.d.ts +15 -0
  55. package/lib/data-paths.d.ts +26 -0
  56. package/lib/debounce.d.ts +42 -0
  57. package/lib/detect-links.d.ts +6 -0
  58. package/lib/env.d.ts +42 -0
  59. package/lib/extmarks-history.d.ts +17 -0
  60. package/lib/extmarks.d.ts +89 -0
  61. package/lib/hast-styled-text.d.ts +17 -0
  62. package/lib/index.d.ts +21 -0
  63. package/lib/keymapping.d.ts +25 -0
  64. package/lib/objects-in-viewport.d.ts +24 -0
  65. package/lib/output.capture.d.ts +24 -0
  66. package/lib/parse.keypress-kitty.d.ts +2 -0
  67. package/lib/parse.keypress.d.ts +26 -0
  68. package/lib/parse.mouse.d.ts +30 -0
  69. package/lib/paste.d.ts +7 -0
  70. package/lib/queue.d.ts +15 -0
  71. package/lib/renderable.validations.d.ts +12 -0
  72. package/lib/scroll-acceleration.d.ts +43 -0
  73. package/lib/selection.d.ts +63 -0
  74. package/lib/singleton.d.ts +7 -0
  75. package/lib/stdin-parser.d.ts +76 -0
  76. package/lib/styled-text.d.ts +63 -0
  77. package/lib/terminal-capability-detection.d.ts +30 -0
  78. package/lib/terminal-palette.d.ts +50 -0
  79. package/lib/tree-sitter/assets/update.d.ts +11 -0
  80. package/lib/tree-sitter/client.d.ts +47 -0
  81. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  82. package/lib/tree-sitter/download-utils.d.ts +21 -0
  83. package/lib/tree-sitter/index.d.ts +8 -0
  84. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  85. package/lib/tree-sitter/parsers-config.d.ts +38 -0
  86. package/lib/tree-sitter/resolve-ft.d.ts +2 -0
  87. package/lib/tree-sitter/types.d.ts +81 -0
  88. package/lib/tree-sitter-styled-text.d.ts +14 -0
  89. package/lib/validate-dir-name.d.ts +1 -0
  90. package/lib/yoga.options.d.ts +32 -0
  91. package/package.json +80 -0
  92. package/parser.worker.js +869 -0
  93. package/parser.worker.js.map +12 -0
  94. package/plugins/core-slot.d.ts +72 -0
  95. package/plugins/registry.d.ts +38 -0
  96. package/plugins/types.d.ts +34 -0
  97. package/post/filters.d.ts +105 -0
  98. package/renderables/ASCIIFont.d.ts +52 -0
  99. package/renderables/Box.d.ts +72 -0
  100. package/renderables/Code.d.ts +78 -0
  101. package/renderables/Diff.d.ts +142 -0
  102. package/renderables/EditBufferRenderable.d.ts +162 -0
  103. package/renderables/FrameBuffer.d.ts +16 -0
  104. package/renderables/Input.d.ts +67 -0
  105. package/renderables/LineNumberRenderable.d.ts +74 -0
  106. package/renderables/Markdown.d.ts +173 -0
  107. package/renderables/ScrollBar.d.ts +77 -0
  108. package/renderables/ScrollBox.d.ts +124 -0
  109. package/renderables/Select.d.ts +115 -0
  110. package/renderables/Slider.d.ts +44 -0
  111. package/renderables/TabSelect.d.ts +96 -0
  112. package/renderables/Text.d.ts +36 -0
  113. package/renderables/TextBufferRenderable.d.ts +105 -0
  114. package/renderables/TextNode.d.ts +91 -0
  115. package/renderables/TextTable.d.ts +140 -0
  116. package/renderables/Textarea.d.ts +114 -0
  117. package/renderables/TimeToFirstDraw.d.ts +24 -0
  118. package/renderables/__tests__/renderable-test-utils.d.ts +12 -0
  119. package/renderables/composition/VRenderable.d.ts +16 -0
  120. package/renderables/composition/constructs.d.ts +35 -0
  121. package/renderables/composition/vnode.d.ts +46 -0
  122. package/renderables/index.d.ts +22 -0
  123. package/renderables/markdown-parser.d.ts +10 -0
  124. package/renderer.d.ts +388 -0
  125. package/runtime-plugin-support.d.ts +3 -0
  126. package/runtime-plugin-support.js +29 -0
  127. package/runtime-plugin-support.js.map +10 -0
  128. package/runtime-plugin.d.ts +11 -0
  129. package/runtime-plugin.js +16 -0
  130. package/runtime-plugin.js.map +9 -0
  131. package/syntax-style.d.ts +54 -0
  132. package/testing/manual-clock.d.ts +16 -0
  133. package/testing/mock-keys.d.ts +81 -0
  134. package/testing/mock-mouse.d.ts +38 -0
  135. package/testing/mock-tree-sitter-client.d.ts +23 -0
  136. package/testing/spy.d.ts +7 -0
  137. package/testing/test-recorder.d.ts +61 -0
  138. package/testing/test-renderer.d.ts +23 -0
  139. package/testing.d.ts +6 -0
  140. package/testing.js +675 -0
  141. package/testing.js.map +15 -0
  142. package/text-buffer-view.d.ts +42 -0
  143. package/text-buffer.d.ts +67 -0
  144. package/types.d.ts +131 -0
  145. package/utils.d.ts +14 -0
  146. package/zig-structs.d.ts +155 -0
  147. package/zig.d.ts +351 -0
package/renderer.d.ts ADDED
@@ -0,0 +1,388 @@
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 "bun:ffi";
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 TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette.js";
14
+ import { type Clock } from "./lib/clock.js";
15
+ export interface CliRendererConfig {
16
+ stdin?: NodeJS.ReadStream;
17
+ stdout?: NodeJS.WriteStream;
18
+ remote?: boolean;
19
+ testing?: boolean;
20
+ exitOnCtrlC?: boolean;
21
+ exitSignals?: NodeJS.Signals[];
22
+ forwardEnvKeys?: string[];
23
+ debounceDelay?: number;
24
+ targetFps?: number;
25
+ maxFps?: number;
26
+ memorySnapshotInterval?: number;
27
+ useThread?: boolean;
28
+ gatherStats?: boolean;
29
+ maxStatSamples?: number;
30
+ consoleOptions?: Omit<ConsoleOptions, "clock">;
31
+ postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[];
32
+ enableMouseMovement?: boolean;
33
+ useMouse?: boolean;
34
+ autoFocus?: boolean;
35
+ useAlternateScreen?: boolean;
36
+ useConsole?: boolean;
37
+ experimental_splitHeight?: number;
38
+ useKittyKeyboard?: KittyKeyboardOptions | null;
39
+ backgroundColor?: ColorInput;
40
+ openConsoleOnError?: boolean;
41
+ prependInputHandlers?: ((sequence: string) => boolean)[];
42
+ stdinParserMaxBufferBytes?: number;
43
+ clock?: Clock;
44
+ onDestroy?: () => void;
45
+ }
46
+ export type PixelResolution = {
47
+ width: number;
48
+ height: number;
49
+ };
50
+ /**
51
+ * Kitty Keyboard Protocol configuration options
52
+ * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement
53
+ */
54
+ export interface KittyKeyboardOptions {
55
+ /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */
56
+ disambiguate?: boolean;
57
+ /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */
58
+ alternateKeys?: boolean;
59
+ /** Report event types (press/repeat/release). Default: false */
60
+ events?: boolean;
61
+ /** Report all keys as escape codes. Default: false */
62
+ allKeysAsEscapes?: boolean;
63
+ /** Report text associated with key events. Default: false */
64
+ reportText?: boolean;
65
+ }
66
+ /**
67
+ * Build kitty keyboard protocol flags based on configuration
68
+ * @param config Kitty keyboard configuration object (null/undefined = disabled)
69
+ * @returns The combined flags value (0 = disabled, >0 = enabled)
70
+ * @internal Exported for testing
71
+ */
72
+ export declare function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number;
73
+ export declare class MouseEvent {
74
+ readonly type: MouseEventType;
75
+ readonly button: number;
76
+ readonly x: number;
77
+ readonly y: number;
78
+ readonly source?: Renderable;
79
+ readonly modifiers: {
80
+ shift: boolean;
81
+ alt: boolean;
82
+ ctrl: boolean;
83
+ };
84
+ readonly scroll?: ScrollInfo;
85
+ readonly target: Renderable | null;
86
+ readonly isDragging?: boolean;
87
+ private _propagationStopped;
88
+ private _defaultPrevented;
89
+ get propagationStopped(): boolean;
90
+ get defaultPrevented(): boolean;
91
+ constructor(target: Renderable | null, attributes: RawMouseEvent & {
92
+ source?: Renderable;
93
+ isDragging?: boolean;
94
+ });
95
+ stopPropagation(): void;
96
+ preventDefault(): void;
97
+ }
98
+ export declare enum MouseButton {
99
+ LEFT = 0,
100
+ MIDDLE = 1,
101
+ RIGHT = 2,
102
+ WHEEL_UP = 4,
103
+ WHEEL_DOWN = 5
104
+ }
105
+ export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
106
+ export declare enum CliRenderEvents {
107
+ DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
108
+ DESTROY = "destroy"
109
+ }
110
+ export declare enum RendererControlState {
111
+ IDLE = "idle",
112
+ AUTO_STARTED = "auto_started",
113
+ EXPLICIT_STARTED = "explicit_started",
114
+ EXPLICIT_PAUSED = "explicit_paused",
115
+ EXPLICIT_SUSPENDED = "explicit_suspended",
116
+ EXPLICIT_STOPPED = "explicit_stopped"
117
+ }
118
+ export declare class CliRenderer extends EventEmitter implements RenderContext {
119
+ private static animationFrameId;
120
+ private lib;
121
+ rendererPtr: Pointer;
122
+ stdin: NodeJS.ReadStream;
123
+ private stdout;
124
+ private exitOnCtrlC;
125
+ private exitSignals;
126
+ private _exitListenersAdded;
127
+ private _isDestroyed;
128
+ private _destroyPending;
129
+ private _destroyFinalized;
130
+ nextRenderBuffer: OptimizedBuffer;
131
+ currentRenderBuffer: OptimizedBuffer;
132
+ private _isRunning;
133
+ private targetFps;
134
+ private maxFps;
135
+ private automaticMemorySnapshot;
136
+ private memorySnapshotInterval;
137
+ private memorySnapshotTimer;
138
+ private lastMemorySnapshot;
139
+ readonly root: RootRenderable;
140
+ width: number;
141
+ height: number;
142
+ private _useThread;
143
+ private gatherStats;
144
+ private frameTimes;
145
+ private maxStatSamples;
146
+ private postProcessFns;
147
+ private backgroundColor;
148
+ private waitingForPixelResolution;
149
+ private readonly clock;
150
+ private rendering;
151
+ private renderingNative;
152
+ private renderTimeout;
153
+ private lastTime;
154
+ private frameCount;
155
+ private lastFpsTime;
156
+ private currentFps;
157
+ private targetFrameTime;
158
+ private minTargetFrameTime;
159
+ private immediateRerenderRequested;
160
+ private updateScheduled;
161
+ private liveRequestCounter;
162
+ private _controlState;
163
+ private frameCallbacks;
164
+ private renderStats;
165
+ debugOverlay: {
166
+ enabled: any;
167
+ corner: DebugOverlayCorner;
168
+ };
169
+ private _console;
170
+ private _resolution;
171
+ private _keyHandler;
172
+ private stdinParser;
173
+ private readonly oscSubscribers;
174
+ private hasLoggedStdinParserError;
175
+ private animationRequest;
176
+ private resizeTimeoutId;
177
+ private capabilityTimeoutId;
178
+ private resizeDebounceDelay;
179
+ private enableMouseMovement;
180
+ private _useMouse;
181
+ private autoFocus;
182
+ private _useAlternateScreen;
183
+ private _suspendedMouseEnabled;
184
+ private _previousControlState;
185
+ private capturedRenderable?;
186
+ private lastOverRenderableNum;
187
+ private lastOverRenderable?;
188
+ private currentSelection;
189
+ private selectionContainers;
190
+ private clipboard;
191
+ private _splitHeight;
192
+ private renderOffset;
193
+ private _terminalWidth;
194
+ private _terminalHeight;
195
+ private _terminalIsSetup;
196
+ private realStdoutWrite;
197
+ private captureCallback;
198
+ private _useConsole;
199
+ private sigwinchHandler;
200
+ private _capabilities;
201
+ private _latestPointer;
202
+ private _hasPointer;
203
+ private _lastPointerModifiers;
204
+ private _currentMousePointerStyle;
205
+ private _currentFocusedRenderable;
206
+ private lifecyclePasses;
207
+ private _openConsoleOnError;
208
+ private _paletteDetector;
209
+ private _cachedPalette;
210
+ private _paletteDetectionPromise;
211
+ private _onDestroy?;
212
+ private _themeMode;
213
+ private sequenceHandlers;
214
+ private prependedInputHandlers;
215
+ private shouldRestoreModesOnNextFocus;
216
+ private idleResolvers;
217
+ private _debugInputs;
218
+ private _debugModeEnabled;
219
+ private handleError;
220
+ private dumpOutputCache;
221
+ private exitHandler;
222
+ private warningHandler;
223
+ get controlState(): RendererControlState;
224
+ constructor(lib: RenderLib, rendererPtr: Pointer, stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig);
225
+ private addExitListeners;
226
+ private removeExitListeners;
227
+ get isDestroyed(): boolean;
228
+ registerLifecyclePass(renderable: Renderable): void;
229
+ unregisterLifecyclePass(renderable: Renderable): void;
230
+ getLifecyclePasses(): Set<Renderable>;
231
+ get currentFocusedRenderable(): Renderable | null;
232
+ focusRenderable(renderable: Renderable): void;
233
+ private setCapturedRenderable;
234
+ addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
235
+ pushHitGridScissorRect(x: number, y: number, width: number, height: number): void;
236
+ popHitGridScissorRect(): void;
237
+ clearHitGridScissorRects(): void;
238
+ get widthMethod(): WidthMethod;
239
+ private writeOut;
240
+ requestRender(): void;
241
+ private activateFrame;
242
+ get useConsole(): boolean;
243
+ set useConsole(value: boolean);
244
+ get isRunning(): boolean;
245
+ private isIdleNow;
246
+ private resolveIdleIfNeeded;
247
+ idle(): Promise<void>;
248
+ get resolution(): PixelResolution | null;
249
+ get console(): TerminalConsole;
250
+ get keyInput(): KeyHandler;
251
+ get _internalKeyInput(): InternalKeyHandler;
252
+ get terminalWidth(): number;
253
+ get terminalHeight(): number;
254
+ get useThread(): boolean;
255
+ get useMouse(): boolean;
256
+ set useMouse(useMouse: boolean);
257
+ get experimental_splitHeight(): number;
258
+ get liveRequestCount(): number;
259
+ get currentControlState(): string;
260
+ get capabilities(): any | null;
261
+ get themeMode(): ThemeMode | null;
262
+ getDebugInputs(): Array<{
263
+ timestamp: string;
264
+ sequence: string;
265
+ }>;
266
+ get useKittyKeyboard(): boolean;
267
+ set useKittyKeyboard(use: boolean);
268
+ set experimental_splitHeight(splitHeight: number);
269
+ private interceptStdoutWrite;
270
+ disableStdoutInterception(): void;
271
+ private flushStdoutCache;
272
+ private enableMouse;
273
+ private disableMouse;
274
+ enableKittyKeyboard(flags?: number): void;
275
+ disableKittyKeyboard(): void;
276
+ set useThread(useThread: boolean);
277
+ setupTerminal(): Promise<void>;
278
+ private stdinListener;
279
+ addInputHandler(handler: (sequence: string) => boolean): void;
280
+ prependInputHandler(handler: (sequence: string) => boolean): void;
281
+ removeInputHandler(handler: (sequence: string) => boolean): void;
282
+ subscribeOsc(handler: (sequence: string) => void): () => void;
283
+ private capabilityHandler;
284
+ private focusHandler;
285
+ private themeModeHandler;
286
+ private dispatchSequenceHandlers;
287
+ private drainStdinParser;
288
+ private handleStdinEvent;
289
+ private handleStdinParserFailure;
290
+ private setupInput;
291
+ private dispatchMouseEvent;
292
+ private processSingleMouseEvent;
293
+ /**
294
+ * Recheck hover state after hit grid changes.
295
+ * Called after render when native code detects the hit grid changed.
296
+ * Fires out/over events if the element under the cursor changed.
297
+ */
298
+ private recheckHoverState;
299
+ setMousePointer(style: MousePointerStyle): void;
300
+ hitTest(x: number, y: number): number;
301
+ private takeMemorySnapshot;
302
+ private startMemorySnapshotTimer;
303
+ private stopMemorySnapshotTimer;
304
+ setMemorySnapshotInterval(interval: number): void;
305
+ private handleResize;
306
+ private queryPixelResolution;
307
+ private processResize;
308
+ setBackgroundColor(color: ColorInput): void;
309
+ toggleDebugOverlay(): void;
310
+ configureDebugOverlay(options: {
311
+ enabled?: boolean;
312
+ corner?: DebugOverlayCorner;
313
+ }): void;
314
+ setTerminalTitle(title: string): void;
315
+ copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
316
+ clearClipboardOSC52(target?: ClipboardTarget): boolean;
317
+ isOsc52Supported(): boolean;
318
+ dumpHitGrid(): void;
319
+ dumpBuffers(timestamp?: number): void;
320
+ dumpStdoutBuffer(timestamp?: number): void;
321
+ static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible?: boolean): void;
322
+ static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void;
323
+ static setCursorColor(renderer: CliRenderer, color: RGBA): void;
324
+ setCursorPosition(x: number, y: number, visible?: boolean): void;
325
+ setCursorStyle(options: CursorStyleOptions): void;
326
+ setCursorColor(color: RGBA): void;
327
+ getCursorState(): import("./zig.js").CursorState;
328
+ addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
329
+ removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
330
+ clearPostProcessFns(): void;
331
+ setFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
332
+ removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
333
+ clearFrameCallbacks(): void;
334
+ requestLive(): void;
335
+ dropLive(): void;
336
+ start(): void;
337
+ auto(): void;
338
+ private internalStart;
339
+ pause(): void;
340
+ suspend(): void;
341
+ resume(): void;
342
+ private internalPause;
343
+ stop(): void;
344
+ private internalStop;
345
+ destroy(): void;
346
+ private finalizeDestroy;
347
+ private startRenderLoop;
348
+ private loop;
349
+ intermediateRender(): void;
350
+ private renderNative;
351
+ private collectStatSample;
352
+ getStats(): {
353
+ fps: number;
354
+ frameCount: number;
355
+ frameTimes: number[];
356
+ averageFrameTime: number;
357
+ minFrameTime: number;
358
+ maxFrameTime: number;
359
+ };
360
+ resetStats(): void;
361
+ setGatherStats(enabled: boolean): void;
362
+ getSelection(): Selection | null;
363
+ get hasSelection(): boolean;
364
+ getSelectionContainer(): Renderable | null;
365
+ clearSelection(): void;
366
+ /**
367
+ * Start a new selection at the given coordinates.
368
+ * Used by both mouse and keyboard selection.
369
+ */
370
+ startSelection(renderable: Renderable, x: number, y: number): void;
371
+ updateSelection(currentRenderable: Renderable | undefined, x: number, y: number, options?: {
372
+ finishDragging?: boolean;
373
+ }): void;
374
+ requestSelectionUpdate(): void;
375
+ private isWithinContainer;
376
+ private finishSelection;
377
+ private notifySelectablesOfSelectionChange;
378
+ private walkSelectableRenderables;
379
+ get paletteDetectionStatus(): "idle" | "detecting" | "cached";
380
+ clearPaletteCache(): void;
381
+ /**
382
+ * Detects the terminal's color palette
383
+ *
384
+ * @returns Promise resolving to TerminalColors object containing palette and special colors
385
+ * @throws Error if renderer is suspended
386
+ */
387
+ getPalette(options?: GetPaletteOptions): Promise<TerminalColors>;
388
+ }
@@ -0,0 +1,3 @@
1
+ import { createRuntimePlugin, runtimeModuleIdForSpecifier, type CreateRuntimePluginOptions, type RuntimeModuleEntry, type RuntimeModuleExports, type RuntimeModuleLoader } from "./runtime-plugin";
2
+ export declare function ensureRuntimePluginSupport(options?: CreateRuntimePluginOptions): boolean;
3
+ export { createRuntimePlugin, runtimeModuleIdForSpecifier, type CreateRuntimePluginOptions, type RuntimeModuleEntry, type RuntimeModuleExports, type RuntimeModuleLoader, };
@@ -0,0 +1,29 @@
1
+ // @bun
2
+ import {
3
+ createRuntimePlugin,
4
+ runtimeModuleIdForSpecifier
5
+ } from "./index-e4hzc2j2.js";
6
+ import"./index-nyw5p3ep.js";
7
+ import"./index-nkrr8a4c.js";
8
+
9
+ // src/runtime-plugin-support.ts
10
+ var {plugin: registerBunPlugin } = globalThis.Bun;
11
+ var runtimePluginSupportInstalledKey = "__opentuiCoreRuntimePluginSupportInstalled__";
12
+ function ensureRuntimePluginSupport(options = {}) {
13
+ const state = globalThis;
14
+ if (state[runtimePluginSupportInstalledKey]) {
15
+ return false;
16
+ }
17
+ registerBunPlugin(createRuntimePlugin(options));
18
+ state[runtimePluginSupportInstalledKey] = true;
19
+ return true;
20
+ }
21
+ ensureRuntimePluginSupport();
22
+ export {
23
+ runtimeModuleIdForSpecifier,
24
+ ensureRuntimePluginSupport,
25
+ createRuntimePlugin
26
+ };
27
+
28
+ //# debugId=7487C2BFD13C698664756E2164756E21
29
+ //# sourceMappingURL=runtime-plugin-support.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/runtime-plugin-support.ts"],
4
+ "sourcesContent": [
5
+ "import { plugin as registerBunPlugin } from \"bun\"\nimport {\n createRuntimePlugin,\n runtimeModuleIdForSpecifier,\n type CreateRuntimePluginOptions,\n type RuntimeModuleEntry,\n type RuntimeModuleExports,\n type RuntimeModuleLoader,\n} from \"./runtime-plugin\"\n\nconst runtimePluginSupportInstalledKey = \"__opentuiCoreRuntimePluginSupportInstalled__\"\n\ntype RuntimePluginSupportState = typeof globalThis & {\n [runtimePluginSupportInstalledKey]?: boolean\n}\n\nexport function ensureRuntimePluginSupport(options: CreateRuntimePluginOptions = {}): boolean {\n const state = globalThis as RuntimePluginSupportState\n\n if (state[runtimePluginSupportInstalledKey]) {\n return false\n }\n\n registerBunPlugin(createRuntimePlugin(options))\n\n state[runtimePluginSupportInstalledKey] = true\n return true\n}\n\nensureRuntimePluginSupport()\n\nexport {\n createRuntimePlugin,\n runtimeModuleIdForSpecifier,\n type CreateRuntimePluginOptions,\n type RuntimeModuleEntry,\n type RuntimeModuleExports,\n type RuntimeModuleLoader,\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;AAAA;AAUA,IAAM,mCAAmC;AAMlC,SAAS,0BAA0B,CAAC,UAAsC,CAAC,GAAY;AAAA,EAC5F,MAAM,QAAQ;AAAA,EAEd,IAAI,MAAM,mCAAmC;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EAEA,kBAAkB,oBAAoB,OAAO,CAAC;AAAA,EAE9C,MAAM,oCAAoC;AAAA,EAC1C,OAAO;AAAA;AAGT,2BAA2B;",
8
+ "debugId": "7487C2BFD13C698664756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,11 @@
1
+ import { type BunPlugin } from "bun";
2
+ export type RuntimeModuleExports = Record<string, unknown>;
3
+ export type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>;
4
+ export type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader;
5
+ export interface CreateRuntimePluginOptions {
6
+ core?: RuntimeModuleEntry;
7
+ additional?: Record<string, RuntimeModuleEntry>;
8
+ }
9
+ export declare const isCoreRuntimeModuleSpecifier: (specifier: string) => boolean;
10
+ export declare const runtimeModuleIdForSpecifier: (specifier: string) => string;
11
+ export declare function createRuntimePlugin(input?: CreateRuntimePluginOptions): BunPlugin;
@@ -0,0 +1,16 @@
1
+ // @bun
2
+ import {
3
+ createRuntimePlugin,
4
+ isCoreRuntimeModuleSpecifier,
5
+ runtimeModuleIdForSpecifier
6
+ } from "./index-e4hzc2j2.js";
7
+ import"./index-nyw5p3ep.js";
8
+ import"./index-nkrr8a4c.js";
9
+ export {
10
+ runtimeModuleIdForSpecifier,
11
+ isCoreRuntimeModuleSpecifier,
12
+ createRuntimePlugin
13
+ };
14
+
15
+ //# debugId=54AC4E2ADFC3366A64756E2164756E21
16
+ //# sourceMappingURL=runtime-plugin.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "54AC4E2ADFC3366A64756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,54 @@
1
+ import { RGBA, type ColorInput } from "./lib/RGBA.js";
2
+ import { type RenderLib } from "./zig.js";
3
+ import { type Pointer } from "bun:ffi";
4
+ export interface StyleDefinition {
5
+ fg?: RGBA;
6
+ bg?: RGBA;
7
+ bold?: boolean;
8
+ italic?: boolean;
9
+ underline?: boolean;
10
+ dim?: boolean;
11
+ }
12
+ export interface MergedStyle {
13
+ fg?: RGBA;
14
+ bg?: RGBA;
15
+ attributes: number;
16
+ }
17
+ export interface ThemeTokenStyle {
18
+ scope: string[];
19
+ style: {
20
+ foreground?: ColorInput;
21
+ background?: ColorInput;
22
+ bold?: boolean;
23
+ italic?: boolean;
24
+ underline?: boolean;
25
+ dim?: boolean;
26
+ };
27
+ }
28
+ export declare function convertThemeToStyles(theme: ThemeTokenStyle[]): Record<string, StyleDefinition>;
29
+ export declare class SyntaxStyle {
30
+ private lib;
31
+ private stylePtr;
32
+ private _destroyed;
33
+ private nameCache;
34
+ private styleDefs;
35
+ private mergedCache;
36
+ constructor(lib: RenderLib, ptr: Pointer);
37
+ static create(): SyntaxStyle;
38
+ static fromTheme(theme: ThemeTokenStyle[]): SyntaxStyle;
39
+ static fromStyles(styles: Record<string, StyleDefinition>): SyntaxStyle;
40
+ private guard;
41
+ registerStyle(name: string, style: StyleDefinition): number;
42
+ resolveStyleId(name: string): number | null;
43
+ getStyleId(name: string): number | null;
44
+ get ptr(): Pointer;
45
+ getStyleCount(): number;
46
+ clearNameCache(): void;
47
+ getStyle(name: string): StyleDefinition | undefined;
48
+ mergeStyles(...styleNames: string[]): MergedStyle;
49
+ clearCache(): void;
50
+ getCacheSize(): number;
51
+ getAllStyles(): Map<string, StyleDefinition>;
52
+ getRegisteredNames(): string[];
53
+ destroy(): void;
54
+ }
@@ -0,0 +1,16 @@
1
+ import type { Clock, TimerHandle } from "../lib/clock";
2
+ export declare class ManualClock implements Clock {
3
+ private time;
4
+ private nextId;
5
+ private nextOrder;
6
+ private readonly timers;
7
+ now(): number;
8
+ setTimeout(fn: () => void, delayMs: number): TimerHandle;
9
+ clearTimeout(handle: TimerHandle): void;
10
+ setInterval(fn: () => void, delayMs: number): TimerHandle;
11
+ clearInterval(handle: TimerHandle): void;
12
+ advance(delayMs: number): void;
13
+ runAll(): void;
14
+ private schedule;
15
+ private peekNextTimer;
16
+ }
@@ -0,0 +1,81 @@
1
+ import type { CliRenderer } from "../renderer.js";
2
+ export declare function pasteBytes(text: string): Uint8Array;
3
+ export declare const KeyCodes: {
4
+ readonly RETURN: "\r";
5
+ readonly LINEFEED: "\n";
6
+ readonly TAB: "\t";
7
+ readonly BACKSPACE: "\b";
8
+ readonly DELETE: "\u001B[3~";
9
+ readonly HOME: "\u001B[H";
10
+ readonly END: "\u001B[F";
11
+ readonly ESCAPE: "\u001B";
12
+ readonly ARROW_UP: "\u001B[A";
13
+ readonly ARROW_DOWN: "\u001B[B";
14
+ readonly ARROW_RIGHT: "\u001B[C";
15
+ readonly ARROW_LEFT: "\u001B[D";
16
+ readonly F1: "\u001BOP";
17
+ readonly F2: "\u001BOQ";
18
+ readonly F3: "\u001BOR";
19
+ readonly F4: "\u001BOS";
20
+ readonly F5: "\u001B[15~";
21
+ readonly F6: "\u001B[17~";
22
+ readonly F7: "\u001B[18~";
23
+ readonly F8: "\u001B[19~";
24
+ readonly F9: "\u001B[20~";
25
+ readonly F10: "\u001B[21~";
26
+ readonly F11: "\u001B[23~";
27
+ readonly F12: "\u001B[24~";
28
+ };
29
+ export type KeyInput = string | keyof typeof KeyCodes;
30
+ export interface MockKeysOptions {
31
+ kittyKeyboard?: boolean;
32
+ otherModifiersMode?: boolean;
33
+ }
34
+ export declare function createMockKeys(renderer: CliRenderer, options?: MockKeysOptions): {
35
+ pressKeys: (keys: KeyInput[], delayMs?: number) => Promise<void>;
36
+ pressKey: (key: KeyInput, modifiers?: {
37
+ shift?: boolean;
38
+ ctrl?: boolean;
39
+ meta?: boolean;
40
+ super?: boolean;
41
+ hyper?: boolean;
42
+ }) => void;
43
+ typeText: (text: string, delayMs?: number) => Promise<void>;
44
+ pressEnter: (modifiers?: {
45
+ shift?: boolean;
46
+ ctrl?: boolean;
47
+ meta?: boolean;
48
+ super?: boolean;
49
+ hyper?: boolean;
50
+ }) => void;
51
+ pressEscape: (modifiers?: {
52
+ shift?: boolean;
53
+ ctrl?: boolean;
54
+ meta?: boolean;
55
+ super?: boolean;
56
+ hyper?: boolean;
57
+ }) => void;
58
+ pressTab: (modifiers?: {
59
+ shift?: boolean;
60
+ ctrl?: boolean;
61
+ meta?: boolean;
62
+ super?: boolean;
63
+ hyper?: boolean;
64
+ }) => void;
65
+ pressBackspace: (modifiers?: {
66
+ shift?: boolean;
67
+ ctrl?: boolean;
68
+ meta?: boolean;
69
+ super?: boolean;
70
+ hyper?: boolean;
71
+ }) => void;
72
+ pressArrow: (direction: "up" | "down" | "left" | "right", modifiers?: {
73
+ shift?: boolean;
74
+ ctrl?: boolean;
75
+ meta?: boolean;
76
+ super?: boolean;
77
+ hyper?: boolean;
78
+ }) => void;
79
+ pressCtrlC: () => void;
80
+ pasteBracketedText: (text: string) => Promise<void>;
81
+ };
@@ -0,0 +1,38 @@
1
+ import type { CliRenderer } from "../renderer.js";
2
+ export declare const MouseButtons: {
3
+ readonly LEFT: 0;
4
+ readonly MIDDLE: 1;
5
+ readonly RIGHT: 2;
6
+ readonly WHEEL_UP: 64;
7
+ readonly WHEEL_DOWN: 65;
8
+ readonly WHEEL_LEFT: 66;
9
+ readonly WHEEL_RIGHT: 67;
10
+ };
11
+ export type MouseButton = (typeof MouseButtons)[keyof typeof MouseButtons];
12
+ export interface MousePosition {
13
+ x: number;
14
+ y: number;
15
+ }
16
+ export interface MouseModifiers {
17
+ shift?: boolean;
18
+ alt?: boolean;
19
+ ctrl?: boolean;
20
+ }
21
+ export type MouseEventType = "down" | "up" | "move" | "drag" | "scroll";
22
+ export interface MouseEventOptions {
23
+ button?: MouseButton;
24
+ modifiers?: MouseModifiers;
25
+ delayMs?: number;
26
+ }
27
+ export declare function createMockMouse(renderer: CliRenderer): {
28
+ moveTo: (x: number, y: number, options?: MouseEventOptions) => Promise<void>;
29
+ click: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
30
+ doubleClick: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
31
+ pressDown: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
32
+ release: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
33
+ drag: (startX: number, startY: number, endX: number, endY: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
34
+ scroll: (x: number, y: number, direction: "up" | "down" | "left" | "right", options?: MouseEventOptions) => Promise<void>;
35
+ getCurrentPosition: () => MousePosition;
36
+ getPressedButtons: () => MouseButton[];
37
+ emitMouseEvent: (type: MouseEventType, x: number, y: number, button?: MouseButton, options?: Omit<MouseEventOptions, "button">) => Promise<void>;
38
+ };
@@ -0,0 +1,23 @@
1
+ import { TreeSitterClient } from "../lib/tree-sitter/index.js";
2
+ import type { SimpleHighlight } from "../lib/tree-sitter/types.js";
3
+ export declare class MockTreeSitterClient extends TreeSitterClient {
4
+ private _highlightPromises;
5
+ private _mockResult;
6
+ private _autoResolveTimeout?;
7
+ constructor(options?: {
8
+ autoResolveTimeout?: number;
9
+ });
10
+ highlightOnce(content: string, filetype: string): Promise<{
11
+ highlights?: SimpleHighlight[];
12
+ warning?: string;
13
+ error?: string;
14
+ }>;
15
+ setMockResult(result: {
16
+ highlights?: SimpleHighlight[];
17
+ warning?: string;
18
+ error?: string;
19
+ }): void;
20
+ resolveHighlightOnce(index?: number): void;
21
+ resolveAllHighlightOnce(): void;
22
+ isHighlighting(): boolean;
23
+ }