@cascadetui/core 0.1.1

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 (129) hide show
  1. package/3d/SpriteResourceManager.d.ts +74 -0
  2. package/3d/SpriteUtils.d.ts +13 -0
  3. package/3d/TextureUtils.d.ts +24 -0
  4. package/3d/ThreeRenderable.d.ts +40 -0
  5. package/3d/WGPURenderer.d.ts +61 -0
  6. package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
  7. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
  8. package/3d/animation/SpriteAnimator.d.ts +124 -0
  9. package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
  10. package/3d/canvas.d.ts +44 -0
  11. package/3d/index.d.ts +12 -0
  12. package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
  13. package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
  14. package/3d/physics/physics-interface.d.ts +27 -0
  15. package/3d.d.ts +2 -0
  16. package/3d.js +34041 -0
  17. package/3d.js.map +155 -0
  18. package/LICENSE +21 -0
  19. package/NativeSpanFeed.d.ts +41 -0
  20. package/README.md +62 -0
  21. package/Renderable.d.ts +334 -0
  22. package/animation/Timeline.d.ts +126 -0
  23. package/ansi.d.ts +13 -0
  24. package/assets/javascript/highlights.scm +205 -0
  25. package/assets/javascript/tree-sitter-javascript.wasm +0 -0
  26. package/assets/markdown/highlights.scm +150 -0
  27. package/assets/markdown/injections.scm +27 -0
  28. package/assets/markdown/tree-sitter-markdown.wasm +0 -0
  29. package/assets/markdown_inline/highlights.scm +115 -0
  30. package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  31. package/assets/typescript/highlights.scm +604 -0
  32. package/assets/typescript/tree-sitter-typescript.wasm +0 -0
  33. package/assets/zig/highlights.scm +284 -0
  34. package/assets/zig/tree-sitter-zig.wasm +0 -0
  35. package/buffer.d.ts +107 -0
  36. package/console.d.ts +140 -0
  37. package/edit-buffer.d.ts +98 -0
  38. package/editor-view.d.ts +73 -0
  39. package/index-jx194wn1.js +17723 -0
  40. package/index-jx194wn1.js.map +61 -0
  41. package/index.d.ts +18 -0
  42. package/index.js +12210 -0
  43. package/index.js.map +49 -0
  44. package/lib/KeyHandler.d.ts +61 -0
  45. package/lib/RGBA.d.ts +25 -0
  46. package/lib/ascii.font.d.ts +508 -0
  47. package/lib/border.d.ts +49 -0
  48. package/lib/bunfs.d.ts +7 -0
  49. package/lib/clipboard.d.ts +29 -0
  50. package/lib/data-paths.d.ts +26 -0
  51. package/lib/debounce.d.ts +42 -0
  52. package/lib/env.d.ts +42 -0
  53. package/lib/extmarks-history.d.ts +17 -0
  54. package/lib/extmarks.d.ts +89 -0
  55. package/lib/hast-styled-text.d.ts +17 -0
  56. package/lib/index.d.ts +18 -0
  57. package/lib/keymapping.d.ts +25 -0
  58. package/lib/objects-in-viewport.d.ts +24 -0
  59. package/lib/output.capture.d.ts +24 -0
  60. package/lib/parse.keypress-kitty.d.ts +2 -0
  61. package/lib/parse.keypress.d.ts +26 -0
  62. package/lib/parse.mouse.d.ts +30 -0
  63. package/lib/queue.d.ts +15 -0
  64. package/lib/renderable.validations.d.ts +12 -0
  65. package/lib/scroll-acceleration.d.ts +43 -0
  66. package/lib/selection.d.ts +63 -0
  67. package/lib/singleton.d.ts +7 -0
  68. package/lib/stdin-buffer.d.ts +44 -0
  69. package/lib/styled-text.d.ts +63 -0
  70. package/lib/terminal-capability-detection.d.ts +30 -0
  71. package/lib/terminal-palette.d.ts +43 -0
  72. package/lib/tree-sitter/assets/update.d.ts +11 -0
  73. package/lib/tree-sitter/client.d.ts +47 -0
  74. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  75. package/lib/tree-sitter/download-utils.d.ts +21 -0
  76. package/lib/tree-sitter/index.d.ts +8 -0
  77. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  78. package/lib/tree-sitter/parsers-config.d.ts +38 -0
  79. package/lib/tree-sitter/resolve-ft.d.ts +2 -0
  80. package/lib/tree-sitter/types.d.ts +81 -0
  81. package/lib/tree-sitter-styled-text.d.ts +14 -0
  82. package/lib/validate-dir-name.d.ts +1 -0
  83. package/lib/yoga.options.d.ts +32 -0
  84. package/package.json +67 -0
  85. package/parser.worker.js +878 -0
  86. package/parser.worker.js.map +12 -0
  87. package/post/filters.d.ts +105 -0
  88. package/renderables/ASCIIFont.d.ts +52 -0
  89. package/renderables/Box.d.ts +72 -0
  90. package/renderables/Code.d.ts +66 -0
  91. package/renderables/Diff.d.ts +135 -0
  92. package/renderables/EditBufferRenderable.d.ts +162 -0
  93. package/renderables/FrameBuffer.d.ts +16 -0
  94. package/renderables/Input.d.ts +67 -0
  95. package/renderables/LineNumberRenderable.d.ts +74 -0
  96. package/renderables/Markdown.d.ts +150 -0
  97. package/renderables/ScrollBar.d.ts +77 -0
  98. package/renderables/ScrollBox.d.ts +116 -0
  99. package/renderables/Select.d.ts +115 -0
  100. package/renderables/Slider.d.ts +44 -0
  101. package/renderables/TabSelect.d.ts +96 -0
  102. package/renderables/Text.d.ts +36 -0
  103. package/renderables/TextBufferRenderable.d.ts +105 -0
  104. package/renderables/TextNode.d.ts +91 -0
  105. package/renderables/TextTable.d.ts +130 -0
  106. package/renderables/Textarea.d.ts +114 -0
  107. package/renderables/__tests__/renderable-test-utils.d.ts +7 -0
  108. package/renderables/composition/VRenderable.d.ts +16 -0
  109. package/renderables/composition/constructs.d.ts +35 -0
  110. package/renderables/composition/vnode.d.ts +46 -0
  111. package/renderables/index.d.ts +21 -0
  112. package/renderables/markdown-parser.d.ts +10 -0
  113. package/renderer.d.ts +382 -0
  114. package/syntax-style.d.ts +54 -0
  115. package/testing/mock-keys.d.ts +80 -0
  116. package/testing/mock-mouse.d.ts +38 -0
  117. package/testing/mock-tree-sitter-client.d.ts +23 -0
  118. package/testing/spy.d.ts +7 -0
  119. package/testing/test-recorder.d.ts +61 -0
  120. package/testing/test-renderer.d.ts +23 -0
  121. package/testing.d.ts +6 -0
  122. package/testing.js +670 -0
  123. package/testing.js.map +15 -0
  124. package/text-buffer-view.d.ts +42 -0
  125. package/text-buffer.d.ts +67 -0
  126. package/types.d.ts +126 -0
  127. package/utils.d.ts +14 -0
  128. package/zig-structs.d.ts +155 -0
  129. package/zig.d.ts +351 -0
