@opentui/core 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +4 -4
  2. package/Renderable.d.ts +3 -0
  3. package/audio.d.ts +202 -1
  4. package/buffer.d.ts +3 -0
  5. package/chunk-bun-ctxxvhwz.js +17416 -0
  6. package/chunk-bun-ctxxvhwz.js.map +62 -0
  7. package/chunk-bun-v3e63tzw.js +10157 -0
  8. package/chunk-bun-v3e63tzw.js.map +32 -0
  9. package/{index-7z5n7k9m.js → chunk-node-1j69hr31.js} +147 -37
  10. package/chunk-node-1j69hr31.js.map +32 -0
  11. package/{index-za1krqsf.js → chunk-node-savhj5rp.js} +1594 -467
  12. package/chunk-node-savhj5rp.js.map +61 -0
  13. package/image.d.ts +105 -0
  14. package/index.bun.js +15128 -0
  15. package/index.bun.js.map +41 -0
  16. package/index.d.ts +2 -0
  17. package/{index.js → index.node.js} +2134 -90
  18. package/{index.js.map → index.node.js.map} +40 -5
  19. package/lib/env.d.ts +1 -0
  20. package/lib/stdin-parser.d.ts +5 -0
  21. package/lib/tree-sitter/default-parser-assets.bun.d.ts +1 -0
  22. package/lib/tree-sitter/default-parsers.d.ts +1 -0
  23. package/lib/tree-sitter/parsers-config.d.ts +2 -2
  24. package/lib/tree-sitter/types.d.ts +1 -0
  25. package/lib/tree-sitter/update-assets.js +124 -58
  26. package/lib/tree-sitter/update-assets.js.map +3 -3
  27. package/node-asset-target.d.ts +12 -0
  28. package/node-assets.d.ts +7 -0
  29. package/node-assets.js +264 -0
  30. package/node-assets.js.map +16 -0
  31. package/package.json +24 -14
  32. package/parser.worker.js +3353 -188
  33. package/parser.worker.js.map +18 -12
  34. package/platform/assets.d.ts +5 -0
  35. package/platform/ffi.d.ts +2 -0
  36. package/platform/runtime-assets.bun.d.ts +4 -0
  37. package/platform/runtime-assets.node.d.ts +4 -0
  38. package/platform/runtime.d.ts +5 -1
  39. package/renderables/Image.d.ts +44 -0
  40. package/renderables/index.d.ts +1 -0
  41. package/renderer.d.ts +14 -0
  42. package/runtime-plugin.js +2 -2
  43. package/runtime-plugin.js.map +1 -1
  44. package/testing.bun.js +1006 -0
  45. package/testing.bun.js.map +18 -0
  46. package/testing.js +4 -3
  47. package/testing.js.map +3 -3
  48. package/text-buffer-view.d.ts +2 -5
  49. package/types.d.ts +8 -0
  50. package/yoga.bun.js +194 -0
  51. package/yoga.bun.js.map +9 -0
  52. package/yoga.js +1 -1
  53. package/zig-structs.d.ts +45 -24
  54. package/zig.d.ts +70 -7
  55. package/index-7z5n7k9m.js.map +0 -32
  56. package/index-za1krqsf.js.map +0 -58
package/yoga.js CHANGED
@@ -92,7 +92,7 @@ import {
92
92
  WRAP_WRAP_REVERSE,
93
93
  Wrap,
94
94
  yoga_default
95
- } from "./index-za1krqsf.js";
95
+ } from "./chunk-node-savhj5rp.js";
96
96
  export {
97
97
  yoga_default as default,
98
98
  Wrap,
package/zig-structs.d.ts CHANGED
@@ -44,6 +44,11 @@ export declare const TerminalCapabilitiesStruct: import("bun-ffi-structs").Defin
44
44
  zellij: number;
45
45
  screen: number;
46
46
  unknown: number;
47
+ }>], readonly ["image_protocol", import("bun-ffi-structs").EnumDef<{
48
+ auto: number;
49
+ kitty: number;
50
+ sixel: number;
51
+ blocks: number;
47
52
  }>], readonly ["term_name", "char*"], readonly ["term_name_len", "u64", {
48
53
  readonly lengthOf: "term_name";
49
54
  }], readonly ["term_version", "char*"], readonly ["term_version_len", "u64", {
@@ -54,6 +59,18 @@ export declare const TerminalCapabilitiesStruct: import("bun-ffi-structs").Defin
54
59
  unsupported: number;
55
60
  }>]], {}>;
56
61
  export declare const EncodedCharStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["width", "u8"], readonly ["char", "u32"]], {}>;
