@gridland/web 0.2.24 → 0.2.25

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,5 +1,6 @@
1
- import { B as BrowserRenderer, W as WidthMethod, R as RGBA, a as BrowserRenderContext } from './next-BCubNgui.js';
2
- export { b as BorderDrawOptions, c as BrowserBuffer, C as CanvasPainter, d as CanvasPainterOptions, S as SelectionManager, T as TUI, e as TUIProps } from './next-BCubNgui.js';
1
+ import { B as BrowserRenderer, W as WidthMethod, R as RGBA, a as BrowserBuffer, b as BrowserRenderContext } from './next-Cwun29WQ.js';
2
+ export { c as BorderDrawOptions, C as CanvasPainter, d as CanvasPainterOptions, S as SelectionManager, T as TUI, e as TUIProps } from './next-Cwun29WQ.js';
3
+ import * as react from 'react';
3
4
  import { ReactNode } from 'react';
4
5
  import 'react/jsx-runtime';
5
6
  import 'events';
@@ -192,6 +193,55 @@ interface BrowserRoot {
192
193
  }
193
194
  declare function createBrowserRoot(renderer: BrowserRenderer): BrowserRoot;
194
195
 
196
+ interface ReadableCharBuffer {
197
+ width: number;
198
+ height: number;
199
+ char: Uint32Array;
200
+ }
201
+ declare function bufferToText(buffer: ReadableCharBuffer): string;
202
+
203
+ declare function setHeadlessRootRenderableClass(cls: any): void;
204
+ interface HeadlessRendererOptions {
205
+ cols: number;
206
+ rows: number;
207
+ }
208
+ declare class HeadlessRenderer {
209
+ buffer: BrowserBuffer;
210
+ renderContext: BrowserRenderContext;
211
+ root: any;
212
+ constructor(options: HeadlessRendererOptions);
213
+ renderOnce(): void;
214
+ toText(): string;
215
+ resize(cols: number, rows: number): void;
216
+ }
217
+
218
+ interface HeadlessRoot {
219
+ render(node: ReactNode): void;
220
+ renderToText(node: ReactNode): string;
221
+ unmount(): void;
222
+ }
223
+ declare function createHeadlessRoot(renderer: HeadlessRenderer): HeadlessRoot;
224
+
225
+ interface BrowserContextValue {
226
+ renderContext: BrowserRenderContext;
227
+ }
228
+ declare const BrowserContext: react.Context<BrowserContextValue | null>;
229
+ declare function useBrowserContext(): BrowserContextValue;
230
+
231
+ /**
232
+ * SSR-safe utilities for @gridland/web.
233
+ * These can be imported in any environment (Node.js, browser, edge).
234
+ */
235
+ /** Check if running in a browser environment */
236
+ declare function isBrowser(): boolean;
237
+ /** Check if canvas is supported */
238
+ declare function isCanvasSupported(): boolean;
239
+ /** Calculate grid dimensions from pixel dimensions and font size */
240
+ declare function calculateGridSize(widthPx: number, heightPx: number, cellWidth: number, cellHeight: number): {
241
+ cols: number;
242
+ rows: number;
243
+ };
244
+
195
245
  interface DroppedFile {
196
246
  name: string;
197
247
  content: string;
@@ -204,9 +254,4 @@ declare function useFileDrop(callback: (file: DroppedFile) => void): {
204
254
 
205
255
  declare function usePaste(callback: (text: string) => void): void;
206
256
 
207
- interface BrowserContextValue {
208
- renderContext: BrowserRenderContext;
209
- }
210
- declare function useBrowserContext(): BrowserContextValue;
211
-
212
- export { BrowserRenderContext, BrowserRenderer, type BrowserRoot, BrowserSyntaxStyle, BrowserTextBuffer, BrowserTextBufferView, type DroppedFile, type MountOptions, type MountResult, type StyledTextInput, type TextChunk, type VisibleLine, type VisibleLineChunk, WidthMethod, createBrowserRoot, mountGridland, 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 };
package/dist/index.js CHANGED
@@ -9347,6 +9347,22 @@ function mountGridland(canvas, element, options = {}) {
9347
9347
  };
9348
9348
  }
9349
9349
 
9350
+ // src/utils.ts
9351
+ function isBrowser() {
9352
+ return typeof window !== "undefined" && typeof document !== "undefined";
9353
+ }
9354
+ function isCanvasSupported() {
9355
+ if (!isBrowser()) return false;
9356
+ const canvas = document.createElement("canvas");
9357
+ return !!canvas.getContext("2d");
9358
+ }
9359
+ function calculateGridSize(widthPx, heightPx, cellWidth, cellHeight) {
9360
+ return {
9361
+ cols: Math.max(1, Math.floor(widthPx / cellWidth)),
9362
+ rows: Math.max(1, Math.floor(heightPx / cellHeight))
9363
+ };
9364
+ }
9365
+
9350
9366
  // src/file-drop.ts
9351
9367
  import { useEffect as useEffect2, useState as useState2 } from "react";
9352
9368
  function useFileDrop(callback) {
@@ -9386,16 +9402,24 @@ function usePaste(callback) {
9386
9402
  }
9387
9403
  export {
9388
9404
  BrowserBuffer,
9405
+ BrowserContext,
9389
9406
  BrowserRenderContext,
9390
9407
  BrowserRenderer,
9391
9408
  BrowserSyntaxStyle,
9392
9409
  BrowserTextBuffer,
9393
9410
  BrowserTextBufferView,
9394
9411
  CanvasPainter,
9412
+ HeadlessRenderer,
9395
9413
  SelectionManager,
9396
9414
  TUI,
9415
+ bufferToText,
9416
+ calculateGridSize,
9397
9417
  createBrowserRoot,
9418
+ createHeadlessRoot,
9419
+ isBrowser,
9420
+ isCanvasSupported,
9398
9421
  mountGridland,
9422
+ setHeadlessRootRenderableClass,
9399
9423
  useBrowserContext,
9400
9424
  useFileDrop,
9401
9425
  usePaste