@teaui/core 1.10.8 → 1.11.9

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 (180) hide show
  1. package/.dist/Buffer.d.ts +5 -0
  2. package/.dist/Buffer.js +150 -7
  3. package/.dist/Buffer.js.map +1 -1
  4. package/.dist/HeadlessProgram.d.ts +24 -0
  5. package/.dist/HeadlessProgram.js +41 -0
  6. package/.dist/HeadlessProgram.js.map +1 -0
  7. package/.dist/{Theme.d.ts → Palette.d.ts} +16 -15
  8. package/.dist/{Theme.js → Palette.js} +43 -28
  9. package/.dist/Palette.js.map +1 -0
  10. package/.dist/Screen.d.ts +43 -24
  11. package/.dist/Screen.js +102 -90
  12. package/.dist/Screen.js.map +1 -1
  13. package/.dist/Style.js +11 -10
  14. package/.dist/Style.js.map +1 -1
  15. package/.dist/TestProgram.d.ts +28 -0
  16. package/.dist/TestProgram.js +52 -0
  17. package/.dist/TestProgram.js.map +1 -0
  18. package/.dist/{testing.d.ts → TestScreen.d.ts} +4 -6
  19. package/.dist/TestScreen.js +99 -0
  20. package/.dist/TestScreen.js.map +1 -0
  21. package/.dist/TestTerminal.js +5 -23
  22. package/.dist/TestTerminal.js.map +1 -1
  23. package/.dist/UI.d.ts +2 -2
  24. package/.dist/UI.js +20 -20
  25. package/.dist/UI.js.map +1 -1
  26. package/.dist/View.d.ts +12 -7
  27. package/.dist/View.js +17 -10
  28. package/.dist/View.js.map +1 -1
  29. package/.dist/Viewport.d.ts +26 -0
  30. package/.dist/Viewport.js +57 -7
  31. package/.dist/Viewport.js.map +1 -1
  32. package/.dist/components/AbstractLegend.d.ts +30 -0
  33. package/.dist/components/AbstractLegend.js +195 -0
  34. package/.dist/components/AbstractLegend.js.map +1 -0
  35. package/.dist/components/Accordion.js +1 -1
  36. package/.dist/components/Accordion.js.map +1 -1
  37. package/.dist/components/Alert.d.ts +1 -1
  38. package/.dist/components/Alert.js +1 -1
  39. package/.dist/components/At.d.ts +57 -0
  40. package/.dist/components/At.js +182 -0
  41. package/.dist/components/At.js.map +1 -0
  42. package/.dist/components/AutoLegend.d.ts +21 -0
  43. package/.dist/components/AutoLegend.js +68 -0
  44. package/.dist/components/AutoLegend.js.map +1 -0
  45. package/.dist/components/Badge.d.ts +16 -0
  46. package/.dist/components/Badge.js +54 -0
  47. package/.dist/components/Badge.js.map +1 -0
  48. package/.dist/components/Box.d.ts +1 -1
  49. package/.dist/components/Box.js +4 -5
  50. package/.dist/components/Box.js.map +1 -1
  51. package/.dist/components/Breadcrumb.js +1 -1
  52. package/.dist/components/Breadcrumb.js.map +1 -1
  53. package/.dist/components/Button.d.ts +3 -2
  54. package/.dist/components/Button.js +13 -7
  55. package/.dist/components/Button.js.map +1 -1
  56. package/.dist/components/Calendar.d.ts +3 -1
  57. package/.dist/components/Calendar.js +34 -24
  58. package/.dist/components/Calendar.js.map +1 -1
  59. package/.dist/components/Callout.js +16 -16
  60. package/.dist/components/Callout.js.map +1 -1
  61. package/.dist/components/Canvas.js +1 -1
  62. package/.dist/components/Canvas.js.map +1 -1
  63. package/.dist/components/Checkbox.d.ts +3 -1
  64. package/.dist/components/Checkbox.js +11 -5
  65. package/.dist/components/Checkbox.js.map +1 -1
  66. package/.dist/components/Collapsible.js +1 -1
  67. package/.dist/components/Collapsible.js.map +1 -1
  68. package/.dist/components/CollapsibleText.js +1 -1
  69. package/.dist/components/CollapsibleText.js.map +1 -1
  70. package/.dist/components/Digits.d.ts +1 -1
  71. package/.dist/components/Digits.js +1 -1
  72. package/.dist/components/Digits.js.map +1 -1
  73. package/.dist/components/Drawer.d.ts +5 -3
  74. package/.dist/components/Drawer.js +20 -14
  75. package/.dist/components/Drawer.js.map +1 -1
  76. package/.dist/components/Dropdown.d.ts +1 -1
  77. package/.dist/components/Dropdown.js +25 -15
  78. package/.dist/components/Dropdown.js.map +1 -1
  79. package/.dist/components/HotKey.d.ts +7 -4
  80. package/.dist/components/HotKey.js +12 -4
  81. package/.dist/components/HotKey.js.map +1 -1
  82. package/.dist/components/Input.d.ts +3 -1
  83. package/.dist/components/Input.js +369 -45
  84. package/.dist/components/Input.js.map +1 -1
  85. package/.dist/components/Legend.d.ts +7 -13
  86. package/.dist/components/Legend.js +15 -163
  87. package/.dist/components/Legend.js.map +1 -1
  88. package/.dist/components/Log.d.ts +1 -0
  89. package/.dist/components/Log.js +5 -2
  90. package/.dist/components/Log.js.map +1 -1
  91. package/.dist/components/Modal.d.ts +2 -1
  92. package/.dist/components/Modal.js +2 -2
  93. package/.dist/components/Modal.js.map +1 -1
  94. package/.dist/components/Notification.d.ts +1 -1
  95. package/.dist/components/Notification.js +3 -3
  96. package/.dist/components/Notification.js.map +1 -1
  97. package/.dist/components/Page.js +5 -14
  98. package/.dist/components/Page.js.map +1 -1
  99. package/.dist/components/Pane.js +13 -10
  100. package/.dist/components/Pane.js.map +1 -1
  101. package/.dist/components/Plot.js +1 -1
  102. package/.dist/components/Plot.js.map +1 -1
  103. package/.dist/components/Progress.js +2 -2
  104. package/.dist/components/Progress.js.map +1 -1
  105. package/.dist/components/Scrollable.js +4 -4
  106. package/.dist/components/Scrollable.js.map +1 -1
  107. package/.dist/components/ScrollableList.js +4 -4
  108. package/.dist/components/ScrollableList.js.map +1 -1
  109. package/.dist/components/Separator.js +1 -1
  110. package/.dist/components/Separator.js.map +1 -1
  111. package/.dist/components/Slider.d.ts +3 -2
  112. package/.dist/components/Slider.js +14 -4
  113. package/.dist/components/Slider.js.map +1 -1
  114. package/.dist/components/Space.d.ts +1 -1
  115. package/.dist/components/Space.js +1 -1
  116. package/.dist/components/Space.js.map +1 -1
  117. package/.dist/components/Spinner.d.ts +3 -1
  118. package/.dist/components/Spinner.js +11 -1
  119. package/.dist/components/Spinner.js.map +1 -1
  120. package/.dist/components/Table.d.ts +1 -2
  121. package/.dist/components/Table.js +5 -5
  122. package/.dist/components/Table.js.map +1 -1
  123. package/.dist/components/Tabs.d.ts +3 -2
  124. package/.dist/components/Tabs.js +42 -3
  125. package/.dist/components/Tabs.js.map +1 -1
  126. package/.dist/components/Text.d.ts +1 -1
  127. package/.dist/components/Text.js +8 -1
  128. package/.dist/components/Text.js.map +1 -1
  129. package/.dist/components/Toggle.d.ts +26 -0
  130. package/.dist/components/Toggle.js +151 -0
  131. package/.dist/components/Toggle.js.map +1 -0
  132. package/.dist/components/ToggleGroup.d.ts +1 -1
  133. package/.dist/components/ToggleGroup.js +22 -4
  134. package/.dist/components/ToggleGroup.js.map +1 -1
  135. package/.dist/components/ZStack.js +3 -1
  136. package/.dist/components/ZStack.js.map +1 -1
  137. package/.dist/components/charts/BarChart.js +2 -2
  138. package/.dist/components/charts/BarChart.js.map +1 -1
  139. package/.dist/components/index.d.ts +6 -2
  140. package/.dist/components/index.js +6 -2
  141. package/.dist/components/index.js.map +1 -1
  142. package/.dist/components/utility/TrackMouse.d.ts +3 -5
  143. package/.dist/components/utility/TrackMouse.js +1 -2
  144. package/.dist/components/utility/TrackMouse.js.map +1 -1
  145. package/.dist/events/key.d.ts +10 -6
  146. package/.dist/events/key.js +29 -6
  147. package/.dist/events/key.js.map +1 -1
  148. package/.dist/events/mouse.d.ts +1 -1
  149. package/.dist/events/translate.js +6 -6
  150. package/.dist/events/translate.js.map +1 -1
  151. package/.dist/iTerm2.d.ts +1 -1
  152. package/.dist/iTerm2.js +1 -1
  153. package/.dist/iTerm2.js.map +1 -1
  154. package/.dist/index.d.ts +6 -5
  155. package/.dist/index.js +6 -5
  156. package/.dist/index.js.map +1 -1
  157. package/.dist/log.d.ts +7 -2
  158. package/.dist/log.js +10 -3
  159. package/.dist/log.js.map +1 -1
  160. package/.dist/managers/FocusManager.d.ts +5 -2
  161. package/.dist/managers/FocusManager.js +58 -46
  162. package/.dist/managers/FocusManager.js.map +1 -1
  163. package/.dist/managers/MouseManager.js +1 -1
  164. package/.dist/managers/MouseManager.js.map +1 -1
  165. package/.dist/managers/TickManager.d.ts +1 -1
  166. package/.dist/managers/TickManager.js +4 -4
  167. package/.dist/managers/TickManager.js.map +1 -1
  168. package/.dist/renderToAnsi.d.ts +0 -7
  169. package/.dist/renderToAnsi.js +7 -36
  170. package/.dist/renderToAnsi.js.map +1 -1
  171. package/.dist/terminal.d.ts +1 -0
  172. package/.dist/types.d.ts +32 -0
  173. package/.dist/types.js.map +1 -1
  174. package/package.json +8 -4
  175. package/.dist/Theme.js.map +0 -1
  176. package/.dist/inspect.d.ts +0 -14
  177. package/.dist/inspect.js +0 -172
  178. package/.dist/inspect.js.map +0 -1
  179. package/.dist/testing.js +0 -190
  180. package/.dist/testing.js.map +0 -1
