zard-cli 1.0.0-beta.84 → 1.1.0-alpha.0

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 (207) hide show
  1. package/README.md +60 -60
  2. package/commands/add/component-installer.d.ts +2 -0
  3. package/commands/add/component-installer.d.ts.map +1 -1
  4. package/commands/add/component-installer.js +9 -4
  5. package/commands/add/component-installer.js.map +1 -1
  6. package/commands/add/component-selector.d.ts +6 -0
  7. package/commands/add/component-selector.d.ts.map +1 -1
  8. package/commands/add/component-selector.js +9 -27
  9. package/commands/add/component-selector.js.map +1 -1
  10. package/commands/add/dark-mode-setup.d.ts.map +1 -1
  11. package/commands/add/dark-mode-setup.js +2 -11
  12. package/commands/add/dark-mode-setup.js.map +1 -1
  13. package/commands/add/index.d.ts.map +1 -1
  14. package/commands/add/index.js +106 -86
  15. package/commands/add/index.js.map +1 -1
  16. package/commands/add/wizard.d.ts +31 -0
  17. package/commands/add/wizard.d.ts.map +1 -0
  18. package/commands/add/wizard.js +289 -0
  19. package/commands/add/wizard.js.map +1 -0
  20. package/commands/init/config-prompter.d.ts +47 -3
  21. package/commands/init/config-prompter.d.ts.map +1 -1
  22. package/commands/init/config-prompter.js +76 -74
  23. package/commands/init/config-prompter.js.map +1 -1
  24. package/commands/init/dependencies.d.ts +1 -8
  25. package/commands/init/dependencies.d.ts.map +1 -1
  26. package/commands/init/dependencies.js +35 -17
  27. package/commands/init/dependencies.js.map +1 -1
  28. package/commands/init/index.d.ts.map +1 -1
  29. package/commands/init/index.js +129 -81
  30. package/commands/init/index.js.map +1 -1
  31. package/commands/init/project-kind.d.ts +82 -0
  32. package/commands/init/project-kind.d.ts.map +1 -0
  33. package/commands/init/project-kind.js +166 -0
  34. package/commands/init/project-kind.js.map +1 -0
  35. package/commands/init/steps.d.ts +16 -0
  36. package/commands/init/steps.d.ts.map +1 -0
  37. package/commands/init/steps.js +151 -0
  38. package/commands/init/steps.js.map +1 -0
  39. package/commands/init/tailwind-setup.d.ts +9 -2
  40. package/commands/init/tailwind-setup.d.ts.map +1 -1
  41. package/commands/init/tailwind-setup.js +33 -12
  42. package/commands/init/tailwind-setup.js.map +1 -1
  43. package/commands/init/tsconfig-updater.d.ts +8 -1
  44. package/commands/init/tsconfig-updater.d.ts.map +1 -1
  45. package/commands/init/tsconfig-updater.js +30 -11
  46. package/commands/init/tsconfig-updater.js.map +1 -1
  47. package/commands/init/update-angular-config.d.ts.map +1 -1
  48. package/commands/init/update-angular-config.js +28 -50
  49. package/commands/init/update-angular-config.js.map +1 -1
  50. package/commands/init/vite-setup.d.ts +10 -0
  51. package/commands/init/vite-setup.d.ts.map +1 -0
  52. package/commands/init/vite-setup.js +60 -0
  53. package/commands/init/vite-setup.js.map +1 -0
  54. package/commands/init/wizard.d.ts +30 -0
  55. package/commands/init/wizard.d.ts.map +1 -0
  56. package/commands/init/wizard.js +560 -0
  57. package/commands/init/wizard.js.map +1 -0
  58. package/core/registry/registry-data.d.ts.map +1 -1
  59. package/core/registry/registry-data.js +8 -45
  60. package/core/registry/registry-data.js.map +1 -1
  61. package/index.js +5 -3
  62. package/index.js.map +1 -1
  63. package/package.json +58 -61
  64. package/ui/blocks.d.ts +70 -0
  65. package/ui/blocks.d.ts.map +1 -0
  66. package/ui/blocks.js +116 -0
  67. package/ui/blocks.js.map +1 -0
  68. package/ui/brand.d.ts +14 -0
  69. package/ui/brand.d.ts.map +1 -0
  70. package/ui/brand.js +35 -0
  71. package/ui/brand.js.map +1 -0
  72. package/ui/engine/animation/index.d.ts +39 -0
  73. package/ui/engine/animation/index.d.ts.map +1 -0
  74. package/ui/engine/animation/index.js +103 -0
  75. package/ui/engine/animation/index.js.map +1 -0
  76. package/ui/engine/ansi/index.d.ts +52 -0
  77. package/ui/engine/ansi/index.d.ts.map +1 -0
  78. package/ui/engine/ansi/index.js +117 -0
  79. package/ui/engine/ansi/index.js.map +1 -0
  80. package/ui/engine/components/index.d.ts +211 -0
  81. package/ui/engine/components/index.d.ts.map +1 -0
  82. package/ui/engine/components/index.js +109 -0
  83. package/ui/engine/components/index.js.map +1 -0
  84. package/ui/engine/cursor/index.d.ts +17 -0
  85. package/ui/engine/cursor/index.d.ts.map +1 -0
  86. package/ui/engine/cursor/index.js +41 -0
  87. package/ui/engine/cursor/index.js.map +1 -0
  88. package/ui/engine/diff/index.d.ts +27 -0
  89. package/ui/engine/diff/index.d.ts.map +1 -0
  90. package/ui/engine/diff/index.js +57 -0
  91. package/ui/engine/diff/index.js.map +1 -0
  92. package/ui/engine/events/index.d.ts +24 -0
  93. package/ui/engine/events/index.d.ts.map +1 -0
  94. package/ui/engine/events/index.js +60 -0
  95. package/ui/engine/events/index.js.map +1 -0
  96. package/ui/engine/focus/index.d.ts +25 -0
  97. package/ui/engine/focus/index.d.ts.map +1 -0
  98. package/ui/engine/focus/index.js +77 -0
  99. package/ui/engine/focus/index.js.map +1 -0
  100. package/ui/engine/frame/index.d.ts +48 -0
  101. package/ui/engine/frame/index.d.ts.map +1 -0
  102. package/ui/engine/frame/index.js +0 -0
  103. package/ui/engine/frame/index.js.map +1 -0
  104. package/ui/engine/index.d.ts +28 -0
  105. package/ui/engine/index.d.ts.map +1 -0
  106. package/ui/engine/index.js +28 -0
  107. package/ui/engine/index.js.map +1 -0
  108. package/ui/engine/input/index.d.ts +36 -0
  109. package/ui/engine/input/index.d.ts.map +1 -0
  110. package/ui/engine/input/index.js +224 -0
  111. package/ui/engine/input/index.js.map +1 -0
  112. package/ui/engine/layout/index.d.ts +42 -0
  113. package/ui/engine/layout/index.d.ts.map +1 -0
  114. package/ui/engine/layout/index.js +241 -0
  115. package/ui/engine/layout/index.js.map +1 -0
  116. package/ui/engine/renderer/index.d.ts +43 -0
  117. package/ui/engine/renderer/index.d.ts.map +1 -0
  118. package/ui/engine/renderer/index.js +619 -0
  119. package/ui/engine/renderer/index.js.map +1 -0
  120. package/ui/engine/scheduler/index.d.ts +22 -0
  121. package/ui/engine/scheduler/index.d.ts.map +1 -0
  122. package/ui/engine/scheduler/index.js +77 -0
  123. package/ui/engine/scheduler/index.js.map +1 -0
  124. package/ui/engine/screen/index.d.ts +39 -0
  125. package/ui/engine/screen/index.d.ts.map +1 -0
  126. package/ui/engine/screen/index.js +255 -0
  127. package/ui/engine/screen/index.js.map +1 -0
  128. package/ui/engine/terminal/index.d.ts +38 -0
  129. package/ui/engine/terminal/index.d.ts.map +1 -0
  130. package/ui/engine/terminal/index.js +104 -0
  131. package/ui/engine/terminal/index.js.map +1 -0
  132. package/ui/engine/testing/index.d.ts +27 -0
  133. package/ui/engine/testing/index.d.ts.map +1 -0
  134. package/ui/engine/testing/index.js +63 -0
  135. package/ui/engine/testing/index.js.map +1 -0
  136. package/ui/engine/theme/index.d.ts +27 -0
  137. package/ui/engine/theme/index.d.ts.map +1 -0
  138. package/ui/engine/theme/index.js +129 -0
  139. package/ui/engine/theme/index.js.map +1 -0
  140. package/ui/engine/utils/index.d.ts +12 -0
  141. package/ui/engine/utils/index.d.ts.map +1 -0
  142. package/ui/engine/utils/index.js +143 -0
  143. package/ui/engine/utils/index.js.map +1 -0
  144. package/ui/gate.d.ts +19 -0
  145. package/ui/gate.d.ts.map +1 -0
  146. package/ui/gate.js +36 -0
  147. package/ui/gate.js.map +1 -0
  148. package/ui/index.d.ts +18 -0
  149. package/ui/index.d.ts.map +1 -0
  150. package/ui/index.js +18 -0
  151. package/ui/index.js.map +1 -0
  152. package/ui/log-sink.d.ts +24 -0
  153. package/ui/log-sink.d.ts.map +1 -0
  154. package/ui/log-sink.js +35 -0
  155. package/ui/log-sink.js.map +1 -0
  156. package/ui/output.d.ts +14 -0
  157. package/ui/output.d.ts.map +1 -0
  158. package/ui/output.js +28 -0
  159. package/ui/output.js.map +1 -0
  160. package/ui/report.d.ts +30 -0
  161. package/ui/report.d.ts.map +1 -0
  162. package/ui/report.js +45 -0
  163. package/ui/report.js.map +1 -0
  164. package/ui/runner.d.ts +57 -0
  165. package/ui/runner.d.ts.map +1 -0
  166. package/ui/runner.js +119 -0
  167. package/ui/runner.js.map +1 -0
  168. package/ui/style.d.ts +24 -0
  169. package/ui/style.d.ts.map +1 -0
  170. package/ui/style.js +44 -0
  171. package/ui/style.js.map +1 -0
  172. package/ui/testing/fake-tty.d.ts +26 -0
  173. package/ui/testing/fake-tty.d.ts.map +1 -0
  174. package/ui/testing/fake-tty.js +61 -0
  175. package/ui/testing/fake-tty.js.map +1 -0
  176. package/ui/text-input.d.ts +30 -0
  177. package/ui/text-input.d.ts.map +1 -0
  178. package/ui/text-input.js +87 -0
  179. package/ui/text-input.js.map +1 -0
  180. package/ui/theme.d.ts +10 -0
  181. package/ui/theme.d.ts.map +1 -0
  182. package/ui/theme.js +20 -0
  183. package/ui/theme.js.map +1 -0
  184. package/utils/config.d.ts +22 -0
  185. package/utils/config.d.ts.map +1 -1
  186. package/utils/config.js +26 -1
  187. package/utils/config.js.map +1 -1
  188. package/utils/get-project-info.d.ts +29 -0
  189. package/utils/get-project-info.d.ts.map +1 -1
  190. package/utils/get-project-info.js +176 -1
  191. package/utils/get-project-info.js.map +1 -1
  192. package/utils/logger.d.ts +13 -1
  193. package/utils/logger.d.ts.map +1 -1
  194. package/utils/logger.js +95 -15
  195. package/utils/logger.js.map +1 -1
  196. package/utils/package-manager.d.ts +42 -1
  197. package/utils/package-manager.d.ts.map +1 -1
  198. package/utils/package-manager.js +204 -11
  199. package/utils/package-manager.js.map +1 -1
  200. package/utils/registry.d.ts +12 -2
  201. package/utils/registry.d.ts.map +1 -1
  202. package/utils/registry.js +21 -6
  203. package/utils/registry.js.map +1 -1
  204. package/utils/source-file.d.ts +40 -0
  205. package/utils/source-file.d.ts.map +1 -0
  206. package/utils/source-file.js +104 -0
  207. package/utils/source-file.js.map +1 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * cursor — geração de sequências de posicionamento/visibilidade do cursor.
