@effect-tui/core 0.1.0 → 0.1.4

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 (271) hide show
  1. package/README.md +31 -11
  2. package/dist/ansi.d.ts +127 -32
  3. package/dist/ansi.d.ts.map +1 -1
  4. package/dist/ansi.js +159 -37
  5. package/dist/ansi.js.map +1 -1
  6. package/dist/colors.d.ts +139 -0
  7. package/dist/colors.d.ts.map +1 -0
  8. package/dist/colors.js +339 -0
  9. package/dist/colors.js.map +1 -0
  10. package/dist/index.d.ts +6 -10
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -11
  13. package/dist/index.js.map +1 -1
  14. package/dist/keys.d.ts +21 -0
  15. package/dist/keys.d.ts.map +1 -1
  16. package/dist/keys.js +199 -58
  17. package/dist/keys.js.map +1 -1
  18. package/dist/layout/axis-helpers.d.ts +19 -0
  19. package/dist/layout/axis-helpers.d.ts.map +1 -0
  20. package/dist/layout/axis-helpers.js +19 -0
  21. package/dist/layout/axis-helpers.js.map +1 -0
  22. package/dist/output.d.ts +59 -0
  23. package/dist/output.d.ts.map +1 -0
  24. package/dist/output.js +142 -0
  25. package/dist/output.js.map +1 -0
  26. package/dist/render/buffer.d.ts.map +1 -1
  27. package/dist/render/buffer.js +6 -25
  28. package/dist/render/buffer.js.map +1 -1
  29. package/dist/render/graphemes.d.ts +15 -0
  30. package/dist/render/graphemes.d.ts.map +1 -0
  31. package/dist/render/graphemes.js +28 -0
  32. package/dist/render/graphemes.js.map +1 -0
  33. package/dist/render/measure.d.ts +1 -0
  34. package/dist/render/measure.d.ts.map +1 -1
  35. package/dist/render/measure.js +14 -36
  36. package/dist/render/measure.js.map +1 -1
  37. package/dist/render/palette.d.ts.map +1 -1
  38. package/dist/render/palette.js +26 -1
  39. package/dist/render/palette.js.map +1 -1
  40. package/dist/render/segmenter.d.ts +8 -0
  41. package/dist/render/segmenter.d.ts.map +1 -0
  42. package/dist/render/segmenter.js +23 -0
  43. package/dist/render/segmenter.js.map +1 -0
  44. package/dist/render/surface.d.ts +6 -32
  45. package/dist/render/surface.d.ts.map +1 -1
  46. package/dist/render/surface.js +11 -80
  47. package/dist/render/surface.js.map +1 -1
  48. package/dist/runtime/backend_node.d.ts.map +1 -1
  49. package/dist/runtime/backend_node.js.map +1 -1
  50. package/dist/tailwind-colors.d.ts +291 -0
  51. package/dist/tailwind-colors.d.ts.map +1 -0
  52. package/dist/tailwind-colors.js +291 -0
  53. package/dist/tailwind-colors.js.map +1 -0
  54. package/dist/types.d.ts +15 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +3 -0
  57. package/dist/types.js.map +1 -0
  58. package/package.json +55 -55
  59. package/src/ansi.ts +201 -73
  60. package/src/colors.ts +468 -0
  61. package/src/index.ts +28 -14
  62. package/src/keys.ts +467 -287
  63. package/src/layout/axis-helpers.ts +33 -0
  64. package/src/output.ts +175 -0
  65. package/src/render/buffer.ts +161 -184
  66. package/src/render/graphemes.ts +34 -0
  67. package/src/render/measure.ts +15 -38
  68. package/src/render/palette.ts +98 -77
  69. package/src/render/segmenter.ts +27 -0
  70. package/src/render/surface.ts +139 -225
  71. package/src/runtime/backend_node.ts +71 -71
  72. package/src/tailwind-colors.ts +295 -0
  73. package/src/types.ts +18 -0
  74. package/dist/anim.d.ts +0 -4
  75. package/dist/anim.d.ts.map +0 -1
  76. package/dist/anim.js +0 -5
  77. package/dist/anim.js.map +0 -1
  78. package/dist/layout/linearStack.d.ts +0 -17
  79. package/dist/layout/linearStack.d.ts.map +0 -1
  80. package/dist/layout/linearStack.js +0 -86
  81. package/dist/layout/linearStack.js.map +0 -1
  82. package/dist/motion-value.d.ts +0 -58
  83. package/dist/motion-value.d.ts.map +0 -1
  84. package/dist/motion-value.js +0 -250
  85. package/dist/motion-value.js.map +0 -1
  86. package/dist/present/display.d.ts +0 -58
  87. package/dist/present/display.d.ts.map +0 -1
  88. package/dist/present/display.js +0 -168
  89. package/dist/present/display.js.map +0 -1
  90. package/dist/present/writers/fullscreen.d.ts +0 -19
  91. package/dist/present/writers/fullscreen.d.ts.map +0 -1
  92. package/dist/present/writers/fullscreen.js +0 -55
  93. package/dist/present/writers/fullscreen.js.map +0 -1
  94. package/dist/present/writers/inline.d.ts +0 -20
  95. package/dist/present/writers/inline.d.ts.map +0 -1
  96. package/dist/present/writers/inline.js +0 -92
  97. package/dist/present/writers/inline.js.map +0 -1
  98. package/dist/render/color-utils.d.ts +0 -18
  99. package/dist/render/color-utils.d.ts.map +0 -1
  100. package/dist/render/color-utils.js +0 -58
  101. package/dist/render/color-utils.js.map +0 -1
  102. package/dist/render/diff.d.ts +0 -30
  103. package/dist/render/diff.d.ts.map +0 -1
  104. package/dist/render/diff.js +0 -83
  105. package/dist/render/diff.js.map +0 -1
  106. package/dist/spring-physics.d.ts +0 -36
  107. package/dist/spring-physics.d.ts.map +0 -1
  108. package/dist/spring-physics.js +0 -113
  109. package/dist/spring-physics.js.map +0 -1
  110. package/dist/spring.d.ts +0 -73
  111. package/dist/spring.d.ts.map +0 -1
  112. package/dist/spring.js +0 -136
  113. package/dist/spring.js.map +0 -1
  114. package/dist/ui/containers/canvas.d.ts +0 -13
  115. package/dist/ui/containers/canvas.d.ts.map +0 -1
  116. package/dist/ui/containers/canvas.js +0 -16
  117. package/dist/ui/containers/canvas.js.map +0 -1
  118. package/dist/ui/containers/geometry-reader.d.ts +0 -17
  119. package/dist/ui/containers/geometry-reader.d.ts.map +0 -1
  120. package/dist/ui/containers/geometry-reader.js +0 -24
  121. package/dist/ui/containers/geometry-reader.js.map +0 -1
  122. package/dist/ui/containers/hstack.d.ts +0 -12
  123. package/dist/ui/containers/hstack.d.ts.map +0 -1
  124. package/dist/ui/containers/hstack.js +0 -28
  125. package/dist/ui/containers/hstack.js.map +0 -1
  126. package/dist/ui/containers/scroll.d.ts +0 -28
  127. package/dist/ui/containers/scroll.d.ts.map +0 -1
  128. package/dist/ui/containers/scroll.js +0 -97
  129. package/dist/ui/containers/scroll.js.map +0 -1
  130. package/dist/ui/containers/shared.d.ts +0 -12
  131. package/dist/ui/containers/shared.d.ts.map +0 -1
  132. package/dist/ui/containers/shared.js +0 -19
  133. package/dist/ui/containers/shared.js.map +0 -1
  134. package/dist/ui/containers/vstack.d.ts +0 -12
  135. package/dist/ui/containers/vstack.d.ts.map +0 -1
  136. package/dist/ui/containers/vstack.js +0 -28
  137. package/dist/ui/containers/vstack.js.map +0 -1
  138. package/dist/ui/containers/zstack.d.ts +0 -14
  139. package/dist/ui/containers/zstack.d.ts.map +0 -1
  140. package/dist/ui/containers/zstack.js +0 -36
  141. package/dist/ui/containers/zstack.js.map +0 -1
  142. package/dist/ui/core/geometry-store.d.ts +0 -22
  143. package/dist/ui/core/geometry-store.d.ts.map +0 -1
  144. package/dist/ui/core/geometry-store.js +0 -29
  145. package/dist/ui/core/geometry-store.js.map +0 -1
  146. package/dist/ui/core/geometry.d.ts +0 -34
  147. package/dist/ui/core/geometry.d.ts.map +0 -1
  148. package/dist/ui/core/geometry.js +0 -14
  149. package/dist/ui/core/geometry.js.map +0 -1
  150. package/dist/ui/core/view.d.ts +0 -25
  151. package/dist/ui/core/view.d.ts.map +0 -1
  152. package/dist/ui/core/view.js +0 -34
  153. package/dist/ui/core/view.js.map +0 -1
  154. package/dist/ui/index.d.ts +0 -44
  155. package/dist/ui/index.d.ts.map +0 -1
  156. package/dist/ui/index.js +0 -39
  157. package/dist/ui/index.js.map +0 -1
  158. package/dist/ui/inlinetext.d.ts +0 -24
  159. package/dist/ui/inlinetext.d.ts.map +0 -1
  160. package/dist/ui/inlinetext.js +0 -131
  161. package/dist/ui/inlinetext.js.map +0 -1
  162. package/dist/ui/install.d.ts +0 -22
  163. package/dist/ui/install.d.ts.map +0 -1
  164. package/dist/ui/install.js +0 -66
  165. package/dist/ui/install.js.map +0 -1
  166. package/dist/ui/markdown.d.ts +0 -40
  167. package/dist/ui/markdown.d.ts.map +0 -1
  168. package/dist/ui/markdown.js +0 -351
  169. package/dist/ui/markdown.js.map +0 -1
  170. package/dist/ui/modifiers/border.d.ts +0 -33
  171. package/dist/ui/modifiers/border.d.ts.map +0 -1
  172. package/dist/ui/modifiers/border.js +0 -82
  173. package/dist/ui/modifiers/border.js.map +0 -1
  174. package/dist/ui/modifiers/fill.d.ts +0 -14
  175. package/dist/ui/modifiers/fill.d.ts.map +0 -1
  176. package/dist/ui/modifiers/fill.js +0 -25
  177. package/dist/ui/modifiers/fill.js.map +0 -1
  178. package/dist/ui/modifiers/frame.d.ts +0 -23
  179. package/dist/ui/modifiers/frame.d.ts.map +0 -1
  180. package/dist/ui/modifiers/frame.js +0 -54
  181. package/dist/ui/modifiers/frame.js.map +0 -1
  182. package/dist/ui/modifiers/offset.d.ts +0 -15
  183. package/dist/ui/modifiers/offset.d.ts.map +0 -1
  184. package/dist/ui/modifiers/offset.js +0 -21
  185. package/dist/ui/modifiers/offset.js.map +0 -1
  186. package/dist/ui/modifiers/opacity.d.ts +0 -15
  187. package/dist/ui/modifiers/opacity.d.ts.map +0 -1
  188. package/dist/ui/modifiers/opacity.js +0 -95
  189. package/dist/ui/modifiers/opacity.js.map +0 -1
  190. package/dist/ui/modifiers/padding.d.ts +0 -20
  191. package/dist/ui/modifiers/padding.d.ts.map +0 -1
  192. package/dist/ui/modifiers/padding.js +0 -36
  193. package/dist/ui/modifiers/padding.js.map +0 -1
  194. package/dist/ui/modifiers/styled.d.ts +0 -14
  195. package/dist/ui/modifiers/styled.d.ts.map +0 -1
  196. package/dist/ui/modifiers/styled.js +0 -26
  197. package/dist/ui/modifiers/styled.js.map +0 -1
  198. package/dist/ui/primitives/rectangle.d.ts +0 -15
  199. package/dist/ui/primitives/rectangle.d.ts.map +0 -1
  200. package/dist/ui/primitives/rectangle.js +0 -23
  201. package/dist/ui/primitives/rectangle.js.map +0 -1
  202. package/dist/ui/primitives/spacer.d.ts +0 -13
  203. package/dist/ui/primitives/spacer.d.ts.map +0 -1
  204. package/dist/ui/primitives/spacer.js +0 -16
  205. package/dist/ui/primitives/spacer.js.map +0 -1
  206. package/dist/ui/primitives/text.d.ts +0 -15
  207. package/dist/ui/primitives/text.d.ts.map +0 -1
  208. package/dist/ui/primitives/text.js +0 -79
  209. package/dist/ui/primitives/text.js.map +0 -1
  210. package/dist/ui/primitives/wrapped-text.d.ts +0 -30
  211. package/dist/ui/primitives/wrapped-text.d.ts.map +0 -1
  212. package/dist/ui/primitives/wrapped-text.js +0 -117
  213. package/dist/ui/primitives/wrapped-text.js.map +0 -1
  214. package/dist/ui/shinytext.d.ts +0 -66
  215. package/dist/ui/shinytext.d.ts.map +0 -1
  216. package/dist/ui/shinytext.js +0 -99
  217. package/dist/ui/shinytext.js.map +0 -1
  218. package/dist/ui/text/layout.d.ts +0 -35
  219. package/dist/ui/text/layout.d.ts.map +0 -1
  220. package/dist/ui/text/layout.js +0 -102
  221. package/dist/ui/text/layout.js.map +0 -1
  222. package/dist/ui/textinput.d.ts +0 -140
  223. package/dist/ui/textinput.d.ts.map +0 -1
  224. package/dist/ui/textinput.js +0 -402
  225. package/dist/ui/textinput.js.map +0 -1
  226. package/dist/ui/view-constructors.d.ts +0 -72
  227. package/dist/ui/view-constructors.d.ts.map +0 -1
  228. package/dist/ui/view-constructors.js +0 -74
  229. package/dist/ui/view-constructors.js.map +0 -1
  230. package/src/anim.ts +0 -5
  231. package/src/layout/linearStack.ts +0 -115
  232. package/src/motion-value.ts +0 -335
  233. package/src/present/display.ts +0 -206
  234. package/src/present/writers/fullscreen.ts +0 -58
  235. package/src/present/writers/inline.ts +0 -101
  236. package/src/render/color-utils.ts +0 -60
  237. package/src/render/diff.ts +0 -95
  238. package/src/spring-physics.ts +0 -151
  239. package/src/spring.ts +0 -234
  240. package/src/ui/__snapshots__/wrappedtext.test.ts.snap +0 -57
  241. package/src/ui/containers/canvas.ts +0 -18
  242. package/src/ui/containers/geometry-reader.ts +0 -32
  243. package/src/ui/containers/hstack.ts +0 -33
  244. package/src/ui/containers/scroll.ts +0 -106
  245. package/src/ui/containers/shared.ts +0 -27
  246. package/src/ui/containers/vstack.ts +0 -34
  247. package/src/ui/containers/zstack.ts +0 -37
  248. package/src/ui/core/geometry-store.ts +0 -42
  249. package/src/ui/core/geometry.ts +0 -30
  250. package/src/ui/core/view.ts +0 -49
  251. package/src/ui/index.ts +0 -84
  252. package/src/ui/inlinetext.ts +0 -135
  253. package/src/ui/install.ts +0 -110
  254. package/src/ui/markdown.test.ts +0 -74
  255. package/src/ui/markdown.ts +0 -388
  256. package/src/ui/modifiers/border.ts +0 -100
  257. package/src/ui/modifiers/fill.ts +0 -28
  258. package/src/ui/modifiers/frame.ts +0 -74
  259. package/src/ui/modifiers/offset.ts +0 -23
  260. package/src/ui/modifiers/opacity.ts +0 -93
  261. package/src/ui/modifiers/padding.ts +0 -53
  262. package/src/ui/modifiers/styled.ts +0 -31
  263. package/src/ui/primitives/rectangle.ts +0 -25
  264. package/src/ui/primitives/spacer.ts +0 -18
  265. package/src/ui/primitives/text.ts +0 -85
  266. package/src/ui/primitives/wrapped-text.ts +0 -131
  267. package/src/ui/shinytext.ts +0 -159
  268. package/src/ui/text/layout.ts +0 -119
  269. package/src/ui/textinput.ts +0 -496
  270. package/src/ui/view-constructors.ts +0 -96
  271. package/src/ui/wrappedtext.test.ts +0 -138