@@ -1,29 +1,5 @@
1
- import { Buffer } from './Buffer.js';
2
- import { Viewport } from './Viewport.js';
3
- import { Size } from './geometry.js';
4
- import { StringTerminal } from './StringTerminal.js';
5
- /**
6
- * A minimal Screen-like object for headless rendering.
7
- * Viewport calls various registration methods on Screen during render —
8
- * these are all no-ops for screenshot/offscreen purposes.
9
- */
10
- export function createHeadlessScreen() {
11
- return {
12
- render() { },
13
- needsRender() { },
14
- requestModal() {
15
- return false;
16
- },
17
- registerHotKey(_view, _key) { },
18
- registerKeyboard(_view) { },
19
- registerFocus(_view, _isDefault) {
20
- return false;
21
- },
22
- registerMouse(_view, _offset, _point, _events) { },
23
- registerTick(_view) { },
24
- checkMouse(_view, _x, _y) { },
25
- };
26
- }
1
+ import { Screen } from './Screen.js';
2
+ import { HeadlessProgram } from './HeadlessProgram.js';
27
3
  /**
28
4
  * Render a View to an ANSI string at the given size, without needing a real terminal.
29
5
  *
@@ -32,15 +8,10 @@ export function createHeadlessScreen() {
32
8
  * @returns A string containing ANSI escape codes representing the rendered output
33
9
  */