3
+ * Funções puras (retornam bytes); quem escreve é o `terminal`.
4
+ * (Fatia vertical / PoC: implementação real.)
5
+ */
6
+ import { csi } from '../ansi/index.js';
7
+ export function createCursor() {
8
+ return {
9
+ moveTo(x, y) {
10
+ return csi(`${y + 1};${x + 1}H`);
11
+ },
12
+ moveBy(dx, dy) {
13
+ let out = '';
14
+ if (dy < 0)
15
+ out += csi(`${-dy}A`);
16
+ else if (dy > 0)
17
+ out += csi(`${dy}B`);
18
+ if (dx > 0)
19
+ out += csi(`${dx}C`);
20
+ else if (dx < 0)
21
+ out += csi(`${-dx}D`);
22
+ return out;
23
+ },
24
+ hide() {
25
+ return csi('?25l');
26
+ },
27
+ show() {
28
+ return csi('?25h');
29
+ },
30
+ save() {
31
+ return csi('s');
32
+ },
33
+ restore() {
34
+ return csi('u');
35
+ },
36
+ toColumnStart() {
37
+ return '\r';
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAavC,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,MAAM,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,EAAE;YACX,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,EAAE,GAAG,CAAC;gBAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;iBAC7B,IAAI,EAAE,GAAG,CAAC;gBAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,EAAE,GAAG,CAAC;gBAAE,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;iBAC5B,IAAI,EAAE,GAAG,CAAC;gBAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI;YACF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI;YACF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,IAAI;YACF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;YACL,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,aAAa;YACX,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * diff — compara dois Frames e emite o conjunto MÍNIMO de mudanças, como
3
+ * runs (segmentos contíguos) por linha alterada. Função pura (ADR-0001).
4
+ * (Fatia vertical / PoC: implementação real.)
5
+ */
6
+ import type { Cell, Frame, Size } from '../frame/index.js';
7
+ export interface Run {
8
+ readonly x: number;
9
+ readonly cells: readonly Cell[];
10
+ }
11
+ export interface LinePatch {
12
+ readonly y: number;
13
+ readonly runs: readonly Run[];
14
+ }
15
+ export interface Patch {
16
+ readonly size: Size;
17
+ readonly lines: readonly LinePatch[];
18
+ readonly isEmpty: boolean;
19
+ }
20
+ export interface DifferOptions {
21
+ readonly minGap?: number;
22
+ }
23
+ export interface Differ {
24
+ diff(prev: Frame, next: Frame): Patch;
25
+ }
26
+ export declare function createDiffer(options?: DifferOptions): Differ;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/diff/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACjC;AACD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;CAC/B;AACD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACvC;AASD,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA4ChE"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * diff — compara dois Frames e emite o conjunto MÍNIMO de mudanças, como
3
+ * runs (segmentos contíguos) por linha alterada. Função pura (ADR-0001).
4
+ * (Fatia vertical / PoC: implementação real.)
5
+ */
6
+ function styleEquals(a, b) {
7
+ return a.fg === b.fg && a.bg === b.bg && a.attrs === b.attrs;
8
+ }
9
+ function cellEquals(a, b) {
10
+ return a.char === b.char && a.width === b.width && styleEquals(a.style, b.style);
11
+ }
12
+ export function createDiffer(options = {}) {
13
+ const minGap = Math.max(1, options.minGap ?? 3);
14
+ return {
15
+ diff(prev, next) {
16
+ const { cols, rows } = next.size;
17
+ const lines = [];
18
+ const sameSize = prev.size.cols === cols && prev.size.rows === rows;
19
+ for (let y = 0; y < rows; y++) {
20
+ // Skip O(1) por hash de linha (o retido tem hash em cache).
21
+ if (sameSize && prev.rowHash(y) === next.rowHash(y))
22
+ continue;
23
+ const a = prev.rowSlice(y);
24
+ const b = next.rowSlice(y);
25
+ const runs = [];
26
+ let x = 0;
27
+ while (x < cols) {
28
+ // avança sobre células iguais
29
+ while (x < cols && cellEquals(a[x], b[x]))
30
+ x++;
31
+ if (x >= cols)
32
+ break;
33
+ const start = x;
34
+ while (x < cols) {
35
+ if (cellEquals(a[x], b[x])) {
36
+ // coalescing: só encerra o run se o trecho igual for >= minGap
37
+ let k = x;
38
+ while (k < cols && cellEquals(a[k], b[k]))
39
+ k++;
40
+ if (k >= cols || k - x >= minGap)
41
+ break;
42
+ x = k; // funde o trecho igual curto dentro do run
43
+ }
44
+ else {
45
+ x++;
46
+ }
47
+ }
48
+ runs.push({ x: start, cells: b.slice(start, x) });
49
+ }
50
+ if (runs.length)
51
+ lines.push({ y, runs });
52
+ }
53
+ return { size: next.size, lines, isEmpty: lines.length === 0 };
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/diff/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * events — primitivas de eventos tipadas. Base de input/focus/scheduler.
3
+ * Sem dependências. Sem I/O. (Implementação real.)
4
+ */
5
+ export interface Disposable {
6
+ dispose(): void;
7
+ }
8
+ export interface EventEmitter<T> {
9
+ on(listener: (payload: T) => void): Disposable;
10
+ once(listener: (payload: T) => void): Disposable;
11
+ emit(payload: T): void;
12
+ clear(): void;
13
+ readonly size: number;
14
+ }
15
+ export declare function createEmitter<T>(): EventEmitter<T>;
16
+ export interface Signal<T> {
17
+ get(): T;
18
+ set(value: T): void;
19
+ update(fn: (prev: T) => T): void;
20
+ subscribe(listener: (value: T) => void): Disposable;
21
+ }
22
+ export declare function signal<T>(initial: T): Signal<T>;
23
+ export declare function combine(...disposables: Disposable[]): Disposable;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/events/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,UAAU,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,UAAU,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CA0BlD;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,IAAI,CAAC,CAAC;IACT,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,UAAU,CAAC;CACrD;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAiB/C;AAED,wBAAgB,OAAO,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAMhE"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * events — primitivas de eventos tipadas. Base de input/focus/scheduler.
3
+ * Sem dependências. Sem I/O. (Implementação real.)
4
+ */
5
+ export function createEmitter() {
6
+ const listeners = new Set();
7
+ return {
8
+ on(listener) {
9
+ listeners.add(listener);
10
+ return { dispose: () => listeners.delete(listener) };
11
+ },
12
+ once(listener) {
13
+ const wrap = (payload) => {
14
+ listeners.delete(wrap);
15
+ listener(payload);
16
+ };
17
+ listeners.add(wrap);
18
+ return { dispose: () => listeners.delete(wrap) };
19
+ },
20
+ emit(payload) {
21
+ // itera sobre cópia: listeners podem se remover durante o emit
22
+ for (const l of [...listeners])
23
+ l(payload);
24
+ },
25
+ clear() {
26
+ listeners.clear();
27
+ },
28
+ get size() {
29
+ return listeners.size;
30
+ },
31
+ };
32
+ }
33
+ export function signal(initial) {
34
+ let value = initial;
35
+ const emitter = createEmitter();
36
+ return {
37
+ get: () => value,
38
+ set(next) {
39
+ if (Object.is(next, value))
40
+ return;
41
+ value = next;
42
+ emitter.emit(value);
43
+ },
44
+ update(fn) {
45
+ this.set(fn(value));
46
+ },
47
+ subscribe(listener) {
48
+ return emitter.on(listener);
49
+ },
50
+ };
51
+ }
52
+ export function combine(...disposables) {
53
+ return {
54
+ dispose() {
55
+ for (const d of disposables)
56
+ d.dispose();
57
+ },
58
+ };
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/events/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,OAAO;QACL,EAAE,CAAC,QAAQ;YACT,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,QAAQ;YACX,MAAM,IAAI,GAAG,CAAC,OAAU,EAAQ,EAAE;gBAChC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,OAAO;YACV,+DAA+D;YAC/D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;gBAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK;YACH,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,IAAI;YACN,OAAO,SAAS,CAAC,IAAI,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,MAAM,CAAI,OAAU;IAClC,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,MAAM,OAAO,GAAG,aAAa,EAAK,CAAC;IACnC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,CAAC,IAAI;YACN,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO;YACnC,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,EAAE;YACP,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,OAAO,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAG,WAAyB;IAClD,OAAO;QACL,OAAO;YACL,KAAK,MAAM,CAAC,IAAI,WAAW;gBAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * focus — gerenciamento de foco como ESTADO RETIDO, keyed por identidade
3
+ * estável de componente. Ordem de tabulação e roteamento de teclado. (Real.)
4
+ */
5
+ import { type Disposable } from '../events/index.js';
6
+ import type { KeyEvent } from '../input/index.js';
7
+ export interface Focusable {
8
+ readonly key: string;
9
+ readonly tabIndex: number;
10
+ readonly disabled?: boolean;
11
+ onKey?(e: KeyEvent): boolean;
12
+ }
13
+ export interface FocusManager {
14
+ register(entry: Focusable): Disposable;
15
+ focus(key: string): void;
16
+ focusNext(): void;
17
+ focusPrev(): void;
18
+ blur(): void;
19
+ isFocused(key: string): boolean;
20
+ readonly activeKey: string | undefined;
21
+ onChange(cb: (key: string | undefined) => void): Disposable;
22
+ routeKey(e: KeyEvent): boolean;
23
+ }
24
+ export declare function createFocusManager(): FocusManager;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/focus/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IACvC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,IAAI,IAAI,CAAC;IAClB,SAAS,IAAI,IAAI,CAAC;IAClB,IAAI,IAAI,IAAI,CAAC;IACb,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,UAAU,CAAC;IAC5D,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAoEjD"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * focus — gerenciamento de foco como ESTADO RETIDO, keyed por identidade
3
+ * estável de componente. Ordem de tabulação e roteamento de teclado. (Real.)
4
+ */
5
+ import { createEmitter } from '../events/index.js';
6
+ export function createFocusManager() {
7
+ const entries = [];
8
+ const changed = createEmitter();
9
+ let activeKey;
10
+ const eligible = () => entries.filter(e => !e.disabled && e.tabIndex >= 0).sort((a, b) => a.tabIndex - b.tabIndex);
11
+ const setActive = (key) => {
12
+ if (key === activeKey)
13
+ return;
14
+ activeKey = key;
15
+ changed.emit(key);
16
+ };
17
+ const move = (delta) => {
18
+ const ring = eligible();
19
+ if (ring.length === 0) {
20
+ setActive(undefined);
21
+ return;
22
+ }
23
+ const idx = ring.findIndex(e => e.key === activeKey);
24
+ const next = idx < 0 ? (delta > 0 ? 0 : ring.length - 1) : (idx + delta + ring.length) % ring.length;
25
+ setActive(ring[next].key);
26
+ };
27
+ return {
28
+ register(entry) {
29
+ entries.push(entry);
30
+ if (activeKey === undefined && !entry.disabled && entry.tabIndex >= 0)
31
+ setActive(entry.key);
32
+ return {
33
+ dispose: () => {
34
+ const i = entries.indexOf(entry);
35
+ if (i >= 0)
36
+ entries.splice(i, 1);
37
+ },
38
+ };
39
+ },
40
+ focus(key) {
41
+ if (entries.some(e => e.key === key))
42
+ setActive(key);
43
+ },
44
+ focusNext() {
45
+ move(1);
46
+ },
47
+ focusPrev() {
48
+ move(-1);
49
+ },
50
+ blur() {
51
+ setActive(undefined);
52
+ },
53
+ isFocused(key) {
54
+ return activeKey === key;
55
+ },
56
+ get activeKey() {
57
+ return activeKey;
58
+ },
59
+ onChange(cb) {
60
+ return changed.on(cb);
61
+ },
62
+ routeKey(e) {
63
+ const active = entries.find(x => x.key === activeKey);
64
+ if (active?.onKey?.(e))
65
+ return true;
66
+ if (e.key === 'tab') {
67
+ if (e.shift)
68
+ this.focusPrev();
69
+ else
70
+ this.focusNext();
71
+ return true;
72
+ }
73
+ return false;
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/focus/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAsBpE,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,aAAa,EAAsB,CAAC;IACpD,IAAI,SAA6B,CAAC;IAElC,MAAM,QAAQ,GAAG,GAAgB,EAAE,CACjC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE9F,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAQ,EAAE;QAClD,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAC9B,SAAS,GAAG,GAAG,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAQ,EAAE;QACnC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC;gBAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5F,OAAO;gBACL,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,CAAC;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,GAAG;YACP,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,SAAS;YACP,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC;QACD,SAAS;YACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACX,CAAC;QACD,IAAI;YACF,SAAS,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,SAAS,KAAK,GAAG,CAAC;QAC3B,CAAC;QACD,IAAI,SAAS;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,QAAQ,CAAC,EAAE;YACT,OAAO,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,QAAQ,CAAC,CAAC;YACR,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;oBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * frame — o modelo de dados central: Cell, CellStyle e Frame (grade 2D).
3
+ * É o ALVO do diff. Escrita sem I/O.
4
+ *
5
+ * (Fatia vertical / PoC): buffers paralelos + string interning de estilo
6
+ * (ADR-0005) e hash de linha lazy com dirty flags (ADR-0001).
7
+ */
8
+ import { Attr } from '../ansi/index.js';
9
+ export interface Size {
10
+ readonly cols: number;
11
+ readonly rows: number;
12
+ }
13
+ export interface Point {
14
+ readonly x: number;
15
+ readonly y: number;
16
+ }
17
+ export interface Rect {
18
+ readonly x: number;
19
+ readonly y: number;
20
+ readonly w: number;
21
+ readonly h: number;
22
+ }
23
+ export type ColorRef = string;
24
+ export interface CellStyle {
25
+ readonly fg?: ColorRef;
26
+ readonly bg?: ColorRef;
27
+ readonly attrs: Attr;
28
+ }
29
+ export interface Cell {
30
+ readonly char: string;
31
+ readonly width: 0 | 1 | 2;
32
+ readonly style: CellStyle;
33
+ }
34
+ export declare const DEFAULT_STYLE: CellStyle;
35
+ export declare const BLANK_CELL: Cell;
36
+ export interface Frame {
37
+ readonly size: Size;
38
+ cellAt(x: number, y: number): Cell;
39
+ rowSlice(y: number): readonly Cell[];
40
+ rowHash(y: number): number;
41
+ set(x: number, y: number, cell: Cell): void;
42
+ putText(x: number, y: number, text: string, style: CellStyle, clip: Rect): number;
43
+ fillRect(rect: Rect, cell: Cell): void;
44
+ invalidate(): void;
45
+ clearTo(style: CellStyle): void;
46
+ }
47
+ export declare function createFrame(size: Size): Frame;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/frame/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,SAAgC,CAAC;AAC7D,eAAO,MAAM,UAAU,EAAE,IAAoD,CAAC;AAE9E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;IACrC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IAClF,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACvC,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACjC;AA0ID,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAE7C"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/engine/frame/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA+BzD,MAAM,CAAC,MAAM,aAAa,GAAc,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAc9E,SAAS,QAAQ,CAAC,CAAY;IAC5B,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,SAAS;IACJ,IAAI,CAAO;IACH,IAAI,CAAS;IACb,IAAI,CAAS;IACb,KAAK,CAAW;IAChB,MAAM,CAAa;IACnB,QAAQ,CAAa;IACrB,MAAM,GAAgB,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,GAAG,IAAI,GAAG,CAAiB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAa;IACrB,SAAS,CAAa;IAEvC,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,MAAM,CAAC,CAAY;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,OAAO,CAAC,EAAU;QACxB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC;IACrE,CAAC;IAEO,QAAQ,CAAC,CAAS,EAAE,CAAS;QACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,IAAU;QAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO;QACjC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG;YAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc;YAChD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,CAAS;QAChB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,UAAU,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;gBACrB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;gBAClC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACxC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,KAAgB,EAAE,IAAU;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,4CAA4C;YACnE,IAAI,GAAG,GAAG,CAAC,GAAG,OAAO;gBAAE,MAAM;YAC7B,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ,CAAC,IAAU,EAAE,IAAU;QAC7B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,UAAU;QACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,IAAU;IACpC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * terminal-engine — superfície pública da engine de renderização do terminal.
3
+ *
4
+ * Engine orientada a diff sobre Node.js + ANSI puro: sem React, sem Ink, sem
5
+ * Virtual DOM e sem dependências externas. A aplicação descreve o que aparece
6
+ * a cada frame; a engine descobre o que mudou e escreve o mínimo de bytes.
7
+ *
8
+ * Este diretório é código vendorizado — a fonte original vive no pacote
9
+ * `@zardui/terminal-engine`. Ajustes de comportamento devem ser feitos lá e
10
+ * ressincronizados aqui, para que os dois lados não divirjam.
11
+ */
12
+ export * from './utils/index.js';
13
+ export * from './ansi/index.js';
14
+ export * from './cursor/index.js';
15
+ export * from './events/index.js';
16
+ export * from './frame/index.js';
17
+ export * from './diff/index.js';
18
+ export * from './theme/index.js';
19
+ export * from './layout/index.js';
20
+ export * from './terminal/index.js';
21
+ export * from './input/index.js';
22
+ export * from './focus/index.js';
23
+ export * from './scheduler/index.js';
24
+ export * from './animation/index.js';
25
+ export * from './components/index.js';
26
+ export * from './renderer/index.js';
27
+ export * from './screen/index.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * terminal-engine — superfície pública da engine de renderização do terminal.
3
+ *
4
+ * Engine orientada a diff sobre Node.js + ANSI puro: sem React, sem Ink, sem
5
+ * Virtual DOM e sem dependências externas. A aplicação descreve o que aparece
6
+ * a cada frame; a engine descobre o que mudou e escreve o mínimo de bytes.
7
+ *
8
+ * Este diretório é código vendorizado — a fonte original vive no pacote
9
+ * `@zardui/terminal-engine`. Ajustes de comportamento devem ser feitos lá e
10
+ * ressincronizados aqui, para que os dois lados não divirjam.
11
+ */
12
+ export * from './utils/index.js';
13
+ export * from './ansi/index.js';
14
+ export * from './cursor/index.js';
15
+ export * from './events/index.js';
16
+ export * from './frame/index.js';
17
+ export * from './diff/index.js';
18
+ export * from './theme/index.js';
19
+ export * from './layout/index.js';
20
+ export * from './terminal/index.js';
21
+ export * from './input/index.js';
22
+ export * from './focus/index.js';
23
+ export * from './scheduler/index.js';
24
+ export * from './animation/index.js';
25
+ export * from './components/index.js';
26
+ export * from './renderer/index.js';
27
+ export * from './screen/index.js';
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * input — parser (máquina de estados sobre bytes, ADR-0008) que transforma
3
+ * o stdin cru em KeyEvent/MouseEvent/paste semânticos. (Implementação real.)
4
+ */
5
+ import { type Disposable } from '../events/index.js';
6
+ export type Key = string | 'enter' | 'escape' | 'tab' | 'backspace' | 'delete' | 'insert' | 'home' | 'end' | 'pageup' | 'pagedown' | 'up' | 'down' | 'left' | 'right' | 'space';
7
+ export interface KeyEvent {
8
+ readonly key: Key;
9
+ readonly ctrl: boolean;
10
+ readonly alt: boolean;
11
+ readonly shift: boolean;
12
+ readonly raw: string;
13
+ }
14
+ export type MouseButton = 'left' | 'middle' | 'right' | 'wheel-up' | 'wheel-down' | 'none';
15
+ export interface MouseEvent {
16
+ readonly x: number;
17
+ readonly y: number;
18
+ readonly button: MouseButton;
19
+ readonly action: 'press' | 'release' | 'move';
20
+ readonly ctrl: boolean;
21
+ readonly alt: boolean;
22
+ readonly shift: boolean;
23
+ }
24
+ export interface InputManager {
25
+ onKey(cb: (e: KeyEvent) => void): Disposable;
26
+ onMouse(cb: (e: MouseEvent) => void): Disposable;
27
+ onPaste(cb: (text: string) => void): Disposable;
28
+ start(): void;
29
+ stop(): void;
30
+ }
31
+ export interface InputOptions {
32
+ readonly escTimeout?: number;
33
+ readonly mouse?: boolean;
34
+ }
35
+ export declare function createInputManager(onData: (cb: (bytes: Buffer) => void) => Disposable, options?: InputOptions): InputManager;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/engine/input/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,MAAM,GAAG,GACX,MAAM,GACN,OAAO,GACP,QAAQ,GACR,KAAK,GACL,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,QAAQ,GACR,UAAU,GACV,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;AAC3F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AACD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,GAAG,UAAU,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,UAAU,CAAC;IACjD,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AA8CD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,UAAU,EACnD,OAAO,GAAE,YAAiB,GACzB,YAAY,CAmLd"}