@teaui/core 1.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 (203) hide show
  1. package/.dist/Buffer.d.ts +21 -0
  2. package/.dist/Buffer.js +140 -0
  3. package/.dist/Buffer.js.map +1 -0
  4. package/.dist/Color.d.ts +7 -0
  5. package/.dist/Color.js +39 -0
  6. package/.dist/Color.js.map +1 -0
  7. package/.dist/Container.d.ts +21 -0
  8. package/.dist/Container.js +138 -0
  9. package/.dist/Container.js.map +1 -0
  10. package/.dist/Screen.d.ts +54 -0
  11. package/.dist/Screen.js +278 -0
  12. package/.dist/Screen.js.map +1 -0
  13. package/.dist/Style.d.ts +46 -0
  14. package/.dist/Style.js +433 -0
  15. package/.dist/Style.js.map +1 -0
  16. package/.dist/System.d.ts +13 -0
  17. package/.dist/System.js +26 -0
  18. package/.dist/System.js.map +1 -0
  19. package/.dist/Theme.d.ts +56 -0
  20. package/.dist/Theme.js +157 -0
  21. package/.dist/Theme.js.map +1 -0
  22. package/.dist/UI.d.ts +2 -0
  23. package/.dist/UI.js +28 -0
  24. package/.dist/UI.js.map +1 -0
  25. package/.dist/View.d.ts +99 -0
  26. package/.dist/View.js +374 -0
  27. package/.dist/View.js.map +1 -0
  28. package/.dist/Viewport.d.ts +89 -0
  29. package/.dist/Viewport.js +295 -0
  30. package/.dist/Viewport.js.map +1 -0
  31. package/.dist/ansi.d.ts +31 -0
  32. package/.dist/ansi.js +139 -0
  33. package/.dist/ansi.js.map +1 -0
  34. package/.dist/components/Accordion.d.ts +47 -0
  35. package/.dist/components/Accordion.js +294 -0
  36. package/.dist/components/Accordion.js.map +1 -0
  37. package/.dist/components/Box.d.ts +67 -0
  38. package/.dist/components/Box.js +211 -0
  39. package/.dist/components/Box.js.map +1 -0
  40. package/.dist/components/Button.d.ts +28 -0
  41. package/.dist/components/Button.js +118 -0
  42. package/.dist/components/Button.js.map +1 -0
  43. package/.dist/components/Checkbox.d.ts +31 -0
  44. package/.dist/components/Checkbox.js +106 -0
  45. package/.dist/components/Checkbox.js.map +1 -0
  46. package/.dist/components/Collapsible.d.ts +32 -0
  47. package/.dist/components/Collapsible.js +109 -0
  48. package/.dist/components/Collapsible.js.map +1 -0
  49. package/.dist/components/CollapsibleText.d.ts +21 -0
  50. package/.dist/components/CollapsibleText.js +113 -0
  51. package/.dist/components/CollapsibleText.js.map +1 -0
  52. package/.dist/components/Digits.d.ts +20 -0
  53. package/.dist/components/Digits.js +843 -0
  54. package/.dist/components/Digits.js.map +1 -0
  55. package/.dist/components/Drawer.d.ts +44 -0
  56. package/.dist/components/Drawer.js +473 -0
  57. package/.dist/components/Drawer.js.map +1 -0
  58. package/.dist/components/Dropdown.d.ts +61 -0
  59. package/.dist/components/Dropdown.js +367 -0
  60. package/.dist/components/Dropdown.js.map +1 -0
  61. package/.dist/components/Header.d.ts +25 -0
  62. package/.dist/components/Header.js +106 -0
  63. package/.dist/components/Header.js.map +1 -0
  64. package/.dist/components/HotKey.d.ts +14 -0
  65. package/.dist/components/HotKey.js +31 -0
  66. package/.dist/components/HotKey.js.map +1 -0
  67. package/.dist/components/Input.d.ts +45 -0
  68. package/.dist/components/Input.js +1109 -0
  69. package/.dist/components/Input.js.map +1 -0
  70. package/.dist/components/Log.d.ts +16 -0
  71. package/.dist/components/Log.js +122 -0
  72. package/.dist/components/Log.js.map +1 -0
  73. package/.dist/components/Progress.d.ts +21 -0
  74. package/.dist/components/Progress.js +200 -0
  75. package/.dist/components/Progress.js.map +1 -0
  76. package/.dist/components/Scrollable.d.ts +50 -0
  77. package/.dist/components/Scrollable.js +226 -0
  78. package/.dist/components/Scrollable.js.map +1 -0
  79. package/.dist/components/ScrollableList.d.ts +70 -0
  80. package/.dist/components/ScrollableList.js +354 -0
  81. package/.dist/components/ScrollableList.js.map +1 -0
  82. package/.dist/components/Separator.d.ts +21 -0
  83. package/.dist/components/Separator.js +67 -0
  84. package/.dist/components/Separator.js.map +1 -0
  85. package/.dist/components/Slider.d.ts +60 -0
  86. package/.dist/components/Slider.js +341 -0
  87. package/.dist/components/Slider.js.map +1 -0
  88. package/.dist/components/Space.d.ts +19 -0
  89. package/.dist/components/Space.js +45 -0
  90. package/.dist/components/Space.js.map +1 -0
  91. package/.dist/components/Spinner.d.ts +16 -0
  92. package/.dist/components/Spinner.js +48 -0
  93. package/.dist/components/Spinner.js.map +1 -0
  94. package/.dist/components/Stack.d.ts +33 -0
  95. package/.dist/components/Stack.js +285 -0
  96. package/.dist/components/Stack.js.map +1 -0
  97. package/.dist/components/Tabs.d.ts +52 -0
  98. package/.dist/components/Tabs.js +312 -0
  99. package/.dist/components/Tabs.js.map +1 -0
  100. package/.dist/components/Text.d.ts +35 -0
  101. package/.dist/components/Text.js +242 -0
  102. package/.dist/components/Text.js.map +1 -0
  103. package/.dist/components/ToggleGroup.d.ts +26 -0
  104. package/.dist/components/ToggleGroup.js +279 -0
  105. package/.dist/components/ToggleGroup.js.map +1 -0
  106. package/.dist/components/Tree.d.ts +21 -0
  107. package/.dist/components/Tree.js +233 -0
  108. package/.dist/components/Tree.js.map +1 -0
  109. package/.dist/components/Window.d.ts +6 -0
  110. package/.dist/components/Window.js +17 -0
  111. package/.dist/components/Window.js.map +1 -0
  112. package/.dist/components/fonts.d.ts +2 -0
  113. package/.dist/components/fonts.js +39 -0
  114. package/.dist/components/fonts.js.map +1 -0
  115. package/.dist/components/index.d.ts +27 -0
  116. package/.dist/components/index.js +48 -0
  117. package/.dist/components/index.js.map +1 -0
  118. package/.dist/components/types.d.ts +6 -0
  119. package/.dist/components/types.js +20 -0
  120. package/.dist/components/types.js.map +1 -0
  121. package/.dist/components/utility/TrackMouse.d.ts +16 -0
  122. package/.dist/components/utility/TrackMouse.js +53 -0
  123. package/.dist/components/utility/TrackMouse.js.map +1 -0
  124. package/.dist/components/utility/index.d.ts +1 -0
  125. package/.dist/components/utility/index.js +6 -0
  126. package/.dist/components/utility/index.js.map +1 -0
  127. package/.dist/events/index.d.ts +12 -0
  128. package/.dist/events/index.js +20 -0
  129. package/.dist/events/index.js.map +1 -0
  130. package/.dist/events/key.d.ts +15 -0
  131. package/.dist/events/key.js +105 -0
  132. package/.dist/events/key.js.map +1 -0
  133. package/.dist/events/mouse.d.ts +65 -0
  134. package/.dist/events/mouse.js +68 -0
  135. package/.dist/events/mouse.js.map +1 -0
  136. package/.dist/events/window.d.ts +6 -0
  137. package/.dist/events/window.js +3 -0
  138. package/.dist/events/window.js.map +1 -0
  139. package/.dist/geometry.d.ts +178 -0
  140. package/.dist/geometry.js +315 -0
  141. package/.dist/geometry.js.map +1 -0
  142. package/.dist/iTerm2.d.ts +20 -0
  143. package/.dist/iTerm2.js +60 -0
  144. package/.dist/iTerm2.js.map +1 -0
  145. package/.dist/index.d.ts +18 -0
  146. package/.dist/index.js +37 -0
  147. package/.dist/index.js.map +1 -0
  148. package/.dist/inspect.d.ts +2 -0
  149. package/.dist/inspect.js +118 -0
  150. package/.dist/inspect.js.map +1 -0
  151. package/.dist/log.d.ts +12 -0
  152. package/.dist/log.js +56 -0
  153. package/.dist/log.js.map +1 -0
  154. package/.dist/managers/FocusManager.d.ts +28 -0
  155. package/.dist/managers/FocusManager.js +143 -0
  156. package/.dist/managers/FocusManager.js.map +1 -0
  157. package/.dist/managers/ModalManager.d.ts +10 -0
  158. package/.dist/managers/ModalManager.js +67 -0
  159. package/.dist/managers/ModalManager.js.map +1 -0
  160. package/.dist/managers/MouseManager.d.ts +21 -0
  161. package/.dist/managers/MouseManager.js +313 -0
  162. package/.dist/managers/MouseManager.js.map +1 -0
  163. package/.dist/managers/TickManager.d.ts +11 -0
  164. package/.dist/managers/TickManager.js +63 -0
  165. package/.dist/managers/TickManager.js.map +1 -0
  166. package/.dist/sys/alias.d.ts +470 -0
  167. package/.dist/sys/alias.js +487 -0
  168. package/.dist/sys/alias.js.map +1 -0
  169. package/.dist/sys/colors.d.ts +10 -0
  170. package/.dist/sys/colors.js +285 -0
  171. package/.dist/sys/colors.js.map +1 -0
  172. package/.dist/sys/gpmclient.d.ts +11 -0
  173. package/.dist/sys/gpmclient.js +193 -0
  174. package/.dist/sys/gpmclient.js.map +1 -0
  175. package/.dist/sys/index.d.ts +4 -0
  176. package/.dist/sys/index.js +41 -0
  177. package/.dist/sys/index.js.map +1 -0
  178. package/.dist/sys/keys.d.ts +4 -0
  179. package/.dist/sys/keys.js +531 -0
  180. package/.dist/sys/keys.js.map +1 -0
  181. package/.dist/sys/program.d.ts +356 -0
  182. package/.dist/sys/program.js +3739 -0
  183. package/.dist/sys/program.js.map +1 -0
  184. package/.dist/sys/tput.d.ts +297 -0
  185. package/.dist/sys/tput.js +2708 -0
  186. package/.dist/sys/tput.js.map +1 -0
  187. package/.dist/sys/unicode.d.ts +11 -0
  188. package/.dist/sys/unicode.js +619 -0
  189. package/.dist/sys/unicode.js.map +1 -0
  190. package/.dist/sys/usr/linux +0 -0
  191. package/.dist/sys/usr/windows-ansi +0 -0
  192. package/.dist/sys/usr/xterm +0 -0
  193. package/.dist/sys/usr/xterm-256color +0 -0
  194. package/.dist/sys/usr/xterm.termcap +243 -0
  195. package/.dist/sys/usr/xterm.terminfo +1977 -0
  196. package/.dist/terminal.d.ts +7 -0
  197. package/.dist/terminal.js +3 -0
  198. package/.dist/terminal.js.map +1 -0
  199. package/.dist/util.d.ts +22 -0
  200. package/.dist/util.js +79 -0
  201. package/.dist/util.js.map +1 -0
  202. package/LICENSE +24 -0
  203. package/package.json +49 -0
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Accordion = void 0;
4
+ const Container_1 = require("../Container");
5
+ const geometry_1 = require("../geometry");
6
+ const Text_1 = require("./Text");
7
+ const events_1 = require("../events");
8
+ const Style_1 = require("../Style");
9
+ const util_1 = require("../util");
10
+ // accordion = new Accordion()
11
+ // accordion.addSection('title1', section1)
12
+ // accordion.addSection(new Text({text: 'title2', style: …}), section2)
13
+ //
14
+ // accordion = Accordion.create([
15
+ // ['title1', section1],
16
+ // ['title2', section2],
17
+ // Accordion.Section('title3', section3),
18
+ // ])
19
+ //
20
+ // accordion.add(new Section()) // well behaved
21
+ // accordion.add(new View()) // undefined behaviour
22
+ class Accordion extends Container_1.Container {
23
+ static Section;
24
+ #multiple = false;
25
+ static create(sections, extraProps = {}) {
26
+ const accordion = new Accordion(extraProps);
27
+ for (const section of sections) {
28
+ if (section instanceof Section) {
29
+ accordion.addSection(section);
30
+ }
31
+ else {
32
+ const [title, view] = section;
33
+ accordion.addSection(title, view);
34
+ }
35
+ }
36
+ return accordion;
37
+ }
38
+ constructor(props = {}) {
39
+ super(props);
40
+ this.#update(props);
41
+ }
42
+ update(props) {
43
+ this.#update(props);
44
+ super.update(props);
45
+ }
46
+ #update({ multiple }) {
47
+ this.#multiple = multiple ?? false;
48
+ }
49
+ get sections() {
50
+ return this.children.filter(view => view instanceof Section);
51
+ }
52
+ #sectionDidChange(toggleSection, isOpen) {
53
+ if (this.#multiple || !isOpen) {
54
+ return;
55
+ }
56
+ for (const section of this.sections) {
57
+ if (toggleSection === section) {
58
+ continue;
59
+ }
60
+ section.close();
61
+ }
62
+ }
63
+ addSection(titleOrSection, view) {
64
+ let sectionView;
65
+ if (titleOrSection instanceof Section) {
66
+ sectionView = titleOrSection;
67
+ }
68
+ else {
69
+ sectionView = Section.create(titleOrSection, view);
70
+ }
71
+ this.add(sectionView);
72
+ }
73
+ add(child, at) {
74
+ if (child instanceof Section) {
75
+ child.onClick = this.#sectionDidChange.bind(this);
76
+ if (!this.#multiple && child.isOpen) {
77
+ this.sections.forEach(section => (section.isOpen = false));
78
+ }
79
+ }
80
+ super.add(child, at);
81
+ }
82
+ naturalSize(available) {
83
+ let remainingSize = available.mutableCopy();
84
+ return this.sections.reduce((size, section) => {
85
+ const sectionSize = section.naturalSize(remainingSize);
86
+ remainingSize.height = Math.max(0, remainingSize.height - sectionSize.height);
87
+ return size.growHeight(sectionSize);
88
+ }, geometry_1.Size.zero.mutableCopy());
89
+ }
90
+ render(viewport) {
91
+ const remainingSize = viewport.contentSize.mutableCopy();
92
+ let y = 0;
93
+ for (const section of this.sections) {
94
+ if (y >= viewport.contentSize.height) {
95
+ break;
96
+ }
97
+ const sectionSize = section.naturalSize(remainingSize);
98
+ remainingSize.height -= sectionSize.height;
99
+ viewport.clipped(new geometry_1.Rect([0, y], [remainingSize.width, sectionSize.height]), inner => {
100
+ section.render(inner);
101
+ });
102
+ y += sectionSize.height;
103
+ }
104
+ }
105
+ }
106
+ exports.Accordion = Accordion;
107
+ class Section extends Container_1.Container {
108
+ #isOpen = false;
109
+ onClick;
110
+ #currentViewHeight = 0;
111
+ #actualViewHeight = 0;
112
+ #titleView;
113
+ static create(title, child, extraProps = {}) {
114
+ return new Section({ title, child, ...extraProps });
115
+ }
116
+ constructor({ title, isOpen, ...props }) {
117
+ super(props);
118
+ this.#isOpen = isOpen ?? false;
119
+ this.#titleView = new Text_1.Text({
120
+ text: title ?? '',
121
+ style: this.titleStyle,
122
+ });
123
+ this.#update({ isOpen });
124
+ this.add(this.#titleView);
125
+ (0, util_1.define)(this, 'title', { enumerable: true });
126
+ }
127
+ get title() {
128
+ return this.#titleView.text;
129
+ }
130
+ set title(value) {
131
+ this.#titleView.text = value;
132
+ }
133
+ get isOpen() {
134
+ return this.#isOpen;
135
+ }
136
+ set isOpen(value) {
137
+ if (this.#isOpen === value) {
138
+ return;
139
+ }
140
+ this.#isOpen = value;
141
+ this.#titleView.style = this.titleStyle;
142
+ this.onClick?.(this, value);
143
+ }
144
+ get titleStyle() {
145
+ return new Style_1.Style({ underline: true, bold: this.#isOpen || this.isHover });
146
+ }
147
+ open() {
148
+ this.isOpen = true;
149
+ }
150
+ close() {
151
+ this.isOpen = false;
152
+ }
153
+ update(props) {
154
+ this.#update(props);
155
+ super.update(props);
156
+ }
157
+ #update({ isOpen, onClick }) {
158
+ this.#isOpen = isOpen ?? false;
159
+ this.onClick = onClick;
160
+ }
161
+ naturalSize(available) {
162
+ // 4 => left margin, right space/arrow/space
163
+ // 1 => bottom separator
164
+ const collapsedSize = this.#titleView.naturalSize(available).grow(4, 1);
165
+ const remainingSize = available.shrink(0, collapsedSize.height);
166
+ // 1 => left margin (no right margin)
167
+ let width = 0;
168
+ let height = 0;
169
+ const children = this.children.filter(child => child !== this.#titleView);
170
+ for (const child of children) {
171
+ if (!child.isVisible) {
172
+ continue;
173
+ }
174
+ const naturalSize = child.naturalSize(remainingSize);
175
+ width = Math.max(width, naturalSize.width);
176
+ height = Math.max(height, naturalSize.height);
177
+ }
178
+ width += 1;
179
+ const viewSize = new geometry_1.Size(width, height);
180
+ return this.#currentSize(collapsedSize, viewSize);
181
+ }
182
+ #currentSize(collapsedSize, viewSize) {
183
+ if (this.#actualViewHeight === 0) {
184
+ this.#currentViewHeight = this.#isOpen ? viewSize.height : 0;
185
+ }
186
+ this.#actualViewHeight = viewSize.height;
187
+ return new geometry_1.Size(Math.max(viewSize.width, collapsedSize.width), collapsedSize.height + Math.round(this.#currentViewHeight));
188
+ }
189
+ receiveMouse(event, system) {
190
+ super.receiveMouse(event, system);
191
+ if ((0, events_1.isMouseClicked)(event)) {
192
+ this.#isOpen = !this.#isOpen;
193
+ this.onClick?.(this, this.#isOpen);
194
+ }
195
+ this.#titleView.style = this.titleStyle;
196
+ }
197
+ receiveTick(dt) {
198
+ if (this.#actualViewHeight === 0) {
199
+ this.#currentViewHeight = 0;
200
+ return false;
201
+ }
202
+ const amount = dt / 25;
203
+ let nextHeight;
204
+ if (this.#isOpen) {
205
+ nextHeight = Math.min(this.#actualViewHeight, this.#currentViewHeight + amount);
206
+ }
207
+ else {
208
+ nextHeight = Math.max(0, this.#currentViewHeight - amount);
209
+ }
210
+ this.#currentViewHeight = nextHeight;
211
+ this.invalidateSize();
212
+ return true;
213
+ }
214
+ render(viewport) {
215
+ if (this.#currentViewHeight !== (this.#isOpen ? this.#actualViewHeight : 0)) {
216
+ viewport.registerTick();
217
+ }
218
+ viewport.registerMouse(['mouse.button.left', 'mouse.move']);
219
+ const textStyle = this.theme.text();
220
+ const textSize = this.#titleView
221
+ .naturalSize(viewport.contentSize)
222
+ .mutableCopy();
223
+ textSize.width = Math.max(0, Math.min(viewport.contentSize.width - 4, textSize.width));
224
+ viewport.clipped(geometry_1.Rect.zero.atX(1).withSize(viewport.contentSize.width, textSize.height), inner => {
225
+ this.#titleView.render(inner);
226
+ });
227
+ if (this.#currentViewHeight > 0) {
228
+ viewport.clipped(geometry_1.Rect.zero
229
+ .atY(textSize.height)
230
+ .withSize(viewport.contentSize.width, this.#currentViewHeight), inner => {
231
+ const children = this.children.filter(child => child !== this.#titleView);
232
+ for (const child of children) {
233
+ if (!child.isVisible) {
234
+ continue;
235
+ }
236
+ child.render(viewport);
237
+ }
238
+ });
239
+ }
240
+ viewport.clipped(geometry_1.Rect.zero
241
+ .at(viewport.contentSize.width - 3, 0)
242
+ .withSize(viewport.contentSize.width, 1), textStyle, inner => {
243
+ if (this.#currentViewHeight !==
244
+ (this.#isOpen ? this.#actualViewHeight : 0)) {
245
+ const arrows = this.isHover ? ARROWS.animateHover : ARROWS.animate;
246
+ const index = Math.round((0, geometry_1.interpolate)(this.#currentViewHeight, [0, this.#actualViewHeight], [0, arrows.length - 1]));
247
+ if (arrows[index]) {
248
+ inner.write(arrows[index], new geometry_1.Point(1, 0));
249
+ }
250
+ }
251
+ else if (this.#isOpen) {
252
+ inner.write(this.isHover ? ARROWS.openHover : ARROWS.open, new geometry_1.Point(1, 0));
253
+ }
254
+ else {
255
+ inner.write(this.isHover ? ARROWS.closedHover : ARROWS.closed, new geometry_1.Point(1, 0));
256
+ }
257
+ });
258
+ viewport.clipped(geometry_1.Rect.zero
259
+ .at(0, viewport.contentSize.height - 1)
260
+ .withSize(viewport.contentSize.width, 1), textStyle, inner => {
261
+ inner.write(SEPARATOR.left, new geometry_1.Point(0, 0));
262
+ if (inner.contentSize.width > 2) {
263
+ const middle = SEPARATOR.middle.repeat(inner.contentSize.width - 2);
264
+ inner.write(middle, new geometry_1.Point(1, 0));
265
+ }
266
+ inner.write(SEPARATOR.right, new geometry_1.Point(inner.contentSize.width - 1, 0));
267
+ });
268
+ }
269
+ }
270
+ Accordion.Section = Section;
271
+ const ARROWS = {
272
+ open: '△',
273
+ openHover: '▲',
274
+ closed: '▽',
275
+ closedHover: '▼',
276
+ animate: ['▽', '◁', '△'],
277
+ animateHover: ['▼', '◀︎', '▲'],
278
+ };
279
+ const SEPARATOR = { left: '╶', middle: '─', right: '╴' };
280
+ /* ▷▶︎ ◀︎◁ ▼▽ ▲△
281
+
282
+ S͟e͟c͟t͟i͟o͟n͟ ͟1 ▽
283
+ ╶─────────────╴
284
+ S͟e͟c͟t͟i͟o͟n͟ ͟2 ▼ // hover
285
+ ╶─────────────╴
286
+ S͟e͟c͟t͟i͟o͟n͟ ͟3 △ // open
287
+ Content........
288
+ goes here......
289
+ ╶─────────────╴
290
+ S͟e͟c͟t͟i͟o͟n͟ ͟3 ▽ ◺ ◁ ◸ △ // animation
291
+ ╶─────────────╴
292
+
293
+ */
294
+ //# sourceMappingURL=Accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../lib/components/Accordion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Viewport } from '../Viewport';
2
+ import { type Props as ContainerProps, Container } from '../Container';
3
+ import { Size } from '../geometry';
4
+ export type Border = 'none' | 'single' | 'bold' | 'double' | 'rounded' | 'dotted' | 'popout';
5
+ export type BorderChars = [string, string, string, string, string, string] | [string, string, string, string, string, string, string] | [string, string, string, string, string, string, string, string];
6
+ export type CalculatedBorderChars = [
7
+ string,
8
+ string,
9
+ string,
10
+ string,
11
+ string,
12
+ string,
13
+ string,
14
+ string
15
+ ];
16
+ export interface BorderSizes {
17
+ maxTop: number;
18
+ maxBottom: number;
19
+ maxRight: number;
20
+ maxLeft: number;
21
+ topLeft: {
22
+ width: number;
23
+ height: number;
24
+ };
25
+ topMiddle: {
26
+ width: number;
27
+ height: number;
28
+ };
29
+ topRight: {
30
+ width: number;
31
+ height: number;
32
+ };
33
+ leftMiddle: {
34
+ width: number;
35
+ height: number;
36
+ };
37
+ rightMiddle: {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ bottomLeft: {
42
+ width: number;
43
+ height: number;
44
+ };
45
+ bottomMiddle: {
46
+ width: number;
47
+ height: number;
48
+ };
49
+ bottomRight: {
50
+ width: number;
51
+ height: number;
52
+ };
53
+ }
54
+ interface Props extends ContainerProps {
55
+ border?: Border | BorderChars;
56
+ highlight?: boolean;
57
+ }
58
+ export declare class Box extends Container {
59
+ #private;
60
+ constructor(props: Props);
61
+ get border(): Border | BorderChars;
62
+ set border(value: Border | BorderChars);
63
+ update(props: Props): void;
64
+ naturalSize(available: Size): Size;
65
+ render(viewport: Viewport): void;
66
+ }
67
+ export {};
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Box = void 0;
4
+ const sys_1 = require("../sys");
5
+ const Container_1 = require("../Container");
6
+ const geometry_1 = require("../geometry");
7
+ const Style_1 = require("../Style");
8
+ const util_1 = require("../util");
9
+ class Box extends Container_1.Container {
10
+ #border = 'single';
11
+ #borderChars = BORDERS.single;
12
+ #borderSizes = BORDER_SIZE_ZERO;
13
+ #highlight = false;
14
+ constructor(props) {
15
+ super(props);
16
+ (0, util_1.define)(this, 'border', { enumerable: true });
17
+ this.#update(props);
18
+ }
19
+ get border() {
20
+ return this.#border;
21
+ }
22
+ set border(value) {
23
+ this.#border = value;
24
+ [this.#borderChars, this.#borderSizes] = calculateBorder(value);
25
+ }
26
+ update(props) {
27
+ this.#update(props);
28
+ super.update(props);
29
+ }
30
+ #update({ highlight, border }) {
31
+ this.#highlight = highlight ?? false;
32
+ this.border = border ?? 'single';
33
+ }
34
+ naturalSize(available) {
35
+ const naturalSize = super.naturalSize(available.shrink(this.#borderSizes.maxLeft + this.#borderSizes.maxRight, this.#borderSizes.maxTop + this.#borderSizes.maxBottom));
36
+ return naturalSize.grow(this.#borderSizes.maxLeft + this.#borderSizes.maxRight, this.#borderSizes.maxTop + this.#borderSizes.maxBottom);
37
+ }
38
+ render(viewport) {
39
+ if (viewport.isEmpty) {
40
+ return super.render(viewport);
41
+ }
42
+ if (this.#highlight) {
43
+ viewport.registerMouse('mouse.move');
44
+ }
45
+ const [top, left, tl, tr, bl, br, bottom, right] = this.#borderChars;
46
+ const maxX = viewport.contentSize.width;
47
+ const maxY = viewport.contentSize.height;
48
+ const innerTopWidth = Math.max(0, maxX - this.#borderSizes.topLeft.width - this.#borderSizes.topRight.width);
49
+ const innerBottomWidth = Math.max(0, maxX -
50
+ this.#borderSizes.bottomLeft.width -
51
+ this.#borderSizes.bottomRight.width);
52
+ const innerMiddleWidth = Math.max(0, maxX - this.#borderSizes.maxLeft - this.#borderSizes.maxRight);
53
+ const innerHeight = Math.max(0, maxY - this.#borderSizes.maxTop - this.#borderSizes.maxBottom);
54
+ const leftMaxX = this.#borderSizes.maxLeft;
55
+ const topRightX = this.#borderSizes.topLeft.width + innerTopWidth;
56
+ const bottomRightX = this.#borderSizes.bottomLeft.width + innerBottomWidth;
57
+ const middleRightX = this.#borderSizes.maxLeft + innerMiddleWidth;
58
+ const topInnerY = this.#borderSizes.maxTop;
59
+ const bottomInnerY = this.#borderSizes.maxTop + innerHeight;
60
+ const borderStyle = this.theme.text({ isHover: this.isHover });
61
+ const innerStyle = new Style_1.Style({ background: borderStyle.background });
62
+ const innerOrigin = new geometry_1.Point(this.#borderSizes.maxLeft, this.#borderSizes.maxTop);
63
+ if (innerHeight && innerMiddleWidth) {
64
+ for (let y = 0; y < innerHeight; ++y) {
65
+ const spaces = ' '.repeat(innerMiddleWidth);
66
+ viewport.write(spaces, innerOrigin.offset(0, y), innerStyle);
67
+ }
68
+ }
69
+ viewport.clipped(new geometry_1.Rect(innerOrigin, [innerMiddleWidth, innerHeight]), inside => super.render(inside));
70
+ viewport.usingPen(borderStyle, () => {
71
+ const [tlLines, topLines, trLines] = [
72
+ tl.split('\n'),
73
+ top.split('\n'),
74
+ tr.split('\n'),
75
+ ];
76
+ for (let lineY = 0; lineY < topInnerY; ++lineY) {
77
+ const [lineTL, lineTop, lineTR] = [
78
+ tlLines[lineY] ?? '',
79
+ topLines[lineY] ?? '',
80
+ trLines[lineY] ?? '',
81
+ ];
82
+ viewport.write(lineTL, new geometry_1.Point(0, lineY));
83
+ if (lineTop.length) {
84
+ viewport.write(lineTop
85
+ .repeat(Math.ceil(innerTopWidth / this.#borderSizes.topMiddle.width))
86
+ .slice(0, innerTopWidth), new geometry_1.Point(leftMaxX, lineY));
87
+ }
88
+ viewport.write(lineTR, new geometry_1.Point(topRightX, lineY));
89
+ }
90
+ const [leftLines, rightLines] = [left.split('\n'), right.split('\n')];
91
+ for (let lineY = topInnerY; lineY < bottomInnerY; ++lineY) {
92
+ const [lineL, lineR] = [
93
+ leftLines[(lineY - topInnerY) % leftLines.length] ?? '',
94
+ rightLines[(lineY - topInnerY) % rightLines.length] ?? '',
95
+ ];
96
+ viewport.write(lineL, new geometry_1.Point(0, lineY));
97
+ viewport.write(lineR, new geometry_1.Point(middleRightX, lineY));
98
+ }
99
+ const [blLines, bottomLines, brLines] = [
100
+ bl.split('\n'),
101
+ bottom.split('\n'),
102
+ br.split('\n'),
103
+ ];
104
+ for (let lineY = bottomInnerY; lineY < maxY; ++lineY) {
105
+ const [lineBL, lineBottom, lineBR] = [
106
+ blLines[lineY - bottomInnerY] ?? '',
107
+ bottomLines[lineY - bottomInnerY] ?? '',
108
+ brLines[lineY - bottomInnerY] ?? '',
109
+ ];
110
+ viewport.write(lineBL, new geometry_1.Point(0, lineY));
111
+ if (lineBottom.length) {
112
+ viewport.write(lineBottom
113
+ .repeat(Math.ceil(innerBottomWidth / this.#borderSizes.topMiddle.width))
114
+ .slice(0, innerBottomWidth), new geometry_1.Point(leftMaxX, lineY));
115
+ }
116
+ viewport.write(lineBR, new geometry_1.Point(bottomRightX, lineY));
117
+ }
118
+ });
119
+ }
120
+ }
121
+ exports.Box = Box;
122
+ function calculateBorder(border) {
123
+ let chars;
124
+ if (typeof border === 'string') {
125
+ chars = BORDERS[border];
126
+ }
127
+ else if (border.length === 8) {
128
+ chars = border;
129
+ }
130
+ else if (border.length === 7) {
131
+ chars = [...border, border[1]];
132
+ }
133
+ else {
134
+ chars = [...border, border[0], border[1]];
135
+ }
136
+ // TLTL\n| TOP TOP\n|TRTR\n
137
+ // TL 2| TOP 0|TR 3
138
+ // ------+----------+----
139
+ // LEFT\n| |RIGHT\n
140
+ // LEFT 1| |RIGHT 7
141
+ // ------+----------+----
142
+ // BLBL\n| BOTTOM\n |BRBR\n
143
+ // BL 5 | BOTTOM 6|BR 4
144
+ const topLeft = borderSize(chars[2]);
145
+ const topMiddle = borderSize(chars[0]);
146
+ const topRight = borderSize(chars[3]);
147
+ const leftMiddle = borderSize(chars[1]);
148
+ const bottomLeft = borderSize(chars[4]);
149
+ const bottomMiddle = chars[6] !== undefined ? borderSize(chars[6]) : topMiddle;
150
+ const bottomRight = borderSize(chars[5]);
151
+ const rightMiddle = chars[7] !== undefined ? borderSize(chars[7]) : leftMiddle;
152
+ return [
153
+ chars,
154
+ {
155
+ maxLeft: leftMiddle.width,
156
+ maxRight: rightMiddle.width,
157
+ // if leftMiddle and rightMiddle are the same width as topLeft and topRight
158
+ // corners, use topMiddle.height as maxTop.
159
+ // Otherwise, use the max of the corners and middle.
160
+ maxTop: leftMiddle.width === topLeft.width &&
161
+ rightMiddle.width === topRight.width
162
+ ? topMiddle.height
163
+ : Math.max(topLeft.height, topMiddle.height, topRight.height),
164
+ // if leftMiddle and rightMiddle are the same width as bottomLeft and bottomRight
165
+ // corners, use bottomMiddle.height as maxBottom.
166
+ // Otherwise, use the max of the corners and middle.
167
+ maxBottom: leftMiddle.width === topLeft.width &&
168
+ rightMiddle.width === topRight.width
169
+ ? bottomMiddle.height
170
+ : Math.max(bottomLeft.height, bottomMiddle.height, bottomRight.height),
171
+ topLeft,
172
+ topMiddle,
173
+ topRight,
174
+ leftMiddle,
175
+ rightMiddle,
176
+ bottomLeft,
177
+ bottomMiddle,
178
+ bottomRight,
179
+ },
180
+ ];
181
+ }
182
+ function borderSize(str) {
183
+ if (str === '') {
184
+ return { width: 0, height: 0 };
185
+ }
186
+ return sys_1.unicode.stringSize(str);
187
+ }
188
+ const BORDERS = {
189
+ none: ['', '', '', '', '', '', '', ''],
190
+ single: ['─', '│', '┌', '┐', '└', '┘', '─', '│'],
191
+ bold: ['━', '┃', '┏', '┓', '┗', '┛', '━', '┃'],
192
+ double: ['═', '║', '╔', '╗', '╚', '╝', '═', '║'],
193
+ rounded: ['─', '│', '╭', '╮', '╰', '╯', '─', '│'],
194
+ dotted: ['⠒', '⡇', '⡖', '⢲', '⠧', '⠼', '⠤', '⢸'],
195
+ popout: [' \n─', '│', ' \n┌', ' /\\ \n/ \\─┐', '└', '┘', '─', '│'],
196
+ };
197
+ const BORDER_SIZE_ZERO = {
198
+ maxTop: 0,
199
+ maxRight: 0,
200
+ maxBottom: 0,
201
+ maxLeft: 0,
202
+ topMiddle: new geometry_1.Size(0, 0),
203
+ topLeft: new geometry_1.Size(0, 0),
204
+ topRight: new geometry_1.Size(0, 0),
205
+ leftMiddle: new geometry_1.Size(0, 0),
206
+ rightMiddle: new geometry_1.Size(0, 0),
207
+ bottomMiddle: new geometry_1.Size(0, 0),
208
+ bottomLeft: new geometry_1.Size(0, 0),
209
+ bottomRight: new geometry_1.Size(0, 0),
210
+ };
211
+ //# sourceMappingURL=Box.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Box.js","sourceRoot":"","sources":["../../lib/components/Box.ts"],"names":[],"mappings":";;;AAAA,gCAA8B;AAG9B,4CAAoE;AACpE,0CAA6C;AAC7C,oCAA8B;AAC9B,kCAA8B;AAmD9B,MAAa,GAAI,SAAQ,qBAAS;IAChC,OAAO,GAAyB,QAAQ,CAAA;IACxC,YAAY,GAA0B,OAAO,CAAC,MAAM,CAAA;IACpD,YAAY,GAAgB,gBAAgB,CAAA;IAC5C,UAAU,GAAY,KAAK,CAAA;IAE3B,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAA;QAEZ,IAAA,aAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAA;QAE1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,IAAI,MAAM,CAAC,KAA2B;QACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CACnB;QAAA,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACnB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,EAAC,SAAS,EAAE,MAAM,EAAQ;QAChC,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,KAAK,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAA;IAClC,CAAC;IAED,WAAW,CAAC,SAAe;QACzB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,SAAS,CAAC,MAAM,CACd,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EACtD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CACvD,CACF,CAAA;QAED,OAAO,WAAW,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EACtD,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CACvD,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAkB;QACvB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC;QAED,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAA;QAEpE,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAA;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAA;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAC1E,CAAA;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,IAAI;YACF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK;YAClC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CACtC,CAAA;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC9D,CAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,CAAC,EACD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAC9D,CAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAA;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,gBAAgB,CAAA;QAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,gBAAgB,CAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAA;QAE3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAA;QAE5D,MAAM,UAAU,GAAG,IAAI,aAAK,CAAC,EAAC,UAAU,EAAE,WAAW,CAAC,UAAU,EAAC,CAAC,CAAA;QAClE,MAAM,WAAW,GAAG,IAAI,gBAAK,CAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CACzB,CAAA;QACD,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;gBAC3C,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,OAAO,CACd,IAAI,eAAI,CAAC,WAAW,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EACtD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAC/B,CAAA;QAED,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG;gBACnC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACf,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aACf,CAAA;YACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC/C,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG;oBAChC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;oBACpB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;oBACrB,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;iBACrB,CAAA;gBACD,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,gBAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,QAAQ,CAAC,KAAK,CACZ,OAAO;yBACJ,MAAM,CACL,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAC7D;yBACA,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAC1B,IAAI,gBAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC3B,CAAA;gBACH,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,gBAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;YACrD,CAAC;YAED,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACrE,KAAK,IAAI,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC1D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG;oBACrB,SAAS,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;oBACvD,UAAU,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;iBAC1D,CAAA;gBACD,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,gBAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC1C,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,gBAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAA;YACvD,CAAC;YAED,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG;gBACtC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aACf,CAAA;YACD,KAAK,IAAI,KAAK,GAAG,YAAY,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;gBACrD,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG;oBACnC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE;oBACnC,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE;oBACvC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE;iBACpC,CAAA;gBACD,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,gBAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC3C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtB,QAAQ,CAAC,KAAK,CACZ,UAAU;yBACP,MAAM,CACL,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAChE;yBACA,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAC7B,IAAI,gBAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAC3B,CAAA;gBACH,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,gBAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAA;YACxD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AArKD,kBAqKC;AAED,SAAS,eAAe,CACtB,MAA4B;IAE5B,IAAI,KAA4B,CAAA;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,GAAG,MAAM,CAAA;IAChB,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,2BAA2B;IAC3B,0BAA0B;IAC1B,yBAAyB;IACzB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;IACzB,2BAA2B;IAC3B,0BAA0B;IAE1B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9E,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAE9E,OAAO;QACL,KAAK;QACL;YACE,OAAO,EAAE,UAAU,CAAC,KAAK;YACzB,QAAQ,EAAE,WAAW,CAAC,KAAK;YAC3B,2EAA2E;YAC3E,2CAA2C;YAC3C,oDAAoD;YACpD,MAAM,EACJ,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;gBAClC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;gBAClC,CAAC,CAAC,SAAS,CAAC,MAAM;gBAClB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YACjE,iFAAiF;YACjF,iDAAiD;YACjD,oDAAoD;YACpD,SAAS,EACP,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;gBAClC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;gBAClC,CAAC,CAAC,YAAY,CAAC,MAAM;gBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,UAAU,CAAC,MAAM,EACjB,YAAY,CAAC,MAAM,EACnB,WAAW,CAAC,MAAM,CACnB;YACP,OAAO;YACP,SAAS;YACT,QAAQ;YACR,UAAU;YACV,WAAW;YACX,UAAU;YACV,YAAY;YACZ,WAAW;SACZ;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAA;IAC9B,CAAC;IACD,OAAO,aAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,OAAO,GAA0C;IACrD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC9C,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACjD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACtE,CAAA;AAED,MAAM,gBAAgB,GAAgB;IACpC,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACvB,QAAQ,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,UAAU,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,WAAW,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B,YAAY,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,UAAU,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,WAAW,EAAE,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAC5B,CAAA"}
@@ -0,0 +1,28 @@
1
+ import type { Viewport } from '../Viewport';
2
+ import { type Props as ContainerProps, Container } from '../Container';
3
+ import { Size } from '../geometry';
4
+ import { type MouseEvent, HotKey, KeyEvent } from '../events';
5
+ import type { View } from '../View';
6
+ import { Alignment } from './types';
7
+ import { System } from '../System';
8
+ type Border = 'default' | 'arrows' | 'none';
9
+ export interface Props extends ContainerProps {
10
+ title?: string;
11
+ align?: Alignment;
12
+ border?: Border;
13
+ onClick?: () => void;
14
+ hotKey?: HotKey;
15
+ }
16
+ export declare class Button extends Container {
17
+ #private;
18
+ constructor(props: Props);
19
+ update(props: Props): void;
20
+ childTheme(view: View): import("..").Theme;
21
+ naturalSize(available: Size): Size;
22
+ get title(): string | undefined;
23
+ set title(value: string | undefined);
24
+ receiveMouse(event: MouseEvent, system: System): void;
25
+ receiveKey(_: KeyEvent): void;
26
+ render(viewport: Viewport): void;
27
+ }
28
+ export {};