62
+ export interface NativeImageInfo {
63
+ width: number;
64
+ height: number;
65
+ sourceWidth: number;
66
+ sourceHeight: number;
67
+ format: number;
68
+ colorStatus: number;
69
+ orientation: number;
70
+ hasAlpha: number;
71
+ }
72
+ export declare const NativeImageInfoStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["width", "u32"], readonly ["height", "u32"], readonly ["sourceWidth", "u32"], readonly ["sourceHeight", "u32"], readonly ["format", "u32"], readonly ["colorStatus", "u32"], readonly ["orientation", "u32"], readonly ["hasAlpha", "u32"]], {}>;
73
+ export declare const ImageDrawOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["x", "i32"], readonly ["y", "i32"], readonly ["width", "u32"], readonly ["height", "u32"], readonly ["pixelWidth", "u32"], readonly ["pixelHeight", "u32"], readonly ["sourceX", "u32"], readonly ["sourceY", "u32"], readonly ["sourceWidth", "u32"], readonly ["sourceHeight", "u32"], readonly ["protocol", "u32"]], {}>;
57
74
  export declare const LineInfoStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["startCols", readonly ["u32"]], readonly ["startColsLen", "u32", {
58
75
  readonly lengthOf: "startCols";
59
76
  }], readonly ["widthCols", readonly ["u32"]], readonly ["widthColsLen", "u32", {
@@ -146,31 +163,25 @@ export declare const NativeSpanFeedOptionsStruct: import("bun-ffi-structs").Defi
146
163
  readonly default: 0;
147
164
  }]], {}>;
148
165
  export declare const NativeSpanFeedStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["bytesWritten", "u64"], readonly ["spansCommitted", "u64"], readonly ["chunks", "u32"], readonly ["pendingSpans", "u32"]], {}>;
149
- export declare const SpanInfoStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["chunkPtr", "pointer"], readonly ["offset", "u32"], readonly ["len", "u32"], readonly ["chunkIndex", "u32"], readonly ["reserved", "u32", {
150
- readonly default: 0;
151
- }]], {
152
- readonly reduceValue: (value: {
153
- chunkPtr: Pointer;
154
- offset: number;
155
- len: number;
156
- chunkIndex: number;
157
- }) => {
158
- chunkPtr: Pointer;
159
- offset: number;
160
- len: number;
161
- chunkIndex: number;
162
- };
166
+ export declare const SpanInfoStruct: import("bun-ffi-structs").StructDef<{
167
+ chunkPtr: Pointer;
168
+ offset: number;
169
+ len: number;
170
+ chunkIndex: number;
171
+ }, {
172
+ offset: number;
173
+ chunkPtr: ArrayBufferLike | import("bun-ffi-structs").Pointer | ArrayBufferView<ArrayBufferLike>;
174
+ len: number;
175
+ chunkIndex: number;
176
+ reserved?: number | null | undefined;
163
177
  }>;
164
- export declare const ReserveInfoStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["ptr", "pointer"], readonly ["len", "u32"], readonly ["reserved", "u32", {
165
- readonly default: 0;
166
- }]], {
167
- readonly reduceValue: (value: {
168
- ptr: Pointer;
169
- len: number;
170
- }) => {
171
- ptr: Pointer;
172
- len: number;
173
- };
178
+ export declare const ReserveInfoStruct: import("bun-ffi-structs").StructDef<{
179
+ ptr: Pointer;
180
+ len: number;
181
+ }, {
182
+ len: number;
183
+ ptr: ArrayBufferLike | import("bun-ffi-structs").Pointer | ArrayBufferView<ArrayBufferLike>;
184
+ reserved?: number | null | undefined;
174
185
  }>;
175
186
  export type AudioCreateOptions = {
176
187
  sampleRate?: number;
@@ -252,6 +263,15 @@ export type AudioStats = {
252
263
  lastPeak: number;
253
264
  lastRms: number;
254
265
  };
266
+ export type NativeAudioCaptureStats = {
267
+ framesReceived: bigint;
268
+ framesRead: bigint;
269
+ framesDropped: bigint;
270
+ sampleRate: number;
271
+ channels: number;
272
+ bufferedFrames: number;
273
+ capacityFrames: number;
274
+ };
255
275
  export declare const AudioCreateOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["sampleRate", "u32", {
256
276
  readonly default: 48000;
257
277
  }], readonly ["playbackChannels", "u32", {
@@ -299,5 +319,6 @@ export declare const AudioVoiceOptionsStruct: import("bun-ffi-structs").DefineSt
299
319
  }]], {}>;
300
320
  export declare const AudioStreamCreateOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["capacityMs", "u32"], readonly ["startupMs", "u32"], readonly ["resumeMs", "u32"], readonly ["volume", "f32"], readonly ["pan", "f32"], readonly ["groupId", "u32"], readonly ["maxProbeBytes", "u32"], readonly ["format", "u32"]], {}>;