@@ -0,0 +1,54 @@
1
+ import { RGBA, type ColorInput } from "./lib/RGBA";
2
+ import { type RenderLib } from "./zig";
3
+ import { type Pointer } from "bun:ffi";
4
+ export interface StyleDefinition {
5
+ fg?: RGBA;
6
+ bg?: RGBA;
7
+ bold?: boolean;
8
+ italic?: boolean;
9
+ underline?: boolean;
10
+ dim?: boolean;
11
+ }
12
+ export interface MergedStyle {
13
+ fg?: RGBA;
14
+ bg?: RGBA;
15
+ attributes: number;
16
+ }
17
+ export interface ThemeTokenStyle {
18
+ scope: string[];
19
+ style: {
20
+ foreground?: ColorInput;
21
+ background?: ColorInput;
22
+ bold?: boolean;
23
+ italic?: boolean;
24
+ underline?: boolean;
25
+ dim?: boolean;
26
+ };
27
+ }
28
+ export declare function convertThemeToStyles(theme: ThemeTokenStyle[]): Record<string, StyleDefinition>;
29
+ export declare class SyntaxStyle {
30
+ private lib;
31
+ private stylePtr;
32
+ private _destroyed;
33
+ private nameCache;
34
+ private styleDefs;
35
+ private mergedCache;
36
+ constructor(lib: RenderLib, ptr: Pointer);
37
+ static create(): SyntaxStyle;
38
+ static fromTheme(theme: ThemeTokenStyle[]): SyntaxStyle;
39
+ static fromStyles(styles: Record<string, StyleDefinition>): SyntaxStyle;
40
+ private guard;
41
+ registerStyle(name: string, style: StyleDefinition): number;
42
+ resolveStyleId(name: string): number | null;
43
+ getStyleId(name: string): number | null;
44
+ get ptr(): Pointer;
45
+ getStyleCount(): number;
46
+ clearNameCache(): void;
47
+ getStyle(name: string): StyleDefinition | undefined;
48
+ mergeStyles(...styleNames: string[]): MergedStyle;
49
+ clearCache(): void;
50
+ getCacheSize(): number;
51
+ getAllStyles(): Map<string, StyleDefinition>;
52
+ getRegisteredNames(): string[];
53
+ destroy(): void;
54
+ }
@@ -0,0 +1,80 @@
1
+ import type { CliRenderer } from "../renderer";
2
+ export declare const KeyCodes: {
3
+ readonly RETURN: "\r";
4
+ readonly LINEFEED: "\n";
5
+ readonly TAB: "\t";
6
+ readonly BACKSPACE: "\b";
7
+ readonly DELETE: "\u001B[3~";
8
+ readonly HOME: "\u001B[H";
9
+ readonly END: "\u001B[F";
10
+ readonly ESCAPE: "\u001B";
11
+ readonly ARROW_UP: "\u001B[A";
12
+ readonly ARROW_DOWN: "\u001B[B";
13
+ readonly ARROW_RIGHT: "\u001B[C";
14
+ readonly ARROW_LEFT: "\u001B[D";
15
+ readonly F1: "\u001BOP";
16
+ readonly F2: "\u001BOQ";
17
+ readonly F3: "\u001BOR";
18
+ readonly F4: "\u001BOS";
19
+ readonly F5: "\u001B[15~";
20
+ readonly F6: "\u001B[17~";
21
+ readonly F7: "\u001B[18~";
22
+ readonly F8: "\u001B[19~";
23
+ readonly F9: "\u001B[20~";
24
+ readonly F10: "\u001B[21~";
25
+ readonly F11: "\u001B[23~";
26
+ readonly F12: "\u001B[24~";
27
+ };
28
+ export type KeyInput = string | keyof typeof KeyCodes;
29
+ export interface MockKeysOptions {
30
+ kittyKeyboard?: boolean;
31
+ otherModifiersMode?: boolean;
32
+ }
33
+ export declare function createMockKeys(renderer: CliRenderer, options?: MockKeysOptions): {
34
+ pressKeys: (keys: KeyInput[], delayMs?: number) => Promise<void>;
35
+ pressKey: (key: KeyInput, modifiers?: {
36
+ shift?: boolean;
37
+ ctrl?: boolean;
38
+ meta?: boolean;
39
+ super?: boolean;
40
+ hyper?: boolean;
41
+ }) => void;
42
+ typeText: (text: string, delayMs?: number) => Promise<void>;
43
+ pressEnter: (modifiers?: {
44
+ shift?: boolean;
45
+ ctrl?: boolean;
46
+ meta?: boolean;
47
+ super?: boolean;
48
+ hyper?: boolean;
49
+ }) => void;
50
+ pressEscape: (modifiers?: {
51
+ shift?: boolean;
52
+ ctrl?: boolean;
53
+ meta?: boolean;
54
+ super?: boolean;
55
+ hyper?: boolean;
56
+ }) => void;
57
+ pressTab: (modifiers?: {
58
+ shift?: boolean;
59
+ ctrl?: boolean;
60
+ meta?: boolean;
61
+ super?: boolean;
62
+ hyper?: boolean;
63
+ }) => void;
64
+ pressBackspace: (modifiers?: {
65
+ shift?: boolean;
66
+ ctrl?: boolean;
67
+ meta?: boolean;
68
+ super?: boolean;
69
+ hyper?: boolean;
70
+ }) => void;
71
+ pressArrow: (direction: "up" | "down" | "left" | "right", modifiers?: {
72
+ shift?: boolean;
73
+ ctrl?: boolean;
74
+ meta?: boolean;
75
+ super?: boolean;
76
+ hyper?: boolean;
77
+ }) => void;
78
+ pressCtrlC: () => void;
79
+ pasteBracketedText: (text: string) => Promise<void>;
80
+ };
@@ -0,0 +1,38 @@
1
+ import type { CliRenderer } from "../renderer";
2
+ export declare const MouseButtons: {
3
+ readonly LEFT: 0;
4
+ readonly MIDDLE: 1;
5
+ readonly RIGHT: 2;
6
+ readonly WHEEL_UP: 64;
7
+ readonly WHEEL_DOWN: 65;
8
+ readonly WHEEL_LEFT: 66;
9
+ readonly WHEEL_RIGHT: 67;
10
+ };
11
+ export type MouseButton = (typeof MouseButtons)[keyof typeof MouseButtons];
12
+ export interface MousePosition {
13
+ x: number;
14
+ y: number;
15
+ }
16
+ export interface MouseModifiers {
17
+ shift?: boolean;
18
+ alt?: boolean;
19
+ ctrl?: boolean;
20
+ }
21
+ export type MouseEventType = "down" | "up" | "move" | "drag" | "scroll";
22
+ export interface MouseEventOptions {
23
+ button?: MouseButton;
24
+ modifiers?: MouseModifiers;
25
+ delayMs?: number;
26
+ }
27
+ export declare function createMockMouse(renderer: CliRenderer): {
28
+ moveTo: (x: number, y: number, options?: MouseEventOptions) => Promise<void>;
29
+ click: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
30
+ doubleClick: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
31
+ pressDown: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
32
+ release: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
33
+ drag: (startX: number, startY: number, endX: number, endY: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
34
+ scroll: (x: number, y: number, direction: "up" | "down" | "left" | "right", options?: MouseEventOptions) => Promise<void>;
35
+ getCurrentPosition: () => MousePosition;
36
+ getPressedButtons: () => MouseButton[];
37
+ emitMouseEvent: (type: MouseEventType, x: number, y: number, button?: MouseButton, options?: Omit<MouseEventOptions, "button">) => Promise<void>;
38
+ };
@@ -0,0 +1,23 @@
1
+ import { TreeSitterClient } from "../lib/tree-sitter";
2
+ import type { SimpleHighlight } from "../lib/tree-sitter/types";
3
+ export declare class MockTreeSitterClient extends TreeSitterClient {
4
+ private _highlightPromises;
5
+ private _mockResult;
6
+ private _autoResolveTimeout?;
7
+ constructor(options?: {
8
+ autoResolveTimeout?: number;
9
+ });
10
+ highlightOnce(content: string, filetype: string): Promise<{
11
+ highlights?: SimpleHighlight[];
12
+ warning?: string;
13
+ error?: string;
14
+ }>;
15
+ setMockResult(result: {
16
+ highlights?: SimpleHighlight[];
17
+ warning?: string;
18
+ error?: string;
19
+ }): void;
20
+ resolveHighlightOnce(index?: number): void;
21
+ resolveAllHighlightOnce(): void;
22
+ isHighlighting(): boolean;
23
+ }
@@ -0,0 +1,7 @@
1
+ export declare function createSpy(): {
2
+ (...args: any[]): void;
3
+ calls: any[][];
4
+ callCount(): number;
5
+ calledWith(...expected: any[]): boolean;
6
+ reset(): number;
7
+ };
@@ -0,0 +1,61 @@
1
+ import type { TestRenderer } from "./test-renderer";
2
+ export interface RecordBuffersOptions {
3
+ fg?: boolean;
4
+ bg?: boolean;
5
+ attributes?: boolean;
6
+ }
7
+ export interface RecordedBuffers {
8
+ fg?: Float32Array;
9
+ bg?: Float32Array;
10
+ attributes?: Uint8Array;
11
+ }
12
+ export interface RecordedFrame {
13
+ frame: string;
14
+ timestamp: number;
15
+ frameNumber: number;
16
+ buffers?: RecordedBuffers;
17
+ }
18
+ export interface TestRecorderOptions {
19
+ recordBuffers?: RecordBuffersOptions;
20
+ now?: () => number;
21
+ }
22
+ /**
23
+ * TestRecorder records frames from a TestRenderer by hooking into the render pipeline.
24
+ * It captures the character frame after each native render pass.
25
+ */
26
+ export declare class TestRecorder {
27
+ private renderer;
28
+ private frames;
29
+ private recording;
30
+ private frameNumber;
31
+ private startTime;
32
+ private originalRenderNative?;
33
+ private decoder;
34
+ private recordBuffers;
35
+ private now;
36
+ constructor(renderer: TestRenderer, options?: TestRecorderOptions);
37
+ /**
38
+ * Start recording frames. This hooks into the renderer's renderNative method.
39
+ */
40
+ rec(): void;
41
+ /**
42
+ * Stop recording frames and restore the original renderNative method.
43
+ */
44
+ stop(): void;
45
+ /**
46
+ * Get the recorded frames.
47
+ */
48
+ get recordedFrames(): RecordedFrame[];
49
+ /**
50
+ * Clear all recorded frames.
51
+ */
52
+ clear(): void;
53
+ /**
54
+ * Check if currently recording.
55
+ */
56
+ get isRecording(): boolean;
57
+ /**
58
+ * Capture the current frame from the renderer's buffer.
59
+ */
60
+ private captureFrame;
61
+ }
@@ -0,0 +1,23 @@
1
+ import { CliRenderer, type CliRendererConfig } from "../renderer";
2
+ import { createMockKeys } from "./mock-keys";
3
+ import { createMockMouse } from "./mock-mouse";
4
+ import type { CapturedFrame } from "../types";
5
+ export interface TestRendererOptions extends CliRendererConfig {
6
+ width?: number;
7
+ height?: number;
8
+ kittyKeyboard?: boolean;
9
+ otherModifiersMode?: boolean;
10
+ }
11
+ export interface TestRenderer extends CliRenderer {
12
+ }
13
+ export type MockInput = ReturnType<typeof createMockKeys>;
14
+ export type MockMouse = ReturnType<typeof createMockMouse>;
15
+ export declare function createTestRenderer(options: TestRendererOptions): Promise<{
16
+ renderer: TestRenderer;
17
+ mockInput: MockInput;
18
+ mockMouse: MockMouse;
19
+ renderOnce: () => Promise<void>;
20
+ captureCharFrame: () => string;
21
+ captureSpans: () => CapturedFrame;
22
+ resize: (width: number, height: number) => void;
23
+ }>;
package/testing.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./testing/test-renderer";
2
+ export * from "./testing/mock-keys";
3
+ export * from "./testing/mock-mouse";
4
+ export * from "./testing/mock-tree-sitter-client";
5
+ export * from "./testing/spy";
6
+ export { TestRecorder, type RecordedFrame } from "./testing/test-recorder";