package/dist/colors.js ADDED
@@ -0,0 +1,339 @@
1
+ // colors.ts — Comprehensive color parsing and utilities
2
+ // Supports indexed colors (0-255), RGB, hex, named colors, HSL, and alpha
3
+ import { tailwindColors } from "./tailwind-colors.js";
4
+ /** Standard ANSI color names mapped to 256-color indices */
5
+ export const BASE_NAMES = {
6
+ black: 0,
7
+ red: 1,
8
+ green: 2,
9
+ yellow: 3,
10
+ blue: 4,
11
+ magenta: 5,
12
+ cyan: 6,
13
+ white: 7,
14
+ brightBlack: 8,
15
+ brightRed: 9,
16
+ brightGreen: 10,
17
+ brightYellow: 11,
18
+ brightBlue: 12,
19
+ brightMagenta: 13,
20
+ brightCyan: 14,
21
+ brightWhite: 15,
22
+ };
23
+ // ============================================================================
24
+ // Utility functions
25
+ // ============================================================================
26
+ /** Clamp a number to 0-255 range */
27
+ export function clamp255(n) {
28
+ return n < 0 ? 0 : n > 255 ? 255 : n | 0;
29
+ }
30
+ /** Clamp a number to 0-1 range */
31
+ export function clamp1(n) {
32
+ return n < 0 ? 0 : n > 1 ? 1 : n;
33
+ }
34
+ /**
35
+ * Parse flexible color inputs into a resolved color value.
36
+ * Supports: number (0-255), {r,g,b}, "#rgb", "#rrggbb", base names, gray0-23.
37
+ * Used by Palette and style systems.
38
+ */
39
+ export function parseColor(c) {
40
+ if (typeof c === "number")
41
+ return c;
42
+ if (typeof c === "object")
43
+ return { r: c.r | 0, g: c.g | 0, b: c.b | 0 };
44
+ const s = String(c).trim();
45
+ // Hex color
46
+ if (s.startsWith("#")) {
47
+ const hex = s.slice(1);
48
+ if (hex.length === 3) {
49
+ // #rgb -> #rrggbb
50
+ return {
51
+ r: parseInt(hex[0] + hex[0], 16),
52
+ g: parseInt(hex[1] + hex[1], 16),
53
+ b: parseInt(hex[2] + hex[2], 16),
54
+ };
55
+ }
56
+ if (hex.length === 6) {
57
+ return {
58
+ r: parseInt(hex.slice(0, 2), 16),
59
+ g: parseInt(hex.slice(2, 4), 16),
60
+ b: parseInt(hex.slice(4, 6), 16),
61
+ };
62
+ }
63
+ }
64
+ // Named color
65
+ if (s in BASE_NAMES)
66
+ return BASE_NAMES[s];
67
+ // gray0-gray23
68
+ const m = /^(?:gray|grey)(\d{1,2})$/.exec(s);
69
+ if (m?.[1]) {
70
+ const n = Math.max(0, Math.min(23, parseInt(m[1], 10)));
71
+ return 232 + n;
72
+ }
73
+ return 7; // default to white if unrecognized
74
+ }
75
+ // ============================================================================
76
+ // parseColorRGBA - For color springs (returns RGBA with alpha)
77
+ // ============================================================================
78
+ /**
79
+ * Parse any supported color format to RGBA (with alpha).
80
+ * Supports: hex (#rgb, #rrggbb, #rgba, #rrggbbaa), rgb(), rgba(), hsl(), hsla(), {r,g,b,a}.
81
+ * Used by color springs for interpolation.
82
+ */
83
+ export function parseColorRGBA(input) {
84
+ if (typeof input === "object") {
85
+ return {
86
+ r: input.r,
87
+ g: input.g,
88
+ b: input.b,
89
+ a: "a" in input ? input.a : 1,
90
+ };
91
+ }
92
+ const str = input.trim().toLowerCase();
93
+ // Hex: #rgb, #rrggbb, #rgba, #rrggbbaa
94
+ if (str.startsWith("#")) {
95
+ return parseHex(str);
96
+ }
97
+ // rgb(r, g, b) or rgba(r, g, b, a)
98
+ if (str.startsWith("rgb")) {
99
+ return parseRgb(str);
100
+ }
101
+ // hsl(h, s%, l%) or hsla(h, s%, l%, a)
102
+ if (str.startsWith("hsl")) {
103
+ return parseHsl(str);
104
+ }
105
+ // Unknown format, return black
106
+ return { r: 0, g: 0, b: 0, a: 1 };
107
+ }
108
+ function parseHex(hex) {
109
+ const h = hex.slice(1);
110
+ if (h.length === 3) {
111
+ return {
112
+ r: parseInt(h[0] + h[0], 16),
113
+ g: parseInt(h[1] + h[1], 16),
114
+ b: parseInt(h[2] + h[2], 16),
115
+ a: 1,
116
+ };
117
+ }
118
+ if (h.length === 4) {
119
+ return {
120
+ r: parseInt(h[0] + h[0], 16),
121
+ g: parseInt(h[1] + h[1], 16),
122
+ b: parseInt(h[2] + h[2], 16),
123
+ a: parseInt(h[3] + h[3], 16) / 255,
124
+ };
125
+ }
126
+ if (h.length === 6) {
127
+ return {
128
+ r: parseInt(h.slice(0, 2), 16),
129
+ g: parseInt(h.slice(2, 4), 16),
130
+ b: parseInt(h.slice(4, 6), 16),
131
+ a: 1,
132
+ };
133
+ }
134
+ if (h.length === 8) {
135
+ return {
136
+ r: parseInt(h.slice(0, 2), 16),
137
+ g: parseInt(h.slice(2, 4), 16),
138
+ b: parseInt(h.slice(4, 6), 16),
139
+ a: parseInt(h.slice(6, 8), 16) / 255,
140
+ };
141
+ }
142
+ return { r: 0, g: 0, b: 0, a: 1 };
143
+ }
144
+ function parseRgb(str) {
145
+ const match = str.match(/rgba?\(\s*(\d+)\s*[,\s]\s*(\d+)\s*[,\s]\s*(\d+)\s*(?:[,/]\s*([\d.]+))?\s*\)/);
146
+ if (match) {
147
+ return {
148
+ r: clamp255(parseInt(match[1], 10)),
149
+ g: clamp255(parseInt(match[2], 10)),
150
+ b: clamp255(parseInt(match[3], 10)),
151
+ a: match[4] ? clamp1(parseFloat(match[4])) : 1,
152
+ };
153
+ }
154
+ return { r: 0, g: 0, b: 0, a: 1 };
155
+ }
156
+ function parseHsl(str) {
157
+ const match = str.match(/hsla?\(\s*(\d+)\s*[,\s]\s*([\d.]+)%?\s*[,\s]\s*([\d.]+)%?\s*(?:[,/]\s*([\d.]+))?\s*\)/);
158
+ if (match) {
159
+ const h = parseFloat(match[1]);
160
+ const s = parseFloat(match[2]);
161
+ const l = parseFloat(match[3]);
162
+ const a = match[4] ? clamp1(parseFloat(match[4])) : 1;
163
+ return hslToRgba(h, s, l, a);
164
+ }
165
+ return { r: 0, g: 0, b: 0, a: 1 };
166
+ }
167
+ /**
168
+ * Convert HSL to RGBA.
169
+ * h: 0-360, s: 0-100, l: 0-100, a: 0-1
170
+ */
171
+ export function hslToRgba(h, s, l, a) {
172
+ // Normalize
173
+ h = ((h % 360) + 360) % 360;
174
+ s = clamp1(s / 100);
175
+ l = clamp1(l / 100);
176
+ const c = (1 - Math.abs(2 * l - 1)) * s;
177
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
178
+ const m = l - c / 2;
179
+ let r = 0;
180
+ let g = 0;
181
+ let b = 0;
182
+ if (h < 60) {
183
+ r = c;
184
+ g = x;
185
+ b = 0;
186
+ }
187
+ else if (h < 120) {
188
+ r = x;
189
+ g = c;
190
+ b = 0;
191
+ }
192
+ else if (h < 180) {
193
+ r = 0;
194
+ g = c;
195
+ b = x;
196
+ }
197
+ else if (h < 240) {
198
+ r = 0;
199
+ g = x;
200
+ b = c;
201
+ }
202
+ else if (h < 300) {
203
+ r = x;
204
+ g = 0;
205
+ b = c;
206
+ }
207
+ else {
208
+ r = c;
209
+ g = 0;
210
+ b = x;
211
+ }
212
+ return {
213
+ r: Math.round((r + m) * 255),
214
+ g: Math.round((g + m) * 255),
215
+ b: Math.round((b + m) * 255),
216
+ a,
217
+ };
218
+ }
219
+ /**
220
+ * Convert a 256-color index to RGB values (approximate xterm palette).
221
+ * 0-15: Standard ANSI, 16-231: 6x6x6 RGB cube, 232-255: Grayscale ramp
222
+ */
223
+ export function idxToRGB(idx) {
224
+ if (idx < 0)
225
+ idx = 0;
226
+ if (idx > 255)
227
+ idx = 255;
228
+ // Standard ANSI colors (0-15)
229
+ if (idx < 16) {
230
+ const base = [
231
+ [0x00, 0x00, 0x00], // 0: black
232
+ [0x80, 0x00, 0x00], // 1: red
233
+ [0x00, 0x80, 0x00], // 2: green
234
+ [0x80, 0x80, 0x00], // 3: yellow
235
+ [0x00, 0x00, 0x80], // 4: blue
236
+ [0x80, 0x00, 0x80], // 5: magenta
237
+ [0x00, 0x80, 0x80], // 6: cyan
238
+ [0xc0, 0xc0, 0xc0], // 7: white
239
+ [0x80, 0x80, 0x80], // 8: bright black (gray)
240
+ [0xff, 0x00, 0x00], // 9: bright red
241
+ [0x00, 0xff, 0x00], // 10: bright green
242
+ [0xff, 0xff, 0x00], // 11: bright yellow
243
+ [0x00, 0x00, 0xff], // 12: bright blue
244
+ [0xff, 0x00, 0xff], // 13: bright magenta
245
+ [0x00, 0xff, 0xff], // 14: bright cyan
246
+ [0xff, 0xff, 0xff], // 15: bright white
247
+ ];
248
+ const [r, g, b] = base[idx] ?? [0, 0, 0];
249
+ return { r, g, b };
250
+ }
251
+ // Grayscale ramp (232-255)
252
+ if (idx >= 232) {
253
+ const n = idx - 232; // 0..23
254
+ const v = 8 + n * 10;
255
+ return { r: v, g: v, b: v };
256
+ }
257
+ // 6x6x6 RGB cube (16-231)
258
+ const n = idx - 16; // 0..215
259
+ const r = Math.floor(n / 36) % 6;
260
+ const g = Math.floor(n / 6) % 6;
261
+ const b = n % 6;
262
+ const steps = [0, 95, 135, 175, 215, 255];
263
+ return { r: steps[r] ?? 0, g: steps[g] ?? 0, b: steps[b] ?? 0 };
264
+ }
265
+ /**
266
+ * Check if a value looks like a color input.
267
+ */
268
+ export function isColorInput(value) {
269
+ if (typeof value === "string") {
270
+ const s = value.trim().toLowerCase();
271
+ return s.startsWith("#") || s.startsWith("rgb") || s.startsWith("hsl");
272
+ }
273
+ if (typeof value === "object" && value !== null) {
274
+ const obj = value;
275
+ return typeof obj.r === "number" && typeof obj.g === "number" && typeof obj.b === "number";
276
+ }
277
+ return false;
278
+ }
279
+ /** Parse hex string to RGB */
280
+ function hexToRgb(hex) {
281
+ const h = hex.startsWith("#") ? hex.slice(1) : hex;
282
+ return {
283
+ r: parseInt(h.slice(0, 2), 16),
284
+ g: parseInt(h.slice(2, 4), 16),
285
+ b: parseInt(h.slice(4, 6), 16),
286
+ };
287
+ }
288
+ /** Create a Tailwind color function for a given family */
289
+ function makeTailwindColor(family) {
290
+ const palette = tailwindColors[family];
291
+ return (shade) => {
292
+ const hex = palette[shade];
293
+ return hexToRgb(hex);
294
+ };
295
+ }
296
+ /** Tailwind color palette under Colors.tw namespace */
297
+ const tw = {
298
+ slate: makeTailwindColor("slate"),
299
+ gray: makeTailwindColor("gray"),
300
+ zinc: makeTailwindColor("zinc"),
301
+ neutral: makeTailwindColor("neutral"),
302
+ stone: makeTailwindColor("stone"),
303
+ red: makeTailwindColor("red"),
304
+ orange: makeTailwindColor("orange"),
305
+ amber: makeTailwindColor("amber"),
306
+ yellow: makeTailwindColor("yellow"),
307
+ lime: makeTailwindColor("lime"),
308
+ green: makeTailwindColor("green"),
309
+ emerald: makeTailwindColor("emerald"),
310
+ teal: makeTailwindColor("teal"),
311
+ cyan: makeTailwindColor("cyan"),
312
+ sky: makeTailwindColor("sky"),
313
+ blue: makeTailwindColor("blue"),
314
+ indigo: makeTailwindColor("indigo"),
315
+ violet: makeTailwindColor("violet"),
316
+ purple: makeTailwindColor("purple"),
317
+ fuchsia: makeTailwindColor("fuchsia"),
318
+ pink: makeTailwindColor("pink"),
319
+ rose: makeTailwindColor("rose"),
320
+ };
321
+ /** Convenience API for creating color values */
322
+ export const Colors = Object.assign({
323
+ rgb(r, g, b) {
324
+ return { r, g, b };
325
+ },
326
+ hex(hex) {
327
+ const result = parseColor(hex);
328
+ // parseColor returns number for named colors, but hex always returns RGB
329
+ return typeof result === "number" ? { r: 0, g: 0, b: 0 } : result;
330
+ },
331
+ /** Gray - 24-level grayscale palette (0-23) */
332
+ gray(level) {
333
+ const n = Math.max(0, Math.min(23, level | 0));
334
+ return 232 + n;
335
+ },
336
+ /** Tailwind color palette */
337
+ tw,
338
+ }, BASE_NAMES);
339
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,12 @@
1
+ export * from "./types.js";
1
2
  export * from "./render/surface.js";
