@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
package/dist/spring.js DELETED
@@ -1,136 +0,0 @@
1
- // spring.ts - Higher-level spring API for number and color values
2
- import { parseColor } from "./render/surface.js";
3
- import { idxToRGB } from "./render/color-utils.js";
4
- import { advanceSpring, DEFAULTS } from "./spring-physics.js";
5
- // ---- Helpers ----
6
- export function colorLikeToRGB(c) {
7
- const v = parseColor(c);
8
- if (typeof v === "number")
9
- return idxToRGB(v);
10
- return { r: v.r | 0, g: v.g | 0, b: v.b | 0 };
11
- }
12
- function isColorSpring(s) {
13
- return typeof s.x === "object";
14
- }
15
- // ---- Number spring primitives ----
16
- function initNumber(initial, cfg) {
17
- return {
18
- x: initial,
19
- v: 0,
20
- target: initial,
21
- ...(cfg && { _config: cfg }),
22
- };
23
- }
24
- function tickNumber(s, nowMs, cfg) {
25
- const last = s._last ?? nowMs;
26
- const dt = Math.max(0, Math.min(0.1, (nowMs - last) / 1000));
27
- const stepped = advanceSpring(s, dt, cfg ?? s._config);
28
- return {
29
- ...s,
30
- x: stepped.x,
31
- v: stepped.v,
32
- target: stepped.target,
33
- _last: nowMs,
34
- ...(cfg || s._config ? { _config: cfg ?? s._config } : {}),
35
- };
36
- }
37
- function toNumber(s, target) {
38
- return { ...s, target };
39
- }
40
- function valueNumber(s) {
41
- return s.x;
42
- }
43
- function settledNumber(s, eps = DEFAULTS.epsilon) {
44
- return Math.abs(s.x - s.target) < eps && Math.abs(s.v) < eps;
45
- }
46
- // ---- Color spring primitives ----
47
- const SpringColor = {
48
- init(initial, cfg) {
49
- const rgb = colorLikeToRGB(initial);
50
- return {
51
- x: { ...rgb },
52
- v: { r: 0, g: 0, b: 0 },
53
- target: { ...rgb },
54
- ...(cfg && { _config: cfg }),
55
- };
56
- },
57
- to(s, target) {
58
- const rgb = colorLikeToRGB(target);
59
- return { ...s, target: { ...rgb } };
60
- },
61
- tick(s, nowMs, cfg) {
62
- const last = s._last ?? nowMs;
63
- const dt = Math.max(0, Math.min(0.1, (nowMs - last) / 1000));
64
- const rx = advanceSpring({ x: s.x.r, v: s.v.r, target: s.target.r }, dt, cfg ?? s._config);
65
- const gx = advanceSpring({ x: s.x.g, v: s.v.g, target: s.target.g }, dt, cfg ?? s._config);
66
- const bx = advanceSpring({ x: s.x.b, v: s.v.b, target: s.target.b }, dt, cfg ?? s._config);
67
- return {
68
- x: { r: rx.x, g: gx.x, b: bx.x },
69
- v: { r: rx.v, g: gx.v, b: bx.v },
70
- target: { r: s.target.r, g: s.target.g, b: s.target.b },
71
- _last: nowMs,
72
- ...(cfg || s._config ? { _config: cfg ?? s._config } : {}),
73
- };
74
- },
75
- value(s) {
76
- const clamp = (n) => (n < 0 ? 0 : n > 255 ? 255 : n | 0);
77
- return { r: clamp(s.x.r), g: clamp(s.x.g), b: clamp(s.x.b) };
78
- },
79
- settled(s, eps = DEFAULTS.epsilon) {
80
- const dx = Math.abs(s.x.r - s.target.r) + Math.abs(s.x.g - s.target.g) + Math.abs(s.x.b - s.target.b);
81
- const dv = Math.abs(s.v.r) + Math.abs(s.v.g) + Math.abs(s.v.b);
82
- return dx < eps * 3 && dv < eps * 3;
83
- },
84
- };
85
- function create(initial, cfg) {
86
- const as = cfg?.as ?? (typeof initial === "number" ? "number" : "color");
87
- return as === "number" ? initNumber(initial, cfg) : SpringColor.init(initial, cfg);
88
- }
89
- function to(s, target) {
90
- return isColorSpring(s) ? SpringColor.to(s, target) : toNumber(s, target);
91
- }
92
- function tick(s, nowMs, cfg) {
93
- return isColorSpring(s) ? SpringColor.tick(s, nowMs, cfg) : tickNumber(s, nowMs, cfg);
94
- }
95
- function read(s) {
96
- return isColorSpring(s) ? SpringColor.value(s) : valueNumber(s);
97
- }
98
- function isSettled(s, eps = DEFAULTS.epsilon) {
99
- return isColorSpring(s) ? SpringColor.settled(s, eps) : settledNumber(s, eps);
100
- }
101
- export const Spring = {
102
- // number
103
- init: initNumber,
104
- to,
105
- tick,
106
- value: valueNumber,
107
- settled: settledNumber,
108
- // color (explicit path)
109
- color: SpringColor,
110
- // unified ergonomic API
111
- create,
112
- advance: tick,
113
- read,
114
- isSettled,
115
- };
116
- export const Step = {
117
- init(length, intervalMs, startIndex = 0) {
118
- return {
119
- index: ((startIndex % length) + length) % length,
120
- length: Math.max(1, length | 0),
121
- intervalMs: Math.max(1, intervalMs | 0),
122
- _accumMs: 0,
123
- };
124
- },
125
- tick(s, nowMs) {
126
- const last = s._last ?? nowMs;
127
- let accum = s._accumMs + Math.max(0, nowMs - last);
128
- let idx = s.index;
129
- while (accum >= s.intervalMs) {
130
- accum -= s.intervalMs;
131
- idx = (idx + 1) % s.length;
132
- }
133
- return { ...s, index: idx, _accumMs: accum, _last: nowMs };
134
- },
135
- };
136
- //# sourceMappingURL=spring.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spring.js","sourceRoot":"","sources":["../src/spring.ts"],"names":[],"mappings":"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"}
@@ -1,13 +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 Canvas extends View {
5
- readonly paint: (s: Surface, pal: Palette, rect: Rect) => void;
6
- constructor(paint: (s: Surface, pal: Palette, rect: Rect) => void);
7
- protected measureContent(maxW: number, maxH: number): {
8
- w: number;
9
- h: number;
10
- };
11
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
12
- }
13
- //# sourceMappingURL=canvas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/canvas.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;AAE/C,qBAAa,MAAO,SAAQ,IAAI;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI;gBAArD,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI;IAI1E,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAKnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAG7D"}
@@ -1,16 +0,0 @@
1
- import { View } from "../core/view.js";
2
- export class Canvas extends View {
3
- paint;
4
- constructor(paint) {
5
- super();
6
- this.paint = paint;
7
- }
8
- measureContent(maxW, maxH) {
9
- // Greedy: occupy the full available area (caller can constrain via frame())
10
- return { w: Math.max(0, maxW), h: Math.max(0, maxH) };
11
- }
12
- renderContent(s, pal, rect) {
13
- this.paint(s, pal, rect);
14
- }
15
- }
16
- //# sourceMappingURL=canvas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/ui/containers/canvas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,MAAM,OAAO,MAAO,SAAQ,IAAI;IACT;IAArB,YAAqB,KAAqD;QACxE,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAgD;IAE1E,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,4EAA4E;QAC5E,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAA;IACvD,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;CACF"}
@@ -1,17 +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 type GeometryProxy = {
5
- width: number;
6
- height: number;
7
- };
8
- export declare class GeometryReader extends View {
9
- readonly reader: (proxy: GeometryProxy) => View;
10
- constructor(reader: (proxy: GeometryProxy) => View);
11
- protected measureContent(maxW: number, maxH: number): {
12
- w: number;
13
- h: number;
14
- };
15
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
16
- }
17
- //# sourceMappingURL=geometry-reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-reader.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/geometry-reader.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,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,cAAe,SAAQ,IAAI;IAC1B,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;gBAAtC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;IAI3D,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAKnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAW7D"}
@@ -1,24 +0,0 @@
1
- import { View } from "../core/view.js";
2
- export class GeometryReader extends View {
3
- reader;
4
- constructor(reader) {
5
- super();
6
- this.reader = reader;
7
- }
8
- measureContent(maxW, maxH) {
9
- // GeometryReader is greedy - takes all available space
10
- return { w: maxW, h: maxH };
11
- }
12
- renderContent(s, pal, rect) {
13
- // Create the child with the actual geometry
14
- const proxy = {
15
- width: rect.w,
16
- height: rect.h,
17
- };
18
- const child = this.reader(proxy);
19
- // Measure the child first, then render
20
- child.measure(rect.w, rect.h);
21
- child.render(s, pal, rect);
22
- }
23
- }
24
- //# sourceMappingURL=geometry-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-reader.js","sourceRoot":"","sources":["../../../src/ui/containers/geometry-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAStC,MAAM,OAAO,cAAe,SAAQ,IAAI;IACjB;IAArB,YAAqB,MAAsC;QACzD,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAgC;IAE3D,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,uDAAuD;QACvD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,4CAA4C;QAC5C,MAAM,KAAK,GAAkB;YAC3B,KAAK,EAAE,IAAI,CAAC,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,CAAC;SACf,CAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAChC,uCAAuC;QACvC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IAC5B,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect, VAlign } from "../core/geometry.js";
4
- export declare class HStack extends View {
5
- readonly children: View[];
6
- readonly spacing: number;
7
- readonly align: VAlign;
8
- constructor(children: View[], spacing?: number, align?: VAlign);
9
- protected measureContent(maxW: number, maxH: number): import("../../layout/linearStack.js").Size;
10
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
11
- }
12
- //# sourceMappingURL=hstack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hstack.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/hstack.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,EAAE,MAAM,qBAAqB,CAAA;AAKvD,qBAAa,MAAO,SAAQ,IAAI;IAE5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;IACzB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAFb,QAAQ,EAAE,IAAI,EAAE,EAChB,OAAO,SAAI,EACX,KAAK,GAAE,MAAiB;IAKnC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAQ7D"}
@@ -1,28 +0,0 @@
1
- import { View } from "../core/view.js";
2
- import { measureLinear, layoutLinear } from "../../layout/linearStack.js";
3
- import { Spacer } from "../primitives/spacer.js";
4
- import { flexBaseForAxis } from "./shared.js";
5
- export class HStack extends View {
6
- children;
7
- spacing;
8
- align;
9
- constructor(children, spacing = 1, align = "center") {
10
- super();
11
- this.children = children;
12
- this.spacing = spacing;
13
- this.align = align;
14
- }
15
- measureContent(maxW, maxH) {
16
- const sizes = this.children.map((c) => c.measure(maxW, maxH));
17
- const flexBase = this.children.map((c, i) => c instanceof Spacer ? c.minLength | 0 : flexBaseForAxis(c, "horizontal", sizes[i]));
18
- return measureLinear("horizontal", maxW, maxH, this.spacing, sizes, flexBase);
19
- }
20
- renderContent(s, pal, rect) {
21
- const sizes = this.children.map((c) => c.measure(rect.w, rect.h));
22
- const flexBase = this.children.map((c, i) => c instanceof Spacer ? c.minLength | 0 : flexBaseForAxis(c, "horizontal", sizes[i]));
23
- const rects = layoutLinear("horizontal", rect, this.spacing, this.align, sizes, flexBase);
24
- for (let i = 0; i < this.children.length; i++)
25
- this.children[i].render(s, pal, rects[i]);
26
- }
27
- }
28
- //# sourceMappingURL=hstack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hstack.js","sourceRoot":"","sources":["../../../src/ui/containers/hstack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,OAAO,MAAO,SAAQ,IAAI;IAEnB;IACA;IACA;IAHX,YACW,QAAgB,EAChB,UAAU,CAAC,EACX,QAAgB,QAAQ;QAEjC,KAAK,EAAE,CAAA;QAJE,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAI;QACX,UAAK,GAAL,KAAK,CAAmB;IAGnC,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACnF,CAAA;QACD,OAAO,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/E,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACnF,CAAA;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1F,CAAC;CACF"}
@@ -1,28 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect, VAlign, HAlign } from "../core/geometry.js";
4
- export declare class Scroll extends View {
5
- readonly child: View;
6
- readonly opts: {
7
- axis?: "vertical" | "horizontal";
8
- offset?: number;
9
- align?: VAlign | HAlign;
10
- };
11
- /** Duck-typed brand so helpers can detect Scroll without imports/cycles */
12
- readonly __isScroll = true;
13
- private _fullW;
14
- private _fullH;
15
- constructor(child: View, opts?: {
16
- axis?: "vertical" | "horizontal";
17
- offset?: number;
18
- align?: VAlign | HAlign;
19
- });
20
- /** Get the maximum valid scroll offset for this content */
21
- getMaxOffset(viewportW: number, viewportH: number): number;
22
- protected measureContent(maxW: number, maxH: number): {
23
- w: number;
24
- h: number;
25
- };
26
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
27
- }
28
- //# sourceMappingURL=scroll.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/scroll.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,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG/D,qBAAa,MAAO,SAAQ,IAAI;IAQ5B,QAAQ,CAAC,KAAK,EAAE,IAAI;IACpB,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;QAChC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KACxB;IAZH,2EAA2E;IAC3E,SAAgB,UAAU,QAAO;IAEjC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,MAAM,CAAI;gBAGP,KAAK,EAAE,IAAI,EACX,IAAI,GAAE;QACb,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;QAChC,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KACnB;IAKR,2DAA2D;IAC3D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAW1D,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;IAgBnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAsD7D"}
@@ -1,97 +0,0 @@
1
- import { View } from "../core/view.js";
2
- // Scroll wrapper: viewport with clean SwiftUI-like semantics
3
- export class Scroll extends View {
4
- child;
5
- opts;
6
- /** Duck-typed brand so helpers can detect Scroll without imports/cycles */
7
- __isScroll = true;
8
- _fullW = 0;
9
- _fullH = 0;
10
- constructor(child, opts = {}) {
11
- super();
12
- this.child = child;
13
- this.opts = opts;
14
- }
15
- /** Get the maximum valid scroll offset for this content */
16
- getMaxOffset(viewportW, viewportH) {
17
- const axis = this.opts.axis ?? "vertical";
18
- if (axis === "vertical") {
19
- const full = this.child.measure(viewportW, Number.MAX_SAFE_INTEGER);
20
- return Math.max(0, full.h - viewportH);
21
- }
22
- else {
23
- const full = this.child.measure(Number.MAX_SAFE_INTEGER, viewportH);
24
- return Math.max(0, full.w - viewportW);
25
- }
26
- }
27
- measureContent(maxW, maxH) {
28
- const axis = this.opts.axis ?? "vertical";
29
- if (axis === "vertical") {
30
- const full = this.child.measure(maxW, Number.MAX_SAFE_INTEGER);
31
- this._fullW = full.w;
32
- this._fullH = full.h;
33
- // Greedy: take all available space (viewport semantics)
34
- return { w: Math.min(maxW, full.w), h: maxH };
35
- }
36
- else {
37
- const full = this.child.measure(Number.MAX_SAFE_INTEGER, maxH);
38
- this._fullW = full.w;
39
- this._fullH = full.h;
40
- return { w: maxW, h: Math.min(maxH, full.h) };
41
- }
42
- }
43
- renderContent(s, pal, rect) {
44
- const axis = this.opts.axis ?? "vertical";
45
- const align = this.opts.align ?? "top";
46
- const rawOffset = this.opts.offset ?? 0;
47
- // Ensure we have measured the child content
48
- if (this._fullH === 0 && this._fullW === 0) {
49
- this.measureContent(rect.w, rect.h);
50
- // measureContent sets _fullH and _fullW as side effects
51
- }
52
- if (axis === "vertical") {
53
- const overflow = Math.max(0, this._fullH - rect.h);
54
- // Clamp offset to valid range [0, overflow]
55
- const offset = Math.max(0, Math.min(overflow, rawOffset));
56
- let start;
57
- if (align === "bottom") {
58
- // Bottom-pinned: offset 0 shows last lines, positive offset scrolls up from bottom
59
- if (overflow === 0) {
60
- // Content fits: bottom-align by pushing content down
61
- start = -(rect.h - this._fullH);
62
- }
63
- else {
64
- // Content overflows: start from bottom minus offset
65
- start = overflow - offset;
66
- }
67
- }
68
- else {
69
- // Top-aligned: traditional scrolling
70
- start = offset;
71
- }
72
- const childRect = { x: rect.x, y: rect.y - start, w: rect.w, h: this._fullH };
73
- s.withClip(rect.x, rect.y, rect.w, rect.h, () => this.child.render(s, pal, childRect));
74
- }
75
- else {
76
- const overflow = Math.max(0, this._fullW - rect.w);
77
- // Clamp offset to valid range [0, overflow]
78
- const offset = Math.max(0, Math.min(overflow, rawOffset));
79
- let start;
80
- if (align === "trailing") {
81
- // Right-pinned: similar logic for horizontal
82
- if (overflow === 0) {
83
- start = -(rect.w - this._fullW);
84
- }
85
- else {
86
- start = overflow - offset;
87
- }
88
- }
89
- else {
90
- start = offset;
91
- }
92
- const childRect = { x: rect.x - start, y: rect.y, w: this._fullW, h: rect.h };
93
- s.withClip(rect.x, rect.y, rect.w, rect.h, () => this.child.render(s, pal, childRect));
94
- }
95
- }
96
- }
97
- //# sourceMappingURL=scroll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/ui/containers/scroll.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,6DAA6D;AAC7D,MAAM,OAAO,MAAO,SAAQ,IAAI;IAQnB;IACA;IARX,2EAA2E;IAC3D,UAAU,GAAG,IAAI,CAAA;IAEzB,MAAM,GAAG,CAAC,CAAA;IACV,MAAM,GAAG,CAAC,CAAA;IAElB,YACW,KAAW,EACX,OAIL,EAAE;QAEN,KAAK,EAAE,CAAA;QAPE,UAAK,GAAL,KAAK,CAAM;QACX,SAAI,GAAJ,IAAI,CAIP;IAGR,CAAC;IAED,2DAA2D;IAC3D,YAAY,CAAC,SAAiB,EAAE,SAAiB;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAA;QACzC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;YACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAA;QACzC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;YACpB,wDAAwD;YACxD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;YACpB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/C,CAAC;IACH,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAEvC,4CAA4C;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YACnC,wDAAwD;QAC1D,CAAC;QAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAClD,4CAA4C;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;YACzD,IAAI,KAAa,CAAA;YAEjB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,mFAAmF;gBACnF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,qDAAqD;oBACrD,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,oDAAoD;oBACpD,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;gBAC3B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,KAAK,GAAG,MAAM,CAAA;YAChB,CAAC;YAED,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;YAC7E,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAClD,4CAA4C;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;YACzD,IAAI,KAAa,CAAA;YAEjB,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzB,6CAA6C;gBAC7C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;gBAC3B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,CAAA;YAChB,CAAC;YAED,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA;YAC7E,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { View } from "../core/view.js";
2
- export declare function isFillForAxis(node: View, axis: "horizontal" | "vertical"): boolean;
3
- export declare function mainSize(axis: "horizontal" | "vertical", size: {
4
- w: number;
5
- h: number;
6
- }): number;
7
- /** Return the flex base size for a node on an axis, or null if fixed. */
8
- export declare function flexBaseForAxis(node: View, axis: "horizontal" | "vertical", measured: {
9
- w: number;
10
- h: number;
11
- }): number | null;
12
- //# sourceMappingURL=shared.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAG3C,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAElF;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,EAAE,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEhG;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,YAAY,GAAG,UAAU,EAC/B,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,GAAG,IAAI,CAQf"}
@@ -1,19 +0,0 @@
1
- // Check if a node is a Fill wrapper for a given axis
2
- export function isFillForAxis(node, axis) {
3
- return node.constructor.name === "Fill" && node.axis === axis;
4
- }
5
- // Get the main-axis size from a measured size
6
- export function mainSize(axis, size) {
7
- return axis === "horizontal" ? size.w : size.h;
8
- }
9
- /** Return the flex base size for a node on an axis, or null if fixed. */
10
- export function flexBaseForAxis(node, axis, measured) {
11
- // Scroll should be flexible but with a *zero* base so siblings get their fixed space first.
12
- if (node.__isScroll)
13
- return 0;
14
- // Fill is flexible with intrinsic base equal to its measured main size.
15
- if (isFillForAxis(node, axis))
16
- return mainSize(axis, measured);
17
- return null;
18
- }
19
- //# sourceMappingURL=shared.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/ui/containers/shared.ts"],"names":[],"mappings":"AAGA,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAA+B;IACvE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,IAAK,IAAY,CAAC,IAAI,KAAK,IAAI,CAAA;AACxE,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,QAAQ,CAAC,IAA+B,EAAE,IAA8B;IACtF,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,IAA+B,EAC/B,QAAkC;IAElC,4FAA4F;IAC5F,IAAK,IAAY,CAAC,UAAU;QAAE,OAAO,CAAC,CAAA;IAEtC,wEAAwE;IACxE,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAE9D,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { Palette, Surface } from "../../render/surface.js";
2
- import { View } from "../core/view.js";
3
- import type { Rect, HAlign } from "../core/geometry.js";
4
- export declare class VStack extends View {
5
- readonly children: View[];
6
- readonly spacing: number;
7
- readonly align: HAlign;
8
- constructor(children: View[], spacing?: number, align?: HAlign);
9
- protected measureContent(maxW: number, maxH: number): import("../../layout/linearStack.js").Size;
10
- protected renderContent(s: Surface, pal: Palette, rect: Rect): void;
11
- }
12
- //# sourceMappingURL=vstack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vstack.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/vstack.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,EAAE,MAAM,qBAAqB,CAAA;AAKvD,qBAAa,MAAO,SAAQ,IAAI;IAE5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;IACzB,QAAQ,CAAC,OAAO;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAFb,QAAQ,EAAE,IAAI,EAAE,EAChB,OAAO,SAAI,EACX,KAAK,GAAE,MAAkB;IAKpC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQnD,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;CAS7D"}
@@ -1,28 +0,0 @@
1
- import { View } from "../core/view.js";
2
- import { measureLinear, layoutLinear } from "../../layout/linearStack.js";
3
- import { Spacer } from "../primitives/spacer.js";
4
- import { flexBaseForAxis } from "./shared.js";
5
- export class VStack extends View {
6
- children;
7
- spacing;
8
- align;
9
- constructor(children, spacing = 0, align = "leading") {
10
- super();
11
- this.children = children;
12
- this.spacing = spacing;
13
- this.align = align;
14
- }
15
- measureContent(maxW, maxH) {
16
- const sizes = this.children.map((c) => c.measure(maxW, maxH));
17
- const flexBase = this.children.map((c, i) => c instanceof Spacer ? c.minLength | 0 : flexBaseForAxis(c, "vertical", sizes[i]));
18
- return measureLinear("vertical", maxW, maxH, this.spacing, sizes, flexBase);
19
- }
20
- renderContent(s, pal, rect) {
21
- const sizes = this.children.map((c) => c.measure(rect.w, rect.h));
22
- const flexBase = this.children.map((c, i) => c instanceof Spacer ? c.minLength | 0 : flexBaseForAxis(c, "vertical", sizes[i]));
23
- const rects = layoutLinear("vertical", rect, this.spacing, this.align, sizes, flexBase);
24
- for (let i = 0; i < this.children.length; i++)
25
- this.children[i].render(s, pal, rects[i]);
26
- }
27
- }
28
- //# sourceMappingURL=vstack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vstack.js","sourceRoot":"","sources":["../../../src/ui/containers/vstack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,OAAO,MAAO,SAAQ,IAAI;IAEnB;IACA;IACA;IAHX,YACW,QAAgB,EAChB,UAAU,CAAC,EACX,QAAgB,SAAS;QAElC,KAAK,EAAE,CAAA;QAJE,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAI;QACX,UAAK,GAAL,KAAK,CAAoB;IAGpC,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACjF,CAAA;QACD,OAAO,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC7E,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CACjF,CAAA;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1F,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, Align2D } from "../core/geometry.js";
4
- export declare class ZStack extends View {
5
- readonly children: View[];
6
- readonly alignment: Align2D;
7
- constructor(children: View[], alignment?: Align2D);
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=zstack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zstack.d.ts","sourceRoot":"","sources":["../../../src/ui/containers/zstack.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;AAGxD,qBAAa,MAAO,SAAQ,IAAI;IAE5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO;gBADlB,QAAQ,EAAE,IAAI,EAAE,EAChB,SAAS,GAAE,OAAsC;IAK5D,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;CAY7D"}
@@ -1,36 +0,0 @@
1
- import { View } from "../core/view.js";
2
- // ZStack (overlay)
3
- export class ZStack extends View {
4
- children;
5
- alignment;
6
- constructor(children, alignment = { h: "center", v: "center" }) {
7
- super();
8
- this.children = children;
9
- this.alignment = alignment;
10
- }
11
- measureContent(maxW, maxH) {
12
- let w = 0, h = 0;
13
- for (const c of this.children) {
14
- const m = c.measure(maxW, maxH);
15
- w = Math.max(w, m.w);
16
- h = Math.max(h, m.h);
17
- }
18
- return { w: Math.min(maxW, w), h: Math.min(maxH, h) };
19
- }
20
- renderContent(s, pal, rect) {
21
- for (const c of this.children) {
22
- const m = c.measure(rect.w, rect.h);
23
- let x = rect.x, y = rect.y;
24
- if (this.alignment.h === "center")
25
- x += Math.floor((rect.w - m.w) / 2);
26
- else if (this.alignment.h === "trailing")
27
- x += Math.max(0, rect.w - m.w);
28
- if (this.alignment.v === "center")
29
- y += Math.floor((rect.h - m.h) / 2);
30
- else if (this.alignment.v === "bottom")
31
- y += Math.max(0, rect.h - m.h);
32
- c.render(s, pal, { x, y, w: Math.min(rect.w, m.w), h: Math.min(rect.h, m.h) });
33
- }
34
- }
35
- }
36
- //# sourceMappingURL=zstack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zstack.js","sourceRoot":"","sources":["../../../src/ui/containers/zstack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,mBAAmB;AACnB,MAAM,OAAO,MAAO,SAAQ,IAAI;IAEnB;IACA;IAFX,YACW,QAAgB,EAChB,YAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE;QAE1D,KAAK,EAAE,CAAA;QAHE,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAwC;IAG5D,CAAC;IAES,cAAc,CAAC,IAAY,EAAE,IAAY;QACjD,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,CAAA;QACP,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC/B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;IACvD,CAAC;IAES,aAAa,CAAC,CAAU,EAAE,GAAY,EAAE,IAAU;QAC1D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EACZ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;YACZ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,QAAQ;gBAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;iBACjE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,UAAU;gBAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACxE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,QAAQ;gBAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;iBACjE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,QAAQ;gBAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACtE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- import type { Rect } from "./geometry.js";
2
- export type ViewId = string;
3
- export type { Rect };
4
- export type InputGeom = {
5
- firstW: number;
6
- wrapW: number;
7
- xFirst: number;
8
- xOther: number;
9
- };
10
- declare class GeometryStoreImpl {
11
- private frameNo;
12
- private rects;
13
- private inputs;
14
- beginFrame(frameNo?: number): void;
15
- endFrame(): void;
16
- setRect(id: ViewId, rect: Rect): void;
17
- setInputGeom(id: ViewId, g: InputGeom): void;
18
- getRect(id: ViewId): Rect | undefined;
19
- getInputGeom(id: ViewId): InputGeom | undefined;
20
- }
21
- export declare const geometryStore: GeometryStoreImpl;
22
- //# sourceMappingURL=geometry-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-store.d.ts","sourceRoot":"","sources":["../../../src/ui/core/geometry-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAC3B,YAAY,EAAE,IAAI,EAAE,CAAA;AACpB,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzF,cAAM,iBAAiB;IACrB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAA+B;IAE7C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM;IAO3B,QAAQ;IAIR,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAI9B,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS;IAIrC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAGhD;AAED,eAAO,MAAM,aAAa,mBAA0B,CAAA"}