301
321
  export declare const AudioStreamStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["bytesReceived", "u64"], readonly ["framesDecoded", "u64"], readonly ["framesPlayed", "u64"], readonly ["state", "u32"], readonly ["sampleRate", "u32"], readonly ["channels", "u32"], readonly ["bufferedFrames", "u32"], readonly ["capacityFrames", "u32"], readonly ["underruns", "u32"], readonly ["errorCode", "i32"], readonly ["readyGeneration", "u32"]], {}>;
322
+ export declare const AudioCaptureStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["framesReceived", "u64"], readonly ["framesRead", "u64"], readonly ["framesDropped", "u64"], readonly ["sampleRate", "u32"], readonly ["channels", "u32"], readonly ["bufferedFrames", "u32"], readonly ["capacityFrames", "u32"]], {}>;
302
323
  export declare const AudioStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["soundsLoaded", "u32"], readonly ["voicesActive", "u32"], readonly ["framesMixed", "u64"], readonly ["lockMisses", "u32"], readonly ["lastPeak", "f32"], readonly ["lastRms", "f32"]], {}>;
303
324
  export {};
package/zig.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { type FFICallbackInstance, type Pointer } from "./platform/ffi.js";
2
- import { type CursorStyle, type CursorStyleOptions, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo } from "./types.js";
3
- export type { LineInfo, AllocatorStats, AudioStreamCreateOptions, BuildOptions, NativeAudioStreamStats, NativeRenderStats, };
2
+ import { type CursorStyle, type CursorStyleOptions, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo, type ImageRenderProtocol } from "./types.js";
3
+ export type { LineInfo, AllocatorStats, AudioStreamCreateOptions, BuildOptions, NativeAudioCaptureStats, NativeAudioStreamStats, NativeRenderStats, };
4
4
  import { RGBA } from "./lib/RGBA.js";
5
5
  import { OptimizedBuffer } from "./buffer.js";
6
6
  import { TextBuffer } from "./text-buffer.js";