2
3
  export * from "./render/buffer.js";
4
+ export * from "./render/palette.js";
3
5
  export * from "./render/measure.js";
4
- export * from "./anim.js";
6
+ export { parseColorRGBA, hslToRgba, idxToRGB, isColorInput, clamp255, clamp1, type RGBA, type ColorInput, } from "./colors.js";
5
7
  export * from "./keys.js";
6
- export { View } from "./ui/index.js";
7
- export { ShinyText } from "./ui/index.js";
8
- export { TextInput, TextInputState, editTextInput } from "./ui/index.js";
9
- export { Markdown } from "./ui/index.js";
10
- export type { TextInputStateLike, TextInputStatePlain, TextInputGeom, TextInputOptions } from "./ui/index.js";
11
- export type { MarkdownOptions } from "./ui/index.js";
12
- export { geometryStore } from "./ui/core/geometry-store.js";
13
- export type { ViewId, Rect as GeometryRect, InputGeom } from "./ui/core/geometry-store.js";
14
- export * from "./present/display.js";
8
+ export * from "./ansi.js";
9
+ export * from "./output.js";
10
+ export * from "./layout/axis-helpers.js";
15
11
  export type { TerminalBackend } from "./runtime/backend_node.js";
16
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAGzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC7G,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,YAAY,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAG1F,cAAc,sBAAsB,CAAA;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAA;AAG1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AAGnC,OAAO,EACN,cAAc,EACd,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAK,IAAI,EACT,KAAK,UAAU,GACf,MAAM,aAAa,CAAA;AAGpB,cAAc,WAAW,CAAA;AAGzB,cAAc,WAAW,CAAA;AAGzB,cAAc,aAAa,CAAA;AAG3B,cAAc,0BAA0B,CAAA;AAGxC,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -1,16 +1,18 @@
1
- // Re-export core modules
1
+ // Core types
2
+ export * from "./types.js";
3
+ // Rendering primitives
2
4
  export * from "./render/surface.js";
