@gridland/web 0.2.16 → 0.2.18

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 (38) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +99 -10
  3. package/dist/index.js.map +4 -4
  4. package/dist/vite-plugin.js +68 -37
  5. package/dist/vite-plugin.js.map +1 -1
  6. package/package.json +5 -4
  7. package/src/browser-buffer.ts +715 -0
  8. package/src/core-shims/index.ts +269 -0
  9. package/src/core-shims/renderable-types.ts +4 -0
  10. package/src/core-shims/rgba.ts +195 -0
  11. package/src/core-shims/types.ts +132 -0
  12. package/src/shims/bun-ffi-structs.ts +20 -0
  13. package/src/shims/bun-ffi.ts +28 -0
  14. package/src/shims/console-stub.ts +13 -0
  15. package/src/shims/console.ts +3 -0
  16. package/src/shims/devtools-polyfill-stub.ts +3 -0
  17. package/src/shims/edit-buffer-stub.ts +475 -0
  18. package/src/shims/editor-view-stub.ts +388 -0
  19. package/src/shims/events-shim.ts +81 -0
  20. package/src/shims/filters-stub.ts +4 -0
  21. package/src/shims/hast-stub.ts +8 -0
  22. package/src/shims/native-span-feed-stub.ts +7 -0
  23. package/src/shims/node-buffer.ts +39 -0
  24. package/src/shims/node-fs.ts +20 -0
  25. package/src/shims/node-os.ts +6 -0
  26. package/src/shims/node-path.ts +35 -0
  27. package/src/shims/node-stream.ts +10 -0
  28. package/src/shims/node-url.ts +8 -0
  29. package/src/shims/node-util.ts +33 -0
  30. package/src/shims/renderer-stub.ts +21 -0
  31. package/src/shims/slider-deps.ts +8 -0
  32. package/src/shims/syntax-style-shim.ts +23 -0
  33. package/src/shims/text-buffer-shim.ts +3 -0
  34. package/src/shims/text-buffer-view-shim.ts +2 -0
  35. package/src/shims/timeline-stub.ts +43 -0
  36. package/src/shims/tree-sitter-stub.ts +47 -0
  37. package/src/shims/tree-sitter-styled-text-stub.ts +8 -0
  38. package/src/shims/zig-stub.ts +20 -0
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import { B as BrowserRenderer, W as WidthMethod, R as RGBA, a as BrowserRenderCo
2
2
  export { c as BorderDrawOptions, C as CanvasPainter, d as CanvasPainterOptions, S as SelectionManager, T as TUI, e as TUIProps } from './next-BWTklBmN.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode } from 'react';
5
+ export { useKeyboard, useTerminalDimensions } from '@opentui/react';
5
6
  import 'react/jsx-runtime';
6
7
  import 'events';
7
8
 
package/dist/index.js CHANGED
@@ -7970,14 +7970,14 @@ var require_react_reconciler_production = __commonJS({
7970
7970
  }
7971
7971
  var exports2 = {};
7972
7972
  "use strict";
7973
- var React4 = __require("react"), Scheduler = require_scheduler(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element"), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
7973
+ var React5 = __require("react"), Scheduler = require_scheduler(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element"), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
7974
7974
  /* @__PURE__ */ Symbol.for("react.scope");
7975
7975
  var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for("react.activity");
7976
7976
  /* @__PURE__ */ Symbol.for("react.legacy_hidden");
7977
7977
  /* @__PURE__ */ Symbol.for("react.tracing_marker");
7978
7978
  var REACT_MEMO_CACHE_SENTINEL = /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel");
7979
7979
  /* @__PURE__ */ Symbol.for("react.view_transition");
7980
- var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React4.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, rendererVersion = $$$config.rendererVersion, rendererPackageName = $$$config.rendererPackageName, extraDevToolsConfig = $$$config.extraDevToolsConfig, getPublicInstance = $$$config.getPublicInstance, getRootHostContext = $$$config.getRootHostContext, getChildHostContext = $$$config.getChildHostContext, prepareForCommit = $$$config.prepareForCommit, resetAfterCommit = $$$config.resetAfterCommit, createInstance = $$$config.createInstance;
7980
+ var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React5.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, rendererVersion = $$$config.rendererVersion, rendererPackageName = $$$config.rendererPackageName, extraDevToolsConfig = $$$config.extraDevToolsConfig, getPublicInstance = $$$config.getPublicInstance, getRootHostContext = $$$config.getRootHostContext, getChildHostContext = $$$config.getChildHostContext, prepareForCommit = $$$config.prepareForCommit, resetAfterCommit = $$$config.resetAfterCommit, createInstance = $$$config.createInstance;
7981
7981
  $$$config.cloneMutableInstance;
7982
7982
  var appendInitialChild = $$$config.appendInitialChild, finalizeInitialChildren = $$$config.finalizeInitialChildren, shouldSetTextContent = $$$config.shouldSetTextContent, createTextInstance = $$$config.createTextInstance;
7983
7983
  $$$config.cloneMutableTextInstance;
@@ -20570,14 +20570,14 @@ var require_react_reconciler_development = __commonJS({
20570
20570
  }
20571
20571
  var exports2 = {};
20572
20572
  "use strict";
20573
- var React4 = __require("react"), Scheduler = require_scheduler(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element"), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
20573
+ var React5 = __require("react"), Scheduler = require_scheduler(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element"), REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo"), REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
20574
20574
  /* @__PURE__ */ Symbol.for("react.scope");
20575
20575
  var REACT_ACTIVITY_TYPE = /* @__PURE__ */ Symbol.for("react.activity");
20576
20576
  /* @__PURE__ */ Symbol.for("react.legacy_hidden");
20577
20577
  /* @__PURE__ */ Symbol.for("react.tracing_marker");
20578
20578
  var REACT_MEMO_CACHE_SENTINEL = /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel");
20579
20579
  /* @__PURE__ */ Symbol.for("react.view_transition");
20580
- var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React4.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, rendererVersion = $$$config.rendererVersion, rendererPackageName = $$$config.rendererPackageName, extraDevToolsConfig = $$$config.extraDevToolsConfig, getPublicInstance = $$$config.getPublicInstance, getRootHostContext = $$$config.getRootHostContext, getChildHostContext = $$$config.getChildHostContext, prepareForCommit = $$$config.prepareForCommit, resetAfterCommit = $$$config.resetAfterCommit, createInstance = $$$config.createInstance;
20580
+ var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React5.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, rendererVersion = $$$config.rendererVersion, rendererPackageName = $$$config.rendererPackageName, extraDevToolsConfig = $$$config.extraDevToolsConfig, getPublicInstance = $$$config.getPublicInstance, getRootHostContext = $$$config.getRootHostContext, getChildHostContext = $$$config.getChildHostContext, prepareForCommit = $$$config.prepareForCommit, resetAfterCommit = $$$config.resetAfterCommit, createInstance = $$$config.createInstance;
20581
20581
  $$$config.cloneMutableInstance;
20582
20582
  var appendInitialChild = $$$config.appendInitialChild, finalizeInitialChildren = $$$config.finalizeInitialChildren, shouldSetTextContent = $$$config.shouldSetTextContent, createTextInstance = $$$config.createTextInstance;
20583
20583
  $$$config.cloneMutableTextInstance;
@@ -43574,6 +43574,9 @@ var AppContext = createContext3({
43574
43574
  keyHandler: null,
43575
43575
  renderer: null
43576
43576
  });
43577
+ var useAppContext = () => {
43578
+ return useContext2(AppContext);
43579
+ };
43577
43580
 
43578
43581
  // ../../opentui/packages/react/src/components/error-boundary.tsx
43579
43582
  import React2 from "react";
@@ -43894,12 +43897,96 @@ function mountGridland(canvas, element, options = {}) {
43894
43897
  };
43895
43898
  }
43896
43899
 
43900
+ // ../../opentui/packages/react/src/hooks/use-keyboard.ts
43901
+ import { useEffect as useEffect2 } from "react";
43902
+
43903
+ // ../../opentui/packages/react/src/hooks/use-event.ts
43904
+ import { useCallback, useLayoutEffect, useRef as useRef2 } from "react";
43905
+ function useEffectEvent(handler) {
43906
+ const handlerRef = useRef2(handler);
43907
+ useLayoutEffect(() => {
43908
+ handlerRef.current = handler;
43909
+ });
43910
+ return useCallback((...args) => {
43911
+ const fn = handlerRef.current;
43912
+ return fn(...args);
43913
+ }, []);
43914
+ }
43915
+
43916
+ // ../../opentui/packages/react/src/hooks/use-keyboard.ts
43917
+ var useKeyboard = (handler, options = { release: false }) => {
43918
+ const { keyHandler } = useAppContext();
43919
+ const stableHandler = useEffectEvent(handler);
43920
+ useEffect2(() => {
43921
+ keyHandler?.on("keypress", stableHandler);
43922
+ if (options?.release) {
43923
+ keyHandler?.on("keyrelease", stableHandler);
43924
+ }
43925
+ return () => {
43926
+ keyHandler?.off("keypress", stableHandler);
43927
+ if (options?.release) {
43928
+ keyHandler?.off("keyrelease", stableHandler);
43929
+ }
43930
+ };
43931
+ }, [keyHandler, options.release]);
43932
+ };
43933
+
43934
+ // ../../opentui/packages/react/src/hooks/use-renderer.ts
43935
+ var useRenderer = () => {
43936
+ const { renderer } = useAppContext();
43937
+ if (!renderer) {
43938
+ throw new Error("Renderer not found.");
43939
+ }
43940
+ return renderer;
43941
+ };
43942
+
43943
+ // ../../opentui/packages/react/src/hooks/use-resize.ts
43944
+ import { useEffect as useEffect3 } from "react";
43945
+ var useOnResize = (callback) => {
43946
+ const renderer = useRenderer();
43947
+ const stableCallback = useEffectEvent(callback);
43948
+ useEffect3(() => {
43949
+ renderer.on("resize", stableCallback);
43950
+ return () => {
43951
+ renderer.off("resize", stableCallback);
43952
+ };
43953
+ }, [renderer]);
43954
+ return renderer;
43955
+ };
43956
+
43957
+ // ../../opentui/packages/react/src/hooks/use-terminal-dimensions.ts
43958
+ import { useState as useState2 } from "react";
43959
+ var useTerminalDimensions = () => {
43960
+ const renderer = useRenderer();
43961
+ const [dimensions, setDimensions] = useState2({
43962
+ width: renderer.width,
43963
+ height: renderer.height
43964
+ });
43965
+ const cb = (width, height) => {
43966
+ setDimensions({ width, height });
43967
+ };
43968
+ useOnResize(cb);
43969
+ return dimensions;
43970
+ };
43971
+
43972
+ // ../../opentui/packages/react/src/hooks/use-timeline.ts
43973
+ import { useEffect as useEffect4 } from "react";
43974
+
43975
+ // ../../opentui/packages/react/src/reconciler/renderer.ts
43976
+ import React4 from "react";
43977
+ var _r2 = reconciler;
43978
+ var flushSync2 = _r2.flushSyncFromReconciler ?? _r2.flushSync;
43979
+ var { createPortal } = reconciler;
43980
+
43981
+ // ../../opentui/packages/react/src/index.ts
43982
+ import { createElement } from "react";
43983
+
43897
43984
  // src/file-drop.ts
43898
- import { useEffect as useEffect2, useState as useState2 } from "react";
43985
+ import { useEffect as useEffect5, useState as useState3 } from "react";
43899
43986
  function useFileDrop(callback) {
43900
43987
  const { renderContext } = useBrowserContext();
43901
- const [isDragOver, setIsDragOver] = useState2(false);
43902
- useEffect2(() => {
43988
+ const [isDragOver, setIsDragOver] = useState3(false);
43989
+ useEffect5(() => {
43903
43990
  const handler = (file) => {
43904
43991
  callback(file);
43905
43992
  };
@@ -43918,10 +44005,10 @@ function useFileDrop(callback) {
43918
44005
  }
43919
44006
 
43920
44007
  // src/paste.ts
43921
- import { useEffect as useEffect3 } from "react";
44008
+ import { useEffect as useEffect6 } from "react";
43922
44009
  function usePaste(callback) {
43923
44010
  const { renderContext } = useBrowserContext();
43924
- useEffect3(() => {
44011
+ useEffect6(() => {
43925
44012
  const handler = (text) => {
43926
44013
  callback(text);
43927
44014
  };
@@ -43969,7 +44056,9 @@ export {
43969
44056
  setHeadlessRootRenderableClass,
43970
44057
  useBrowserContext,
43971
44058
  useFileDrop,
43972
- usePaste
44059
+ useKeyboard,
44060
+ usePaste,
44061
+ useTerminalDimensions
43973
44062
  };
43974
44063
  /*! Bundled license information:
43975
44064