@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 CHANGED
@@ -1,348 +1,9 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import { B as BrowserRenderer, W as WidthMethod, R as RGBA, a as BrowserRenderContext, b as BrowserBuffer } from './next-CxYMg6AG.js';
2
+ export { c as BorderDrawOptions, C as CanvasPainter, d as CanvasPainterOptions, S as SelectionManager, T as TUI, e as TUIProps } from './next-CxYMg6AG.js';
2
3
  import * as react from 'react';
3
- import { ReactNode, CSSProperties } from 'react';
4
- import { EventEmitter } from 'events';
5
-
6
- declare class RGBA {
7
- buffer: Float32Array;
8
- constructor(buffer: Float32Array);
9
- static fromArray(array: Float32Array): RGBA;
10
- static fromValues(r: number, g: number, b: number, a?: number): RGBA;
11
- static fromInts(r: number, g: number, b: number, a?: number): RGBA;
12
- static fromHex(hex: string): RGBA;
13
- get r(): number;
14
- set r(v: number);
15
- get g(): number;
16
- set g(v: number);
17
- get b(): number;
18
- set b(v: number);
19
- get a(): number;
20
- set a(v: number);
21
- toInts(): [number, number, number, number];
22
- map<R>(fn: (value: number) => R): R[];
23
- toString(): string;
24
- equals(other?: RGBA): boolean;
25
- }
26
-
27
- type CursorStyle = "block" | "line" | "underline";
28
- type MousePointerStyle = "default" | "pointer" | "text" | "crosshair" | "move" | "not-allowed";
29
- type WidthMethod$1 = "wcwidth" | "unicode";
30
- interface CursorStyleOptions {
31
- style?: CursorStyle;
32
- blinking?: boolean;
33
- color?: RGBA;
34
- cursor?: MousePointerStyle;
35
- }
36
- interface RenderContext {
37
- addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
38
- pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => void;
39
- popHitGridScissorRect: () => void;
40
- clearHitGridScissorRects: () => void;
41
- width: number;
42
- height: number;
43
- requestRender: () => void;
44
- setCursorPosition: (x: number, y: number, visible: boolean) => void;
45
- setCursorStyle: (options: CursorStyleOptions) => void;
46
- setCursorColor: (color: RGBA) => void;
47
- setMousePointer: (shape: MousePointerStyle) => void;
48
- widthMethod: WidthMethod$1;
49
- capabilities: any | null;
50
- requestLive: () => void;
51
- dropLive: () => void;
52
- hasSelection: boolean;
53
- getSelection: () => any | null;
54
- requestSelectionUpdate: () => void;
55
- currentFocusedRenderable: any | null;
56
- focusRenderable: (renderable: any) => void;
57
- registerLifecyclePass: (renderable: any) => void;
58
- unregisterLifecyclePass: (renderable: any) => void;
59
- getLifecyclePasses: () => Set<any>;
60
- keyInput: any;
61
- _internalKeyInput: any;
62
- clearSelection: () => void;
63
- startSelection: (renderable: any, x: number, y: number) => void;
64
- updateSelection: (currentRenderable: any | undefined, x: number, y: number, options?: {
65
- finishDragging?: boolean;
66
- }) => void;
67
- on: (event: string, listener: (...args: any[]) => void) => any;
68
- off: (event: string, listener: (...args: any[]) => void) => any;
69
- emit: (event: string, ...args: any[]) => boolean;
70
- removeAllListeners: (event?: string) => any;
71
- }
72
- interface CapturedSpan {
73
- text: string;
74
- fg: RGBA;
75
- bg: RGBA;
76
- attributes: number;
77
- width: number;
78
- }
79
- interface CapturedLine {
80
- spans: CapturedSpan[];
81
- }
82
-
83
- type WidthMethod = "wcwidth" | "unicode";
84
- interface BorderDrawOptions {
85
- x: number;
86
- y: number;
87
- width: number;
88
- height: number;
89
- borderStyle?: string;
90
- customBorderChars?: Uint32Array;
91
- border: boolean | string[];
92
- borderColor: RGBA;
93
- backgroundColor: RGBA;
94
- shouldFill?: boolean;
95
- title?: string;
96
- titleAlignment?: "left" | "center" | "right";
97
- }
98
- declare class BrowserBuffer {
99
- id: string;
100
- respectAlpha: boolean;
101
- private _width;
102
- private _height;
103
- private _widthMethod;
104
- char: Uint32Array;
105
- fg: Float32Array;
106
- bg: Float32Array;
107
- attributes: Uint32Array;
108
- private scissorStack;
109
- private opacityStack;
110
- linkRegistry: Map<number, string>;
111
- private nextLinkId;
112
- constructor(width: number, height: number, options?: {
113
- respectAlpha?: boolean;
114
- id?: string;
115
- widthMethod?: WidthMethod;
116
- });
117
- static create(width: number, height: number, widthMethod: WidthMethod, options?: {
118
- respectAlpha?: boolean;
119
- id?: string;
120
- }): BrowserBuffer;
121
- get width(): number;
122
- get height(): number;
123
- get widthMethod(): WidthMethod;
124
- get ptr(): number;
125
- get buffers(): {
126
- char: Uint32Array<ArrayBufferLike>;
127
- fg: Float32Array<ArrayBufferLike>;
128
- bg: Float32Array<ArrayBufferLike>;
129
- attributes: Uint32Array<ArrayBufferLike>;
130
- };
131
- setRespectAlpha(respectAlpha: boolean): void;
132
- getNativeId(): string;
133
- registerLink(url: string): number;
134
- getLinkUrl(linkId: number): string | undefined;
135
- private isInScissor;
136
- private getCurrentOpacityMultiplier;
137
- private applyOpacity;
138
- clear(bg?: RGBA): void;
139
- setCell(x: number, y: number, char: string, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
140
- setCellWithAlphaBlending(x: number, y: number, char: string, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
141
- drawChar(charCode: number, x: number, y: number, fgColor: RGBA, bgColor: RGBA, attr?: number): void;
142
- drawText(text: string, x: number, y: number, fgColor: RGBA, bgColor?: RGBA, attr?: number, _selection?: {
143
- start: number;
144
- end: number;
145
- bgColor?: RGBA;
146
- fgColor?: RGBA;
147
- } | null): void;
148
- fillRect(x: number, y: number, width: number, height: number, bgColor: RGBA): void;
149
- drawBox(options: BorderDrawOptions): void;
150
- private getDefaultBorderChars;
151
- pushScissorRect(x: number, y: number, width: number, height: number): void;
152
- popScissorRect(): void;
153
- clearScissorRects(): void;
154
- pushOpacity(opacity: number): void;
155
- popOpacity(): void;
156
- getCurrentOpacity(): number;
157
- clearOpacity(): void;
158
- resize(width: number, height: number): void;
159
- getSpanLines(): CapturedLine[];
160
- drawTextBufferView(view: any, x: number, y: number): void;
161
- drawTextBuffer(textBufferView: any, x: number, y: number): void;
162
- drawFrameBuffer(destX: number, destY: number, frameBuffer: BrowserBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
163
- drawEditorView(editorView: any, x: number, y: number): void;
164
- drawSuperSampleBuffer(): void;
165
- drawPackedBuffer(): void;
166
- drawGrayscaleBuffer(): void;
167
- drawGrayscaleBufferSupersampled(): void;
168
- drawGrid(): void;
169
- encodeUnicode(_text: string): null;
170
- freeUnicode(): void;
171
- getRealCharBytes(): Uint8Array;
172
- destroy(): void;
173
- }
174
-
175
- declare class BrowserKeyHandler extends EventEmitter {
176
- constructor();
177
- processInput(_data: string): boolean;
178
- }
179
- declare class BrowserInternalKeyHandler extends BrowserKeyHandler {
180
- private renderableHandlers;
181
- onInternal(event: string, handler: Function): void;
182
- offInternal(event: string, handler: Function): void;
183
- emit(event: string, ...args: any[]): boolean;
184
- }
185
- declare class BrowserRenderContext extends EventEmitter implements RenderContext {
186
- private _width;
187
- private _height;
188
- private _widthMethod;
189
- private _renderRequested;
190
- private _onRenderRequest;
191
- private _lifecyclePasses;
192
- private _focusedRenderable;
193
- keyInput: BrowserKeyHandler;
194
- _internalKeyInput: BrowserInternalKeyHandler;
195
- constructor(width: number, height: number, widthMethod?: WidthMethod$1);
196
- get width(): number;
197
- get height(): number;
198
- get widthMethod(): WidthMethod$1;
199
- get capabilities(): any;
200
- get hasSelection(): boolean;
201
- get currentFocusedRenderable(): any | null;
202
- setOnRenderRequest(callback: () => void): void;
203
- resize(width: number, height: number): void;
204
- addToHitGrid(_x: number, _y: number, _width: number, _height: number, _id: number): void;
205
- pushHitGridScissorRect(_x: number, _y: number, _width: number, _height: number): void;
206
- popHitGridScissorRect(): void;
207
- clearHitGridScissorRects(): void;
208
- requestRender(): void;
209
- setCursorPosition(_x: number, _y: number, _visible: boolean): void;
210
- setCursorStyle(_options: CursorStyleOptions): void;
211
- setCursorColor(_color: RGBA): void;
212
- setMousePointer(_shape: MousePointerStyle): void;
213
- requestLive(): void;
214
- dropLive(): void;
215
- getSelection(): any | null;
216
- requestSelectionUpdate(): void;
217
- focusRenderable(renderable: any): void;
218
- registerLifecyclePass(renderable: any): void;
219
- unregisterLifecyclePass(renderable: any): void;
220
- getLifecyclePasses(): Set<any>;
221
- clearSelection(): void;
222
- startSelection(_renderable: any, _x: number, _y: number): void;
223
- updateSelection(_currentRenderable: any | undefined, _x: number, _y: number, _options?: {
224
- finishDragging?: boolean;
225
- }): void;
226
- }
227
-
228
- interface SelectionRange {
229
- startCol: number;
230
- startRow: number;
231
- endCol: number;
232
- endRow: number;
233
- }
234
- declare class SelectionManager {
235
- private _startCol;
236
- private _startRow;
237
- private _endCol;
238
- private _endRow;
239
- private _active;
240
- private _selecting;
241
- startSelection(col: number, row: number): void;
242
- updateSelection(col: number, row: number): void;
243
- endSelection(): void;
244
- clearSelection(): void;
245
- get active(): boolean;
246
- get selecting(): boolean;
247
- /** Returns the selection range normalized to reading order (top-left to bottom-right) */
248
- getSelectedRange(): SelectionRange | null;
249
- isSelected(col: number, row: number): boolean;
250
- getSelectedText(buffer: BrowserBuffer): string;
251
- }
252
-
253
- interface CanvasPainterOptions {
254
- fontFamily?: string;
255
- fontSize?: number;
256
- }
257
- declare class CanvasPainter {
258
- private cellWidth;
259
- private cellHeight;
260
- private fontFamily;
261
- private fontSize;
262
- private baselineOffset;
263
- constructor(options?: CanvasPainterOptions);
264
- measureCell(ctx: CanvasRenderingContext2D): {
265
- width: number;
266
- height: number;
267
- };
268
- getCellSize(): {
269
- width: number;
270
- height: number;
271
- };
272
- paint(ctx: CanvasRenderingContext2D, buffer: BrowserBuffer, selection?: SelectionManager): void;
273
- }
274
-
275
- declare class BrowserRenderer {
276
- canvas: HTMLCanvasElement;
277
- ctx2d: CanvasRenderingContext2D;
278
- buffer: BrowserBuffer;
279
- renderContext: BrowserRenderContext;
280
- root: any;
281
- painter: CanvasPainter;
282
- selection: SelectionManager;
283
- private cols;
284
- private rows;
285
- private cellWidth;
286
- private cellHeight;
287
- private rafId;
288
- private lastTime;
289
- private needsRender;
290
- private isDragOver;
291
- private cleanupListeners;
292
- private mouseDownCell;
293
- private backgroundColor;
294
- constructor(canvas: HTMLCanvasElement, cols: number, rows: number, options?: {
295
- backgroundColor?: string;
296
- });
297
- private pixelToCell;
298
- private setupDomListeners;
299
- start(): void;
300
- stop(): void;
301
- private loop;
302
- resize(cols: number, rows: number): void;
303
- private static PREVENT_DEFAULT_KEYS;
304
- private static MODIFIER_KEYS;
305
- private static KEY_MAP;
306
- handleKeyDown(event: KeyboardEvent): void;
307
- }
308
-
309
- interface TUIProps {
310
- children: ReactNode;
311
- /** CSS styles for the outer container div */
312
- style?: CSSProperties;
313
- /** CSS class for the outer container div */
314
- className?: string;
315
- /** Font size in pixels (default: 14) */
316
- fontSize?: number;
317
- /** Font family (default: monospace stack) */
318
- fontFamily?: string;
319
- /** Auto-focus the canvas for keyboard input (default: true) */
320
- autoFocus?: boolean;
321
- /** Background color for the canvas (default: transparent) */
322
- backgroundColor?: string;
323
- /** Called when the renderer is ready */
324
- onReady?: (renderer: BrowserRenderer) => void;
325
- /** Columns to use for SSR headless render (default: 80) */
326
- fallbackCols?: number;
327
- /** Rows to use for SSR headless render (default: 24) */
328
- fallbackRows?: number;
329
- }
330
- /**
331
- * A single React component that renders TUI content to an HTML5 Canvas.
332
- * Gridland is built on the opentui engine.
333
- *
334
- * Usage:
335
- * ```tsx
336
- * <TUI style={{ width: "100%", height: 400 }}>
337
- * <box border borderStyle="rounded">
338
- * <text>Hello from Gridland!</text>
339
- * </box>
340
- * </TUI>
341
- * ```
342
- *
343
- * No dynamic imports, no wrapper chains. Just a component.
344
- */
345
- declare function TUI({ children, style, className, fontSize, fontFamily, autoFocus, backgroundColor, onReady, fallbackCols, fallbackRows, }: TUIProps): react_jsx_runtime.JSX.Element;
4
+ import { ReactNode } from 'react';
5
+ import 'react/jsx-runtime';
6
+ import 'events';
346
7
 
347
8
  interface MountOptions {
348
9
  /** Number of columns (auto-calculated from canvas size if omitted) */
@@ -593,4 +254,4 @@ declare function calculateGridSize(widthPx: number, heightPx: number, cellWidth:
593
254
  rows: number;
594
255
  };
595
256
 
596
- export { type BorderDrawOptions, BrowserBuffer, BrowserContext, type BrowserContextValue, BrowserRenderContext, BrowserRenderer, type BrowserRoot, BrowserSyntaxStyle, BrowserTextBuffer, BrowserTextBufferView, CanvasPainter, type CanvasPainterOptions, type DroppedFile, HeadlessRenderer, type HeadlessRendererOptions, type HeadlessRoot, type MountOptions, type MountResult, SelectionManager, type StyledTextInput, TUI, type TUIProps, type TextChunk, type VisibleLine, type VisibleLineChunk, type WidthMethod, bufferToText, calculateGridSize, createBrowserRoot, createHeadlessRoot, isBrowser, isCanvasSupported, mountGridland, setHeadlessRootRenderableClass, useBrowserContext, useFileDrop, usePaste };
257
+ export { BrowserBuffer, BrowserContext, type BrowserContextValue, BrowserRenderContext, BrowserRenderer, type BrowserRoot, BrowserSyntaxStyle, BrowserTextBuffer, BrowserTextBufferView, type DroppedFile, HeadlessRenderer, type HeadlessRendererOptions, type HeadlessRoot, type MountOptions, type MountResult, type StyledTextInput, type TextChunk, type VisibleLine, type VisibleLineChunk, WidthMethod, bufferToText, calculateGridSize, createBrowserRoot, createHeadlessRoot, isBrowser, isCanvasSupported, mountGridland, setHeadlessRootRenderableClass, useBrowserContext, useFileDrop, usePaste };