3
5
  export * from "./render/buffer.js";
6
+ export * from "./render/palette.js";
4
7
  export * from "./render/measure.js";
5
- export * from "./anim.js";
8
+ // Colors - additional exports not in surface.js (RGBA, parseColorRGBA for springs)
9
+ export { parseColorRGBA, hslToRgba, idxToRGB, isColorInput, clamp255, clamp1, } from "./colors.js";
10
+ // Input handling
6
11
  export * from "./keys.js";
7
- // UI (canonical View and curated exports)
8
- export { View } from "./ui/index.js";
9
- export { ShinyText } from "./ui/index.js";
10
- export { TextInput, TextInputState, editTextInput } from "./ui/index.js";
11
- export { Markdown } from "./ui/index.js";
12
- // Geometry store (last-known layout)
13
- export { geometryStore } from "./ui/core/geometry-store.js";
14
- // Renderers (optional public API)
15
- export * from "./present/display.js";
12
+ // ANSI escape sequences
13
+ export * from "./ansi.js";
14
+ // Output helpers (buffer diffing and emission)
15
+ export * from "./output.js";
16
+ // Layout utilities
17
+ export * from "./layout/axis-helpers.js";
16
18
  //# 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,yBAAyB;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,0CAA0C;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,qCAAqC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAG3D,kCAAkC;AAClC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,YAAY,CAAA;AAE1B,uBAAuB;AACvB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AAEnC,mFAAmF;AACnF,OAAO,EACN,cAAc,EACd,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,MAAM,GAGN,MAAM,aAAa,CAAA;AAEpB,iBAAiB;AACjB,cAAc,WAAW,CAAA;AAEzB,wBAAwB;AACxB,cAAc,WAAW,CAAA;AAEzB,+CAA+C;AAC/C,cAAc,aAAa,CAAA;AAE3B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA"}
