@effect-tui/core 0.1.1 → 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,29 +0,0 @@
1
- /* geometry-store.ts — last-known layout/geometry store keyed by ViewId */
2
- class GeometryStoreImpl {
3
- frameNo = 0;
4
- rects = new Map();
5
- inputs = new Map();
6
- beginFrame(frameNo) {
7
- // Clear for the new render pass; consumers will read after endFrame
8
- this.frameNo = frameNo ?? this.frameNo + 1;
9
- this.rects.clear();
10
- this.inputs.clear();
11
- }
12
- endFrame() {
13
- // no-op for now; snapshot already in maps
14
- }
15
- setRect(id, rect) {
16
- this.rects.set(id, rect);
17
- }
18
- setInputGeom(id, g) {
19
- this.inputs.set(id, g);
20
- }
21
- getRect(id) {
22
- return this.rects.get(id);
23
- }
24
- getInputGeom(id) {
25
- return this.inputs.get(id);
26
- }
27
- }
28
- export const geometryStore = new GeometryStoreImpl();
29
- //# sourceMappingURL=geometry-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-store.js","sourceRoot":"","sources":["../../../src/ui/core/geometry-store.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAQ1E,MAAM,iBAAiB;IACb,OAAO,GAAG,CAAC,CAAA;IACX,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAA;IAC/B,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IAE7C,UAAU,CAAC,OAAgB;QACzB,oEAAoE;QACpE,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,QAAQ;QACN,0CAA0C;IAC5C,CAAC;IAED,OAAO,CAAC,EAAU,EAAE,IAAU;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,YAAY,CAAC,EAAU,EAAE,CAAY;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3B,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,CAAA"}
@@ -1,34 +0,0 @@
1
- export type Rect = {
2
- x: number;
3
- y: number;
4
- w: number;
5
- h: number;
6
- };
7
- export type HAlign = "leading" | "center" | "trailing";
8
- export type VAlign = "top" | "center" | "bottom";
9
- export type Align2D = {
10
- h: HAlign;
11
- v: VAlign;
12
- };
13
- export declare const Align: {
14
- leading: HAlign;
15
- center: HAlign;
16
- trailing: HAlign;
17
- top: VAlign;
18
- bottom: VAlign;
19
- topLeading: Align2D;
20
- topTrailing: Align2D;
21
- bottomLeading: Align2D;
22
- bottomTrailing: Align2D;
23
- center2D: Align2D;
24
- };
25
- export type FrameSpec = {
26
- width?: number;
27
- height?: number;
28
- minWidth?: number;
29
- maxWidth?: number;
30
- minHeight?: number;
31
- maxHeight?: number;
32
- alignment?: Align2D;
33
- };
34
- //# sourceMappingURL=geometry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/ui/core/geometry.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AACtD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAChD,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE9C,eAAO,MAAM,KAAK;aACM,MAAM;YACR,MAAM;cACF,MAAM;SAChB,MAAM;YACA,MAAM;gBACgB,OAAO;iBACL,OAAO;mBACH,OAAO;oBACL,OAAO;cACf,OAAO;CAClD,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,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,CAAA"}
@@ -1,14 +0,0 @@
1
- // Basic geometry types and alignments
2
- export const Align = {
3
- leading: "leading",
4
- center: "center",
5
- trailing: "trailing",
6
- top: "top",
7
- bottom: "bottom",
8
- topLeading: { h: "leading", v: "top" },
9
- topTrailing: { h: "trailing", v: "top" },
10
- bottomLeading: { h: "leading", v: "bottom" },
11
- bottomTrailing: { h: "trailing", v: "bottom" },
12
- center2D: { h: "center", v: "center" },
13
- };
14
- //# sourceMappingURL=geometry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/ui/core/geometry.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAQtC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,SAAmB;IAC5B,MAAM,EAAE,QAAkB;IAC1B,QAAQ,EAAE,UAAoB;IAC9B,GAAG,EAAE,KAAe;IACpB,MAAM,EAAE,QAAkB;IAC1B,UAAU,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAa;IACjD,WAAW,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAa;IACnD,aAAa,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAa;IACvD,cAAc,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAa;IACzD,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAa;CAClD,CAAA"}
@@ -1,25 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import type { Rect } from "./geometry.js";
3
- export interface View {
4
- measure(maxW: number, maxH: number): {
5
- w: number;
6
- h: number;
7
- };
8
- render(s: Surface, pal: Palette, rect: Rect): void;
9
- }
10
- /**
11
- * Abstract base class providing a minimal View foundation.
12
- * Subclasses implement measureContent/renderContent for their specific behavior.
13
- * All styling, padding, and frame logic has been moved to modifier classes.
14
- */
15
- export declare abstract class View implements View {
16
- protected _id?: string;
17
- /** Attach a stable id to this view for geometry tracking. */
18
- id(id: string): View;
19
- protected abstract measureContent(maxW: number, maxH: number): {
20
- w: number;
21
- h: number;
22
- };
23
- protected abstract renderContent(s: Surface, pal: Palette, rect: Rect): void;
24
- }
25
- //# sourceMappingURL=view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/ui/core/view.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAGzC,MAAM,WAAW,IAAI;IACnB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;CACnD;AAED;;;;GAIG;AACH,8BAAsB,IAAK,YAAW,IAAI;IACxC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IAEtB,6DAA6D;IAC7D,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAsBpB,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IACvF,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;CAC7E"}
@@ -1,34 +0,0 @@
1
- /* view.ts — Core View class (renamed from CoreViewBase)
2
- *
3
- * This module defines the fundamental UI View class with minimal base functionality.
4
- * It has NO imports of concrete modifiers to avoid circular dependencies.
5
- */
6
- import { geometryStore } from "./geometry-store.js";
7
- /**
8
- * Abstract base class providing a minimal View foundation.
9
- * Subclasses implement measureContent/renderContent for their specific behavior.
10
- * All styling, padding, and frame logic has been moved to modifier classes.
11
- */
12
- export class View {
13
- _id;
14
- /** Attach a stable id to this view for geometry tracking. */
15
- id(id) {
16
- const c = Object.create(Object.getPrototypeOf(this));
17
- // copy own fields
18
- for (const k of Object.keys(this))
19
- c[k] = this[k];
20
- c._id = id;
21
- return c;
22
- }
23
- measure(maxW, maxH) {
24
- return this.measureContent(maxW, maxH);
25
- }
26
- render(s, pal, rect) {
27
- // Record geometry if id is present
28
- if (this._id) {
29
- geometryStore.setRect(this._id, rect);
30
- }
31
- this.renderContent(s, pal, rect);
32
- }
33
- }
34
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/ui/core/view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAOnD;;;;GAIG;AACH,MAAM,OAAgB,IAAI;IACd,GAAG,CAAS;IAEtB,6DAA6D;IAC7D,EAAE,CAAC,EAAU;QACX,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAS,CAAA;QAC5D,kBAAkB;QAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAsB;YAAG,CAAS,CAAC,CAAC,CAAC,GAAI,IAAY,CAAC,CAAC,CAAC,CAAA;QACxF,CAAC,CAAC,GAAG,GAAG,EAAE,CAAA;QACV,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAY;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QACzC,mCAAmC;QACnC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;CAKF"}
@@ -1,44 +0,0 @@
1
- import "./install.js";
2
- export * from "./core/geometry.js";
3
- export * from "./primitives/text.js";
4
- export * from "./primitives/rectangle.js";
5
- export * from "./primitives/spacer.js";
6
- export * from "./primitives/wrapped-text.js";
7
- export * from "./containers/hstack.js";
8
- export * from "./containers/vstack.js";
9
- export * from "./containers/zstack.js";
10
- export * from "./containers/scroll.js";
11
- export * from "./containers/canvas.js";
12
- export * from "./containers/geometry-reader.js";
13
- export * from "./modifiers/border.js";
14
- export * from "./modifiers/offset.js";
15
- export * from "./modifiers/fill.js";
16
- export * from "./modifiers/padding.js";
17
- export { Frame, type FrameSpec as ModifierFrameSpec } from "./modifiers/frame.js";
18
- export * from "./modifiers/styled.js";
19
- export { ShinyText } from "./shinytext.js";
20
- export { TextInput, TextInputState, editTextInput, type TextInputStateLike, type TextInputStatePlain, type TextInputGeom, type TextInputOptions, } from "./textinput.js";
21
- export { Markdown, type MarkdownOptions } from "./markdown.js";
22
- import { View as ViewClass } from "./core/view.js";
23
- import { ViewConstructors } from "./view-constructors.js";
24
- declare module "./core/view.js" {
25
- namespace View {
26
- const text: typeof ViewConstructors.text;
27
- const wrappedText: typeof ViewConstructors.wrappedText;
28
- const rect: typeof ViewConstructors.rect;
29
- const spacer: typeof ViewConstructors.spacer;
30
- const hstack: typeof ViewConstructors.hstack;
31
- const vstack: typeof ViewConstructors.vstack;
32
- const zstack: typeof ViewConstructors.zstack;
33
- const scroll: typeof ViewConstructors.scroll;
34
- const canvas: typeof ViewConstructors.canvas;
35
- const geometryReader: typeof ViewConstructors.geometryReader;
36
- const overlay: typeof ViewConstructors.overlay;
37
- const textInput: typeof ViewConstructors.textInput;
38
- const markdown: typeof ViewConstructors.markdown;
39
- const Colors: typeof ViewConstructors.Colors;
40
- }
41
- }
42
- declare const View: typeof ViewClass & typeof ViewConstructors;
43
- export { View };
44
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAGA,OAAO,cAAc,CAAA;AAGrB,cAAc,oBAAoB,CAAA;AAKlC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAG5C,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAG/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACjF,cAAc,uBAAuB,CAAA;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,SAAS,EACT,cAAc,EACd,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,IAAI,CAAC;QAEb,MAAM,IAAI,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAA;QACxC,MAAM,WAAW,EAAE,OAAO,gBAAgB,CAAC,WAAW,CAAA;QACtD,MAAM,IAAI,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAA;QACxC,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAG5C,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAC5C,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAC5C,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAC5C,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAC5C,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;QAC5C,MAAM,cAAc,EAAE,OAAO,gBAAgB,CAAC,cAAc,CAAA;QAC5D,MAAM,OAAO,EAAE,OAAO,gBAAgB,CAAC,OAAO,CAAA;QAG9C,MAAM,SAAS,EAAE,OAAO,gBAAgB,CAAC,SAAS,CAAA;QAClD,MAAM,QAAQ,EAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAA;QAGhD,MAAM,MAAM,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAA;KAC7C;CACF;AAGD,QAAA,MAAM,IAAI,EAAgB,OAAO,SAAS,GAAG,OAAO,gBAAgB,CAAA;AAMpE,OAAO,EAAE,IAAI,EAAE,CAAA"}
package/dist/ui/index.js DELETED
@@ -1,39 +0,0 @@
1
- // Single barrel export for the View-centric UI system
2
- // Install chainable modifiers (side-effect import)
3
- import "./install.js";
4
- // Core geometry (types + helpers)
5
- export * from "./core/geometry.js";
6
- // View class will be exported at bottom after enhancement
7
- // Primitives
8
- export * from "./primitives/text.js";
9
- export * from "./primitives/rectangle.js";
10
- export * from "./primitives/spacer.js";
11
- export * from "./primitives/wrapped-text.js";
12
- // Containers
13
- export * from "./containers/hstack.js";
14
- export * from "./containers/vstack.js";
15
- export * from "./containers/zstack.js";
16
- export * from "./containers/scroll.js";
17
- export * from "./containers/canvas.js";
18
- export * from "./containers/geometry-reader.js";
19
- // Modifiers (classes exported, chainers are installed via side effects above)
20
- export * from "./modifiers/border.js";
21
- export * from "./modifiers/offset.js";
22
- export * from "./modifiers/fill.js";
23
- export * from "./modifiers/padding.js";
24
- export { Frame } from "./modifiers/frame.js";
25
- export * from "./modifiers/styled.js";
26
- // Components & utilities
27
- export { ShinyText } from "./shinytext.js";
28
- export { TextInput, TextInputState, editTextInput, } from "./textinput.js";
29
- export { Markdown } from "./markdown.js";
30
- // Import View class and constructors
31
- import { View as ViewClass } from "./core/view.js";
32
- import { ViewConstructors } from "./view-constructors.js";
33
- // Install all the constructor methods on the View class
34
- const View = ViewClass;
35
- // Install all constructors
36
- Object.assign(View, ViewConstructors);
37
- // Export the enhanced View
38
- export { View };
39
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,mDAAmD;AACnD,OAAO,cAAc,CAAA;AAErB,kCAAkC;AAClC,cAAc,oBAAoB,CAAA;AAElC,0DAA0D;AAE1D,aAAa;AACb,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAE5C,aAAa;AACb,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAE/C,8EAA8E;AAC9E,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAuC,MAAM,sBAAsB,CAAA;AACjF,cAAc,uBAAuB,CAAA;AAErC,yBAAyB;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EACL,SAAS,EACT,cAAc,EACd,aAAa,GAKd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAA;AAE9D,qCAAqC;AACrC,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AA6BzD,wDAAwD;AACxD,MAAM,IAAI,GAAG,SAAuD,CAAA;AAEpE,2BAA2B;AAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAErC,2BAA2B;AAC3B,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -1,24 +0,0 @@
1
- import type { Palette, Surface, StyleSpec } from "../render/surface.js";
2
- import { View } from "./core/view.js";
3
- import type { Rect } from "./core/geometry.js";
4
- import type { WrappingOptions } from "./primitives/wrapped-text.js";
5
- export type TextFragment = {
6
- text: string;
7
- style?: StyleSpec;
8
- };
9
- export declare class InlineText extends View {
10
- readonly fragments: TextFragment[];
11
- readonly options: WrappingOptions;
12
- constructor(fragments: TextFragment[], options?: WrappingOptions);
13
- private layout;
14
- protected measureContent(maxW: number, maxH: number): {
15
- w: number;
16
- h: number;
17
- };
18
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
19
- }
20
- export type ViewInlineTextExt = {
21
- inline(fragments: TextFragment[], opts?: WrappingOptions): InlineText;
22
- };
23
- export declare const viewInlineText: ViewInlineTextExt;
24
- //# sourceMappingURL=inlinetext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinetext.d.ts","sourceRoot":"","sources":["../../src/ui/inlinetext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAsBD,qBAAa,UAAW,SAAQ,IAAI;IAEhC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe;gBADxB,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,GAAE,eAAoB;IAKxC,OAAO,CAAC,MAAM;IAgEd,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAMnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAe7D;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,UAAU,CAAA;CACtE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,iBAI5B,CAAA"}
@@ -1,131 +0,0 @@
1
- import { View } from "./core/view.js";
2
- function toTokens(fragments) {
3
- const tokens = [];
4
- for (const frag of fragments) {
5
- const parts = frag.text.split(/(\s+)/);
6
- for (const p of parts) {
7
- if (p.length === 0)
8
- continue;
9
- if (/^\s+$/.test(p))
10
- tokens.push({ text: p.replace(/\s+/g, " "), style: frag.style, kind: "space" });
11
- else
12
- tokens.push({ text: p, style: frag.style, kind: "word" });
13
- }
14
- }
15
- return tokens;
16
- }
17
- function strlen(s) {
18
- // Best-effort: count code points. Rendering will use wcwidth-aware clipping.
19
- return [...s].length;
20
- }
21
- export class InlineText extends View {
22
- fragments;
23
- options;
24
- constructor(fragments, options = {}) {
25
- super();
26
- this.fragments = fragments;
27
- this.options = options;
28
- }
29
- layout(maxW) {
30
- const { wordWrap = true, breakWords = true } = this.options;
31
- const toks = toTokens(this.fragments);
32
- const lines = [];
33
- let line = [];
34
- let used = 0;
35
- const flush = () => {
36
- if (line.length === 0)
37
- return;
38
- lines.push(line);
39
- line = [];
40
- used = 0;
41
- };
42
- for (const t of toks) {
43
- if (t.kind === "space") {
44
- if (used === 0)
45
- continue; // skip leading spaces
46
- const w = 1;
47
- if (used + w <= maxW) {
48
- line.push({ ...t, text: " " });
49
- used += w;
50
- }
51
- else {
52
- flush();
53
- }
54
- continue;
55
- }
56
- const w = strlen(t.text);
57
- if (!wordWrap) {
58
- // No wrapping: push to current line; if overflow, start new line first
59
- if (used + w > maxW && used > 0)
60
- flush();
61
- line.push(t);
62
- used = Math.min(maxW, used + w);
63
- continue;
64
- }
65
- if (w > maxW) {
66
- if (breakWords) {
67
- const remaining = [...t.text];
68
- while (remaining.length > 0) {
69
- const room = Math.max(0, maxW - used);
70
- if (room === 0)
71
- flush();
72
- const take = Math.min(remaining.length, Math.max(1, maxW - used));
73
- const chunk = remaining.splice(0, take).join("");
74
- line.push({ ...t, text: chunk });
75
- used += strlen(chunk);
76
- if (remaining.length > 0)
77
- flush();
78
- }
79
- }
80
- else {
81
- // Place as its own line (will clip visually)
82
- if (used > 0)
83
- flush();
84
- line.push(t);
85
- flush();
86
- }
87
- }
88
- else if (used + w <= maxW) {
89
- line.push(t);
90
- used += w;
91
- }
92
- else {
93
- flush();
94
- line.push(t);
95
- used = w;
96
- }
97
- }
98
- flush();
99
- if (lines.length === 0)
100
- lines.push([]);
101
- return lines;
102
- }
103
- measureContent(maxW, maxH) {
104
- const lines = this.layout(maxW);
105
- const h = Math.min(maxH, Math.max(1, lines.length));
106
- return { w: maxW, h };
107
- }
108
- renderContent(s, pal, rect) {
109
- const lines = this.layout(rect.w);
110
- const h = Math.min(rect.h, lines.length);
111
- for (let y = 0; y < h; y++) {
112
- let x = 0;
113
- for (const seg of lines[y]) {
114
- if (x >= rect.w)
115
- break;
116
- const id = pal.id(seg.style);
117
- const max = Math.max(0, rect.w - x);
118
- if (max <= 0)
119
- break;
120
- s.drawText(rect.x + x, rect.y + y, seg.text, id, max);
121
- x += strlen(seg.text);
122
- }
123
- }
124
- }
125
- }
126
- export const viewInlineText = {
127
- inline(fragments, opts) {
128
- return new InlineText(fragments, opts);
129
- },
130
- };
131
- //# sourceMappingURL=inlinetext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inlinetext.js","sourceRoot":"","sources":["../../src/ui/inlinetext.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { BorderOptions } from "./modifiers/border.js";
2
- import type { FrameSpec } from "./modifiers/frame.js";
3
- import type { StyleSpec, ColorLike } from "../render/surface.js";
4
- declare module "./core/view.js" {
5
- interface View {
6
- border(opts?: BorderOptions): View;
7
- offset(dx?: number, dy?: number): View;
8
- fillWidth(): View;
9
- fillHeight(): View;
10
- padding(t: number, r?: number, b?: number, l?: number): View;
11
- frame(opts: FrameSpec): View;
12
- style(spec?: StyleSpec): View;
13
- fg(color: ColorLike): View;
14
- bg(color: ColorLike): View;
15
- bold(on?: boolean): View;
16
- italic(on?: boolean): View;
17
- underline(on?: boolean): View;
18
- inverse(on?: boolean): View;
19
- opacity(alpha: number): View;
20
- }
21
- }
22
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/ui/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AA8EhE,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,IAAI;QAEZ,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;QAClC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtC,SAAS,IAAI,IAAI,CAAA;QACjB,UAAU,IAAI,IAAI,CAAA;QAClB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5D,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;QAG5B,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;QAC7B,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;QAC1B,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;QACxB,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;QAC1B,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;QAC7B,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;QAG3B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B;CACF"}
@@ -1,66 +0,0 @@
1
- /* install.ts — Installer for View modifier chainers
2
- *
3
- * This module installs chainable modifier methods on View.prototype using
4
- * a clean installer pattern with TypeScript declaration merging.
5
- */
6
- import { View } from "./core/view.js";
7
- import { parseColor } from "../render/surface.js";
8
- // Import all modifier classes
9
- import { Border } from "./modifiers/border.js";
10
- import { Offset } from "./modifiers/offset.js";
11
- import { Fill } from "./modifiers/fill.js";
12
- import { Opacity } from "./modifiers/opacity.js";
13
- import { Padding } from "./modifiers/padding.js";
14
- import { Frame } from "./modifiers/frame.js";
15
- import { Styled } from "./modifiers/styled.js";
16
- // Define modifier methods with proper typing
17
- const modifierMethods = {
18
- // Layout modifiers
19
- border(opts) {
20
- return new Border(this, opts);
21
- },
22
- offset(dx = 0, dy = 0) {
23
- return new Offset(this, dx, dy);
24
- },
25
- fillWidth() {
26
- return new Fill(this, "horizontal");
27
- },
28
- fillHeight() {
29
- return new Fill(this, "vertical");
30
- },
31
- padding(t, r, b, l) {
32
- return new Padding(this, t, r, b, l);
33
- },
34
- frame(opts) {
35
- return new Frame(this, opts);
36
- },
37
- // Style modifiers
38
- style(spec) {
39
- return spec ? new Styled(this, spec) : this;
40
- },
41
- fg(color) {
42
- return new Styled(this, { fg: parseColor(color) });
43
- },
44
- bg(color) {
45
- return new Styled(this, { bg: parseColor(color) });
46
- },
47
- bold(on = true) {
48
- return new Styled(this, { bold: on });
49
- },
50
- italic(on = true) {
51
- return new Styled(this, { italic: on });
52
- },
53
- underline(on = true) {
54
- return new Styled(this, { underline: on });
55
- },
56
- inverse(on = true) {
57
- return new Styled(this, { inverse: on });
58
- },
59
- // Visual effect modifiers
60
- opacity(alpha) {
61
- return new Opacity(this, alpha);
62
- },
63
- };
64
- // Install methods on View prototype
65
- Object.assign(View.prototype, modifierMethods);
66
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/ui/install.ts"],"names":[],"mappings":"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"}
@@ -1,40 +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 MarkdownOptions = {
5
- spacing?: number;
6
- styles?: {
7
- heading?: Partial<Record<1 | 2 | 3 | 4 | 5 | 6, StyleSpec>>;
8
- paragraph?: StyleSpec;
9
- code?: StyleSpec;
10
- codeBorder?: {
11
- kind?: "none" | "rounded" | "square" | "ascii";
12
- color?: ColorLike;
13
- padding?: number | {
14
- x?: number;
15
- y?: number;
16
- };
17
- };
18
- quote?: StyleSpec;
19
- listBullet?: StyleSpec;
20
- };
21
- };
22
- /** Minimal Markdown renderer for terminal UI: block-level only. */
23
- export declare class Markdown extends View {
24
- readonly text: string;
25
- readonly opts: MarkdownOptions;
26
- constructor(text: string, opts?: MarkdownOptions);
27
- private parseBlocks;
28
- private parseInline;
29
- private blockViews;
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 ViewMarkdownExt = {
37
- markdown(text: string, opts?: MarkdownOptions): View;
38
- };
39
- export declare const viewMarkdown: ViewMarkdownExt;
40
- //# sourceMappingURL=markdown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAElF,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAK9C,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAC3D,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB,IAAI,CAAC,EAAE,SAAS,CAAA;QAChB,UAAU,CAAC,EAAE;YACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;YAC9C,KAAK,CAAC,EAAE,SAAS,CAAA;YACjB,OAAO,CAAC,EAAE,MAAM,GAAG;gBAAE,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAC9C,CAAA;QACD,KAAK,CAAC,EAAE,SAAS,CAAA;QACjB,UAAU,CAAC,EAAE,SAAS,CAAA;KACvB,CAAA;CACF,CAAA;AASD,mEAAmE;AACnE,qBAAa,QAAS,SAAQ,IAAI;IAE9B,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe;gBADrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,eAAoB;IAKrC,OAAO,CAAC,WAAW;IAyGnB,OAAO,CAAC,WAAW;IA4GnB,OAAO,CAAC,UAAU;IAoGlB,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAanD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAU7D;AAGD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACrD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,eAI1B,CAAA"}