@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,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spinner = void 0;
4
+ const View_1 = require("../View");
5
+ const geometry_1 = require("../geometry");
6
+ class Spinner extends View_1.View {
7
+ #isAnimating = false;
8
+ #tick = 0;
9
+ #frame = 0;
10
+ #frameLen = 1;
11
+ constructor({ isAnimating, ...props } = {}) {
12
+ super(props);
13
+ this.#update({ isAnimating });
14
+ }
15
+ update({ isAnimating, ...props }) {
16
+ super.update(props);
17
+ this.#update(props);
18
+ }
19
+ #update({ isAnimating }) {
20
+ this.#isAnimating = isAnimating ?? true;
21
+ }
22
+ naturalSize() {
23
+ return new geometry_1.Size(1, 1);
24
+ }
25
+ receiveTick(dt) {
26
+ this.#tick = this.#tick + dt;
27
+ if (this.#tick > HZ) {
28
+ this.#tick %= HZ;
29
+ this.#frame = (this.#frame + 1) % this.#frameLen;
30
+ }
31
+ return true;
32
+ }
33
+ render(viewport) {
34
+ if (viewport.isEmpty) {
35
+ return;
36
+ }
37
+ if (this.#isAnimating) {
38
+ viewport.registerTick();
39
+ }
40
+ const char = ONE[this.#frame];
41
+ viewport.write(char, geometry_1.Point.zero);
42
+ this.#frameLen = ONE.length;
43
+ }
44
+ }
45
+ exports.Spinner = Spinner;
46
+ const ONE = ['⣾', '⣷', '⣯', '⣟', '⡿', '⢿', '⣻', '⣽'];
47
+ const HZ = 1000 / 10;
48
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../lib/components/Spinner.ts"],"names":[],"mappings":";;;AAEA,kCAA4B;AAC5B,0CAAuC;AAMvC,MAAa,OAAQ,SAAQ,WAAI;IAC/B,YAAY,GAAG,KAAK,CAAA;IACpB,KAAK,GAAG,CAAC,CAAA;IACT,MAAM,GAAG,CAAC,CAAA;IACV,SAAS,GAAG,CAAC,CAAA;IAEb,YAAY,EAAC,WAAW,EAAE,GAAG,KAAK,KAAW,EAAE;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,CAAC,OAAO,CAAC,EAAC,WAAW,EAAC,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,EAAC,WAAW,EAAE,GAAG,KAAK,EAAQ;QACnC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,EAAC,WAAW,EAAQ;QAC1B,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,IAAI,CAAA;IACzC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,eAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;YAChB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QAClD,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,QAAkB;QACvB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,QAAQ,CAAC,YAAY,EAAE,CAAA;QACzB,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAK,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAA;IAC7B,CAAC;CACF;AA/CD,0BA+CC;AAED,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAC7D,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAA"}
@@ -0,0 +1,33 @@
1
+ import type { Viewport } from '../Viewport';
2
+ import { type Props as ViewProps, View } from '../View';
3
+ import type { FlexShorthand, FlexSize } from '../View';
4
+ import { Container } from '../Container';
5
+ import { Size } from '../geometry';
6
+ import { type Direction } from './types';
7
+ interface Props extends ViewProps {
8
+ children?: ([FlexShorthand, View] | View)[];
9
+ child?: [FlexShorthand, View] | View;
10
+ direction?: Direction;
11
+ fill?: boolean;
12
+ gap?: number;
13
+ }
14
+ type ShorthandProps = NonNullable<Props['children']> | Omit<Props, 'direction'>;
15
+ export declare class Stack extends Container {
16
+ #private;
17
+ static down(props?: ShorthandProps, extraProps?: Omit<Props, 'children' | 'direction'>): Stack;
18
+ static up(props?: ShorthandProps, extraProps?: Omit<Props, 'children' | 'direction'>): Stack;
19
+ static right(props?: ShorthandProps, extraProps?: Omit<Props, 'children' | 'direction'>): Stack;
20
+ static left(props?: ShorthandProps, extraProps?: Omit<Props, 'children' | 'direction'>): Stack;
21
+ constructor({ children, child, direction, fill, gap, ...viewProps }: Props);
22
+ get direction(): Direction;
23
+ set direction(value: Direction);
24
+ get gap(): number;
25
+ set gap(value: number);
26
+ update({ children, child, ...props }: Props): void;
27
+ naturalSize(available: Size): Size;
28
+ add(child: View, at?: number): void;
29
+ addFlex(flexSize: FlexSize, child: View, at?: number): void;
30
+ get isVertical(): boolean;
31
+ render(viewport: Viewport): void;
32
+ }
33
+ export {};
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Stack = void 0;
4
+ const View_1 = require("../View");
5
+ const Container_1 = require("../Container");
6
+ const geometry_1 = require("../geometry");
7
+ const util_1 = require("../util");
8
+ function fromShorthand(props, direction, extraProps = {}) {
9
+ if (Array.isArray(props)) {
10
+ return { children: props, direction, ...extraProps };
11
+ }
12
+ else {
13
+ return { ...props, direction, ...extraProps };
14
+ }
15
+ }
16
+ class Stack extends Container_1.Container {
17
+ #direction = 'down';
18
+ #gap = 0;
19
+ #fill = true;
20
+ #sizes = new Map();
21
+ static down(props = {}, extraProps = {}) {
22
+ const direction = 'down';
23
+ return new Stack(fromShorthand(props, direction, extraProps));
24
+ }
25
+ static up(props = {}, extraProps = {}) {
26
+ const direction = 'up';
27
+ return new Stack(fromShorthand(props, direction, extraProps));
28
+ }
29
+ static right(props = {}, extraProps = {}) {
30
+ const direction = 'right';
31
+ return new Stack(fromShorthand(props, direction, extraProps));
32
+ }
33
+ static left(props = {}, extraProps = {}) {
34
+ const direction = 'left';
35
+ return new Stack(fromShorthand(props, direction, extraProps));
36
+ }
37
+ constructor({ children, child, direction, fill, gap, ...viewProps }) {
38
+ super(viewProps);
39
+ (0, util_1.define)(this, 'direction', { enumerable: true });
40
+ (0, util_1.define)(this, 'gap', { enumerable: true });
41
+ this.#update({ direction, fill, gap });
42
+ this.#updateChildren(children, child);
43
+ }
44
+ get direction() {
45
+ return this.#direction;
46
+ }
47
+ set direction(value) {
48
+ this.#direction = value;
49
+ this.invalidateSize();
50
+ }
51
+ get gap() {
52
+ return this.#gap;
53
+ }
54
+ set gap(value) {
55
+ this.#gap = value;
56
+ this.invalidateSize();
57
+ }
58
+ update({ children, child, ...props }) {
59
+ this.#update(props);
60
+ this.#updateChildren(children, child);
61
+ super.update(props);
62
+ }
63
+ #updateChildren(children, child) {
64
+ // this logic comes from Container
65
+ if (child !== undefined) {
66
+ children = (children ?? []).concat([child]);
67
+ }
68
+ if (children === undefined) {
69
+ return;
70
+ }
71
+ if (children.length) {
72
+ const childrenSet = new Set(children);
73
+ for (const child of this.children) {
74
+ if (!childrenSet.has(child)) {
75
+ this.removeChild(child);
76
+ }
77
+ }
78
+ for (const info of children) {
79
+ let flexSize, child;
80
+ if (info instanceof View_1.View) {
81
+ flexSize = info.flex;
82
+ child = info;
83
+ }
84
+ else {
85
+ ;
86
+ [flexSize, child] = info;
87
+ flexSize = (0, View_1.parseFlexShorthand)(flexSize);
88
+ }
89
+ this.addFlex(flexSize, child);
90
+ }
91
+ }
92
+ else {
93
+ this.removeAllChildren();
94
+ }
95
+ }
96
+ #update({ direction, fill, gap }) {
97
+ this.#direction = direction ?? 'down';
98
+ this.#fill = fill ?? true;
99
+ this.#gap = gap ?? 0;
100
+ }
101
+ naturalSize(available) {
102
+ const size = geometry_1.Size.zero.mutableCopy();
103
+ const remainingSize = available.mutableCopy();
104
+ let hasFlex = false;
105
+ for (const child of this.children) {
106
+ const childSize = child.naturalSize(remainingSize);
107
+ if (!child.isVisible) {
108
+ continue;
109
+ }
110
+ if (this.isVertical) {
111
+ if (size.height) {
112
+ size.height += this.#gap;
113
+ }
114
+ remainingSize.height = Math.max(0, remainingSize.height - childSize.height);
115
+ size.width = Math.max(size.width, childSize.width);
116
+ size.height += childSize.height;
117
+ }
118
+ else {
119
+ if (size.width) {
120
+ size.width += this.#gap;
121
+ }
122
+ remainingSize.width = Math.max(0, remainingSize.width - childSize.width);
123
+ size.width += childSize.width;
124
+ size.height = Math.max(size.height, childSize.height);
125
+ }
126
+ const flexSize = this.#sizes.get(child);
127
+ if (flexSize && flexSize !== 'natural') {
128
+ hasFlex = true;
129
+ }
130
+ }
131
+ if (hasFlex && this.#fill) {
132
+ if (this.isVertical) {
133
+ const height = Math.max(size.height, available.height);
134
+ return new geometry_1.Size(size.width, height);
135
+ }
136
+ else {
137
+ const width = Math.max(size.width, available.width);
138
+ return new geometry_1.Size(width, size.height);
139
+ }
140
+ }
141
+ return size;
142
+ }
143
+ add(child, at) {
144
+ super.add(child, at);
145
+ this.#sizes.set(child, child.flex);
146
+ }
147
+ addFlex(flexSize, child, at) {
148
+ super.add(child, at);
149
+ this.#sizes.set(child, flexSize);
150
+ }
151
+ get isVertical() {
152
+ return this.#direction === 'down' || this.#direction === 'up';
153
+ }
154
+ render(viewport) {
155
+ if (viewport.isEmpty) {
156
+ return super.render(viewport);
157
+ }
158
+ const remainingSize = viewport.contentSize.mutableCopy();
159
+ let flexTotal = 0;
160
+ let flexCount = 0;
161
+ // first pass, calculate all the naturalSizes and subtract them from the
162
+ // contentSize - leftovers are divided to the flex views. naturalSizes might
163
+ // as well be memoized along with the flex amounts
164
+ const flexViews = [];
165
+ for (const child of this.children) {
166
+ if (!child.isVisible) {
167
+ continue;
168
+ }
169
+ if (flexViews.length) {
170
+ if (this.isVertical) {
171
+ remainingSize.height = Math.max(0, remainingSize.height - this.#gap);
172
+ }
173
+ else {
174
+ remainingSize.width = Math.max(0, remainingSize.width - this.#gap);
175
+ }
176
+ }
177
+ const flexSize = this.#sizes.get(child) ?? 'natural';
178
+ if (flexSize === 'natural') {
179
+ const childSize = child.naturalSize(remainingSize);
180
+ if (this.isVertical) {
181
+ flexViews.push(['natural', childSize.height, child]);
182
+ remainingSize.height -= childSize.height;
183
+ }
184
+ else {
185
+ flexViews.push(['natural', childSize.width, child]);
186
+ remainingSize.width -= childSize.width;
187
+ }
188
+ remainingSize.height = Math.max(0, remainingSize.height);
189
+ remainingSize.width = Math.max(0, remainingSize.width);
190
+ }
191
+ else {
192
+ flexTotal += flexSize;
193
+ flexViews.push([flexSize, flexSize, child]);
194
+ flexCount += 1;
195
+ }
196
+ }
197
+ let origin;
198
+ switch (this.#direction) {
199
+ case 'right':
200
+ case 'down':
201
+ origin = geometry_1.Point.zero.mutableCopy();
202
+ break;
203
+ case 'left':
204
+ origin = new geometry_1.Point(viewport.contentSize.width, 0);
205
+ break;
206
+ case 'up':
207
+ origin = new geometry_1.Point(0, viewport.contentSize.height);
208
+ break;
209
+ }
210
+ // stores the leftover rounding errors, and added to view once it exceeds 1
211
+ let correctAmount = 0;
212
+ // second pass, divide up the remainingSize to the flex views, subtracting off
213
+ // of remainingSize. The last view receives any leftover height
214
+ const totalRemainingSize = this.isVertical
215
+ ? remainingSize.height
216
+ : remainingSize.width;
217
+ let remainingDimension = totalRemainingSize;
218
+ let isFirst = true;
219
+ for (const [flexSize, amount, child] of flexViews) {
220
+ const childSize = viewport.contentSize.mutableCopy();
221
+ if (!isFirst) {
222
+ remainingDimension -= this.#gap;
223
+ }
224
+ if (flexSize === 'natural') {
225
+ if (this.isVertical) {
226
+ childSize.height = amount;
227
+ }
228
+ else {
229
+ childSize.width = amount;
230
+ }
231
+ }
232
+ else {
233
+ // rounding errors can compound, so we track the error and add it to subsequent
234
+ // views; the last view receives the amount left in remainingSize (0..1)
235
+ let size = (totalRemainingSize / flexTotal) * amount + correctAmount;
236
+ correctAmount = size - ~~size;
237
+ remainingDimension -= ~~size;
238
+ // --flexCount === 0 checks for the last flex view
239
+ if (--flexCount === 0) {
240
+ size += remainingDimension;
241
+ }
242
+ if (this.isVertical) {
243
+ childSize.height = ~~size;
244
+ }
245
+ else {
246
+ childSize.width = ~~size;
247
+ }
248
+ }
249
+ if (this.#direction === 'left') {
250
+ origin.x -= childSize.width;
251
+ }
252
+ else if (this.#direction === 'up') {
253
+ origin.y -= childSize.height;
254
+ }
255
+ if (!isFirst) {
256
+ if (this.#direction === 'right') {
257
+ origin.x += this.#gap;
258
+ }
259
+ else if (this.#direction === 'down') {
260
+ origin.y += this.#gap;
261
+ }
262
+ }
263
+ viewport.clipped(new geometry_1.Rect(origin, childSize), inside => {
264
+ child.render(inside);
265
+ });
266
+ if (!isFirst) {
267
+ if (this.#direction === 'left') {
268
+ origin.x -= this.#gap;
269
+ }
270
+ else if (this.#direction === 'up') {
271
+ origin.y -= this.#gap;
272
+ }
273
+ }
274
+ if (this.#direction === 'right') {
275
+ origin.x += childSize.width;
276
+ }
277
+ else if (this.#direction === 'down') {
278
+ origin.y += childSize.height;
279
+ }
280
+ isFirst = false;
281
+ }
282
+ }
283
+ }
284
+ exports.Stack = Stack;
285
+ //# sourceMappingURL=Stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../lib/components/Stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { Container, type Props as ContainerProps } from '../Container';
2
+ import { Size } from '../geometry';
3
+ import { Style } from '../Style';
4
+ import { View } from '../View';
5
+ import { Viewport } from '../Viewport';
6
+ import { System } from '../System';
7
+ import { type MouseEvent } from '../events';
8
+ interface Props extends ContainerProps {
9
+ /**
10
+ * Draw a border around the content.
11
+ * @default true
12
+ */
13
+ border?: boolean;
14
+ }
15
+ interface TabProps extends ContainerProps {
16
+ title?: string;
17
+ }
18
+ export declare class Tabs extends Container {
19
+ #private;
20
+ static Section: typeof Section;
21
+ static create(tabs: ([string, View] | Section)[], extraProps?: Props): Tabs;
22
+ constructor(props?: Props);
23
+ get tabs(): Section[];
24
+ get tabTitles(): TabTitle[];
25
+ update(props: Props): void;
26
+ addTab(tab: Section): void;
27
+ addTab(title: string, child: View): void;
28
+ add(child: View, at?: number): void;
29
+ removeChild(child: View): void;
30
+ naturalSize(available: Size): Size;
31
+ receiveTick(dt: number): boolean;
32
+ render(viewport: Viewport): void;
33
+ }
34
+ declare class TabTitle extends Container {
35
+ #private;
36
+ onClick: ((tab: TabTitle) => void) | undefined;
37
+ constructor(title: string);
38
+ get title(): string;
39
+ set title(value: string);
40
+ get titleStyle(): Style;
41
+ naturalSize(available: Size): Size;
42
+ receiveMouse(event: MouseEvent, system: System): void;
43
+ render(viewport: Viewport): void;
44
+ }
45
+ declare class Section extends Container {
46
+ readonly titleView: TabTitle;
47
+ static create(title: string, child: View, extraProps?: Omit<TabProps, 'title' | 'view'>): Section;
48
+ constructor({ title, ...props }: TabProps);
49
+ get title(): string;
50
+ set title(value: string);
51
+ }
52
+ export {};