@gridland/web 0.2.3 → 0.2.5
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/dist/index.d.ts +6 -345
- package/dist/index.js +39725 -896
- package/dist/index.js.map +7 -1
- package/dist/{core.d.ts → next-CxYMg6AG.d.ts} +1 -229
- package/dist/next.d.ts +4 -346
- package/dist/next.js +39726 -890
- package/dist/next.js.map +7 -1
- package/dist/vite-plugin.js +14 -5
- package/dist/vite-plugin.js.map +1 -1
- package/package.json +4 -15
- package/dist/core.js +0 -2912
- package/dist/core.js.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as react from 'react';
|
|
3
2
|
import { ReactNode, CSSProperties } from 'react';
|
|
4
3
|
import { EventEmitter } from 'events';
|
|
5
4
|
|
|
@@ -344,231 +343,4 @@ interface TUIProps {
|
|
|
344
343
|
*/
|
|
345
344
|
declare function TUI({ children, style, className, fontSize, fontFamily, autoFocus, backgroundColor, onReady, fallbackCols, fallbackRows, }: TUIProps): react_jsx_runtime.JSX.Element;
|
|
346
345
|
|
|
347
|
-
|
|
348
|
-
/** Number of columns (auto-calculated from canvas size if omitted) */
|
|
349
|
-
cols?: number;
|
|
350
|
-
/** Number of rows (auto-calculated from canvas size if omitted) */
|
|
351
|
-
rows?: number;
|
|
352
|
-
/** Font size in pixels (default: 14) */
|
|
353
|
-
fontSize?: number;
|
|
354
|
-
/** Font family (default: monospace stack) */
|
|
355
|
-
fontFamily?: string;
|
|
356
|
-
/** Listen for keyboard events on the canvas (default: true) */
|
|
357
|
-
keyboard?: boolean;
|
|
358
|
-
/** Auto-resize when canvas size changes (default: true) */
|
|
359
|
-
autoResize?: boolean;
|
|
360
|
-
}
|
|
361
|
-
interface MountResult {
|
|
362
|
-
renderer: BrowserRenderer;
|
|
363
|
-
unmount: () => void;
|
|
364
|
-
resize: (cols: number, rows: number) => void;
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Imperative API to mount Gridland content into a canvas element.
|
|
368
|
-
*
|
|
369
|
-
* ```ts
|
|
370
|
-
* const canvas = document.getElementById("my-canvas") as HTMLCanvasElement
|
|
371
|
-
* const { unmount } = mountGridland(canvas, <App />)
|
|
372
|
-
* ```
|
|
373
|
-
*/
|
|
374
|
-
declare function mountGridland(canvas: HTMLCanvasElement, element: ReactNode, options?: MountOptions): MountResult;
|
|
375
|
-
|
|
376
|
-
interface TextChunk {
|
|
377
|
-
__isChunk: true;
|
|
378
|
-
text: string;
|
|
379
|
-
fg?: RGBA;
|
|
380
|
-
bg?: RGBA;
|
|
381
|
-
attributes?: number;
|
|
382
|
-
link?: {
|
|
383
|
-
url: string;
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
interface StyledTextInput {
|
|
387
|
-
chunks: TextChunk[];
|
|
388
|
-
}
|
|
389
|
-
declare class BrowserTextBuffer {
|
|
390
|
-
private _text;
|
|
391
|
-
private _chunks;
|
|
392
|
-
private _defaultFg;
|
|
393
|
-
private _defaultBg;
|
|
394
|
-
private _defaultAttributes;
|
|
395
|
-
private _syntaxStyle;
|
|
396
|
-
private _tabWidth;
|
|
397
|
-
private _widthMethod;
|
|
398
|
-
constructor(widthMethod: WidthMethod);
|
|
399
|
-
static create(widthMethod: WidthMethod): BrowserTextBuffer;
|
|
400
|
-
get ptr(): number;
|
|
401
|
-
get length(): number;
|
|
402
|
-
get byteSize(): number;
|
|
403
|
-
setText(text: string): void;
|
|
404
|
-
append(text: string): void;
|
|
405
|
-
setStyledText(styledText: StyledTextInput): void;
|
|
406
|
-
getPlainText(): string;
|
|
407
|
-
getTextRange(startOffset: number, endOffset: number): string;
|
|
408
|
-
getLineCount(): number;
|
|
409
|
-
getChunks(): TextChunk[];
|
|
410
|
-
setDefaultFg(fg: RGBA | null): void;
|
|
411
|
-
setDefaultBg(bg: RGBA | null): void;
|
|
412
|
-
setDefaultAttributes(attributes: number | null): void;
|
|
413
|
-
resetDefaults(): void;
|
|
414
|
-
get defaultFg(): RGBA | null;
|
|
415
|
-
get defaultBg(): RGBA | null;
|
|
416
|
-
get defaultAttributes(): number;
|
|
417
|
-
setSyntaxStyle(style: any): void;
|
|
418
|
-
getSyntaxStyle(): any;
|
|
419
|
-
setTabWidth(width: number): void;
|
|
420
|
-
getTabWidth(): number;
|
|
421
|
-
addHighlightByCharRange(_highlight: any): void;
|
|
422
|
-
addHighlight(_lineIdx: number, _highlight: any): void;
|
|
423
|
-
removeHighlightsByRef(_hlRef: number): void;
|
|
424
|
-
clearLineHighlights(_lineIdx: number): void;
|
|
425
|
-
clearAllHighlights(): void;
|
|
426
|
-
getLineHighlights(_lineIdx: number): any[];
|
|
427
|
-
getHighlightCount(): number;
|
|
428
|
-
loadFile(_path: string): void;
|
|
429
|
-
clear(): void;
|
|
430
|
-
reset(): void;
|
|
431
|
-
destroy(): void;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
interface VisibleLineChunk {
|
|
435
|
-
text: string;
|
|
436
|
-
fg: RGBA;
|
|
437
|
-
bg: RGBA;
|
|
438
|
-
attributes: number;
|
|
439
|
-
link?: {
|
|
440
|
-
url: string;
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
interface VisibleLine {
|
|
444
|
-
chunks: VisibleLineChunk[];
|
|
445
|
-
}
|
|
446
|
-
declare class BrowserTextBufferView {
|
|
447
|
-
private textBuffer;
|
|
448
|
-
private _wrapWidth;
|
|
449
|
-
private _wrapMode;
|
|
450
|
-
private _viewportX;
|
|
451
|
-
private _viewportY;
|
|
452
|
-
private _viewportWidth;
|
|
453
|
-
private _viewportHeight;
|
|
454
|
-
private _truncate;
|
|
455
|
-
textAlign: "left" | "center" | "right";
|
|
456
|
-
private _selection;
|
|
457
|
-
private _selectionBg;
|
|
458
|
-
private _selectionFg;
|
|
459
|
-
constructor(textBuffer: BrowserTextBuffer);
|
|
460
|
-
static create(textBuffer: BrowserTextBuffer): BrowserTextBufferView;
|
|
461
|
-
get ptr(): number;
|
|
462
|
-
get lineInfo(): {
|
|
463
|
-
lineStarts: number[];
|
|
464
|
-
lineWidths: number[];
|
|
465
|
-
maxLineWidth: number;
|
|
466
|
-
lineSources: number[];
|
|
467
|
-
lineWraps: number[];
|
|
468
|
-
};
|
|
469
|
-
get logicalLineInfo(): {
|
|
470
|
-
lineStarts: number[];
|
|
471
|
-
lineWidths: number[];
|
|
472
|
-
maxLineWidth: number;
|
|
473
|
-
lineSources: number[];
|
|
474
|
-
lineWraps: number[];
|
|
475
|
-
};
|
|
476
|
-
setSelection(start: number, end: number, bgColor?: RGBA, fgColor?: RGBA): void;
|
|
477
|
-
updateSelection(end: number, bgColor?: RGBA, fgColor?: RGBA): void;
|
|
478
|
-
resetSelection(): void;
|
|
479
|
-
getSelection(): {
|
|
480
|
-
start: number;
|
|
481
|
-
end: number;
|
|
482
|
-
} | null;
|
|
483
|
-
hasSelection(): boolean;
|
|
484
|
-
setLocalSelection(_anchorX: number, _anchorY: number, _focusX: number, _focusY: number, _bgColor?: RGBA, _fgColor?: RGBA): boolean;
|
|
485
|
-
updateLocalSelection(_anchorX: number, _anchorY: number, _focusX: number, _focusY: number, _bgColor?: RGBA, _fgColor?: RGBA): boolean;
|
|
486
|
-
resetLocalSelection(): void;
|
|
487
|
-
getSelectedText(): string;
|
|
488
|
-
getPlainText(): string;
|
|
489
|
-
setWrapWidth(width: number | null): void;
|
|
490
|
-
setWrapMode(mode: "none" | "char" | "word"): void;
|
|
491
|
-
setViewportSize(width: number, height: number): void;
|
|
492
|
-
setViewport(x: number, y: number, width: number, height: number): void;
|
|
493
|
-
setTabIndicator(_indicator: string | number): void;
|
|
494
|
-
setTabIndicatorColor(_color: RGBA): void;
|
|
495
|
-
setTruncate(truncate: boolean): void;
|
|
496
|
-
private getAllWrappedLines;
|
|
497
|
-
private sliceChunks;
|
|
498
|
-
measureForDimensions(width: number, height: number): {
|
|
499
|
-
lineCount: number;
|
|
500
|
-
maxWidth: number;
|
|
501
|
-
} | null;
|
|
502
|
-
getVirtualLineCount(): number;
|
|
503
|
-
getVisibleLines(): VisibleLine[] | null;
|
|
504
|
-
destroy(): void;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
interface BrowserRoot {
|
|
508
|
-
render(node: ReactNode): void;
|
|
509
|
-
unmount(): void;
|
|
510
|
-
}
|
|
511
|
-
declare function createBrowserRoot(renderer: BrowserRenderer): BrowserRoot;
|
|
512
|
-
|
|
513
|
-
interface DroppedFile {
|
|
514
|
-
name: string;
|
|
515
|
-
content: string;
|
|
516
|
-
type: string;
|
|
517
|
-
size: number;
|
|
518
|
-
}
|
|
519
|
-
declare function useFileDrop(callback: (file: DroppedFile) => void): {
|
|
520
|
-
isDragOver: boolean;
|
|
521
|
-
};
|
|
522
|
-
|
|
523
|
-
declare function usePaste(callback: (text: string) => void): void;
|
|
524
|
-
|
|
525
|
-
interface BrowserContextValue {
|
|
526
|
-
renderContext: BrowserRenderContext;
|
|
527
|
-
}
|
|
528
|
-
declare const BrowserContext: react.Context<BrowserContextValue | null>;
|
|
529
|
-
declare function useBrowserContext(): BrowserContextValue;
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* SSR-safe utilities for @gridland/web.
|
|
533
|
-
* These can be imported in any environment (Node.js, browser, edge).
|
|
534
|
-
*/
|
|
535
|
-
/** Check if running in a browser environment */
|
|
536
|
-
declare function isBrowser(): boolean;
|
|
537
|
-
/** Check if canvas is supported */
|
|
538
|
-
declare function isCanvasSupported(): boolean;
|
|
539
|
-
/** Calculate grid dimensions from pixel dimensions and font size */
|
|
540
|
-
declare function calculateGridSize(widthPx: number, heightPx: number, cellWidth: number, cellHeight: number): {
|
|
541
|
-
cols: number;
|
|
542
|
-
rows: number;
|
|
543
|
-
};
|
|
544
|
-
|
|
545
|
-
interface ReadableCharBuffer {
|
|
546
|
-
width: number;
|
|
547
|
-
height: number;
|
|
548
|
-
char: Uint32Array;
|
|
549
|
-
}
|
|
550
|
-
declare function bufferToText(buffer: ReadableCharBuffer): string;
|
|
551
|
-
|
|
552
|
-
declare function setHeadlessRootRenderableClass(cls: any): void;
|
|
553
|
-
interface HeadlessRendererOptions {
|
|
554
|
-
cols: number;
|
|
555
|
-
rows: number;
|
|
556
|
-
}
|
|
557
|
-
declare class HeadlessRenderer {
|
|
558
|
-
buffer: BrowserBuffer;
|
|
559
|
-
renderContext: BrowserRenderContext;
|
|
560
|
-
root: any;
|
|
561
|
-
constructor(options: HeadlessRendererOptions);
|
|
562
|
-
renderOnce(): void;
|
|
563
|
-
toText(): string;
|
|
564
|
-
resize(cols: number, rows: number): void;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
interface HeadlessRoot {
|
|
568
|
-
render(node: ReactNode): void;
|
|
569
|
-
renderToText(node: ReactNode): string;
|
|
570
|
-
unmount(): void;
|
|
571
|
-
}
|
|
572
|
-
declare function createHeadlessRoot(renderer: HeadlessRenderer): HeadlessRoot;
|
|
573
|
-
|
|
574
|
-
export { BrowserBuffer, BrowserContext, BrowserRenderContext, BrowserRenderer, type BrowserRoot, BrowserTextBuffer, BrowserTextBufferView, CanvasPainter, HeadlessRenderer, type HeadlessRendererOptions, type HeadlessRoot, type MountOptions, type MountResult, SelectionManager, TUI, type TUIProps, bufferToText, calculateGridSize, createBrowserRoot, createHeadlessRoot, isBrowser, isCanvasSupported, mountGridland, setHeadlessRootRenderableClass, useBrowserContext, useFileDrop, usePaste };
|
|
346
|
+
export { BrowserRenderer as B, CanvasPainter as C, RGBA as R, SelectionManager as S, TUI as T, type WidthMethod as W, BrowserRenderContext as a, BrowserBuffer as b, type BorderDrawOptions as c, type CanvasPainterOptions as d, type TUIProps as e };
|
package/dist/next.d.ts
CHANGED
|
@@ -1,346 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
declare class RGBA {
|
|
6
|
-
buffer: Float32Array;
|
|
7
|
-
constructor(buffer: Float32Array);
|
|
8
|
-
static fromArray(array: Float32Array): RGBA;
|
|
9
|
-
static fromValues(r: number, g: number, b: number, a?: number): RGBA;
|
|
10
|
-
static fromInts(r: number, g: number, b: number, a?: number): RGBA;
|
|
11
|
-
static fromHex(hex: string): RGBA;
|
|
12
|
-
get r(): number;
|
|
13
|
-
set r(v: number);
|
|
14
|
-
get g(): number;
|
|
15
|
-
set g(v: number);
|
|
16
|
-
get b(): number;
|
|
17
|
-
set b(v: number);
|
|
18
|
-
get a(): number;
|
|
19
|
-
set a(v: number);
|
|
20
|
-
toInts(): [number, number, number, number];
|
|
21
|
-
map<R>(fn: (value: number) => R): R[];
|
|
22
|
-
toString(): string;
|
|
23
|
-
equals(other?: RGBA): boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
type CursorStyle = "block" | "line" | "underline";
|
|
27
|
-
type MousePointerStyle = "default" | "pointer" | "text" | "crosshair" | "move" | "not-allowed";
|
|
28
|
-
type WidthMethod$1 = "wcwidth" | "unicode";
|
|
29
|
-
interface CursorStyleOptions {
|
|
30
|
-
style?: CursorStyle;
|
|
31
|
-
blinking?: boolean;
|
|
32
|
-
color?: RGBA;
|
|
33
|
-
cursor?: MousePointerStyle;
|
|
34
|
-
}
|
|
35
|
-
interface RenderContext {
|
|
36
|
-
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
|
|
37
|
-
pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => void;
|
|
38
|
-
popHitGridScissorRect: () => void;
|
|
39
|
-
clearHitGridScissorRects: () => void;
|
|
40
|
-
width: number;
|
|
41
|
-
height: number;
|
|
42
|
-
requestRender: () => void;
|
|
43
|
-
setCursorPosition: (x: number, y: number, visible: boolean) => void;
|
|
44
|
-
setCursorStyle: (options: CursorStyleOptions) => void;
|
|
45
|
-
setCursorColor: (color: RGBA) => void;
|
|
46
|
-
setMousePointer: (shape: MousePointerStyle) => void;
|
|
47
|
-
widthMethod: WidthMethod$1;
|
|
48
|
-
capabilities: any | null;
|
|
49
|
-
requestLive: () => void;
|
|
50
|
-
dropLive: () => void;
|
|
51
|
-
hasSelection: boolean;
|
|
52
|
-
getSelection: () => any | null;
|
|
53
|
-
requestSelectionUpdate: () => void;
|
|
54
|
-
currentFocusedRenderable: any | null;
|
|
55
|
-
focusRenderable: (renderable: any) => void;
|
|
56
|
-
registerLifecyclePass: (renderable: any) => void;
|
|
57
|
-
unregisterLifecyclePass: (renderable: any) => void;
|
|
58
|
-
getLifecyclePasses: () => Set<any>;
|
|
59
|
-
keyInput: any;
|
|
60
|
-
_internalKeyInput: any;
|
|
61
|
-
clearSelection: () => void;
|
|
62
|
-
startSelection: (renderable: any, x: number, y: number) => void;
|
|
63
|
-
updateSelection: (currentRenderable: any | undefined, x: number, y: number, options?: {
|
|
64
|
-
finishDragging?: boolean;
|
|
65
|
-
}) => void;
|
|
66
|
-
on: (event: string, listener: (...args: any[]) => void) => any;
|
|
67
|
-
off: (event: string, listener: (...args: any[]) => void) => any;
|
|
68
|
-
emit: (event: string, ...args: any[]) => boolean;
|
|
69
|
-
removeAllListeners: (event?: string) => any;
|
|
70
|
-
}
|
|
71
|
-
interface CapturedSpan {
|
|
72
|
-
text: string;
|
|
73
|
-
fg: RGBA;
|
|
74
|
-
bg: RGBA;
|
|
75
|
-
attributes: number;
|
|
76
|
-
width: number;
|
|
77
|
-
}
|
|
78
|
-
interface CapturedLine {
|
|
79
|
-
spans: CapturedSpan[];
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
type WidthMethod = "wcwidth" | "unicode";
|
|
83
|
-
interface BorderDrawOptions {
|
|
84
|
-
x: number;
|
|
85
|
-
y: number;
|
|
86
|
-
width: number;
|
|
87
|
-
height: number;
|
|
88
|
-
borderStyle?: string;
|
|
89
|
-
customBorderChars?: Uint32Array;
|
|
90
|
-
border: boolean | string[];
|
|
91
|
-
borderColor: RGBA;
|
|
92
|
-
backgroundColor: RGBA;
|
|
93
|
-
shouldFill?: boolean;
|
|
94
|
-
title?: string;
|
|
95
|
-
titleAlignment?: "left" | "center" | "right";
|
|
96
|
-
}
|
|
97
|
-
declare class BrowserBuffer {
|
|
98
|
-
id: string;
|
|
99
|
-
respectAlpha: boolean;
|
|
100
|
-
private _width;
|
|
101
|
-
private _height;
|
|
102
|
-
private _widthMethod;
|
|
103
|
-
char: Uint32Array;
|
|
104
|
-
fg: Float32Array;
|
|
105
|
-
bg: Float32Array;
|
|
106
|
-
attributes: Uint32Array;
|
|
107
|
-
private scissorStack;
|
|
108
|
-
private opacityStack;
|
|
109
|
-
linkRegistry: Map<number, string>;
|
|
110
|
-
private nextLinkId;
|
|
111
|
-
constructor(width: number, height: number, options?: {
|
|
112
|
-
respectAlpha?: boolean;
|
|
113
|
-
id?: string;
|
|
114
|
-
widthMethod?: WidthMethod;
|
|
115
|
-
});
|
|
116
|
-
static create(width: number, height: number, widthMethod: WidthMethod, options?: {
|
|
117
|
-
respectAlpha?: boolean;
|
|
118
|
-
id?: string;
|
|
119
|
-
}): BrowserBuffer;
|
|
120
|
-
get width(): number;
|
|
121
|
-
get height(): number;
|
|
122
|
-
get widthMethod(): WidthMethod;
|
|
123
|
-
get ptr(): number;
|
|
124
|
-
get buffers(): {
|
|
125
|
-
char: Uint32Array<ArrayBufferLike>;
|
|
126
|
-
fg: Float32Array<ArrayBufferLike>;
|
|
127
|
-
bg: Float32Array<ArrayBufferLike>;
|
|
128
|
-
attributes: Uint32Array<ArrayBufferLike>;
|
|
129
|
-
};
|
|
130
|
-
setRespectAlpha(respectAlpha: boolean): void;
|
|
131
|
-
getNativeId(): string;
|
|
132
|
-
registerLink(url: string): number;
|
|
133
|
-
getLinkUrl(linkId: number): string | undefined;
|
|
134
|
-
private isInScissor;
|
|
135
|
-
private getCurrentOpacityMultiplier;
|
|
136
|
-
private applyOpacity;
|
|
137
|
-
clear(bg?: RGBA): void;
|
|
138
|
-
setCell(x: number, y: number, char: string, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
|
|
139
|
-
setCellWithAlphaBlending(x: number, y: number, char: string, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
|
|
140
|
-
drawChar(charCode: number, x: number, y: number, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
|
|
141
|
-
drawText(text: string, x: number, y: number, fgColor: RGBA, bgColor?: RGBA, attr?: number, _selection?: {
|
|
142
|
-
start: number;
|
|
143
|
-
end: number;
|
|
144
|
-
bgColor?: RGBA;
|
|
145
|
-
fgColor?: RGBA;
|
|
146
|
-
} | null): void;
|
|
147
|
-
fillRect(x: number, y: number, width: number, height: number, bgColor: RGBA): void;
|
|
148
|
-
drawBox(options: BorderDrawOptions): void;
|
|
149
|
-
private getDefaultBorderChars;
|
|
150
|
-
pushScissorRect(x: number, y: number, width: number, height: number): void;
|
|
151
|
-
popScissorRect(): void;
|
|
152
|
-
clearScissorRects(): void;
|
|
153
|
-
pushOpacity(opacity: number): void;
|
|
154
|
-
popOpacity(): void;
|
|
155
|
-
getCurrentOpacity(): number;
|
|
156
|
-
clearOpacity(): void;
|
|
157
|
-
resize(width: number, height: number): void;
|
|
158
|
-
getSpanLines(): CapturedLine[];
|
|
159
|
-
drawTextBufferView(view: any, x: number, y: number): void;
|
|
160
|
-
drawTextBuffer(textBufferView: any, x: number, y: number): void;
|
|
161
|
-
drawFrameBuffer(destX: number, destY: number, frameBuffer: BrowserBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
|
|
162
|
-
drawEditorView(editorView: any, x: number, y: number): void;
|
|
163
|
-
drawSuperSampleBuffer(): void;
|
|
164
|
-
drawPackedBuffer(): void;
|
|
165
|
-
drawGrayscaleBuffer(): void;
|
|
166
|
-
drawGrayscaleBufferSupersampled(): void;
|
|
167
|
-
drawGrid(): void;
|
|
168
|
-
encodeUnicode(_text: string): null;
|
|
169
|
-
freeUnicode(): void;
|
|
170
|
-
getRealCharBytes(): Uint8Array;
|
|
171
|
-
destroy(): void;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
declare class BrowserKeyHandler extends EventEmitter {
|
|
175
|
-
constructor();
|
|
176
|
-
processInput(_data: string): boolean;
|
|
177
|
-
}
|
|
178
|
-
declare class BrowserInternalKeyHandler extends BrowserKeyHandler {
|
|
179
|
-
private renderableHandlers;
|
|
180
|
-
onInternal(event: string, handler: Function): void;
|
|
181
|
-
offInternal(event: string, handler: Function): void;
|
|
182
|
-
emit(event: string, ...args: any[]): boolean;
|
|
183
|
-
}
|
|
184
|
-
declare class BrowserRenderContext extends EventEmitter implements RenderContext {
|
|
185
|
-
private _width;
|
|
186
|
-
private _height;
|
|
187
|
-
private _widthMethod;
|
|
188
|
-
private _renderRequested;
|
|
189
|
-
private _onRenderRequest;
|
|
190
|
-
private _lifecyclePasses;
|
|
191
|
-
private _focusedRenderable;
|
|
192
|
-
keyInput: BrowserKeyHandler;
|
|
193
|
-
_internalKeyInput: BrowserInternalKeyHandler;
|
|
194
|
-
constructor(width: number, height: number, widthMethod?: WidthMethod$1);
|
|
195
|
-
get width(): number;
|
|
196
|
-
get height(): number;
|
|
197
|
-
get widthMethod(): WidthMethod$1;
|
|
198
|
-
get capabilities(): any;
|
|
199
|
-
get hasSelection(): boolean;
|
|
200
|
-
get currentFocusedRenderable(): any | null;
|
|
201
|
-
setOnRenderRequest(callback: () => void): void;
|
|
202
|
-
resize(width: number, height: number): void;
|
|
203
|
-
addToHitGrid(_x: number, _y: number, _width: number, _height: number, _id: number): void;
|
|
204
|
-
pushHitGridScissorRect(_x: number, _y: number, _width: number, _height: number): void;
|
|
205
|
-
popHitGridScissorRect(): void;
|
|
206
|
-
clearHitGridScissorRects(): void;
|
|
207
|
-
requestRender(): void;
|
|
208
|
-
setCursorPosition(_x: number, _y: number, _visible: boolean): void;
|
|
209
|
-
setCursorStyle(_options: CursorStyleOptions): void;
|
|
210
|
-
setCursorColor(_color: RGBA): void;
|
|
211
|
-
setMousePointer(_shape: MousePointerStyle): void;
|
|
212
|
-
requestLive(): void;
|
|
213
|
-
dropLive(): void;
|
|
214
|
-
getSelection(): any | null;
|
|
215
|
-
requestSelectionUpdate(): void;
|
|
216
|
-
focusRenderable(renderable: any): void;
|
|
217
|
-
registerLifecyclePass(renderable: any): void;
|
|
218
|
-
unregisterLifecyclePass(renderable: any): void;
|
|
219
|
-
getLifecyclePasses(): Set<any>;
|
|
220
|
-
clearSelection(): void;
|
|
221
|
-
startSelection(_renderable: any, _x: number, _y: number): void;
|
|
222
|
-
updateSelection(_currentRenderable: any | undefined, _x: number, _y: number, _options?: {
|
|
223
|
-
finishDragging?: boolean;
|
|
224
|
-
}): void;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
interface SelectionRange {
|
|
228
|
-
startCol: number;
|
|
229
|
-
startRow: number;
|
|
230
|
-
endCol: number;
|
|
231
|
-
endRow: number;
|
|
232
|
-
}
|
|
233
|
-
declare class SelectionManager {
|
|
234
|
-
private _startCol;
|
|
235
|
-
private _startRow;
|
|
236
|
-
private _endCol;
|
|
237
|
-
private _endRow;
|
|
238
|
-
private _active;
|
|
239
|
-
private _selecting;
|
|
240
|
-
startSelection(col: number, row: number): void;
|
|
241
|
-
updateSelection(col: number, row: number): void;
|
|
242
|
-
endSelection(): void;
|
|
243
|
-
clearSelection(): void;
|
|
244
|
-
get active(): boolean;
|
|
245
|
-
get selecting(): boolean;
|
|
246
|
-
/** Returns the selection range normalized to reading order (top-left to bottom-right) */
|
|
247
|
-
getSelectedRange(): SelectionRange | null;
|
|
248
|
-
isSelected(col: number, row: number): boolean;
|
|
249
|
-
getSelectedText(buffer: BrowserBuffer): string;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
interface CanvasPainterOptions {
|
|
253
|
-
fontFamily?: string;
|
|
254
|
-
fontSize?: number;
|
|
255
|
-
}
|
|
256
|
-
declare class CanvasPainter {
|
|
257
|
-
private cellWidth;
|
|
258
|
-
private cellHeight;
|
|
259
|
-
private fontFamily;
|
|
260
|
-
private fontSize;
|
|
261
|
-
private baselineOffset;
|
|
262
|
-
constructor(options?: CanvasPainterOptions);
|
|
263
|
-
measureCell(ctx: CanvasRenderingContext2D): {
|
|
264
|
-
width: number;
|
|
265
|
-
height: number;
|
|
266
|
-
};
|
|
267
|
-
getCellSize(): {
|
|
268
|
-
width: number;
|
|
269
|
-
height: number;
|
|
270
|
-
};
|
|
271
|
-
paint(ctx: CanvasRenderingContext2D, buffer: BrowserBuffer, selection?: SelectionManager): void;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
declare class BrowserRenderer {
|
|
275
|
-
canvas: HTMLCanvasElement;
|
|
276
|
-
ctx2d: CanvasRenderingContext2D;
|
|
277
|
-
buffer: BrowserBuffer;
|
|
278
|
-
renderContext: BrowserRenderContext;
|
|
279
|
-
root: any;
|
|
280
|
-
painter: CanvasPainter;
|
|
281
|
-
selection: SelectionManager;
|
|
282
|
-
private cols;
|
|
283
|
-
private rows;
|
|
284
|
-
private cellWidth;
|
|
285
|
-
private cellHeight;
|
|
286
|
-
private rafId;
|
|
287
|
-
private lastTime;
|
|
288
|
-
private needsRender;
|
|
289
|
-
private isDragOver;
|
|
290
|
-
private cleanupListeners;
|
|
291
|
-
private mouseDownCell;
|
|
292
|
-
private backgroundColor;
|
|
293
|
-
constructor(canvas: HTMLCanvasElement, cols: number, rows: number, options?: {
|
|
294
|
-
backgroundColor?: string;
|
|
295
|
-
});
|
|
296
|
-
private pixelToCell;
|
|
297
|
-
private setupDomListeners;
|
|
298
|
-
start(): void;
|
|
299
|
-
stop(): void;
|
|
300
|
-
private loop;
|
|
301
|
-
resize(cols: number, rows: number): void;
|
|
302
|
-
private static PREVENT_DEFAULT_KEYS;
|
|
303
|
-
private static MODIFIER_KEYS;
|
|
304
|
-
private static KEY_MAP;
|
|
305
|
-
handleKeyDown(event: KeyboardEvent): void;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
interface TUIProps {
|
|
309
|
-
children: ReactNode;
|
|
310
|
-
/** CSS styles for the outer container div */
|
|
311
|
-
style?: CSSProperties;
|
|
312
|
-
/** CSS class for the outer container div */
|
|
313
|
-
className?: string;
|
|
314
|
-
/** Font size in pixels (default: 14) */
|
|
315
|
-
fontSize?: number;
|
|
316
|
-
/** Font family (default: monospace stack) */
|
|
317
|
-
fontFamily?: string;
|
|
318
|
-
/** Auto-focus the canvas for keyboard input (default: true) */
|
|
319
|
-
autoFocus?: boolean;
|
|
320
|
-
/** Background color for the canvas (default: transparent) */
|
|
321
|
-
backgroundColor?: string;
|
|
322
|
-
/** Called when the renderer is ready */
|
|
323
|
-
onReady?: (renderer: BrowserRenderer) => void;
|
|
324
|
-
/** Columns to use for SSR headless render (default: 80) */
|
|
325
|
-
fallbackCols?: number;
|
|
326
|
-
/** Rows to use for SSR headless render (default: 24) */
|
|
327
|
-
fallbackRows?: number;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* A single React component that renders TUI content to an HTML5 Canvas.
|
|
331
|
-
* Gridland is built on the opentui engine.
|
|
332
|
-
*
|
|
333
|
-
* Usage:
|
|
334
|
-
* ```tsx
|
|
335
|
-
* <TUI style={{ width: "100%", height: 400 }}>
|
|
336
|
-
* <box border borderStyle="rounded">
|
|
337
|
-
* <text>Hello from Gridland!</text>
|
|
338
|
-
* </box>
|
|
339
|
-
* </TUI>
|
|
340
|
-
* ```
|
|
341
|
-
*
|
|
342
|
-
* No dynamic imports, no wrapper chains. Just a component.
|
|
343
|
-
*/
|
|
344
|
-
declare function TUI({ children, style, className, fontSize, fontFamily, autoFocus, backgroundColor, onReady, fallbackCols, fallbackRows, }: TUIProps): react_jsx_runtime.JSX.Element;
|
|
345
|
-
|
|
346
|
-
export { TUI, type TUIProps };
|
|
1
|
+
export { T as TUI, e as TUIProps } from './next-CxYMg6AG.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'events';
|