package/dist/keys.d.ts CHANGED
@@ -14,5 +14,26 @@ export type KeyMsg = {
14
14
  /** Source protocol (raw|csiu|modifyOther|kitty). */
15
15
  source?: "raw" | "csiu" | "modify-other" | "kitty";
16
16
  };
17
+ export type MouseButton = "left" | "middle" | "right" | "scroll-up" | "scroll-down" | "none";
18
+ export type MouseMsg = {
19
+ type: "mouse";
20
+ button: MouseButton;
21
+ /** Column (0-based) */
22
+ x: number;
23
+ /** Row (0-based) */
24
+ y: number;
25
+ /** Press or release */
26
+ action: "press" | "release" | "drag" | "move";
27
+ ctrl?: boolean;
28
+ meta?: boolean;
29
+ shift?: boolean;
30
+ };
31
+ /** Union of keyboard and mouse input events */
32
+ export type InputMsg = KeyMsg | MouseMsg;
33
+ /**
34
+ * Decode input buffer into keyboard and mouse events.
35
+ * Use this instead of decodeKeys if you want mouse support.
36
+ */
37
+ export declare function decodeInput(buf: Buffer): Iterable<InputMsg>;
17
38
  export declare function decodeKeys(buf: Buffer): Iterable<KeyMsg>;
18
39
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GACf,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,KAAK,GACL,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,KAAK,GACL,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,CAAA;AAEV,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,KAAK,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,oDAAoD;IACpD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAA;CACnD,CAAA;AAID,wBAAiB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CA+NzD"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,OAAO,GAChB,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,KAAK,GACL,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,KAAK,GACL,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,CAAA;AAET,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,KAAK,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,oDAAoD;IACpD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,CAAA;AAE5F,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,uBAAuB;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,oBAAoB;IACpB,CAAC,EAAE,MAAM,CAAA;IACT,uBAAuB;IACvB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,+CAA+C;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;AA+IxC;;;GAGG;AACH,wBAAiB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CA4B5D;AAED,wBAAiB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CA+LzD"}