34
10
  export function renderToAnsi(view, size) {
35
- const termSize = new Size(size.width, size.height);
36
- const buffer = new Buffer();
37
- buffer.resize(termSize);
38
- const screen = createHeadlessScreen();
39
- const renderSize = view.naturalSize(termSize).max(termSize);
40
- const viewport = new Viewport(screen, buffer, renderSize);
41
- view.render(viewport);
42
- const terminal = new StringTerminal({ cols: size.width, rows: size.height });
43
- buffer.flush(terminal);
44
- return terminal.output;
11
+ const program = new HeadlessProgram({ cols: size.width, rows: size.height });
12
+ const screen = new Screen(program, view);
13
+ screen.start();
14
+ screen.stop();
15
+ return program.terminal.output;
45
16
  }
46
17
  //# sourceMappingURL=renderToAnsi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderToAnsi.js","sourceRoot":"","sources":["../lib/renderToAnsi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AACtC,OAAO,EAAC,IAAI,EAAC,MAAM,eAAe,CAAA;AAClC,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAA;AAKlD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,MAAM,KAAI,CAAC;QACX,WAAW,KAAI,CAAC;QAChB,YAAY;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QACD,cAAc,CAAC,KAAW,EAAE,IAAe,IAAG,CAAC;QAC/C,gBAAgB,CAAC,KAAW,IAAG,CAAC;QAChC,aAAa,CAAC,KAAW,EAAE,UAAmB;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QACD,aAAa,CACX,KAAW,EACX,OAAY,EACZ,MAAW,EACX,OAAiC,IAChC,CAAC;QACJ,YAAY,CAAC,KAAW,IAAG,CAAC;QAC5B,UAAU,CAAC,KAAW,EAAE,EAAU,EAAE,EAAU,IAAG,CAAC;KAC9B,CAAA;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,IAAqC;IAErC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEvB,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAErB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAA;IAC1E,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEtB,OAAO,QAAQ,CAAC,MAAM,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"renderToAnsi.js","sourceRoot":"","sources":["../lib/renderToAnsi.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,IAAqC;IAErC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,KAAK,EAAE,CAAA;IACd,MAAM,CAAC,IAAI,EAAE,CAAA;IAEb,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA;AAChC,CAAC"}
