@fairyhunter13/opentui-core 0.1.132 → 0.1.133

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.
package/index.js CHANGED
@@ -69,7 +69,7 @@ import {
69
69
  registerCorePlugin,
70
70
  resolveCoreSlot,
71
71
  vstyles
72
- } from "./index-gwfqqvw5.js";
72
+ } from "./index-1mvpesey.js";
73
73
  import {
74
74
  ASCIIFontSelectionHelper,
75
75
  ATTRIBUTE_BASE_BITS,
@@ -78,10 +78,14 @@ import {
78
78
  BorderCharArrays,
79
79
  BorderChars,
80
80
  BoxRenderable,
81
+ COLOR_TAG_DEFAULT,
82
+ COLOR_TAG_RGB,
81
83
  CliRenderEvents,
82
84
  CliRenderer,
83
85
  CodeRenderable,
84
86
  ConsolePosition,
87
+ DEFAULT_BACKGROUND_RGB,
88
+ DEFAULT_FOREGROUND_RGB,
85
89
  DataPathsManager,
86
90
  DebugOverlayCorner,
87
91
  EditBuffer,
@@ -123,6 +127,7 @@ import {
123
127
  TextRenderable,
124
128
  TreeSitterClient,
125
129
  addDefaultParsers,
130
+ ansi256IndexToRgb,
126
131
  attributesWithLink,
127
132
  basenameToFiletype,
128
133
  bg,
@@ -148,6 +153,7 @@ import {
148
153
  brightWhite,
149
154
  brightYellow,
150
155
  buildKittyKeyboardFlags,
156
+ buildTerminalPaletteSignature,
151
157
  capture,
152
158
  clearEnvCache,
153
159
  convertGlobalToLocalSelection,
@@ -158,6 +164,7 @@ import {
158
164
  createTerminalPalette,
159
165
  createTextAttributes,
160
166
  cyan,
167
+ decodeColorTag,
161
168
  decodePasteBytes,
162
169
  delegate,
163
170
  detectLinks,
@@ -198,6 +205,9 @@ import {
198
205
  maybeMakeRenderable,
199
206
  measureText,
200
207
  nonAlphanumericKeys,
208
+ normalizeColorValue,
209
+ normalizeIndexedColorIndex,
210
+ normalizeTerminalPalette,
201
211
  parseAlign,
202
212
  parseAlignItems,
203
213
  parseBorderStyle,
@@ -236,7 +246,7 @@ import {
236
246
  white,
237
247
  wrapWithDelegates,
238
248
  yellow
239
- } from "./index-t3rrpex7.js";
249
+ } from "./index-cs6ygy1c.js";
240
250
  export {
241
251
  yellow,
242
252
  wrapWithDelegates,
@@ -280,6 +290,9 @@ export {
280
290
  parseBorderStyle,
281
291
  parseAlignItems,
282
292
  parseAlign,
293
+ normalizeTerminalPalette,
294
+ normalizeIndexedColorIndex,
295
+ normalizeColorValue,
283
296
  nonAlphanumericKeys,
284
297
  measureText,
285
298
  maybeMakeRenderable,
@@ -319,6 +332,7 @@ export {
319
332
  detectLinks,
320
333
  delegate,
321
334
  decodePasteBytes,
335
+ decodeColorTag,
322
336
  cyan,
323
337
  createTimeline,
324
338
  createTextAttributes,
@@ -332,6 +346,7 @@ export {
332
346
  convertGlobalToLocalSelection,
333
347
  clearEnvCache,
334
348
  capture,
349
+ buildTerminalPaletteSignature,
335
350
  buildKittyKeyboardFlags,
336
351
  brightYellow,
337
352
  brightWhite,
@@ -365,6 +380,7 @@ export {
365
380
  applyChromaticAberration,
366
381
  applyBrightness,
367
382
  applyAsciiArt,
383
+ ansi256IndexToRgb,
368
384
  addDefaultParsers,
369
385
  exports_src as Yoga,
370
386
  VignetteEffect,
@@ -452,6 +468,8 @@ export {
452
468
  DataPathsManager,
453
469
  DEUTERANOPIA_SIM_MATRIX,
454
470
  DEUTERANOPIA_COMP_MATRIX,
471
+ DEFAULT_FOREGROUND_RGB,
472
+ DEFAULT_BACKGROUND_RGB,
455
473
  ConsolePosition,
456
474
  CodeRenderable,
457
475
  Code,
@@ -459,6 +477,8 @@ export {
459
477
  CliRenderer,
460
478
  CliRenderEvents,
461
479
  CRTRollingBarEffect,
480
+ COLOR_TAG_RGB,
481
+ COLOR_TAG_DEFAULT,
462
482
  BoxRenderable,
463
483
  Box,
464
484
  BorderChars,
@@ -474,5 +494,5 @@ export {
474
494
  ACHROMATOPSIA_MATRIX
475
495
  };
476
496
 
477
- //# debugId=32A13A6074BDA33364756E2164756E21
497
+ //# debugId=56BA2D9B78C8356A64756E2164756E21
478
498
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "32A13A6074BDA33364756E2164756E21",
7
+ "debugId": "56BA2D9B78C8356A64756E2164756E21",
8
8
  "names": []
9
9
  }
package/lib/RGBA.d.ts CHANGED
@@ -1,10 +1,32 @@
1
+ export type RGBTriplet = readonly [number, number, number];
2
+ export type ColorKind = "rgb" | "indexed" | "default";
3
+ export type ColorInput = string | RGBA;
4
+ export declare const COLOR_TAG_RGB = 256;
5
+ export declare const COLOR_TAG_DEFAULT = 257;
6
+ export declare const DEFAULT_FOREGROUND_RGB: RGBTriplet;
7
+ export declare const DEFAULT_BACKGROUND_RGB: RGBTriplet;
8
+ export interface NormalizedColorValue {
9
+ rgba: RGBA;
10
+ tag: number;
11
+ }
12
+ export declare function normalizeIndexedColorIndex(index: number): number;
13
+ export declare function ansi256IndexToRgb(index: number): RGBTriplet;
14
+ export declare function decodeColorTag(tag: number): {
15
+ kind: ColorKind;
16
+ index?: number;
17
+ };
1
18
  export declare class RGBA {
2
19
  buffer: Float32Array;
3
20
  constructor(buffer: Float32Array);
4
21
  static fromArray(array: Float32Array): RGBA;
5
- static fromValues(r: number, g: number, b: number, a?: number): RGBA;
6
- static fromInts(r: number, g: number, b: number, a?: number): RGBA;
22
+ static fromValues(r: number, g: number, b: number, a?: number, tag?: number): RGBA;
23
+ static clone(rgba: RGBA): RGBA;
24
+ static fromInts(r: number, g: number, b: number, a?: number, tag?: number): RGBA;
7
25
  static fromHex(hex: string): RGBA;
26
+ static fromIndex(index: number, snapshot?: ColorInput): RGBA;
27
+ static defaultForeground(snapshot?: ColorInput): RGBA;
28
+ static defaultBackground(snapshot?: ColorInput): RGBA;
29
+ static getIntentTag(rgba: RGBA): number;
8
30
  toInts(): [number, number, number, number];
9
31
  get r(): number;
10
32
  set r(value: number);
@@ -14,11 +36,13 @@ export declare class RGBA {
14
36
  set b(value: number);
15
37
  get a(): number;
16
38
  set a(value: number);
39
+ get tag(): number;
40
+ set tag(value: number);
17
41
  map<R>(fn: (value: number) => R): R[];
18
42
  toString(): string;
19
43
  equals(other?: RGBA): boolean;
20
44
  }
21
- export type ColorInput = string | RGBA;
45
+ export declare function normalizeColorValue(value: ColorInput | null | undefined): NormalizedColorValue | null;
22
46
  export declare function hexToRgb(hex: string): RGBA;
23
47
  export declare function rgbToHex(rgb: RGBA): string;
24
48
  export declare function hsvToRgb(h: number, s: number, v: number): RGBA;
@@ -1,3 +1,4 @@
1
+ import { RGBA } from "./RGBA.js";
1
2
  import { type Clock } from "./clock.js";
2
3
  type Hex = string | null;
3
4
  export type WriteFunction = (data: string | Buffer) => boolean;
@@ -22,6 +23,11 @@ export interface TerminalPaletteDetector {
22
23
  detectOSCSupport(timeoutMs?: number): Promise<boolean>;
23
24
  cleanup(): void;
24
25
  }
26
+ export interface NormalizedTerminalPalette {
27
+ palette: RGBA[];
28
+ defaultForeground: RGBA;
29
+ defaultBackground: RGBA;
30
+ }
25
31
  export type OscSubscriptionSource = {
26
32
  subscribeOsc(handler: (sequence: string) => void): () => void;
27
33
  };
@@ -47,4 +53,6 @@ export declare class TerminalPalette implements TerminalPaletteDetector {
47
53
  detect(options?: GetPaletteOptions): Promise<TerminalColors>;
48
54
  }
49
55
  export declare function createTerminalPalette(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, writeFn?: WriteFunction, isLegacyTmux?: boolean, oscSource?: OscSubscriptionSource, clock?: Clock): TerminalPaletteDetector;
56
+ export declare function normalizeTerminalPalette(colors?: TerminalColors | null): NormalizedTerminalPalette;
57
+ export declare function buildTerminalPaletteSignature(colors?: TerminalColors | null): string;
50
58
  export {};
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
7
- "version": "0.1.132",
7
+ "version": "0.1.133",
8
8
  "description": "OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -67,12 +67,12 @@
67
67
  "bun-webgpu": "0.1.5",
68
68
  "planck": "^1.4.2",
69
69
  "three": "0.177.0",
70
- "@fairyhunter13/opentui-core-darwin-x64": "0.1.132",
71
- "@fairyhunter13/opentui-core-darwin-arm64": "0.1.132",
72
- "@fairyhunter13/opentui-core-linux-x64": "0.1.132",
73
- "@fairyhunter13/opentui-core-linux-arm64": "0.1.132",
74
- "@fairyhunter13/opentui-core-win32-x64": "0.1.132",
75
- "@fairyhunter13/opentui-core-win32-arm64": "0.1.132"
70
+ "@fairyhunter13/opentui-core-darwin-x64": "0.1.133",
71
+ "@fairyhunter13/opentui-core-darwin-arm64": "0.1.133",
72
+ "@fairyhunter13/opentui-core-linux-x64": "0.1.133",
73
+ "@fairyhunter13/opentui-core-linux-arm64": "0.1.133",
74
+ "@fairyhunter13/opentui-core-win32-x64": "0.1.133",
75
+ "@fairyhunter13/opentui-core-win32-arm64": "0.1.133"
76
76
  },
77
77
  "publishConfig": {
78
78
  "access": "public"
@@ -0,0 +1,29 @@
1
+ import { type Clock } from "./lib/clock.js";
2
+ import type { ThemeMode } from "./types.js";
3
+ export interface RendererThemeModeHost {
4
+ queryThemeColors(): void;
5
+ }
6
+ export declare class RendererThemeMode {
7
+ private readonly host;
8
+ private readonly clock;
9
+ private static readonly QUERY_TIMEOUT_MS;
10
+ private _themeMode;
11
+ private themeQueryPending;
12
+ private themeOscForeground;
13
+ private themeOscBackground;
14
+ private themeRefreshTimeoutId;
15
+ private waiters;
16
+ constructor(host: RendererThemeModeHost, clock: Clock);
17
+ get themeMode(): ThemeMode | null;
18
+ waitForThemeMode(timeoutMs: number, isDestroyed: boolean): Promise<ThemeMode | null>;
19
+ cancelRefresh(): void;
20
+ dispose(): void;
21
+ handleSequence(sequence: string): {
22
+ handled: boolean;
23
+ changedMode: ThemeMode | null;
24
+ };
25
+ private clearThemeRefreshTimeout;
26
+ private completeThemeQuery;
27
+ private requestThemeOscColors;
28
+ private applyThemeMode;
29
+ }
package/renderer.d.ts CHANGED
@@ -265,18 +265,20 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
265
265
  private lifecyclePasses;
266
266
  private _openConsoleOnError;
267
267
  private _paletteDetector;
268
+ private _paletteCache;
268
269
  private _cachedPalette;
269
270
  private _paletteDetectionPromise;
271
+ private _paletteDetectionSize;
272
+ private _paletteEpoch;
273
+ private _publishedPaletteSignature;
274
+ private _palettePublishGeneration;
270
275
  private _onDestroy?;
271
- private _themeMode;
272
- private _themeModeSource;
273
- private _themeFallbackPending;
274
- private _themeOscForeground;
275
- private _themeOscBackground;
276
+ private themeModeState;
276
277
  private _terminalFocusState;
277
278
  private sequenceHandlers;
278
279
  private prependedInputHandlers;
279
280
  private shouldRestoreModesOnNextFocus;
281
+ private themeModeHandler;
280
282
  private idleResolvers;
281
283
  private _debugInputs;
282
284
  private _debugModeEnabled;
@@ -384,8 +386,6 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
384
386
  private processCapabilitySequence;
385
387
  private capabilityHandler;
386
388
  private focusHandler;
387
- private themeModeHandler;
388
- private applyThemeMode;
389
389
  private dispatchSequenceHandlers;
390
390
  private drainStdinParser;
391
391
  private handleStdinEvent;
@@ -488,6 +488,10 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
488
488
  private notifySelectablesOfSelectionChange;
489
489
  private walkSelectableRenderables;
490
490
  get paletteDetectionStatus(): "idle" | "detecting" | "cached";
491
+ private getCachedPaletteBySize;
492
+ private ensurePaletteDetector;
493
+ private syncNativePaletteState;
494
+ private ensureNativePaletteState;
491
495
  clearPaletteCache(): void;
492
496
  /**
493
497
  * Detects the terminal's color palette
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  createRuntimePlugin,
4
4
  runtimeModuleIdForSpecifier
5
- } from "./index-t54p24hr.js";
6
- import"./index-gwfqqvw5.js";
7
- import"./index-t3rrpex7.js";
5
+ } from "./index-4xe091hk.js";
6
+ import"./index-1mvpesey.js";
7
+ import"./index-cs6ygy1c.js";
8
8
 
9
9
  // src/runtime-plugin-support.ts
10
10
  var {plugin: registerBunPlugin } = globalThis.Bun;
package/runtime-plugin.js CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  createRuntimePlugin,
4
4
  isCoreRuntimeModuleSpecifier,
5
5
  runtimeModuleIdForSpecifier
6
- } from "./index-t54p24hr.js";
7
- import"./index-gwfqqvw5.js";
8
- import"./index-t3rrpex7.js";
6
+ } from "./index-4xe091hk.js";
7
+ import"./index-1mvpesey.js";
8
+ import"./index-cs6ygy1c.js";
9
9
  export {
10
10
  runtimeModuleIdForSpecifier,
11
11
  isCoreRuntimeModuleSpecifier,
package/testing.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  TreeSitterClient,
6
6
  calculateRenderGeometry,
7
7
  resolveRenderLib
8
- } from "./index-t3rrpex7.js";
8
+ } from "./index-cs6ygy1c.js";
9
9
 
10
10
  // src/testing/test-renderer.ts
11
11
  import { Readable, Writable } from "stream";
package/zig-structs.d.ts CHANGED
@@ -4,6 +4,8 @@ type StyledChunkInput = {
4
4
  text: string;
5
5
  fg?: RGBA | null;
6
6
  bg?: RGBA | null;
7
+ fg_tag?: number;
8
+ bg_tag?: number;
7
9
  attributes?: number | null;
8
10
  link?: {
9
11
  url: string;
@@ -19,6 +21,10 @@ export declare const StyledChunkStruct: import("bun-ffi-structs").DefineStructRe
19
21
  readonly optional: true;
20
22
  readonly packTransform: (rgba?: RGBA) => Pointer | null;
21
23
  readonly unpackTransform: (ptr?: Pointer) => RGBA | undefined;
24
+ }], readonly ["fg_tag", "u16", {
25
+ readonly default: 256;
26
+ }], readonly ["bg_tag", "u16", {
27
+ readonly default: 256;
22
28
  }], readonly ["attributes", "u32", {
23
29
  readonly default: 0;
24
30
  }], readonly ["link", "char*", {
@@ -35,7 +41,7 @@ export declare const HighlightStruct: import("bun-ffi-structs").DefineStructRetu
35
41
  }]], {}>;
36
42
  export declare const LogicalCursorStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["row", "u32"], readonly ["col", "u32"], readonly ["offset", "u32"]], {}>;
37
43
  export declare const VisualCursorStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["visualRow", "u32"], readonly ["visualCol", "u32"], readonly ["logicalRow", "u32"], readonly ["logicalCol", "u32"], readonly ["offset", "u32"]], {}>;
38
- export declare const TerminalCapabilitiesStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["kitty_keyboard", "bool_u8"], readonly ["kitty_graphics", "bool_u8"], readonly ["rgb", "bool_u8"], readonly ["unicode", import("bun-ffi-structs").EnumDef<{
44
+ export declare const TerminalCapabilitiesStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["kitty_keyboard", "bool_u8"], readonly ["kitty_graphics", "bool_u8"], readonly ["rgb", "bool_u8"], readonly ["ansi256", "bool_u8"], readonly ["unicode", import("bun-ffi-structs").EnumDef<{
39
45
  wcwidth: number;
40
46
  unicode: number;
41
47
  }>], readonly ["sgr_pixels", "bool_u8"], readonly ["color_scheme_updates", "bool_u8"], readonly ["explicit_width", "bool_u8"], readonly ["scaled_text", "bool_u8"], readonly ["sixel", "bool_u8"], readonly ["focus_tracking", "bool_u8"], readonly ["sync", "bool_u8"], readonly ["bracketed_paste", "bool_u8"], readonly ["hyperlinks", "bool_u8"], readonly ["osc52", "bool_u8"], readonly ["explicit_cursor_positioning", "bool_u8"], readonly ["term_name", "char*"], readonly ["term_name_len", "u64", {
package/zig.d.ts CHANGED
@@ -60,6 +60,7 @@ export interface RenderLib {
60
60
  commitSplitFooterSnapshot: (renderer: Pointer, snapshot: OptimizedBuffer, rowColumns: number, startOnNewLine: boolean, trailingNewline: boolean, pinnedRenderOffset: number, force: boolean, beginFrame?: boolean, finalizeFrame?: boolean) => number;
61
61
  getNextBuffer: (renderer: Pointer) => OptimizedBuffer;
62
62
  getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer;
63
+ rendererSetPaletteState: (renderer: Pointer, palette: readonly RGBA[], defaultForeground: RGBA, defaultBackground: RGBA, paletteEpoch: number) => void;
63
64
  createOptimizedBuffer: (width: number, height: number, widthMethod: WidthMethod, respectAlpha?: boolean, id?: string) => OptimizedBuffer;
64
65
  destroyOptimizedBuffer: (bufferPtr: Pointer) => void;
65
66
  drawFrameBuffer: (targetBufferPtr: Pointer, destX: number, destY: number, bufferPtr: Pointer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number) => void;
@@ -69,6 +70,8 @@ export interface RenderLib {
69
70
  bufferGetCharPtr: (buffer: Pointer) => Pointer;
70
71
  bufferGetFgPtr: (buffer: Pointer) => Pointer;
71
72
  bufferGetBgPtr: (buffer: Pointer) => Pointer;
73
+ bufferGetFgTagPtr: (buffer: Pointer) => Pointer;
74
+ bufferGetBgTagPtr: (buffer: Pointer) => Pointer;
72
75
  bufferGetAttributesPtr: (buffer: Pointer) => Pointer;
73
76
  bufferGetRespectAlpha: (buffer: Pointer) => boolean;
74
77
  bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void;
@@ -123,6 +126,7 @@ export interface RenderLib {
123
126
  suspendRenderer: (renderer: Pointer) => void;
124
127
  resumeRenderer: (renderer: Pointer) => void;
125
128
  queryPixelResolution: (renderer: Pointer) => void;
129
+ queryThemeColors: (renderer: Pointer) => void;
126
130
  writeOut: (renderer: Pointer, data: string | Uint8Array) => void;
127
131
  createTextBuffer: (widthMethod: WidthMethod) => TextBuffer;
128
132
  destroyTextBuffer: (buffer: Pointer) => void;