@jitl/opentui-core 0.1.97 → 0.2.15

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 (132) hide show
  1. package/NativeSpanFeed.d.ts +2 -2
  2. package/README.md +2 -1
  3. package/Renderable.d.ts +12 -1
  4. package/audio.d.ts +89 -0
  5. package/buffer.d.ts +6 -5
  6. package/console.d.ts +3 -1
  7. package/edit-buffer.d.ts +1 -1
  8. package/editor-view.d.ts +1 -1
  9. package/{index-yxe6e14n.js → index-46f5e8m6.js} +1388 -1721
  10. package/index-46f5e8m6.js.map +36 -0
  11. package/index-5zwezmgj.js +639 -0
  12. package/index-5zwezmgj.js.map +11 -0
  13. package/index-axv7cw60.js +44 -0
  14. package/index-axv7cw60.js.map +10 -0
  15. package/{index-rhfjv9c1.js → index-g9agybj3.js} +4626 -984
  16. package/index-g9agybj3.js.map +82 -0
  17. package/index-k18nf2r7.js +21 -0
  18. package/{ffi-x3zvcksd.js.map → index-k18nf2r7.js.map} +1 -1
  19. package/{index-tkk6cmr2.js → index-rp7vz5rh.js} +125 -23
  20. package/index-rp7vz5rh.js.map +10 -0
  21. package/{index-kcpn1hka.js → index-xwsdfq5x.js} +16 -6
  22. package/index-xwsdfq5x.js.map +10 -0
  23. package/index.d.ts +1 -0
  24. package/index.js +37 -17
  25. package/index.js.map +1 -1
  26. package/lib/RGBA.d.ts +22 -6
  27. package/lib/clipboard.d.ts +1 -1
  28. package/lib/{keymapping.d.ts → keybinding.internal.d.ts} +10 -2
  29. package/lib/objects-in-viewport.d.ts +4 -4
  30. package/lib/parse.keypress-kitty.d.ts +1 -0
  31. package/lib/parse.keypress.d.ts +1 -0
  32. package/lib/render-geometry.d.ts +8 -0
  33. package/lib/stdin-parser.d.ts +4 -1
  34. package/lib/terminal-capability-detection.d.ts +2 -0
  35. package/lib/terminal-palette.d.ts +20 -5
  36. package/lib/tree-sitter/assets/update.d.ts +1 -0
  37. package/lib/tree-sitter/client.d.ts +2 -0
  38. package/lib/tree-sitter/default-parsers.d.ts +1 -1
  39. package/lib/tree-sitter/index.d.ts +0 -2
  40. package/lib/tree-sitter/update-assets.d.ts +3 -0
  41. package/lib/tree-sitter/update-assets.js +377 -0
  42. package/lib/tree-sitter/update-assets.js.map +12 -0
  43. package/lib/tree-sitter-styled-text.d.ts +6 -4
  44. package/node22-bun-ffi-structs-ha8fmzzb.js +396 -0
  45. package/node22-bun-ffi-structs-ha8fmzzb.js.map +10 -0
  46. package/package.json +23 -22
  47. package/parser.worker.js +161 -24
  48. package/parser.worker.js.map +12 -5
  49. package/platform/bun-ffi-structs.d.ts +2 -0
  50. package/platform/ffi.d.ts +126 -0
  51. package/platform/node22-bun-ffi-structs.d.ts +33 -0
  52. package/platform/node22-ffi.d.ts +33 -0
  53. package/{compat → platform}/runtime.d.ts +6 -0
  54. package/platform/worker.d.ts +4 -0
  55. package/renderables/Code.d.ts +4 -0
  56. package/renderables/Markdown.d.ts +62 -0
  57. package/renderables/ScrollBox.d.ts +1 -0
  58. package/renderables/Select.d.ts +3 -1
  59. package/renderables/TabSelect.d.ts +3 -1
  60. package/renderables/TextBufferRenderable.d.ts +1 -0
  61. package/renderables/TextTable.d.ts +15 -1
  62. package/renderables/Textarea.d.ts +5 -3
  63. package/renderables/markdown-parser.d.ts +1 -0
  64. package/renderer-theme-mode.d.ts +29 -0
  65. package/renderer.d.ts +142 -16
  66. package/runtime-plugin-support-configure.d.ts +4 -0
  67. package/runtime-plugin-support-configure.js +20 -0
  68. package/{index-re3ntm60.js.map → runtime-plugin-support-configure.js.map} +1 -1
  69. package/runtime-plugin-support.d.ts +3 -3
  70. package/runtime-plugin-support.js +9 -18
  71. package/runtime-plugin-support.js.map +3 -3
  72. package/runtime-plugin.d.ts +1 -4
  73. package/runtime-plugin.js +5 -5
  74. package/syntax-style.d.ts +11 -3
  75. package/testing/terminal-capabilities.d.ts +7 -0
  76. package/testing/test-recorder.d.ts +6 -6
  77. package/testing/test-renderer.d.ts +34 -2
  78. package/testing.d.ts +2 -0
  79. package/testing.js +329 -23
  80. package/testing.js.map +7 -5
  81. package/text-buffer-view.d.ts +2 -1
  82. package/text-buffer.d.ts +1 -1
  83. package/types.d.ts +33 -1
  84. package/zig-structs.d.ts +111 -20
  85. package/zig.d.ts +57 -7
  86. package/3d/SpriteResourceManager.d.ts +0 -74
  87. package/3d/SpriteUtils.d.ts +0 -13
  88. package/3d/TextureUtils.d.ts +0 -24
  89. package/3d/ThreeRenderable.d.ts +0 -40
  90. package/3d/WGPURenderer.d.ts +0 -61
  91. package/3d/animation/ExplodingSpriteEffect.d.ts +0 -71
  92. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +0 -76
  93. package/3d/animation/SpriteAnimator.d.ts +0 -124
  94. package/3d/animation/SpriteParticleGenerator.d.ts +0 -62
  95. package/3d/canvas.d.ts +0 -44
  96. package/3d/index.d.ts +0 -12
  97. package/3d/physics/PlanckPhysicsAdapter.d.ts +0 -19
  98. package/3d/physics/RapierPhysicsAdapter.d.ts +0 -19
  99. package/3d/physics/physics-interface.d.ts +0 -27
  100. package/3d.d.ts +0 -2
  101. package/3d.js +0 -33843
  102. package/3d.js.map +0 -155
  103. package/Worker-vajwjk0s.js +0 -94
  104. package/Worker-vajwjk0s.js.map +0 -10
  105. package/compat/FFIType.d.ts +0 -304
  106. package/compat/Worker.d.ts +0 -1
  107. package/compat/bun-ffi-structs.d.ts +0 -2
  108. package/compat/ffi.d.ts +0 -86
  109. package/compat/nodejs/Worker.d.ts +0 -16
  110. package/compat/nodejs/bun-ffi-structs/index.d.ts +0 -46
  111. package/compat/nodejs/ffi.d.ts +0 -21
  112. package/compat/nodejs/registerResolveJs.d.ts +0 -1
  113. package/compat/nodejs/runtime.d.ts +0 -7
  114. package/compat/nodejs/test.d.ts +0 -4
  115. package/compat/nodejs/trampoline.worker.d.ts +0 -1
  116. package/compat/test.d.ts +0 -1
  117. package/compat/testHelpers.d.ts +0 -18
  118. package/ffi-x3zvcksd.js +0 -25
  119. package/index-5yqvbmcz.js +0 -220
  120. package/index-5yqvbmcz.js.map +0 -10
  121. package/index-bnfz2g63.js +0 -654
  122. package/index-bnfz2g63.js.map +0 -10
  123. package/index-cbvybypy.js +0 -43
  124. package/index-cbvybypy.js.map +0 -10
  125. package/index-kcpn1hka.js.map +0 -10
  126. package/index-re3ntm60.js +0 -51
  127. package/index-rhfjv9c1.js.map +0 -70
  128. package/index-tkk6cmr2.js.map +0 -10
  129. package/index-yxe6e14n.js.map +0 -42
  130. package/runtime-hdpkc6qf.js +0 -220
  131. package/runtime-hdpkc6qf.js.map +0 -17
  132. /package/{compat/nodejs/registerBun.d.ts → native-event-worker-repro.worker.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { type Pointer } from "./compat/ffi.js";
1
+ import { type Pointer } from "./platform/ffi.js";
2
2
  import type { NativeSpanFeedOptions } from "./zig-structs.js";
3
3
  export type { GrowthPolicy, NativeSpanFeedOptions, NativeSpanFeedStats } from "./zig-structs.js";
4
4
  export type DataHandler = (data: Uint8Array) => void | Promise<void>;
@@ -7,7 +7,7 @@ export type DataHandler = (data: Uint8Array) => void | Promise<void>;
7
7
  */
8
8
  export declare class NativeSpanFeed {
9
9
  static create(options?: NativeSpanFeedOptions): NativeSpanFeed;
10
- static attach(streamPtr: bigint | number, _options?: NativeSpanFeedOptions): NativeSpanFeed;
10
+ static attach(streamPtr: Pointer, _options?: NativeSpanFeedOptions): NativeSpanFeed;
11
11
  readonly streamPtr: Pointer;
12
12
  private readonly lib;
13
13
  private readonly eventHandler;
package/README.md CHANGED
@@ -31,7 +31,8 @@ This creates platform-specific libraries that are automatically loaded by the Ty
31
31
 
32
32
  ```bash
33
33
  bun install
34
- bun run src/examples/index.ts
34
+ cd ../examples
35
+ bun run dev
35
36
  ```
36
37
 
37
38
  ## Benchmarks
package/Renderable.d.ts CHANGED
@@ -16,7 +16,8 @@ export declare enum LayoutEvents {
16
16
  }
17
17
  export declare enum RenderableEvents {
18
18
  FOCUSED = "focused",
19
- BLURRED = "blurred"
19
+ BLURRED = "blurred",
20
+ DESTROYED = "destroyed"
20
21
  }
21
22
  export interface Position {
22
23
  top?: number | "auto" | `${number}%`;
@@ -122,6 +123,8 @@ export declare abstract class Renderable extends BaseRenderable {
122
123
  protected _translateY: number;
123
124
  protected _x: number;
124
125
  protected _y: number;
126
+ protected _screenX: number;
127
+ protected _screenY: number;
125
128
  protected _width: number | "auto" | `${number}%`;
126
129
  protected _height: number | "auto" | `${number}%`;
127
130
  protected _widthValue: number;
@@ -132,6 +135,7 @@ export declare abstract class Renderable extends BaseRenderable {
132
135
  protected frameBuffer: OptimizedBuffer | null;
133
136
  protected _focusable: boolean;
134
137
  protected _focused: boolean;
138
+ protected _hasFocusedDescendant: boolean;
135
139
  protected keypressHandler: ((key: KeyEvent) => void) | null;
136
140
  protected pasteHandler: ((event: PasteEvent) => void) | null;
137
141
  private _live;
@@ -155,6 +159,7 @@ export declare abstract class Renderable extends BaseRenderable {
155
159
  private childrenPrimarySortDirty;
156
160
  private childrenSortedByPrimaryAxis;
157
161
  private _shouldUpdateBefore;
162
+ private _lastLayoutFrame;
158
163
  onLifecyclePass: (() => void) | null;
159
164
  renderBefore?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
160
165
  renderAfter?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
@@ -174,8 +179,10 @@ export declare abstract class Renderable extends BaseRenderable {
174
179
  getSelectedText(): string;
175
180
  shouldStartSelection(x: number, y: number): boolean;
176
181
  focus(): void;
182
+ protected propagateFocusChange(hasFocus: boolean): void;
177
183
  blur(): void;
178
184
  get focused(): boolean;
185
+ get hasFocusedDescendant(): boolean;
179
186
  get live(): boolean;
180
187
  get liveCount(): number;
181
188
  set live(value: boolean);
@@ -188,6 +195,8 @@ export declare abstract class Renderable extends BaseRenderable {
188
195
  set translateX(value: number);
189
196
  get translateY(): number;
190
197
  set translateY(value: number);
198
+ get screenX(): number;
199
+ get screenY(): number;
191
200
  get x(): number;
192
201
  set x(value: number);
193
202
  get top(): number | "auto" | `${number}%` | undefined;
@@ -232,6 +241,7 @@ export declare abstract class Renderable extends BaseRenderable {
232
241
  set marginX(marginX: number | "auto" | `${number}%` | null | undefined);
233
242
  set marginY(marginY: number | "auto" | `${number}%` | null | undefined);
234
243
  set marginTop(margin: number | "auto" | `${number}%` | null | undefined);
244
+ get marginTop(): number | "auto" | `${number}%`;
235
245
  set marginRight(margin: number | "auto" | `${number}%` | null | undefined);
236
246
  set marginBottom(margin: number | "auto" | `${number}%` | null | undefined);
237
247
  set marginLeft(margin: number | "auto" | `${number}%` | null | undefined);
@@ -263,6 +273,7 @@ export declare abstract class Renderable extends BaseRenderable {
263
273
  getChildrenCount(): number;
264
274
  updateLayout(deltaTime: number, renderList?: RenderCommand[]): void;
265
275
  render(buffer: OptimizedBuffer, deltaTime: number): void;
276
+ protected _hasVisibleChildFilter(): boolean;
266
277
  protected _getVisibleChildren(): number[];
267
278
  protected onUpdate(deltaTime: number): void;
268
279
  protected getScissorRect(): {
package/audio.d.ts ADDED
@@ -0,0 +1,89 @@
1
+ import { EventEmitter } from "events";
2
+ import type { AudioStats } from "./zig-structs.js";
3
+ export interface AudioSetupOptions {
4
+ autoStart?: boolean;
5
+ sampleRate?: number;
6
+ playbackChannels?: number;
7
+ startOptions?: AudioStartOptions;
8
+ }
9
+ export interface AudioStartOptions {
10
+ periodSizeInFrames?: number;
11
+ periodSizeInMilliseconds?: number;
12
+ periods?: number;
13
+ performanceProfile?: number;
14
+ shareMode?: number;
15
+ noPreSilencedOutputBuffer?: boolean;
16
+ noClip?: boolean;
17
+ noDisableDenormals?: boolean;
18
+ noFixedSizedCallback?: boolean;
19
+ wasapiNoAutoConvertSrc?: boolean;
20
+ wasapiNoDefaultQualitySrc?: boolean;
21
+ alsaNoMMap?: boolean;
22
+ alsaNoAutoFormat?: boolean;
23
+ alsaNoAutoChannels?: boolean;
24
+ alsaNoAutoResample?: boolean;
25
+ }
26
+ export interface AudioPlayOptions {
27
+ volume?: number;
28
+ pan?: number;
29
+ loop?: boolean;
30
+ groupId?: number;
31
+ }
32
+ export type AudioGroup = number;
33
+ export type AudioVoice = number;
34
+ export type AudioSound = number;
35
+ export interface AudioPlaybackDevice {
36
+ index: number;
37
+ name: string;
38
+ isDefault: boolean;
39
+ }
40
+ export type AudioAction = "createAudioEngine" | "start" | "startMixer" | "stop" | "loadSound" | "loadSoundFile" | "unloadSound" | "group" | "play" | "stopVoice" | "setVoiceGroup" | "setGroupVolume" | "setMasterVolume" | "mixFrames" | "enableTap" | "readTapFrames" | "listPlaybackDevices" | "selectPlaybackDevice" | "clearPlaybackDeviceSelection" | "getStats";
41
+ export interface AudioErrorContext {
42
+ action: AudioAction;
43
+ status?: number;
44
+ }
45
+ export interface AudioEvents {
46
+ error: [error: Error, context: AudioErrorContext];
47
+ started: [];
48
+ mixerStarted: [];
49
+ stopped: [];
50
+ disposed: [];
51
+ }
52
+ export declare class Audio extends EventEmitter<AudioEvents> {
53
+ static create(options?: AudioSetupOptions): Audio;
54
+ private readonly lib;
55
+ private readonly defaultStartOptions;
56
+ private engine;
57
+ private readonly groups;
58
+ private playbackStarted;
59
+ private mixerStarted;
60
+ private constructor();
61
+ private emitError;
62
+ start(options?: AudioStartOptions): boolean;
63
+ startMixer(): boolean;
64
+ stop(): boolean;
65
+ isStarted(): boolean;
66
+ isMixerStarted(): boolean;
67
+ loadSound(data: Uint8Array | ArrayBuffer): AudioSound | null;
68
+ loadSoundFile(filePath: string): Promise<AudioSound | null>;
69
+ unloadSound(sound: AudioSound): boolean;
70
+ group(name: string): AudioGroup | null;
71
+ play(sound: AudioSound, options?: AudioPlayOptions): AudioVoice | null;
72
+ stopVoice(voice: AudioVoice): boolean;
73
+ setVoiceGroup(voice: AudioVoice, group: AudioGroup): boolean;
74
+ setGroupVolume(group: AudioGroup, volume: number): boolean;
75
+ setMasterVolume(volume: number): boolean;
76
+ mixFrames(frameCount: number, channels?: number): Float32Array | null;
77
+ enableTap(capacityFrames?: number): boolean;
78
+ disableTap(): boolean;
79
+ readTapFrames(frameCount: number, channels?: number): {
80
+ frames: Float32Array;
81
+ framesRead: number;
82
+ } | null;
83
+ listPlaybackDevices(): AudioPlaybackDevice[] | null;
84
+ selectPlaybackDevice(index: number): boolean;
85
+ clearPlaybackDeviceSelection(): void;
86
+ getStats(): AudioStats | null;
87
+ dispose(): void;
88
+ }
89
+ export declare function setupAudio(options?: AudioSetupOptions): Audio;
package/buffer.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { RGBA } from "./lib/index.js";
2
2
  import { type RenderLib } from "./zig.js";
3
- import { type Pointer } from "./compat/ffi.js";
3
+ import { type Pointer, type PointerInput } from "./platform/ffi.js";
4
4
  import { type BorderStyle, type BorderSides } from "./lib/index.js";
5
5
  import { TargetChannel, type WidthMethod, type CapturedLine } from "./types.js";
6
6
  import type { TextBufferView } from "./text-buffer-view.js";
@@ -18,10 +18,11 @@ export declare class OptimizedBuffer {
18
18
  private _destroyed;
19
19
  get ptr(): Pointer;
20
20
  private guard;
21
+ private ensureRawBufferViews;
21
22
  get buffers(): {
22
23
  char: Uint32Array;
23
- fg: Float32Array;
24
- bg: Float32Array;
24
+ fg: Uint16Array;
25
+ bg: Uint16Array;
25
26
  attributes: Uint32Array;
26
27
  };
27
28
  constructor(lib: RenderLib, ptr: Pointer, width: number, height: number, options: {
@@ -56,8 +57,8 @@ export declare class OptimizedBuffer {
56
57
  destroy(): void;
57
58
  drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void;
58
59
  drawEditorView(editorView: EditorView, x: number, y: number): void;
59
- drawSuperSampleBuffer(x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
60
- drawPackedBuffer(dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number): void;
60
+ drawSuperSampleBuffer(x: number, y: number, pixelDataPtr: PointerInput, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
61
+ drawPackedBuffer(dataPtr: PointerInput, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number): void;
61
62
  drawGrayscaleBuffer(posX: number, posY: number, intensities: Float32Array, srcWidth: number, srcHeight: number, fg?: RGBA | null, bg?: RGBA | null): void;
62
63
  drawGrayscaleBufferSupersampled(posX: number, posY: number, intensities: Float32Array, srcWidth: number, srcHeight: number, fg?: RGBA | null, bg?: RGBA | null): void;
63
64
  resize(width: number, height: number): void;
package/console.d.ts CHANGED
@@ -4,7 +4,8 @@ import type { ColorInput } from "./lib/RGBA.js";
4
4
  import { OptimizedBuffer } from "./buffer.js";
5
5
  import { type Clock } from "./lib/clock.js";
6
6
  import { Capture } from "./lib/output.capture.js";
7
- import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "./lib/keymapping.js";
7
+ import { type KeyBinding as BaseKeyBinding } from "./lib/keybinding.internal.js";
8
+ type KeyAliasMap = Record<string, string>;
8
9
  export declare const capture: Capture;
9
10
  export declare enum ConsolePosition {
10
11
  TOP = "top",
@@ -142,3 +143,4 @@ export declare class TerminalConsole extends EventEmitter {
142
143
  };
143
144
  private saveLogsToFile;
144
145
  }
146
+ export {};
package/edit-buffer.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type LogicalCursor, type RenderLib } from "./zig.js";
2
- import { type Pointer } from "./compat/ffi.js";
2
+ import { type Pointer } from "./platform/ffi.js";
3
3
  import { type WidthMethod, type Highlight } from "./types.js";
4
4
  import { RGBA } from "./lib/RGBA.js";
5
5
  import { EventEmitter } from "events";
package/editor-view.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { RGBA } from "./lib/RGBA.js";
2
2
  import { type RenderLib, type VisualCursor, type LineInfo } from "./zig.js";
3
- import { type Pointer } from "./compat/ffi.js";
3
+ import { type Pointer } from "./platform/ffi.js";
4
4
  import type { EditBuffer } from "./edit-buffer.js";
5
5
  export interface Viewport {
6
6
  offsetY: number;