@adam26davidson/char-matrix-react-renderer 0.0.2 → 0.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mockRenderTarget.d.ts","sourceRoot":"","sources":["../../src/__tests__/mockRenderTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAc,MAAM,6BAA6B,CAAC;AAErF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,SAAK,EACV,MAAM,SAAK,GACV,YAAY,GAAG;IAChB,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B,CA4DA"}
1
+ {"version":3,"file":"mockRenderTarget.d.ts","sourceRoot":"","sources":["../../src/__tests__/mockRenderTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAc,MAAM,6BAA6B,CAAC;AAErF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,SAAK,EACV,MAAM,SAAK,GACV,YAAY,GAAG;IAChB,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B,CA6DA"}
@@ -44,6 +44,8 @@ export function createMockRenderTarget(width = 80, height = 24) {
44
44
  element.registerWithView();
45
45
  },
46
46
  getRoot() {
47
+ if (!rootElement)
48
+ throw new Error("getRoot() called before setRoot()");
47
49
  return rootElement;
48
50
  },
49
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mockRenderTarget.js","sourceRoot":"","sources":["../../src/__tests__/mockRenderTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,EAAE;IAKX,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAW,CAAC;IAC9C,IAAI,WAAW,GAAmB,IAAI,CAAC;IAEvC,MAAM,MAAM,GAGR;QACF,kBAAkB;QAClB,IAAI,WAAW;YACb,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,WAAW,CAAC,EAAkB;YAChC,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,SAAS,CAAC,OAAmB,IAAG,CAAC;QACjC,mBAAmB,CACjB,KAAa,EACb,SAAmB,EACnB,OAAkB,EAClB,OAAgB,IACf,CAAC;QACJ,mBAAmB,CAAC,SAAmB,EAAE,OAAkB;YACzD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,qBAAqB,CACnB,KAAa,EACb,SAAmB,EACnB,OAAkB,EAClB,OAAgB,IACf,CAAC;QACJ,cAAc;YACZ,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO;YACL,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,WAAW;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QACD,eAAe,CAAC,OAAgB;YAC9B,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,iBAAiB,CAAC,OAAgB;YAChC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,OAAgB;YACtB,2BAA2B;YAC3B,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnC,CAAC;YACD,WAAW,GAAG,OAAO,CAAC;YACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO;YACL,OAAO,WAAY,CAAC;QACtB,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"mockRenderTarget.js","sourceRoot":"","sources":["../../src/__tests__/mockRenderTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,EAAE;IAKX,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAW,CAAC;IAC9C,IAAI,WAAW,GAAmB,IAAI,CAAC;IAEvC,MAAM,MAAM,GAGR;QACF,kBAAkB;QAClB,IAAI,WAAW;YACb,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,WAAW,CAAC,EAAkB;YAChC,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,SAAS,CAAC,OAAmB,IAAG,CAAC;QACjC,mBAAmB,CACjB,KAAa,EACb,SAAmB,EACnB,OAAkB,EAClB,OAAgB,IACf,CAAC;QACJ,mBAAmB,CAAC,SAAmB,EAAE,OAAkB;YACzD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,qBAAqB,CACnB,KAAa,EACb,SAAmB,EACnB,OAAkB,EAClB,OAAgB,IACf,CAAC;QACJ,cAAc;YACZ,OAAO,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO;YACL,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,WAAW;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QACD,eAAe,CAAC,OAAgB;YAC9B,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,iBAAiB,CAAC,OAAgB;YAChC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,OAAgB;YACtB,2BAA2B;YAC3B,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnC,CAAC;YACD,WAAW,GAAG,OAAO,CAAC;YACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO;YACL,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvE,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { RefObject } from "react";
2
+ import type { RenderLoopController } from "@adam26davidson/char-matrix";
3
+ import type { CMElementRef } from "./types";
4
+ export declare const RenderLoopContext: import("react").Context<RenderLoopController | null>;
5
+ /**
6
+ * Access the RenderLoopController from a React component.
7
+ * Returns null if no controller was provided.
8
+ */
9
+ export declare function useRenderLoop(): RenderLoopController | null;
10
+ /**
11
+ * Imperative animation controls for a char-matrix element ref.
12
+ */
13
+ export declare function useAnimation(ref: RefObject<CMElementRef | null>): {
14
+ triggerEntrance(onComplete?: () => void): void;
15
+ triggerExit(onComplete?: () => void): void;
16
+ isAnimating(): boolean;
17
+ };
18
+ /**
19
+ * Polls an async data source on an interval.
20
+ * Calls onData with the result, onError on failure.
21
+ * The first fetch happens immediately.
22
+ */
23
+ export declare function usePolledData<T>(fetcher: () => Promise<T>, intervalMs: number, onData: (data: T) => void, onError?: (error: unknown) => void): void;
24
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C,eAAO,MAAM,iBAAiB,sDAAmD,CAAC;AAElF;;;GAGG;AACH,wBAAgB,aAAa,IAAI,oBAAoB,GAAG,IAAI,CAE3D;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;iCAE/B,MAAM,IAAI;6BAMd,MAAM,IAAI;;EAUtC;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,IAAI,CA6BN"}
package/dist/hooks.js ADDED
@@ -0,0 +1,75 @@
1
+ import { createContext, useContext, useEffect, useRef } from "react";
2
+ // ---------------------------------------------------------------------------
3
+ // Render Loop Context
4
+ // ---------------------------------------------------------------------------
5
+ export const RenderLoopContext = createContext(null);
6
+ /**
7
+ * Access the RenderLoopController from a React component.
8
+ * Returns null if no controller was provided.
9
+ */
10
+ export function useRenderLoop() {
11
+ return useContext(RenderLoopContext);
12
+ }
13
+ // ---------------------------------------------------------------------------
14
+ // useAnimation Hook
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Imperative animation controls for a char-matrix element ref.
18
+ */
19
+ export function useAnimation(ref) {
20
+ return {
21
+ triggerEntrance(onComplete) {
22
+ const el = ref.current;
23
+ if (el && el.getStage() === "main") {
24
+ el.startTransition("enter", onComplete);
25
+ }
26
+ },
27
+ triggerExit(onComplete) {
28
+ const el = ref.current;
29
+ if (el) {
30
+ el.startTransition("exit", onComplete);
31
+ }
32
+ },
33
+ isAnimating() {
34
+ return ref.current?.getAnimationHandler()?.hasActiveAnimation() ?? false;
35
+ },
36
+ };
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // usePolledData Hook
40
+ // ---------------------------------------------------------------------------
41
+ /**
42
+ * Polls an async data source on an interval.
43
+ * Calls onData with the result, onError on failure.
44
+ * The first fetch happens immediately.
45
+ */
46
+ export function usePolledData(fetcher, intervalMs, onData, onError) {
47
+ // Stable refs for callbacks that may change between renders
48
+ const fetcherRef = useRef(fetcher);
49
+ fetcherRef.current = fetcher;
50
+ const onDataRef = useRef(onData);
51
+ const onErrorRef = useRef(onError);
52
+ onDataRef.current = onData;
53
+ onErrorRef.current = onError;
54
+ useEffect(() => {
55
+ let active = true;
56
+ async function poll() {
57
+ try {
58
+ const data = await fetcherRef.current();
59
+ if (active)
60
+ onDataRef.current(data);
61
+ }
62
+ catch (err) {
63
+ if (active)
64
+ onErrorRef.current?.(err);
65
+ }
66
+ }
67
+ poll(); // Immediate first fetch
68
+ const id = setInterval(poll, intervalMs);
69
+ return () => {
70
+ active = false;
71
+ clearInterval(id);
72
+ };
73
+ }, [intervalMs]);
74
+ }
75
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAKrE,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAA8B,IAAI,CAAC,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAmC;IAC9D,OAAO;QACL,eAAe,CAAC,UAAuB;YACrC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;YACvB,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;gBACnC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,WAAW,CAAC,UAAuB;YACjC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;YACvB,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,WAAW;YACT,OAAO,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,IAAI,KAAK,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAyB,EACzB,UAAkB,EAClB,MAAyB,EACzB,OAAkC;IAElC,4DAA4D;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,KAAK,UAAU,IAAI;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,MAAM;oBAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,MAAM;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC,CAAC,wBAAwB;QAChC,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,KAAK,CAAC;YACf,aAAa,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,CAAC"}
@@ -1,9 +1,11 @@
1
- import type { RenderTarget, Element, Alignment, Axis, SizingMethod, CursorType, ColumnDef, ElementAnimationHandler } from "@adam26davidson/char-matrix";
2
- export type CMElementType = "cm-container" | "cm-text" | "cm-table";
1
+ import type { RenderTarget, Element, Alignment, Axis, SizingMethod, CursorType, ColumnDef, ElementAnimationHandler, PositionMode } from "@adam26davidson/char-matrix";
2
+ export type CMElementType = "cm-container" | "cm-text" | "cm-table" | "cm-overlay";
3
3
  /** Props common to all char-matrix elements (mirrors ElementConfig minus view). */
4
4
  interface CMBaseProps {
5
5
  /** Standard React reconciliation key — stripped from props at runtime. */
6
6
  key?: string | number;
7
+ /** React ref — resolves to the underlying Element instance (typed as CMElementRef). */
8
+ ref?: React.Ref<any>;
7
9
  /** The char-matrix element key. React's `key` is stripped from props, so use `elementKey`. */
8
10
  elementKey: string;
9
11
  width?: number;
@@ -27,6 +29,9 @@ interface CMBaseProps {
27
29
  entranceTiming?: "parallel" | "series";
28
30
  exitTiming?: "parallel" | "series";
29
31
  zIndex?: number;
32
+ position?: PositionMode;
33
+ /** When this value changes, the element's entrance animation is re-triggered. */
34
+ animationKey?: string | number;
30
35
  onClick?: () => void;
31
36
  }
32
37
  export interface CMContainerProps extends CMBaseProps {
@@ -46,11 +51,16 @@ export interface CMTableProps extends CMBaseProps {
46
51
  titleAlign?: "start" | "center" | "end";
47
52
  showRowSeparators?: boolean;
48
53
  }
49
- export type CMProps = CMContainerProps | CMTextProps | CMTableProps;
54
+ /** Overlay props same as container, rendered into the overlay layer instead of the element tree. */
55
+ export interface CMOverlayProps extends CMContainerProps {
56
+ }
57
+ export type CMProps = CMContainerProps | CMTextProps | CMTableProps | CMOverlayProps;
50
58
  /** The root container object passed to the reconciler. */
51
59
  export interface RootContainer {
52
60
  view: RenderTarget;
53
61
  rootElement: Element | null;
62
+ /** Elements tagged as overlays — bypass normal parent-child management. */
63
+ overlayInstances: WeakSet<Element>;
54
64
  }
55
65
  export declare const hostConfig: any;
56
66
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"hostConfig.d.ts","sourceRoot":"","sources":["../src/hostConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EAKP,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAMrC,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpE,mFAAmF;AACnF,UAAU,WAAW;IACnB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,IAAI,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpE,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAqID,eAAO,MAAM,UAAU,EAAE,GAoMxB,CAAC"}
1
+ {"version":3,"file":"hostConfig.d.ts","sourceRoot":"","sources":["../src/hostConfig.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EAKP,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,SAAS,EACT,uBAAuB,EACvB,YAAY,EACb,MAAM,6BAA6B,CAAC;AAsBrC,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAEnF,mFAAmF;AACnF,UAAU,WAAW;IACnB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,uFAAuF;IACvF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,IAAI,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,sGAAsG;AACtG,MAAM,WAAW,cAAe,SAAQ,gBAAgB;CAAG;AAE3D,MAAM,MAAM,OAAO,GAAG,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAErF,0DAA0D;AAC1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC;AAmKD,eAAO,MAAM,UAAU,EAAE,GAiTxB,CAAC"}
@@ -1,12 +1,36 @@
1
1
  // react-reconciler types are used via the `any`-typed hostConfig export.
2
2
  import { ContainerElement, TextElement, TableElement, } from "@adam26davidson/char-matrix";
3
3
  // ---------------------------------------------------------------------------
4
+ // Type guards for element instances
5
+ // ---------------------------------------------------------------------------
6
+ function isContainerElement(instance) {
7
+ return instance instanceof ContainerElement;
8
+ }
9
+ function isTextElement(instance) {
10
+ return instance instanceof TextElement;
11
+ }
12
+ function isTableElement(instance) {
13
+ return instance instanceof TableElement;
14
+ }
15
+ // ---------------------------------------------------------------------------
16
+ // Overlay tracking
17
+ // ---------------------------------------------------------------------------
18
+ /** Map from element instance to the RootContainer it was created in. */
19
+ const instanceRootMap = new WeakMap();
20
+ function isOverlay(instance) {
21
+ const root = instanceRootMap.get(instance);
22
+ return root?.overlayInstances.has(instance) ?? false;
23
+ }
24
+ function unmarkOverlay(instance) {
25
+ const root = instanceRootMap.get(instance);
26
+ root?.overlayInstances.delete(instance);
27
+ }
28
+ // ---------------------------------------------------------------------------
4
29
  // Element creation helpers
5
30
  // ---------------------------------------------------------------------------
6
- function buildBaseConfig(props, view) {
31
+ /** Extract the shared base config fields from props (everything except key/view). */
32
+ function extractBaseFields(props) {
7
33
  return {
8
- key: props.elementKey,
9
- view,
10
34
  width: props.width,
11
35
  widthType: props.widthType,
12
36
  height: props.height,
@@ -28,8 +52,12 @@ function buildBaseConfig(props, view) {
28
52
  entranceTiming: props.entranceTiming,
29
53
  exitTiming: props.exitTiming,
30
54
  zIndex: props.zIndex,
55
+ position: props.position,
31
56
  };
32
57
  }
58
+ function buildBaseConfig(props, view) {
59
+ return { key: props.elementKey, view, ...extractBaseFields(props) };
60
+ }
33
61
  function createElement(type, props, view) {
34
62
  const base = buildBaseConfig(props, view);
35
63
  let instance;
@@ -65,6 +93,17 @@ function createElement(type, props, view) {
65
93
  });
66
94
  break;
67
95
  }
96
+ case "cm-overlay": {
97
+ const p = props;
98
+ instance = new ContainerElement({
99
+ ...base,
100
+ mainAxis: p.mainAxis,
101
+ justifyContent: p.justifyContent,
102
+ alignItems: p.alignItems,
103
+ spacing: p.spacing,
104
+ });
105
+ break;
106
+ }
68
107
  default:
69
108
  throw new Error(`Unknown char-matrix element type: ${type}`);
70
109
  }
@@ -73,11 +112,9 @@ function createElement(type, props, view) {
73
112
  instance.setOnClick(props.onClick);
74
113
  }
75
114
  // Wire animation handler — DefaultAnimationHandler needs setElement() called
76
- // after the element is constructed. Duck-type check since setElement is not
77
- // on the ElementAnimationHandler interface.
78
- const handler = props.animationHandler;
79
- if (handler?.setElement) {
80
- handler.setElement(instance);
115
+ // after the element is constructed.
116
+ if (props.animationHandler?.setElement) {
117
+ props.animationHandler.setElement(instance);
81
118
  }
82
119
  return instance;
83
120
  }
@@ -116,24 +153,46 @@ export const hostConfig = {
116
153
  },
117
154
  // --------------- Instance creation ---------------
118
155
  createInstance(type, props, rootContainer) {
119
- return createElement(type, props, rootContainer.view);
156
+ const instance = createElement(type, props, rootContainer.view);
157
+ instanceRootMap.set(instance, rootContainer);
158
+ if (type === "cm-overlay") {
159
+ rootContainer.overlayInstances.add(instance);
160
+ }
161
+ return instance;
120
162
  },
121
163
  createTextInstance() {
122
164
  throw new Error("Raw text nodes are not supported. Use <cm-text text=\"...\"> instead.");
123
165
  },
124
166
  // --------------- Children (mutation mode) ---------------
125
167
  appendInitialChild(parent, child) {
168
+ if (isOverlay(child)) {
169
+ // Overlays are deferred to commitMount — skip normal child tracking.
170
+ return;
171
+ }
126
172
  const children = getTrackedChildren(parent);
127
173
  children.push(child);
128
174
  // Don't commit yet — React calls this during the "complete" phase.
129
175
  // finalizeInitialChildren or the commit phase will handle it.
130
176
  },
131
177
  appendChild(parent, child) {
178
+ if (isOverlay(child)) {
179
+ const root = instanceRootMap.get(child);
180
+ if (root?.view.addOverlay) {
181
+ root.view.addOverlay(child);
182
+ }
183
+ return;
184
+ }
132
185
  const children = getTrackedChildren(parent);
133
186
  children.push(child);
134
187
  commitChildren(parent);
135
188
  },
136
189
  appendChildToContainer(container, child) {
190
+ if (isOverlay(child)) {
191
+ if (container.view.addOverlay) {
192
+ container.view.addOverlay(child);
193
+ }
194
+ return;
195
+ }
137
196
  container.rootElement = child;
138
197
  // Use setRoot if available (MatrixView implements this) for full integration
139
198
  // with the render loop. Falls back to registerWithView for basic targets.
@@ -145,6 +204,13 @@ export const hostConfig = {
145
204
  }
146
205
  },
147
206
  insertBefore(parent, child, beforeChild) {
207
+ if (isOverlay(child)) {
208
+ const root = instanceRootMap.get(child);
209
+ if (root?.view.addOverlay) {
210
+ root.view.addOverlay(child);
211
+ }
212
+ return;
213
+ }
148
214
  const children = getTrackedChildren(parent);
149
215
  const idx = children.indexOf(beforeChild);
150
216
  if (idx >= 0) {
@@ -156,6 +222,12 @@ export const hostConfig = {
156
222
  commitChildren(parent);
157
223
  },
158
224
  insertInContainerBefore(container, child, _beforeChild) {
225
+ if (isOverlay(child)) {
226
+ if (container.view.addOverlay) {
227
+ container.view.addOverlay(child);
228
+ }
229
+ return;
230
+ }
159
231
  container.rootElement = child;
160
232
  if (container.view.setRoot) {
161
233
  container.view.setRoot(child);
@@ -165,6 +237,14 @@ export const hostConfig = {
165
237
  }
166
238
  },
167
239
  removeChild(parent, child) {
240
+ if (isOverlay(child)) {
241
+ const root = instanceRootMap.get(child);
242
+ if (root?.view.removeOverlay) {
243
+ root.view.removeOverlay(child);
244
+ }
245
+ unmarkOverlay(child);
246
+ return;
247
+ }
168
248
  const children = getTrackedChildren(parent);
169
249
  const idx = children.indexOf(child);
170
250
  if (idx >= 0) {
@@ -174,6 +254,13 @@ export const hostConfig = {
174
254
  commitChildren(parent);
175
255
  },
176
256
  removeChildFromContainer(container, child) {
257
+ if (isOverlay(child)) {
258
+ if (container.view.removeOverlay) {
259
+ container.view.removeOverlay(child);
260
+ }
261
+ unmarkOverlay(child);
262
+ return;
263
+ }
177
264
  child.unregisterWithView();
178
265
  if (container.rootElement === child) {
179
266
  container.rootElement = null;
@@ -188,8 +275,9 @@ export const hostConfig = {
188
275
  // --------------- Updates ---------------
189
276
  prepareUpdate(_instance, _type, oldProps, newProps) {
190
277
  // Return a truthy payload if any prop (other than children) changed.
191
- const oKeys = Object.keys(oldProps).filter((k) => k !== "children");
192
- const nKeys = Object.keys(newProps).filter((k) => k !== "children");
278
+ const skipKeys = new Set(["children", "key", "ref", "elementKey"]);
279
+ const oKeys = Object.keys(oldProps).filter((k) => !skipKeys.has(k));
280
+ const nKeys = Object.keys(newProps).filter((k) => !skipKeys.has(k));
193
281
  if (oKeys.length !== nKeys.length)
194
282
  return { changed: true };
195
283
  for (const k of oKeys) {
@@ -198,19 +286,58 @@ export const hostConfig = {
198
286
  }
199
287
  return null;
200
288
  },
201
- commitUpdate(instance, _updatePayload, type, oldProps, newProps) {
202
- // Update text content
203
- if (type === "cm-text") {
204
- const oldText = oldProps.text;
205
- const newText = newProps.text;
206
- if (oldText !== newText) {
207
- instance.setBaseText(newText);
289
+ commitUpdate(instance, _updatePayload, type, _oldProps, newProps) {
290
+ const base = extractBaseFields(newProps);
291
+ // Delegate to the element-type-specific batch update method.
292
+ switch (type) {
293
+ case "cm-container":
294
+ case "cm-overlay": {
295
+ const p = newProps;
296
+ if (isContainerElement(instance)) {
297
+ instance.updateContainerConfig({
298
+ ...base,
299
+ mainAxis: p.mainAxis,
300
+ justifyContent: p.justifyContent,
301
+ alignItems: p.alignItems,
302
+ spacing: p.spacing,
303
+ });
304
+ }
305
+ break;
208
306
  }
307
+ case "cm-text": {
308
+ const p = newProps;
309
+ if (isTextElement(instance)) {
310
+ instance.updateTextConfig({
311
+ ...base,
312
+ text: p.text,
313
+ hoverTransform: p.hoverTransform,
314
+ });
315
+ }
316
+ break;
317
+ }
318
+ case "cm-table": {
319
+ const p = newProps;
320
+ if (isTableElement(instance)) {
321
+ instance.updateTableConfig({
322
+ ...base,
323
+ columns: p.columns,
324
+ title: p.title,
325
+ titleAlign: p.titleAlign,
326
+ showRowSeparators: p.showRowSeparators,
327
+ });
328
+ }
329
+ break;
330
+ }
331
+ }
332
+ // Update or clear onClick handler
333
+ if (_oldProps.onClick !== newProps.onClick) {
334
+ instance.setOnClick(newProps.onClick ?? null);
209
335
  }
210
- // Update onClick handler
211
- if (oldProps.onClick !== newProps.onClick) {
212
- if (newProps.onClick) {
213
- instance.setOnClick(newProps.onClick);
336
+ // Re-trigger entrance animation when animationKey changes
337
+ if (_oldProps.animationKey !== newProps.animationKey &&
338
+ newProps.animationKey != null) {
339
+ if (instance.getStage() === "main") {
340
+ instance.startTransition("enter");
214
341
  }
215
342
  }
216
343
  },
@@ -220,6 +347,19 @@ export const hostConfig = {
220
347
  },
221
348
  commitMount(instance) {
222
349
  // Called after finalizeInitialChildren returns true.
350
+ // If this is an overlay, add it to the view's overlay layer now.
351
+ if (isOverlay(instance)) {
352
+ const root = instanceRootMap.get(instance);
353
+ if (root?.view.addOverlay) {
354
+ // First commit its own tracked children (it's a container)
355
+ const children = getTrackedChildren(instance);
356
+ if (children.length > 0) {
357
+ instance.setChildren([...children]);
358
+ }
359
+ root.view.addOverlay(instance);
360
+ }
361
+ return;
362
+ }
223
363
  // Commit the tracked children now that the initial tree is assembled.
224
364
  const children = getTrackedChildren(instance);
225
365
  if (children.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"hostConfig.js","sourceRoot":"","sources":["../src/hostConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hostConfig.js","sourceRoot":"","sources":["../src/hostConfig.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { render, unmount } from "./renderer";
2
- export type { CMContainerProps, CMTextProps, CMTableProps, CMElementType, } from "./hostConfig";
2
+ export type { CMContainerProps, CMTextProps, CMTableProps, CMOverlayProps, CMElementType, } from "./hostConfig";
3
+ export type { CMElementRef } from "./types";
4
+ export { RenderLoopContext, useRenderLoop, useAnimation, usePolledData, } from "./hooks";
3
5
  import "./types";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { render, unmount } from "./renderer";
2
+ export { RenderLoopContext, useRenderLoop, useAnimation, usePolledData, } from "./hooks";
2
3
  // Side-effect: register JSX intrinsic element types
3
4
  import "./types";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ7C,oDAAoD;AACpD,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAS7C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,oDAAoD;AACpD,OAAO,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAWzE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CA2BtE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAOhD"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAWzE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CA+BtE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAOhD"}
package/dist/renderer.js CHANGED
@@ -12,7 +12,11 @@ const roots = new Map();
12
12
  export function render(element, view) {
13
13
  let entry = roots.get(view);
14
14
  if (!entry) {
15
- const container = { view, rootElement: null };
15
+ const container = {
16
+ view,
17
+ rootElement: null,
18
+ overlayInstances: new WeakSet(),
19
+ };
16
20
  const fiberRoot = reconciler.createContainer(container, 0, // LegacyRoot tag
17
21
  null, // hydrationCallbacks
18
22
  false, // isStrictMode
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE/C,uEAAuE;AACvE,MAAM,KAAK,GAAG,IAAI,GAAG,EAGlB,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,OAAkB,EAAE,IAAkB;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,SAAS,GAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAC1C,SAAS,EACT,CAAC,EAAE,iBAAiB;QACpB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,qCAAqC;QAC3C,EAAE,EAAE,mBAAmB;QACvB,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB;QACtD,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAgB;QACpD,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,qBAAqB;QACzD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;QACF,KAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErE,+DAA+D;IAC/D,UAAU,CAAC,SAAS,EAAE,CAAC;IAEvB,OAAO,KAAK,CAAC,SAAS,CAAC,WAAY,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAkB;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE/C,uEAAuE;AACvE,MAAM,KAAK,GAAG,IAAI,GAAG,EAGlB,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,OAAkB,EAAE,IAAkB;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,SAAS,GAAkB;YAC/B,IAAI;YACJ,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,IAAI,OAAO,EAAE;SAChC,CAAC;QACF,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAC1C,SAAS,EACT,CAAC,EAAE,iBAAiB;QACpB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,qCAAqC;QAC3C,EAAE,EAAE,mBAAmB;QACvB,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB;QACtD,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAgB;QACpD,CAAC,GAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,qBAAqB;QACzD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;QACF,KAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAErE,+DAA+D;IAC/D,UAAU,CAAC,SAAS,EAAE,CAAC;IAEvB,OAAO,KAAK,CAAC,SAAS,CAAC,WAAY,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAkB;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,10 +1,24 @@
1
- import type { CMContainerProps, CMTextProps, CMTableProps } from "./hostConfig";
1
+ import type { CMContainerProps, CMTextProps, CMTableProps, CMOverlayProps } from "./hostConfig";
2
+ import type { ElementStage, ElementAnimationHandler, IntPoint } from "@adam26davidson/char-matrix";
3
+ /**
4
+ * Public imperative API exposed via React refs on char-matrix elements.
5
+ * The underlying Element satisfies this interface — no wrapper needed.
6
+ */
7
+ export interface CMElementRef {
8
+ startTransition(type: "enter" | "exit", onComplete?: () => void): void;
9
+ getStage(): ElementStage;
10
+ getAnimationHandler(): ElementAnimationHandler | null;
11
+ getSize(): IntPoint;
12
+ getKey(): string;
13
+ flagForRedraw(): void;
14
+ }
2
15
  declare global {
3
16
  namespace JSX {
4
17
  interface IntrinsicElements {
5
18
  "cm-container": CMContainerProps;
6
19
  "cm-text": CMTextProps;
7
20
  "cm-table": CMTableProps;
21
+ "cm-overlay": CMOverlayProps;
8
22
  }
9
23
  }
10
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,cAAc,EAAE,gBAAgB,CAAC;YACjC,SAAS,EAAE,WAAW,CAAC;YACvB,UAAU,EAAE,YAAY,CAAC;SAC1B;KACF;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,QAAQ,EACT,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACvE,QAAQ,IAAI,YAAY,CAAC;IACzB,mBAAmB,IAAI,uBAAuB,GAAG,IAAI,CAAC;IACtD,OAAO,IAAI,QAAQ,CAAC;IACpB,MAAM,IAAI,MAAM,CAAC;IACjB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,cAAc,EAAE,gBAAgB,CAAC;YACjC,SAAS,EAAE,WAAW,CAAC;YACvB,UAAU,EAAE,YAAY,CAAC;YACzB,YAAY,EAAE,cAAc,CAAC;SAC9B;KACF;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adam26davidson/char-matrix-react-renderer",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",