@@ -3,6 +3,7 @@ export interface Terminal {
3
3
  writeChar(char: string, x: number, y: number, style: Style): void;
4
4
  restyleChar(x: number, y: number, style: Style): void;
5
5
  writeMeta(str: string): void;
6
+ paintRect(style: Style, minX: number, minY: number, maxX: number, maxY: number): void;
6
7
  }
7
8
  export interface SGRTerminal {
8
9
  cols: number;
package/.dist/types.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { SGRTerminal } from './terminal.js';
2
+ import type { SystemEvent } from './events/index.js';
1
3
  export type Alignment = 'left' | 'right' | 'center';
2
4
  export declare const FontFamilies: readonly ["default", "serif-bold", "serif-italic", "serif-italic-bold", "sans", "sans-bold", "sans-italic", "sans-italic-bold", "monospace", "double-struck", "fraktur", "fraktur-bold", "script", "script-bold"];
3
5
  export type FontFamily = (typeof FontFamilies)[number];
@@ -10,3 +12,33 @@ export interface Edges {
10
12
  bottom: number;
11
13
  left: number;
12
14
  }
15
+ export interface LegendItem {
16
+ key: string | string[];
17
+ label: string;
18
+ }
19
+ /**
20
+ * The abstract interface that Screen depends on. Any terminal backend
21
+ * (real terminal, test harness, web adapter, etc.) can implement this.
22
+ */
23
+ export interface Program extends SGRTerminal {
24
+ /**
25
+ * Prepare the terminal for fullscreen app mode (e.g. enter alt buffer,
26
+ * enable mouse, hide cursor). Called once before the first render.
27
+ */
28
+ setup(): void;
29
+ /**
30
+ * Restore the terminal to its original state (e.g. exit alt buffer,
31
+ * show cursor). Called when the screen stops.
32
+ */
33
+ teardown(): void;
34
+ /**
35
+ * Subscribe to system events (key, mouse, paste, focus/blur).
36
+ * Returns an unsubscribe function.
37
+ */
38
+ onEvents(listener: (event: SystemEvent) => void): () => void;
39
+ /**
40
+ * Subscribe to terminal resize events.
41
+ * Returns an unsubscribe function.
42
+ */
43
+ onResize(listener: () => void): () => void;
44
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,MAAM;IACN,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,SAAS;IACT,cAAc;IACd,QAAQ;IACR,aAAa;CACL,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,MAAM;IACN,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,SAAS;IACT,cAAc;IACd,QAAQ;IACR,aAAa;CACL,CAAA"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contributors": [
6
6
  "Shawn Chen <meishangchen@gmail.com>"
7
7
  ],
8
- "version": "1.10.8",
8
+ "version": "1.11.9",
9
9
  "license": "MIT",
10
10
  "type": "module",
11
11
  "preferGlobal": false,
@@ -38,16 +38,20 @@
38
38
  "node": ">= 18.12.0"
39
39
  },
40
40
  "dependencies": {
41
- "@teaui/term": "1.10.8"
41
+ "@teaui/inspect": "1.11.9",
42
+ "@teaui/term": "1.11.9"
42
43
  },
43
44
  "devDependencies": {
44
- "@teaui/shared": "1.10.8"
45
+ "@teaui/shared": "1.11.9"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
45
49
  },
46
50
  "scripts": {
47
- "gittag": "git tag $(node -e 'process.stdout.write(require(\"./package\").version)')",
48
51
  "clean": "rm -rf .dist/",
49
52
  "_build": "pnpm clean && pnpm tsc",
50
53
  "build": "node ../../shared/check.js",
54
+ "typecheck": "tsc -p tsconfig.check.json --noEmit",
51
55
  "test": "vitest run",
52
56
  "test:watch": "vitest"
53
57
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Theme.js","sourceRoot":"","sources":["../lib/Theme.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export declare function isDebugging(enabled?: boolean): boolean;
2
- export declare function inspect(value: any, wrap?: boolean, recursionDepth?: number, visited?: Set<unknown>): string;
3
- interface Colorize {
4
- format(input: any): string;
5
- number(input: number): string;
6
- symbol(input: symbol): string;
7
- string(input: string, doQuote?: boolean): string;
8
- key(input: string | symbol | number): string;
9
- boolean(input: boolean): string;
10
- undefined(): string;
11
- null(): string;
12
- }
13
- export declare const colorize: Colorize;
14
- export {};
package/.dist/inspect.js DELETED
@@ -1,172 +0,0 @@
1
- import { bold, cyan, gray, green, red, yellow } from './ansi.js';
2
- let _debug = false;
3
- export function isDebugging(enabled) {
4
- if (enabled !== undefined) {
5
- _debug = enabled;
6
- }
7
- return _debug;
8
- }
9
- function isEmpty(object) {
10
- for (const key in object) {
11
- return false;
12
- }
13
- return true;
14
- }
15
- const MAX = 200;
16
- export function inspect(value, wrap = true, recursionDepth = 0, visited = new Set()) {
17
- if (value && (typeof value === 'object' || typeof value === 'function')) {
18
- if (visited.has(value)) {
19
- return red('[Circular]');
20
- }
21
- else {
22
- visited = new Set(visited);
23
- visited.add(value);
24
- }
25
- }
26
- if (recursionDepth >= 10) {
27
- return red('...');
28
- }
29
- if (value instanceof Set) {
30
- return `new Set(${inspect(Array.from(value.values()), wrap, recursionDepth, visited)})`;
31
- }
32
- if (value instanceof Map) {
33
- return `new Map(${inspect(Array.from(value.entries()), wrap, recursionDepth, visited)})`;
34
- }
35
- const tab = ' '.repeat(recursionDepth);
36
- const innerTab = tab + ' ';
37
- if (Array.isArray(value)) {
38
- if (value.length === 0) {
39
- return '[]';
40
- }
41
- const values = value.map(val => inspect(val, wrap, recursionDepth + 1, visited));
42
- const count = values.reduce((len, val) => len + val.length, 0);
43
- const newline = wrap && count > MAX;
44
- let inner;
45
- if (newline) {
46
- const [prev, line] = values.reduce(([prev, line], value) => {
47
- if (line.length + value.length > MAX) {
48
- return [(prev ? prev + `,\n${innerTab}` : '') + line, value];
49
- }
50
- return [prev, line ? line + ', ' + value : value];
51
- }, ['', '']);
52
- inner = (prev ? prev + `,\n${innerTab}` : '') + line;
53
- }
54
- else {
55
- inner = values.join(', ');
56
- }
57
- return newline ? `[\n${innerTab}${inner}\n${tab}]` : `[ ${inner} ]`;
58
- }
59
- else if (typeof value === 'string') {
60
- return colorize.string(value, recursionDepth > 0);
61
- }
62
- else if (typeof value === 'symbol') {
63
- return colorize.symbol(value);
64
- }
65
- else if (typeof value === 'number' ||
66
- typeof value === 'boolean' ||
67
- value === undefined ||
68
- value === null) {
69
- return colorize.format(value);
70
- }
71
- else if (typeof value === 'function') {
72
- return `function${value.name ? ` ${value.name}` : ''}() {${value}}`;
73
- }
74
- else if (value instanceof Date) {
75
- return `Date(${colorize.string(value.toISOString())})`;
76
- }
77
- else if (value instanceof Object &&
78
- value.constructor !== Object &&
79
- isEmpty(value)) {
80
- return `${value.constructor.name}({})`;
81
- }
82
- const name = value.constructor === undefined
83
- ? ''
84
- : value.constructor.name === 'Object'
85
- ? ''
86
- : value.constructor.name.concat(' ');
87
- const keys = Object.keys(value);
88
- if (keys.length === 0) {
89
- return '{}';
90
- }
91
- // weird ReactFiberNode one-off
92
- if ('$$typeof' in value && '_owner' in value) {
93
- const { _owner: _, ...remainder } = value;
94
- return inspect(remainder, wrap, recursionDepth, visited);
95
- }
96
- const values = keys.map(key => `${colorize.key(key)}: ${inspect(value[key], wrap, recursionDepth + 1, visited)}`);
97
- const count = values.reduce((len, val) => len + val.length, 0);
98
- const newline = wrap && count > MAX;
99
- let inner;
100
- if (newline) {
101
- const [prev, line] = values.reduce(([prev, line], value) => {
102
- if (line.length + value.length > MAX) {
103
- return [(prev ? prev + `,\n${innerTab}` : '') + line, value];
104
- }
105
- return [prev, line ? line + ', ' + value : line];
106
- }, ['', '']);
107
- inner = (prev ? prev + `,\n${innerTab}` : '') + line;
108
- inner = values.join(`,\n${innerTab}`);
109
- }
110
- else {
111
- inner = values.join(', ');
112
- }
113
- return newline
114
- ? `${name}{\n${innerTab}${inner}\n${tab}}`
115
- : `${name}{ ${inner} }`;
116
- }
117
- export const colorize = {
118
- format: function (input) {
119
- switch (typeof input) {
120
- case 'string':
121
- return colorize.string(input);
122
- case 'symbol':
123
- return colorize.symbol(input);
124
- case 'number':
125
- return colorize.number(input);
126
- case 'undefined':
127
- return colorize.undefined();
128
- case 'object':
129
- return colorize['null']();
130
- default:
131
- return String(input);
132
- }
133
- },
134
- number: function (input) {
135
- return yellow(''.concat(String(input)));
136
- },
137
- symbol: function (input) {
138
- return red(''.concat(String(input)));
139
- },
140
- string: function (input, doQuote = true) {
141
- let quote;
142
- if (doQuote) {
143
- if (input.includes("'")) {
144
- quote = '"';
145
- input = input.replaceAll('"', '\\"');
146
- }
147
- else {
148
- quote = "'";
149
- input = input.replaceAll("'", "\\'");
150
- }
151
- }
152
- else {
153
- quote = '';
154
- }
155
- input = input.replaceAll(/\n/g, '⤦');
156
- input = input.replaceAll(/\x1b/g, '␛');
157
- return green(quote.concat(input, quote));
158
- },
159
- key: function (input) {
160
- return cyan(String(input));
161
- },
162
- boolean: function (input) {
163
- return yellow(''.concat(String(input)));
164
- },
165
- undefined: function () {
166
- return gray('undefined');
167
- },
168
- null: function () {
169
- return bold('null');
170
- },
171
- };
172
- //# sourceMappingURL=inspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../lib/inspect.ts"],"names":[],"mappings":"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"}
package/.dist/testing.js DELETED
@@ -1,190 +0,0 @@
1
- import { Buffer } from './Buffer.js';
2
- import { Viewport } from './Viewport.js';
3
- import { Size } from './geometry.js';
4
- import { TestTerminal } from './TestTerminal.js';
5
- import { FocusManager } from './managers/FocusManager.js';
6
- import { MouseManager } from './managers/MouseManager.js';
7
- import { ModalManager } from './managers/ModalManager.js';
8
- import { TickManager } from './managers/TickManager.js';
9
- import { UnboundSystem } from './System.js';
10
- import { Space } from './components/Space.js';
11
- class TestScreen {
12
- options;
13
- #view;
14
- #buffer;
15
- #terminal;
16
- #size;
17
- #focus;
18
- #focusManager;
19
- #mouseManager;
20
- #modalManager;
21
- #tickManager;
22
- #screenProxy = null;
23
- constructor(view, options) {
24
- this.options = options;
25
- this.#view = view;
26
- this.#focus = options.isFocused !== false;
27
- this.#size = new Size(options.width, options.height);
28
- this.#buffer = new Buffer();
29
- this.#terminal = new TestTerminal({
30
- cols: options.width,
31
- rows: options.height,
32
- });
33
- this.#focusManager = new FocusManager();
34
- this.#mouseManager = new MouseManager();
35
- this.#modalManager = new ModalManager();
36
- this.#tickManager = new TickManager(() => this.render());
37
- // Wire the view to this screen
38
- view.moveToScreen(this.asScreen());
39
- this.render();
40
- }
41
- get terminal() {
42
- return this.#terminal;
43
- }
44
- get view() {
45
- return this.#view;
46
- }
47
- /**
48
- * Advance time by `dt` milliseconds, triggering any registered tick
49
- * animations and re-rendering.
50
- */
51
- tick(dt) {
52
- this.#tickManager.triggerTick(dt);
53
- this.render();
54
- }
55
- asScreen() {
56
- // Cache the screen proxy so moveToScreen identity checks work
57
- if (!this.#screenProxy) {
58
- this.#screenProxy = {
59
- rootView: this.#view,
60
- preRender: (view) => {
61
- this.#modalManager.reset();
62
- this.#mouseManager.reset();
63
- this.#focusManager.reset(view === this.#view);
64
- },
65
- requestModal: (modal, rect) => {
66
- return this.#modalManager.requestModal(modal, rect);
67
- },
68
- registerHotKey: (view, key) => {
69
- this.#focusManager.registerHotKey(view, key);
70
- },
71
- registerKeyboard: (view) => {
72
- this.#focusManager.registerKeyboard(view);
73
- },
74
- registerFocus: (view, isDefault) => {
75
- return this.#focusManager.registerFocus(view, isDefault);
76
- },
77
- registerMouse: (view, offset, point, events) => {
78
- this.#mouseManager.registerMouse(view, offset, point, events);
79
- },
80
- registerTick: (view) => {
81
- this.#tickManager.registerTick(view);
82
- },
83
- checkMouse: (view, x, y) => {
84
- this.#mouseManager.checkMouse(view, x, y);
85
- },
86
- needsRender: () => {
87
- // In test mode, renders are explicit — ignore async render requests
88
- },
89
- };
90
- }
91
- return this.#screenProxy;
92
- }
93
- render() {
94
- this.#buffer.resize(this.#size);
95
- this.#modalManager.reset();
96
- this.#focusManager.reset(true);
97
- this.#mouseManager.reset();
98
- if (!this.#focus) {
99
- this.#focusManager.unfocus();
100
- this.#focusManager.requestFocus(new Space());
101
- }
102
- const renderSize = this.#view.naturalSize(this.#size).min(this.#size);
103
- const viewport = new Viewport(this.asScreen(), this.#buffer, renderSize);
104
- this.#view.render(viewport);
105
- // Modals need the full screen size to position overlays (e.g. dropdowns),
106
- // matching Screen.render() which uses naturalSize.max(screenSize).
107
- const modalViewport = new Viewport(this.asScreen(), this.#buffer, this.#size);
108
- const rerenderView = this.#modalManager.renderModals(this.asScreen(), modalViewport);
109
- const focusNeedsRender = this.#focusManager.commit();
110
- if (focusNeedsRender) {
111
- // Match Screen.render(): re-render with the same viewport, no
112
- // mouse manager reset (so modal button registrations are preserved).
113
- rerenderView.render(modalViewport);
114
- this.#focusManager.commit();
115
- }
116
- this.#tickManager.endRender();
117
- this.#terminal.reset();
118
- this.#buffer.invalidate();
119
- this.#buffer.flush(this.#terminal);
120
- }
121
- sendKey(key, mods = {}) {
122
- const ctrl = mods.ctrl ?? false;
123
- const alt = mods.alt ?? false;
124
- const meta = mods.meta ?? false;
125
- const shift = mods.shift ?? false;
126
- let full = '';
127
- if (ctrl)
128
- full += 'C-';
129
- if (alt)
130
- full += 'A-';
131
- if (meta)
132
- full += 'M-';
133
- if (shift)
134
- full += 'S-';
135
- full += key;
136
- const char = key === 'space' ? ' ' : key.length === 1 ? key : '';
137
- const event = {
138
- type: 'key',
139
- name: key,
140
- char,
141
- full: full,
142
- ctrl,
143
- alt,
144
- meta,
145
- shift,
146
- };
147
- this.#focusManager.trigger(event);
148
- this.render();
149
- }
150
- sendMouse(name, pos, mods = {}) {
151
- const button = name.startsWith('mouse.wheel')
152
- ? 'wheel'
153
- : name === 'mouse.move.in'
154
- ? 'unknown'
155
- : 'left';
156
- const event = {
157
- type: 'mouse',
158
- name,
159
- x: pos.x,
160
- y: pos.y,
161
- ctrl: mods.ctrl ?? false,
162
- alt: mods.alt ?? false,
163
- meta: mods.meta ?? false,
164
- shift: mods.shift ?? false,
165
- button,
166
- };
167
- const system = new UnboundSystem(this.#focusManager);
168
- this.#mouseManager.trigger(event, system);
169
- this.render();
170
- }
171
- sendPaste(text) {
172
- this.#focusManager.triggerPaste(text);
173
- this.render();
174
- }
175
- }
176
- /**
177
- * Render a component headlessly and return a test harness for interaction testing.
178
- *
179
- * @example
180
- * ```ts
181
- * const t = testRender(new Input({value: 'hello'}), {width: 20, height: 1})
182
- * expect(t.terminal.textContent()).toContain('hello')
183
- * t.sendKey('!') // type a character
184
- * expect(t.terminal.textContent()).toContain('hello!')
185
- * ```
186
- */
187
- export function testRender(view, size) {
188
- return new TestScreen(view, size);
189
- }
190
- //# sourceMappingURL=testing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../lib/testing.ts"],"names":[],"mappings":"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"}