7
- import type { NativeSpanFeedOptions, NativeSpanFeedStats, ReserveInfo, AudioCreateOptions, AudioStartOptions, AudioVoiceOptions, AudioStreamCreateOptions, NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType, NativeAudioStreamFormat as NativeAudioStreamFormatType, NativeAudioStreamState as NativeAudioStreamStateType, NativeAudioStreamStats, AudioStats, BuildOptions, AllocatorStats, NativeRenderStats } from "./zig-structs.js";
7
+ import type { NativeSpanFeedOptions, NativeSpanFeedStats, ReserveInfo, AudioCreateOptions, AudioStartOptions, AudioVoiceOptions, AudioStreamCreateOptions, NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType, NativeAudioStreamFormat as NativeAudioStreamFormatType, NativeAudioStreamState as NativeAudioStreamStateType, NativeAudioStreamStats, NativeAudioCaptureStats, AudioStats, BuildOptions, AllocatorStats, NativeRenderStats, NativeImageInfo } from "./zig-structs.js";
8
8
  export declare const NativeAudioStreamState: {
9
9
  readonly Initializing: 0;
10
10
  readonly Buffering: 1;
@@ -39,6 +39,7 @@ export type SyntaxStyleHandle = NativeHandle<"syntax_style">;
39
39
  export type EventSinkHandle = NativeHandle<"event_sink">;
40
40
  export type AudioEngineHandle = NativeHandle<"audio_engine">;
41
41
  export type NativeRenderableHandle = NativeHandle<"native_renderable">;
42
+ export type ImageHandle = NativeHandle<"image">;
42
43
  export declare enum LogLevel {
43
44
  Error = 0,
44
45
  Warn = 1,
@@ -63,6 +64,10 @@ export interface LogicalCursor {
63
64
  col: number;
64
65
  offset: number;
65
66
  }
67
+ export interface MeasureResult {
68
+ lineCount: number;
69
+ widthColsMax: number;
70
+ }
66
71
  export interface CursorState {
67
72
  x: number;
68
73
  y: number;
@@ -108,6 +113,23 @@ export interface AudioEngineLib {
108
113
  audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean;
109
114
  audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => number;
110
115
  audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => void;
116
+ audioRefreshCaptureDevices: (engine: AudioEngineHandle) => number;
117
+ audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => number;
118
+ audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => string;
119
+ audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean;
120
+ audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => number;
121
+ audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => void;
122
+ audioStartCapture: (engine: AudioEngineHandle, options: AudioStartOptions | undefined, channels: number, capacityFrames: number) => number;
123
+ audioStopCapture: (engine: AudioEngineHandle) => number;
124
+ audioIsCaptureRunning: (engine: AudioEngineHandle) => boolean;
125
+ audioReadCapture: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number) => {
126
+ status: number;
127
+ framesRead: number;
128
+ };
129
+ audioGetCaptureStats: (engine: AudioEngineHandle) => {
130
+ status: number;
131
+ stats: NativeAudioCaptureStats | null;
132
+ };
111
133
  audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number;
112
134
  audioStartMixer: (engine: AudioEngineHandle) => number;
113
135
  audioStop: (engine: AudioEngineHandle) => number;
@@ -195,6 +217,7 @@ export interface RenderLib extends AudioEngineLib {
195
217
  bufferColorMatrix: (buffer: OptimizedBufferHandle, matrixPtr: Pointer, cellMaskPtr: Pointer, cellMaskCount: number, strength: number, target: TargetChannel) => void;
196
218
  bufferColorMatrixUniform: (buffer: OptimizedBufferHandle, matrixPtr: Pointer, strength: number, target: TargetChannel) => void;
197
219
  bufferDrawSuperSampleBuffer: (buffer: OptimizedBufferHandle, x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number) => void;
220
+ bufferDrawImage: (buffer: OptimizedBufferHandle, image: ImageHandle, x: number, y: number, width: number, height: number, pixelWidth: number, pixelHeight: number, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, protocol: ImageRenderProtocol) => boolean;
198
221
  bufferDrawPackedBuffer: (buffer: OptimizedBufferHandle, dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number) => void;
199
222
  bufferDrawGrayscaleBuffer: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensitiesPtr: Pointer, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void;
200
223
  bufferDrawGrayscaleBufferSupersampled: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensitiesPtr: Pointer, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void;
@@ -347,10 +370,7 @@ export interface RenderLib extends AudioEngineLib {
347
370
  textBufferViewSetTabIndicator: (view: TextBufferViewHandle, indicator: number) => void;
348
371
  textBufferViewSetTabIndicatorColor: (view: TextBufferViewHandle, color: RGBA) => void;
349
372
  textBufferViewSetTruncate: (view: TextBufferViewHandle, truncate: boolean) => void;
350
- textBufferViewMeasureForDimensions: (view: TextBufferViewHandle, width: number, height: number) => {
351
- lineCount: number;
352
- widthColsMax: number;
353
- } | null;
373
+ textBufferViewMeasureForDimensions: (view: TextBufferViewHandle, width: number, height: number) => MeasureResult | null;
354
374
  textBufferViewGetVirtualLineCount: (view: TextBufferViewHandle) => number;
355
375
  readonly encoder: TextEncoder;
356
376
  readonly decoder: TextDecoder;
@@ -486,6 +506,49 @@ export interface RenderLib extends AudioEngineLib {
486
506
  syntaxStyleRegister: (style: SyntaxStyleHandle, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number;
487
507
  syntaxStyleResolveByName: (style: SyntaxStyleHandle, name: string) => number | null;
488
508
  syntaxStyleGetStyleCount: (style: SyntaxStyleHandle) => number;
509
+ imageInfo: (data: Uint8Array) => {
510
+ status: number;
511
+ info: NativeImageInfo;
512
+ };
513
+ imageDecode: (data: Uint8Array) => {
514
+ status: number;
515
+ handle: ImageHandle | null;
516
+ };
517
+ imageCreateFromRgba: (pixels: Uint8Array, width: number, height: number, stride: number) => {
518
+ status: number;
519
+ handle: ImageHandle | null;
520
+ };
521
+ imageDestroy: (image: ImageHandle) => void;
522
+ imageGetInfo: (image: ImageHandle) => {
523
+ status: number;
524
+ info: NativeImageInfo;
525
+ };
526
+ imageGetPixelsPtr: (image: ImageHandle) => Pointer | null;
527
+ imageClone: (image: ImageHandle) => {
528
+ status: number;
529
+ handle: ImageHandle | null;
530
+ };
531
+ imageCopyPixels: (image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean) => number;
532
+ imageResize: (image: ImageHandle, width: number, height: number, filter: number) => {
533
+ status: number;
534
+ handle: ImageHandle | null;
535
+ };
536
+ imageExtract: (image: ImageHandle, left: number, top: number, width: number, height: number) => {
537
+ status: number;
538
+ handle: ImageHandle | null;
539
+ };
540
+ imageExtend: (image: ImageHandle, top: number, right: number, bottom: number, left: number, background: Uint8Array) => {
541
+ status: number;
542
+ handle: ImageHandle | null;
543
+ };
544
+ imageTransform: (image: ImageHandle, operation: number) => {
545
+ status: number;
546
+ handle: ImageHandle | null;
547
+ };
548
+ imageComposite: (base: ImageHandle, overlay: ImageHandle, left: number, top: number, blend: number, opacity: number) => {
549
+ status: number;
550
+ handle: ImageHandle | null;
551
+ };
489
552
  getTerminalCapabilities: (renderer: RendererHandle) => TerminalCapabilities;
490
553
  processCapabilityResponse: (renderer: RendererHandle, response: string) => void;
491
554
  encodeUnicode: (text: string, widthMethod: WidthMethod) => {