@effect-tui/core 0.1.1 → 0.1.5

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
@@ -1,351 +0,0 @@
1
- import { Colors, mergeStyle } from "../render/surface.js";
2
- import { View } from "./core/view.js";
3
- import { VStack } from "./containers/vstack.js";
4
- import { WrappedText } from "./primitives/wrapped-text.js";
5
- import { InlineText } from "./inlinetext.js";
6
- /** Minimal Markdown renderer for terminal UI: block-level only. */
7
- export class Markdown extends View {
8
- text;
9
- opts;
10
- constructor(text, opts = {}) {
11
- super();
12
- this.text = text;
13
- this.opts = opts;
14
- }
15
- parseBlocks() {
16
- const lines = this.text.replace(/\r\n?/g, "\n").split("\n");
17
- const blocks = [];
18
- let i = 0;
19
- const isBlank = (s) => /^\s*$/.test(s);
20
- while (i < lines.length) {
21
- const line = lines[i];
22
- if (isBlank(line)) {
23
- i++;
24
- continue;
25
- }
26
- // Code fence
27
- const fence = line.match(/^```(?:(\w+))?\s*$/);
28
- if (fence) {
29
- const lang = fence[1];
30
- const buf = [];
31
- i++;
32
- while (i < lines.length && !/^```\s*$/.test(lines[i])) {
33
- buf.push(lines[i]);
34
- i++;
35
- }
36
- // skip closing fence if present
37
- if (i < lines.length && /^```\s*$/.test(lines[i]))
38
- i++;
39
- blocks.push({ type: "code", lang, text: buf.join("\n") });
40
- continue;
41
- }
42
- // Heading
43
- const h = line.match(/^(#{1,6})\s+(.*)$/);
44
- if (h) {
45
- blocks.push({ type: "heading", level: h[1].length, text: h[2] });
46
- i++;
47
- continue;
48
- }
49
- // Blockquote (consume contiguous ">" lines)
50
- if (/^>\s?/.test(line)) {
51
- const buf = [];
52
- while (i < lines.length && /^>\s?/.test(lines[i])) {
53
- buf.push(lines[i].replace(/^>\s?/, ""));
54
- i++;
55
- }
56
- blocks.push({ type: "quote", text: buf.join("\n") });
57
- continue;
58
- }
59
- // List (unordered or ordered) — support -,*,+, • and 1., 1)
60
- let m = line.match(/^\s*([-*+]|•)\s+(.*)$/);
61
- let ordered = false;
62
- if (!m) {
63
- const om = line.match(/^\s*(\d+)[.)]\s+(.*)$/);
64
- if (om) {
65
- ordered = true;
66
- m = [om[0], om[1], om[2]];
67
- }
68
- }
69
- if (m) {
70
- const items = [];
71
- while (i < lines.length) {
72
- const l = lines[i];
73
- const um = l.match(/^\s*([-*+]|•)\s+(.*)$/);
74
- const om = l.match(/^\s*(\d+)[.)]\s+(.*)$/);
75
- if ((ordered && om) || (!ordered && um)) {
76
- items.push((ordered ? om?.[2] : um?.[2])?.trimEnd() ?? "");
77
- i++;
78
- }
79
- else if (isBlank(l)) {
80
- i++;
81
- break;
82
- }
83
- else {
84
- break;
85
- }
86
- }
87
- blocks.push({ type: "list", ordered, items });
88
- continue;
89
- }
90
- // Paragraph — consume until blank or next block
91
- const buf = [line];
92
- i++;
93
- while (i < lines.length) {
94
- const l = lines[i];
95
- if (isBlank(l)) {
96
- i++;
97
- break;
98
- }
99
- if (/^```/.test(l) ||
100
- /^(#{1,6})\s+/.test(l) ||
101
- /^>\s?/.test(l) ||
102
- /^\s*([-*+])\s+/.test(l) ||
103
- /^\s*\d+\.\s+/.test(l)) {
104
- break;
105
- }
106
- buf.push(l);
107
- i++;
108
- }
109
- blocks.push({ type: "paragraph", text: buf.join("\n") });
110
- }
111
- return blocks;
112
- }
113
- parseInline(text, base) {
114
- // Recursive descent for bold/italic/strike/link; code spans take precedence and are not parsed inside.
115
- const frags = [];
116
- const push = (t, style) => {
117
- if (t.length === 0)
118
- return;
119
- frags.push({ text: t, style });
120
- };
121
- const walk = (s, inherited) => {
122
- let i = 0;
123
- while (i < s.length) {
124
- // Find nearest marker
125
- const idxs = [];
126
- const find = (re, kind) => {
127
- const m = re.exec(s.slice(i));
128
- if (m && m.index >= 0)
129
- idxs.push({ i: i + m.index, kind });
130
- };
131
- // Prioritize code and link first
132
- find(/`/, "code");
133
- find(/\[/, "link");
134
- find(/\*\*|__/, "bold");
135
- find(/\*|_/, "italic");
136
- find(/~~/, "strike");
137
- if (idxs.length === 0) {
138
- push(s.slice(i), inherited);
139
- break;
140
- }
141
- idxs.sort((a, b) => a.i - b.i);
142
- const next = idxs[0];
143
- if (next.i > i)
144
- push(s.slice(i, next.i), inherited);
145
- i = next.i;
146
- switch (next.kind) {
147
- case "code": {
148
- const j = s.indexOf("`", i + 1);
149
- if (j === -1) {
150
- push(s.slice(i), inherited);
151
- i = s.length;
152
- }
153
- else {
154
- const inner = s.slice(i + 1, j);
155
- push(inner, mergeStyle(inherited, { bg: Colors.gray(2), fg: Colors.gray(15) }));
156
- i = j + 1;
157
- }
158
- break;
159
- }
160
- case "link": {
161
- const close = s.indexOf("]", i + 1);
162
- if (close !== -1 && s[close + 1] === "(") {
163
- const end = s.indexOf(")", close + 2);
164
- if (end !== -1) {
165
- const label = s.slice(i + 1, close);
166
- const url = s.slice(close + 2, end);
167
- // Style label as link; append a thin gray url in parentheses
168
- const linkStyle = mergeStyle(inherited, { fg: Colors.brightBlue, underline: true });
169
- walk(label, linkStyle);
170
- push(` (${url})`, mergeStyle(inherited, { fg: Colors.gray(12), underline: false }));
171
- i = end + 1;
172
- break;
173
- }
174
- }
175
- // Fallback: treat '[' as literal
176
- push("[", inherited);
177
- i += 1;
178
- break;
179
- }
180
- case "bold": {
181
- const marker = s.slice(i, i + 2);
182
- const j = s.indexOf(marker, i + 2);
183
- if (j === -1) {
184
- push(s.slice(i), inherited);
185
- i = s.length;
186
- }
187
- else {
188
- const inner = s.slice(i + 2, j);
189
- walk(inner, mergeStyle(inherited, { bold: true }));
190
- i = j + 2;
191
- }
192
- break;
193
- }
194
- case "strike": {
195
- const j = s.indexOf("~~", i + 2);
196
- if (j === -1) {
197
- push(s.slice(i), inherited);
198
- i = s.length;
199
- }
200
- else {
201
- const inner = s.slice(i + 2, j);
202
- walk(inner, mergeStyle(inherited, { fg: Colors.gray(10) }));
203
- i = j + 2;
204
- }
205
- break;
206
- }
207
- case "italic": {
208
- const marker = s[i];
209
- const j = s.indexOf(marker, i + 1);
210
- if (j === -1) {
211
- push(s.slice(i), inherited);
212
- i = s.length;
213
- }
214
- else {
215
- const inner = s.slice(i + 1, j);
216
- walk(inner, mergeStyle(inherited, { italic: true }));
217
- i = j + 1;
218
- }
219
- break;
220
- }
221
- }
222
- }
223
- };
224
- walk(text, base);
225
- return frags;
226
- }
227
- blockViews(_maxW) {
228
- const spacing = this.opts.spacing ?? 1;
229
- const nodes = [];
230
- const blocks = this.parseBlocks();
231
- const styles = this.opts.styles ?? {};
232
- const headingDefault = {
233
- 1: { fg: Colors.brightCyan, bold: true },
234
- 2: { fg: Colors.brightBlue, bold: true },
235
- 3: { fg: Colors.brightMagenta, bold: true },
236
- };
237
- for (const b of blocks) {
238
- switch (b.type) {
239
- case "heading": {
240
- const style = styles.heading?.[b.level] ?? headingDefault[b.level];
241
- const fr = this.parseInline(b.text, style);
242
- nodes.push(new InlineText(fr, { wordWrap: true, breakWords: true }));
243
- break;
244
- }
245
- case "paragraph": {
246
- const fr = this.parseInline(b.text, styles.paragraph);
247
- nodes.push(new InlineText(fr, { wordWrap: true, breakWords: true }));
248
- break;
249
- }
250
- case "code": {
251
- let node = new WrappedText(b.text, { wordWrap: false }).style(styles.code ?? { fg: Colors.gray(15), bg: Colors.gray(2) });
252
- // Use border if requested
253
- if (this.opts.styles?.codeBorder) {
254
- node = node.border({
255
- kind: this.opts.styles.codeBorder.kind ?? "rounded",
256
- color: this.opts.styles.codeBorder.color ?? Colors.gray(8),
257
- padding: this.opts.styles.codeBorder.padding ?? { x: 1, y: 0 },
258
- });
259
- }
260
- nodes.push(node);
261
- break;
262
- }
263
- case "quote": {
264
- // Custom node draws a left bar and renders wrapped lines with a 2-col indent.
265
- class QuoteBlock extends View {
266
- child;
267
- constructor(child) {
268
- super();
269
- this.child = child;
270
- }
271
- measureContent(maxW, maxH) {
272
- const innerW = Math.max(0, maxW - 2);
273
- const m = this.child.measure(innerW, maxH);
274
- return { w: Math.min(maxW, m.w + 2), h: m.h };
275
- }
276
- renderContent(s, pal, rect) {
277
- const idBar = pal.id({ fg: Colors.gray(10) });
278
- for (let yy = 0; yy < rect.h; yy++)
279
- s.drawCP(rect.x, rect.y + yy, "│".codePointAt(0), idBar);
280
- const r = { x: rect.x + 2, y: rect.y, w: Math.max(0, rect.w - 2), h: rect.h };
281
- this.child.render(s, pal, r);
282
- }
283
- }
284
- const quoteStyle = styles.quote ?? { fg: Colors.gray(14) };
285
- const rows = b.text.split("\n").map((line) => new InlineText(this.parseInline(line, quoteStyle), {
286
- wordWrap: true,
287
- breakWords: true,
288
- }));
289
- const body = new VStack(rows, 0);
290
- nodes.push(new QuoteBlock(body));
291
- break;
292
- }
293
- case "list": {
294
- const bulletStyle = styles.listBullet ?? { fg: Colors.gray(12), bold: true };
295
- b.items.forEach((item, idx) => {
296
- const mark = b.ordered ? `${idx + 1}. ` : "• ";
297
- const fragments = [
298
- { text: mark, style: bulletStyle },
299
- ...this.parseInline(item, { fg: Colors.white }),
300
- ];
301
- const row = new InlineText(fragments, { wordWrap: true, breakWords: true });
302
- nodes.push(row);
303
- // Add explicit spacer between list items to keep things readable
304
- if (idx < b.items.length - 1 && spacing > 0)
305
- nodes.push(new WrappedText("", { wordWrap: false }));
306
- });
307
- break;
308
- }
309
- }
310
- // Vertical spacing between blocks
311
- if (spacing > 0)
312
- nodes.push(new WrappedText("", { wordWrap: false }));
313
- }
314
- // Trim trailing spacer
315
- if (nodes.length > 0) {
316
- // Heuristic: empty WrappedText measures height 1 and no content; leave one blank line at most
317
- nodes.pop();
318
- }
319
- return nodes;
320
- }
321
- measureContent(maxW, maxH) {
322
- const nodes = this.blockViews(maxW);
323
- let w = 0;
324
- let h = 0;
325
- for (const n of nodes) {
326
- const m = n.measure(maxW, Math.max(0, maxH - h));
327
- w = Math.max(w, m.w);
328
- h = Math.min(maxH, h + m.h);
329
- if (h >= maxH)
330
- break;
331
- }
332
- return { w: Math.min(maxW, w), h };
333
- }
334
- renderContent(s, pal, rect) {
335
- const nodes = this.blockViews(rect.w);
336
- let y = rect.y;
337
- for (const n of nodes) {
338
- if (y >= rect.y + rect.h)
339
- break;
340
- const m = n.measure(rect.w, Math.max(0, rect.y + rect.h - y));
341
- n.render(s, pal, { x: rect.x, y, w: Math.min(rect.w, m.w), h: Math.min(rect.h, m.h) });
342
- y += m.h;
343
- }
344
- }
345
- }
346
- export const viewMarkdown = {
347
- markdown(text, opts) {
348
- return new Markdown(text, opts);
349
- },
350
- };
351
- //# sourceMappingURL=markdown.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import type { Palette, Surface, StyleSpec, ColorLike } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect } from "../core/geometry.js";
4
- export type BorderKind = "none" | "rounded" | "square" | "ascii";
5
- export type BorderOptions = {
6
- kind?: BorderKind;
7
- color?: ColorLike;
8
- padding?: number | {
9
- x?: number;
10
- y?: number;
11
- };
12
- chars?: Partial<{
13
- tl: string;
14
- tr: string;
15
- bl: string;
16
- br: string;
17
- h: string;
18
- v: string;
19
- }>;
20
- style?: StyleSpec;
21
- };
22
- export declare class Border extends View {
23
- readonly child: View;
24
- readonly opts?: BorderOptions | undefined;
25
- constructor(child: View, opts?: BorderOptions | undefined);
26
- private get thickness();
27
- protected measureContent(maxW: number, maxH: number): {
28
- w: number;
29
- h: number;
30
- };
31
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
32
- }
33
- //# sourceMappingURL=border.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"border.d.ts","sourceRoot":"","sources":["../../../src/ui/modifiers/border.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAErF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;AAChE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzF,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAoBD,qBAAa,MAAO,SAAQ,IAAI;IAE5B,QAAQ,CAAC,KAAK,EAAE,IAAI;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa;gBADpB,KAAK,EAAE,IAAI,EACX,IAAI,CAAC,EAAE,aAAa,YAAA;IAK/B,OAAO,KAAK,SAAS,GAEpB;IAED,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAUnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CA6C7D"}
@@ -1,82 +0,0 @@
1
- import { Colors, parseColor } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- function resolveBorderPadding(p) {
4
- if (typeof p === "number")
5
- return { x: Math.max(0, p | 0), y: Math.max(0, p | 0) };
6
- return { x: Math.max(0, p?.x ?? 0), y: Math.max(0, p?.y ?? 0) };
7
- }
8
- function borderKindChars(kind) {
9
- switch (kind) {
10
- case "rounded":
11
- return { tl: "╭", tr: "╮", bl: "╰", br: "╯", h: "─", v: "│" };
12
- case "square":
13
- return { tl: "┌", tr: "┐", bl: "└", br: "┘", h: "─", v: "│" };
14
- case "ascii":
15
- return { tl: "+", tr: "+", bl: "+", br: "+", h: "-", v: "|" };
16
- default:
17
- return { tl: "", tr: "", bl: "", br: "", h: "", v: "" };
18
- }
19
- }
20
- export class Border extends View {
21
- child;
22
- opts;
23
- constructor(child, opts) {
24
- super();
25
- this.child = child;
26
- this.opts = opts;
27
- }
28
- get thickness() {
29
- return this.opts?.kind === "none" ? 0 : 1;
30
- }
31
- measureContent(maxW, maxH) {
32
- const t = this.thickness;
33
- const pad = resolveBorderPadding(this.opts?.padding);
34
- const m = this.child.measure(Math.max(0, maxW - t * 2 - pad.x * 2), Math.max(0, maxH - t * 2 - pad.y * 2));
35
- return {
36
- w: Math.min(maxW, m.w + t * 2 + pad.x * 2),
37
- h: Math.min(maxH, m.h + t * 2 + pad.y * 2),
38
- };
39
- }
40
- renderContent(s, pal, rect) {
41
- const k = this.opts?.kind ?? "square";
42
- const t = this.thickness;
43
- const pad = resolveBorderPadding(this.opts?.padding);
44
- const baseChars = borderKindChars(k);
45
- const chars = { ...baseChars, ...(this.opts?.chars ?? {}) };
46
- const safeChars = {
47
- tl: (chars.tl ?? baseChars.tl),
48
- tr: (chars.tr ?? baseChars.tr),
49
- bl: (chars.bl ?? baseChars.bl),
50
- br: (chars.br ?? baseChars.br),
51
- h: (chars.h ?? baseChars.h),
52
- v: (chars.v ?? baseChars.v),
53
- };
54
- const borderStyle = this.opts?.style ?? {};
55
- const color = this.opts?.color != null ? parseColor(this.opts.color) : Colors.gray(8);
56
- const idBorder = pal.id({ ...borderStyle, fg: color ?? borderStyle.fg });
57
- const w = rect.w;
58
- const h = rect.h;
59
- if (w <= 0 || h <= 0)
60
- return;
61
- if (t === 1 && w >= 2 && h >= 2) {
62
- s.drawCP(rect.x, rect.y, safeChars.tl.codePointAt(0), idBorder);
63
- s.fillRect(rect.x + 1, rect.y, w - 2, 1, safeChars.h.codePointAt(0), idBorder);
64
- s.drawCP(rect.x + w - 1, rect.y, safeChars.tr.codePointAt(0), idBorder);
65
- for (let yy = rect.y + 1; yy < rect.y + h - 1; yy++) {
66
- s.drawCP(rect.x, yy, safeChars.v.codePointAt(0), idBorder);
67
- s.drawCP(rect.x + w - 1, yy, safeChars.v.codePointAt(0), idBorder);
68
- }
69
- s.drawCP(rect.x, rect.y + h - 1, safeChars.bl.codePointAt(0), idBorder);
70
- s.fillRect(rect.x + 1, rect.y + h - 1, w - 2, 1, safeChars.h.codePointAt(0), idBorder);
71
- s.drawCP(rect.x + w - 1, rect.y + h - 1, safeChars.br.codePointAt(0), idBorder);
72
- }
73
- const inner = {
74
- x: rect.x + t + pad.x,
75
- y: rect.y + t + pad.y,
76
- w: Math.max(0, rect.w - (t + pad.x) * 2),
77
- h: Math.max(0, rect.h - (t + pad.y) * 2),
78
- };
79
- this.child.render(s, pal, inner);
80
- }
81
- }
82
- //# sourceMappingURL=border.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"border.js","sourceRoot":"","sources":["../../../src/ui/modifiers/border.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAYtC,SAAS,oBAAoB,CAAC,CAA4B;IACxD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;IAClF,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,IAAgB;IACvC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAC/D,KAAK,QAAQ;YACX,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAC/D,KAAK,OAAO;YACV,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAC/D;YACE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,MAAO,SAAQ,IAAI;IAEnB;IACA;IAFX,YACW,KAAW,EACX,IAAoB;QAE7B,KAAK,EAAE,CAAA;QAHE,UAAK,GAAL,KAAK,CAAM;QACX,SAAI,GAAJ,IAAI,CAAgB;IAG/B,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QACxB,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1G,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SAC3C,CAAA;IACH,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAA;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QACxB,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAA;QAE3D,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAW;YACxC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAW;YACxC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAW;YACxC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAW;YACxC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAW;YACrC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAW;SACtC,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrF,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,KAAK,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;QAExE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAM;QAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YAChE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YAC/E,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YACxE,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;gBAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YACrE,CAAC;YACD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YACxE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;YACvF,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAA;QAClF,CAAC;QAED,MAAM,KAAK,GAAS;YAClB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACrB,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACrB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACzC,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect } from "../core/geometry.js";
4
- export declare class Fill extends View {
5
- readonly child: View;
6
- readonly axis: "horizontal" | "vertical";
7
- constructor(child: View, axis: "horizontal" | "vertical");
8
- protected measureContent(maxW: number, maxH: number): {
9
- w: number;
10
- h: number;
11
- };
12
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
13
- }
14
- //# sourceMappingURL=fill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/ui/modifiers/fill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAG/C,qBAAa,IAAK,SAAQ,IAAI;IAE1B,QAAQ,CAAC,KAAK,EAAE,IAAI;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU;gBAD/B,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,YAAY,GAAG,UAAU;IAK1C,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAWnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAG7D"}
@@ -1,25 +0,0 @@
1
- import { View } from "../core/view.js";
2
- // Fill wrapper (SwiftUI's .frame(maxWidth: .infinity) / .frame(maxHeight: .infinity))
3
- export class Fill extends View {
4
- child;
5
- axis;
6
- constructor(child, axis) {
7
- super();
8
- this.child = child;
9
- this.axis = axis;
10
- }
11
- measureContent(maxW, maxH) {
12
- const childMeasure = this.child.measure(maxW, maxH);
13
- // Fill the requested axis to maximum available space
14
- if (this.axis === "horizontal") {
15
- return { w: maxW, h: childMeasure.h };
16
- }
17
- else {
18
- return { w: childMeasure.w, h: maxH };
19
- }
20
- }
21
- renderContent(s, pal, rect) {
22
- this.child.render(s, pal, rect);
23
- }
24
- }
25
- //# sourceMappingURL=fill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../../src/ui/modifiers/fill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,sFAAsF;AACtF,MAAM,OAAO,IAAK,SAAQ,IAAI;IAEjB;IACA;IAFX,YACW,KAAW,EACX,IAA+B;QAExC,KAAK,EAAE,CAAA;QAHE,UAAK,GAAL,KAAK,CAAM;QACX,SAAI,GAAJ,IAAI,CAA2B;IAG1C,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEnD,qDAAqD;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QACvC,CAAC;IACH,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;CACF"}
@@ -1,23 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect, Align2D } from "../core/geometry.js";
4
- export interface FrameSpec {
5
- width?: number;
6
- height?: number;
7
- minWidth?: number;
8
- maxWidth?: number;
9
- minHeight?: number;
10
- maxHeight?: number;
11
- alignment?: Align2D;
12
- }
13
- export declare class Frame extends View {
14
- readonly child: View;
15
- readonly opts: FrameSpec;
16
- constructor(child: View, opts: FrameSpec);
17
- protected measureContent(maxW: number, maxH: number): {
18
- w: number;
19
- h: number;
20
- };
21
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
22
- }
23
- //# sourceMappingURL=frame.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../src/ui/modifiers/frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,KAAM,SAAQ,IAAI;IAE3B,QAAQ,CAAC,KAAK,EAAE,IAAI;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS;gBADf,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,SAAS;IAK1B,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAmBnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAgC7D"}
@@ -1,54 +0,0 @@
1
- import { View } from "../core/view.js";
2
- export class Frame extends View {
3
- child;
4
- opts;
5
- constructor(child, opts) {
6
- super();
7
- this.child = child;
8
- this.opts = opts;
9
- }
10
- measureContent(maxW, maxH) {
11
- const childMeasure = this.child.measure(maxW, maxH);
12
- const fs = this.opts;
13
- const capW = Math.min(maxW, fs.maxWidth ?? maxW);
14
- const capH = Math.min(maxH, fs.maxHeight ?? maxH);
15
- let targetW = fs.width === Infinity ? capW : (fs.width ?? childMeasure.w);
16
- let targetH = fs.height === Infinity ? capH : (fs.height ?? childMeasure.h);
17
- targetW = Math.max(fs.minWidth ?? 0, Math.min(capW, targetW));
18
- targetH = Math.max(fs.minHeight ?? 0, Math.min(capH, targetH));
19
- return {
20
- w: Math.min(maxW, targetW),
21
- h: Math.min(maxH, targetH),
22
- };
23
- }
24
- renderContent(s, pal, rect) {
25
- // Measure child within our rect bounds
26
- const childMeasure = this.child.measure(rect.w, rect.h);
27
- const childW = Math.min(rect.w, childMeasure.w);
28
- const childH = Math.min(rect.h, childMeasure.h);
29
- // Apply alignment
30
- const alignment = this.opts.alignment ?? { h: "leading", v: "top" };
31
- let offsetX = 0;
32
- let offsetY = 0;
33
- if (alignment.h === "center") {
34
- offsetX = Math.floor((rect.w - childW) / 2);
35
- }
36
- else if (alignment.h === "trailing") {
37
- offsetX = Math.max(0, rect.w - childW);
38
- }
39
- if (alignment.v === "center") {
40
- offsetY = Math.floor((rect.h - childH) / 2);
41
- }
42
- else if (alignment.v === "bottom") {
43
- offsetY = Math.max(0, rect.h - childH);
44
- }
45
- const childRect = {
46
- x: rect.x + offsetX,
47
- y: rect.y + offsetY,
48
- w: childW,
49
- h: childH,
50
- };
51
- this.child.render(s, pal, childRect);
52
- }
53
- }
54
- //# sourceMappingURL=frame.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../src/ui/modifiers/frame.ts"],"names":[],"mappings":"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"}