@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapped-text.js","sourceRoot":"","sources":["../../../src/ui/primitives/wrapped-text.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import type { Palette, Surface } from "../render/surface.js";
2
- import type { Rect } from "./core/geometry.js";
3
- import { type Stepper } from "../anim.js";
4
- import { View } from "./core/view.js";
5
- export type ShineTextOptions = {
6
- /**
7
- * Center position of the shine in character coordinates (can be fractional).
8
- * 0 = before first char, length-1 = last char. Values outside are fine for overscan.
9
- */
10
- center?: number;
11
- /**
12
- * Alternative to center: normalized progress 0..1 across the text.
13
- * If provided, takes precedence and maps to center internally.
14
- */
15
- progress?: number;
16
- /** Gaussian falloff spread; larger = wider shine. Default 2.25 */
17
- spread?: number;
18
- /** Base gray level (0..23). Default 12 */
19
- baseGray?: number;
20
- /** Max additional gray levels added at peak (0..23). Default 8 */
21
- boost?: number;
22
- /** Bold threshold on intensity (0..1). Default 0.75 */
23
- boldThreshold?: number;
24
- };
25
- export declare class ShinyText extends View {
26
- readonly text: string;
27
- readonly opts?: ShineTextOptions | undefined;
28
- constructor(text: string, opts?: ShineTextOptions | undefined);
29
- private getChars;
30
- protected measureContent(maxW: number, _maxH: number): {
31
- w: number;
32
- h: number;
33
- };
34
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
35
- }
36
- export type ViewShinyTextExt = {
37
- shineText(text: string, opts?: ShineTextOptions): View;
38
- };
39
- export declare const viewShinyText: ViewShinyTextExt;
40
- export type ShinyTextModel = {
41
- text: string;
42
- step: Stepper;
43
- speedMs: number;
44
- overscan: number;
45
- shine?: Omit<ShineTextOptions, "center" | "progress">;
46
- };
47
- export type InitShinyOptions = {
48
- speedMs?: number;
49
- overscan?: number;
50
- shine?: Omit<ShineTextOptions, "center" | "progress">;
51
- };
52
- export declare function initShinyText(text: string, opts?: InitShinyOptions): ShinyTextModel;
53
- export declare function tickShinyText(state: ShinyTextModel, nowMs: number): ShinyTextModel;
54
- export declare function setShinySpeed(state: ShinyTextModel, speedMs: number): ShinyTextModel;
55
- /** Create a ShinyText node from state. Use with chainers like .frame/.padding. */
56
- export declare function shinyText(state: ShinyTextModel): View;
57
- export declare namespace ShinyText {
58
- type Model = ShinyTextModel;
59
- type Options = ShineTextOptions;
60
- type MakeOptions = InitShinyOptions;
61
- const make: typeof initShinyText;
62
- const tick: typeof tickShinyText;
63
- const setSpeed: typeof setShinySpeed;
64
- const view: typeof shinyText;
65
- }
66
- //# sourceMappingURL=shinytext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shinytext.d.ts","sourceRoot":"","sources":["../../src/ui/shinytext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,qBAAa,SAAU,SAAQ,IAAI;IAE/B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB;gBADvB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,gBAAgB,YAAA;IAKlC,OAAO,CAAC,QAAQ;IAIhB,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;IAKpD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CA+C7D;AAGD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACvD,CAAA;AACD,eAAO,MAAM,aAAa,EAAE,gBAI3B,CAAA;AAMD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAA;CACtD,CAAA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAMnF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAGlF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAIpF;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAGrD;AAGD,yBAAiB,SAAS,CAAC;IACzB,KAAY,KAAK,GAAG,cAAc,CAAA;IAClC,KAAY,OAAO,GAAG,gBAAgB,CAAA;IACtC,KAAY,WAAW,GAAG,gBAAgB,CAAA;IAEnC,MAAM,IAAI,sBAAgB,CAAA;IAC1B,MAAM,IAAI,sBAAgB,CAAA;IAC1B,MAAM,QAAQ,sBAAgB,CAAA;IAC9B,MAAM,IAAI,kBAAY,CAAA;CAC9B"}
@@ -1,99 +0,0 @@
1
- /* shinytext.ts — reusable shining text component */
2
- import { Colors } from "../render/surface.js";
3
- import { Step } from "../anim.js";
4
- import { View } from "./core/view.js";
5
- export class ShinyText extends View {
6
- text;
7
- opts;
8
- constructor(text, opts) {
9
- super();
10
- this.text = text;
11
- this.opts = opts;
12
- }
13
- getChars() {
14
- return [...this.text];
15
- }
16
- measureContent(maxW, _maxH) {
17
- const w = Math.min(maxW, this.getChars().length);
18
- return { w, h: 1 };
19
- }
20
- renderContent(s, pal, rect) {
21
- const chars = this.getChars();
22
- const n = Math.min(rect.w, chars.length);
23
- if (rect.h <= 0 || n <= 0)
24
- return;
25
- const spread = this.opts?.spread ?? 2.25;
26
- const base = Math.max(0, Math.min(23, (this.opts?.baseGray ?? 12) | 0));
27
- const boost = Math.max(0, Math.min(23, (this.opts?.boost ?? 8) | 0));
28
- const boldTh = this.opts?.boldThreshold ?? 0.75;
29
- const progress = this.opts?.progress;
30
- const center = progress != null ? progress * (chars.length - 1) : (this.opts?.center ?? 0);
31
- const styleFor = (i) => {
32
- const d = (i - center) / Math.max(1e-3, spread);
33
- const intensity = Math.exp(-d * d);
34
- const level = Math.max(0, Math.min(23, base + Math.round(intensity * boost)));
35
- const bold = intensity > boldTh;
36
- return pal.id({ fg: Colors.gray(level), bold });
37
- };
38
- // Emit minimal runs per style id
39
- const y = rect.y;
40
- let x = rect.x;
41
- let runStyle = -1;
42
- let runStart = x;
43
- let runText = "";
44
- const flush = () => {
45
- if (runText.length > 0) {
46
- const maxW = Math.max(0, rect.x + rect.w - runStart);
47
- if (maxW > 0)
48
- s.drawText(runStart, y, runText, runStyle, maxW);
49
- runText = "";
50
- }
51
- };
52
- for (let i = 0; i < n; i++) {
53
- const ch = chars[i];
54
- const id = styleFor(i);
55
- if (id !== runStyle) {
56
- flush();
57
- runStyle = id;
58
- runStart = x;
59
- }
60
- runText += ch;
61
- x++;
62
- }
63
- flush();
64
- }
65
- }
66
- export const viewShinyText = {
67
- shineText(text, opts) {
68
- return new ShinyText(text, opts);
69
- },
70
- };
71
- export function initShinyText(text, opts) {
72
- const speedMs = Math.max(1, (opts?.speedMs ?? 40) | 0);
73
- const overscan = Math.max(0, (opts?.overscan ?? 6) | 0);
74
- const width = [...text].length;
75
- const step = Step.init(width + overscan * 2, speedMs, 0);
76
- return { text, step, speedMs, overscan, shine: opts?.shine };
77
- }
78
- export function tickShinyText(state, nowMs) {
79
- const step = Step.tick(state.step, nowMs);
80
- return { ...state, step };
81
- }
82
- export function setShinySpeed(state, speedMs) {
83
- const ms = Math.max(1, speedMs | 0);
84
- const step = { ...state.step, intervalMs: ms };
85
- return { ...state, speedMs: ms, step };
86
- }
87
- /** Create a ShinyText node from state. Use with chainers like .frame/.padding. */
88
- export function shinyText(state) {
89
- const center = state.step.index - state.overscan;
90
- return new ShinyText(state.text, { ...state.shine, center });
91
- }
92
- // Merged namespace to expose a cohesive API: ShinyText.make(), ShinyText.tick(), ShinyText.setSpeed(), ShinyText.view()
93
- (function (ShinyText) {
94
- ShinyText.make = initShinyText;
95
- ShinyText.tick = tickShinyText;
96
- ShinyText.setSpeed = setShinySpeed;
97
- ShinyText.view = shinyText;
98
- })(ShinyText || (ShinyText = {}));
99
- //# sourceMappingURL=shinytext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shinytext.js","sourceRoot":"","sources":["../../src/ui/shinytext.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- export type WrappedLine = {
2
- text: string;
3
- graphemes: string[];
4
- start: number;
5
- width: number;
6
- };
7
- export type Wrapped = {
8
- lines: Array<WrappedLine>;
9
- };
10
- export type WrapOptions = {
11
- widthFirst: number;
12
- widthOther: number;
13
- wordWrap: boolean;
14
- breakWords: boolean;
15
- };
16
- /** Compute wrapped lines with widths and grapheme start offsets (soft + hard breaks). */
17
- export declare function wrapText(value: string, opts: WrapOptions): Wrapped;
18
- /** Locate the visual line and column within that line for a grapheme cursor. */
19
- export declare function findVisualPos(wrap: Wrapped, cursor: number): {
20
- lineIdx: number;
21
- colInLine: number;
22
- };
23
- /** Sum display widths of graphemes up to a column to get visual cell X. */
24
- export declare function cellXWithinLine(wrap: Wrapped, lineIdx: number, colInLine: number): number;
25
- /** Map a visual cell X back to a cursor index on a given line (nearest-left by centers). */
26
- export declare function cursorFromCellX(wrap: Wrapped, lineIdx: number, x: number): number;
27
- /** Map cursor index to absolute caret coordinates using provided anchors. */
28
- export declare function caretXYFromCursor(wrap: Wrapped, cursor: number, anchors: {
29
- xFirst: number;
30
- xOther: number;
31
- }): {
32
- x: number;
33
- y: number;
34
- };
35
- //# sourceMappingURL=layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/ui/text/layout.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAC7F,MAAM,MAAM,OAAO,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;CAAE,CAAA;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAkClE;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAoBnG;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMzF;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWjF;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAM1B"}
@@ -1,102 +0,0 @@
1
- /* text/layout.ts — Shared text layout utilities for wrapping and caret mapping
2
- *
3
- * Single source of truth for:
4
- * - Computing wrapped visual lines (first-line width vs subsequent)
5
- * - Mapping between grapheme cursor index and visual caret coordinates
6
- * - Mapping from visual cell X back to cursor index (for vertical nav)
7
- *
8
- * These helpers mirror renderer behavior by delegating to render/measure.ts
9
- * (displayWidth, graphemes, sliceByWidth), ensuring edit-time and render-time
10
- * wrapping boundaries are identical.
11
- */
12
- import { displayWidth, graphemes, sliceByWidth } from "../../render/measure.js";
13
- /** Compute wrapped lines with widths and grapheme start offsets (soft + hard breaks). */
14
- export function wrapText(value, opts) {
15
- const lines = [];
16
- const widthFor = (isFirstVisual) => Math.max(0, isFirstVisual ? opts.widthFirst : opts.widthOther);
17
- let gOffset = 0; // grapheme index from start of whole value
18
- let isFirstVisual = true;
19
- // Split logical lines by explicit newlines
20
- const logicals = value.split("\n");
21
- for (let li = 0; li < logicals.length; li++) {
22
- const logical = logicals[li];
23
- let rest = logical;
24
- // Even for empty logical lines, emit one visual line (empty)
25
- if (rest.length === 0) {
26
- lines.push({ graphemes: [], start: gOffset, width: 0 });
27
- if (li < logicals.length - 1)
28
- gOffset += 1; // the "\n" grapheme
29
- isFirstVisual = false;
30
- continue;
31
- }
32
- while (rest.length > 0) {
33
- const maxW = widthFor(isFirstVisual);
34
- const { text } = sliceByWidth(rest, maxW);
35
- const used = text.length > 0 ? text : rest.slice(0, 1); // ensure progress even when maxW == 0
36
- const usedGs = graphemes(used);
37
- const w = displayWidth(used);
38
- lines.push({ graphemes: usedGs, start: gOffset, width: w });
39
- gOffset += usedGs.length;
40
- rest = rest.slice(used.length);
41
- isFirstVisual = false;
42
- if (used.length === 0)
43
- break;
44
- }
45
- if (li < logicals.length - 1)
46
- gOffset += 1; // account for newline between logical segments
47
- }
48
- return { lines: lines.map((l) => ({ ...l, text: l.graphemes.join("") })) };
49
- }
50
- /** Locate the visual line and column within that line for a grapheme cursor. */
51
- export function findVisualPos(wrap, cursor) {
52
- for (let i = 0; i < wrap.lines.length; i++) {
53
- const ln = wrap.lines[i];
54
- const start = ln.start;
55
- // Use next line's start as upper bound (accounts for newline gaps)
56
- const nextStart = i + 1 < wrap.lines.length ? wrap.lines[i + 1].start : Infinity;
57
- // Cursor in range [start, nextStart) belongs to this line
58
- if (cursor >= start && cursor < nextStart) {
59
- // For empty lines, cursor must be exactly at start
60
- if (ln.graphemes.length === 0) {
61
- return { lineIdx: i, colInLine: 0 };
62
- }
63
- const col = Math.min(cursor - start, ln.graphemes.length);
64
- return { lineIdx: i, colInLine: col };
65
- }
66
- }
67
- // Fallback: end of last line
68
- const last = wrap.lines[wrap.lines.length - 1];
69
- return { lineIdx: wrap.lines.length - 1, colInLine: last.graphemes.length };
70
- }
71
- /** Sum display widths of graphemes up to a column to get visual cell X. */
72
- export function cellXWithinLine(wrap, lineIdx, colInLine) {
73
- const ln = wrap.lines[lineIdx];
74
- const gs = ln.graphemes;
75
- let x = 0;
76
- for (let i = 0; i < Math.min(colInLine, gs.length); i++)
77
- x += displayWidth(gs[i]);
78
- return x;
79
- }
80
- /** Map a visual cell X back to a cursor index on a given line (nearest-left by centers). */
81
- export function cursorFromCellX(wrap, lineIdx, x) {
82
- const ln = wrap.lines[lineIdx];
83
- const gs = ln.graphemes;
84
- let acc = 0;
85
- for (let i = 0; i < gs.length; i++) {
86
- const w = displayWidth(gs[i]);
87
- const center = acc + w / 2;
88
- if (x < center)
89
- return ln.start + i;
90
- acc += w;
91
- }
92
- return ln.start + gs.length;
93
- }
94
- /** Map cursor index to absolute caret coordinates using provided anchors. */
95
- export function caretXYFromCursor(wrap, cursor, anchors) {
96
- const { lineIdx, colInLine } = findVisualPos(wrap, cursor);
97
- const baseX = lineIdx === 0 ? anchors.xFirst : anchors.xOther;
98
- const x = baseX + cellXWithinLine(wrap, lineIdx, colInLine);
99
- const y = lineIdx;
100
- return { x, y };
101
- }
102
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/ui/text/layout.ts"],"names":[],"mappings":"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"}
@@ -1,140 +0,0 @@
1
- import type { Palette, Surface, StyleSpec } from "../render/surface.js";
2
- import type { Rect } from "./core/geometry.js";
3
- import { View } from "./core/view.js";
4
- import { Schema } from "effect";
5
- import type { KeyMsg } from "../keys.js";
6
- /** Geometry info captured from last render. */
7
- export type TextInputGeom = {
8
- firstW: number;
9
- wrapW: number;
10
- };
11
- declare const TextInputState_base: Schema.Class<TextInputState, {
12
- value: typeof Schema.String;
13
- cursor: typeof Schema.Number;
14
- focused: Schema.optionalWith<typeof Schema.Boolean, {
15
- default: () => false;
16
- }>;
17
- _vcol: Schema.optionalWith<Schema.UndefinedOr<typeof Schema.Number>, {
18
- default: () => undefined;
19
- }>;
20
- _geom: Schema.optionalWith<typeof Schema.Unknown, {
21
- default: () => undefined;
22
- }>;
23
- }, Schema.Struct.Encoded<{
24
- value: typeof Schema.String;
25
- cursor: typeof Schema.Number;
26
- focused: Schema.optionalWith<typeof Schema.Boolean, {
27
- default: () => false;
28
- }>;
29
- _vcol: Schema.optionalWith<Schema.UndefinedOr<typeof Schema.Number>, {
30
- default: () => undefined;
31
- }>;
32
- _geom: Schema.optionalWith<typeof Schema.Unknown, {
33
- default: () => undefined;
34
- }>;
35
- }>, never, {
36
- readonly value: string;
37
- } & {
38
- readonly cursor: number;
39
- } & {
40
- readonly focused?: boolean | undefined;
41
- } & {
42
- readonly _vcol?: number | undefined;
43
- } & {
44
- readonly _geom?: unknown;
45
- }, {}, {}>;
46
- /**
47
- * TextInputState — immutable state for text input with built-in editing.
48
- *
49
- * Geometry is captured from render and used automatically in edit().
50
- * This eliminates the need to manually pass wrap widths.
51
- */
52
- export declare class TextInputState extends TextInputState_base {
53
- /** Create a new TextInputState with sensible defaults. */
54
- static of(value: string, opts?: {
55
- cursor?: number;
56
- focused?: boolean;
57
- }): TextInputState;
58
- /** Create empty focused state. */
59
- static empty(focused?: boolean): TextInputState;
60
- /**
61
- * Edit state in response to a key press.
62
- * Uses geometry captured from last render for accurate multiline navigation.
63
- */
64
- edit(key: KeyMsg, opts?: {
65
- multiline?: boolean;
66
- }): {
67
- state: TextInputState;
68
- quit?: boolean;
69
- };
70
- withValue(value: string, cursor?: number): TextInputState;
71
- withCursor(cursor: number): TextInputState;
72
- focus(): TextInputState;
73
- blur(): TextInputState;
74
- clear(): TextInputState;
75
- /** Internal: capture geometry from render. Called by TextInput view. */
76
- _captureGeom(geom: TextInputGeom): void;
77
- }
78
- /** Legacy plain-object type for backward compatibility. */
79
- export type TextInputStatePlain = {
80
- value: string;
81
- cursor: number;
82
- focused?: boolean;
83
- _vcol?: number;
84
- _geom?: TextInputGeom;
85
- };
86
- export type TextInputOptions = {
87
- placeholder?: string;
88
- /** Optional left prompt character(s), e.g. ">" */
89
- prompt?: string;
90
- /** Optional styles, merged with inherited styles */
91
- style?: {
92
- base?: StyleSpec;
93
- placeholder?: StyleSpec;
94
- prompt?: StyleSpec;
95
- caret?: StyleSpec;
96
- };
97
- /** Enable multiline input and rendering (supports newlines and wrapping). */
98
- multiline?: boolean;
99
- /** Word-wrapping preferences when multiline (defaults: wordWrap=true, breakWords=true). */
100
- wrap?: {
101
- wordWrap?: boolean;
102
- breakWords?: boolean;
103
- };
104
- };
105
- /** State that can be passed to TextInput: class instance or plain object. */
106
- export type TextInputStateLike = TextInputState | TextInputStatePlain;
107
- /** A minimal single-line text input view (no border). */
108
- export declare class TextInput extends View {
109
- readonly state: TextInputStateLike;
110
- readonly opts?: TextInputOptions | undefined;
111
- constructor(state: TextInputStateLike, opts?: TextInputOptions | undefined);
112
- protected measureContent(maxW: number, maxH: number): {
113
- w: number;
114
- h: number;
115
- };
116
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
117
- }
118
- export type ViewTextInputExt = {
119
- textInput(state: TextInputStateLike, opts?: TextInputOptions): View;
120
- };
121
- export declare const viewTextInput: ViewTextInputExt;
122
- export type TextInputEditResult = {
123
- state: TextInputState;
124
- quit?: boolean;
125
- };
126
- export type TextInputEditOptions = {
127
- /** Enable multiline editing semantics (enter inserts newline with shift). */
128
- multiline?: boolean;
129
- /** Visual wrap width for subsequent lines. If absent, only explicit newlines are considered. */
130
- wrapWidth?: number;
131
- /** Visual wrap width for first line (after prompt). Defaults to wrapWidth. */
132
- firstLineWidth?: number;
133
- };
134
- /**
135
- * Edit text input state with a key event.
136
- * @deprecated Use TextInputState.edit() instead for automatic geometry handling.
137
- */
138
- export declare function editTextInput(state: TextInputStateLike, key: KeyMsg, opts?: TextInputEditOptions): TextInputEditResult;
139
- export {};
140
- //# sourceMappingURL=textinput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textinput.d.ts","sourceRoot":"","sources":["../../src/ui/textinput.ts"],"names":[],"mappings":"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"}