@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 @@
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../lib/View.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { Terminal } from './terminal';
2
+ import { Style } from './Style';
3
+ import { Rect, Point, Size } from './geometry';
4
+ import { Screen } from './Screen';
5
+ import { View } from './View';
6
+ import type { HotKeyDef, MouseEventListenerName } from './events';
7
+ /**
8
+ * Defines a region (contentSize) in which to draw, and a subset (visibleRect) that
9
+ * is on-screen. Anything not in the visibleRect is considered invisible (and any
10
+ * drawing outside the rect will be clipped)
11
+ */
12
+ export declare class Viewport {
13
+ #private;
14
+ /**
15
+ * For modals, this offset points to the Rect of the view that presented the modal
16
+ */
17
+ parentRect: Rect;
18
+ constructor(screen: Screen, terminal: Terminal, contentSize: Size);
19
+ /**
20
+ * during render, `contentSize` is what you should use for laying out your
21
+ * rectangles. in most cases this is synonymous with "visible" area, but not
22
+ * always.
23
+ */
24
+ get contentSize(): Size;
25
+ get visibleRect(): Rect;
26
+ get contentRect(): Rect;
27
+ get isEmpty(): boolean;
28
+ /**
29
+ * @return boolean Whether the modal creation was successful
30
+ */
31
+ requestModal(modal: View, onClose: () => void): boolean;
32
+ registerHotKey(key: HotKeyDef): void;
33
+ /**
34
+ * @return boolean Whether the current render target is the focus view
35
+ */
36
+ registerFocus(): boolean;
37
+ /**
38
+ * @see MouseManager.registerMouse
39
+ */
40
+ registerMouse(eventNames: MouseEventListenerName | MouseEventListenerName[], rect?: Rect): void;
41
+ registerTick(): void;
42
+ /**
43
+ * Clears out, and optionally "paints" default foreground/background colors. If no
44
+ * region is provided, the entire visibleRect is painted.
45
+ */
46
+ paint(defaultStyle: Style, region?: Point | Rect): void;
47
+ /**
48
+ * Does not support newlines (no default wrapping behavior),
49
+ * always prints left-to-right.
50
+ */
51
+ write(input: string, to: Point, style?: Style): void;
52
+ /**
53
+ * Forwards 'meta' ANSI sequences (see ITerm) to the terminal
54
+ */
55
+ writeMeta(str: string): void;
56
+ usingPen(style: Style | undefined, draw: (pen: Pen) => void): void;
57
+ usingPen(draw: (pen: Pen) => void): void;
58
+ _render(view: View, clip: Rect, draw: (viewport: Viewport) => void): void;
59
+ clipped(clip: Rect, draw: (viewport: Viewport) => void): void;
60
+ clipped(clip: Rect, style: Style, draw: (viewport: Viewport) => void): void;
61
+ }
62
+ declare class Pen {
63
+ #private;
64
+ constructor(initialStyle: Style, setter: (style?: Style) => void);
65
+ /**
66
+ * Used in Text drawing components - the component usually defines a starting
67
+ * style (`viewport.usingPen(style, pen => {})`), and as it prints characters
68
+ * (`char of unicode.printableChars(line)`) it will detect 0-width SGR codes
69
+ * (`unicode.charWidth(char) === 0`). These codes can be used to create a `Style`
70
+ * object (`Style.fromSGR(char)`).
71
+ *
72
+ * SGR codes do support turn-on/turn-off, but this doesn't work well when, say, the
73
+ * default style already has certain features turned on. For instance, if the
74
+ * string specifies one region to be bold, but the entire Text component is meant
75
+ * to be bold, the behaviour of "turn-off-bold" is actually incorrect here.
76
+ *
77
+ * This is why the `fromSGR` method accepts the default style - it can be compared
78
+ * with the SGR state to determine what to do.
79
+ */
80
+ mergePen(style: Style): void;
81
+ /**
82
+ * replacePen is better when you need to control the drawing style, but you will
83
+ * assign the entire desired style.
84
+ */
85
+ replacePen(style: Style): void;
86
+ pushPen(style?: Style | undefined): void;
87
+ popPen(): void;
88
+ }
89
+ export {};
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Viewport = void 0;
4
+ const sys_1 = require("./sys");
5
+ const ansi_1 = require("./ansi");
6
+ const Style_1 = require("./Style");
7
+ const geometry_1 = require("./geometry");
8
+ const util_1 = require("./util");
9
+ /**
10
+ * Defines a region (contentSize) in which to draw, and a subset (visibleRect) that
11
+ * is on-screen. Anything not in the visibleRect is considered invisible (and any
12
+ * drawing outside the rect will be clipped)
13
+ */
14
+ class Viewport {
15
+ #terminal;
16
+ #currentRender = null;
17
+ #contentSize;
18
+ #visibleRect;
19
+ #offset;
20
+ #screen;
21
+ #style;
22
+ /**
23
+ * For modals, this offset points to the Rect of the view that presented the modal
24
+ */
25
+ parentRect;
26
+ constructor(screen, terminal, contentSize) {
27
+ const rect = new geometry_1.Rect(geometry_1.Point.zero, contentSize);
28
+ this.#terminal = terminal;
29
+ this.#screen = screen;
30
+ this.#contentSize = contentSize;
31
+ this.parentRect = rect;
32
+ this.#visibleRect = rect;
33
+ this.#offset = geometry_1.Point.zero;
34
+ this.#style = Style_1.Style.NONE;
35
+ // control visibility of props for inspect(viewport)
36
+ (0, util_1.define)(this, 'contentSize', { enumerable: true });
37
+ (0, util_1.define)(this, 'contentRect', { enumerable: true });
38
+ (0, util_1.define)(this, 'visibleRect', { enumerable: true });
39
+ }
40
+ /**
41
+ * during render, `contentSize` is what you should use for laying out your
42
+ * rectangles. in most cases this is synonymous with "visible" area, but not
43
+ * always.
44
+ */
45
+ get contentSize() {
46
+ return this.#contentSize;
47
+ }
48
+ /*
49
+ * `visibleRect` can be used to optimize drawing. `visibleRect.origin`
50
+ * represents the first visible point, taking clipping into account.
51
+ */
52
+ get visibleRect() {
53
+ return this.#visibleRect;
54
+ }
55
+ /*
56
+ * `contentRect` is a convenience property, useful for creating clipped inner
57
+ * regions. origin is always [0, 0] and size is contentSize.
58
+ */
59
+ get contentRect() {
60
+ return new geometry_1.Rect(geometry_1.Point.zero, this.#contentSize);
61
+ }
62
+ get isEmpty() {
63
+ return this.#contentSize.isEmpty;
64
+ }
65
+ /**
66
+ * @return boolean Whether the modal creation was successful
67
+ */
68
+ requestModal(modal, onClose) {
69
+ if (!this.#currentRender) {
70
+ return false;
71
+ }
72
+ return this.#screen.requestModal(this.#currentRender, modal, onClose, new geometry_1.Rect(this.#offset, this.#contentSize));
73
+ }
74
+ registerHotKey(key) {
75
+ if (!this.#currentRender) {
76
+ return;
77
+ }
78
+ this.#screen.registerHotKey(this.#currentRender, key);
79
+ }
80
+ /**
81
+ * @return boolean Whether the current render target is the focus view
82
+ */
83
+ registerFocus() {
84
+ if (!this.#currentRender) {
85
+ return false;
86
+ }
87
+ return this.#screen.registerFocus(this.#currentRender);
88
+ }
89
+ /**
90
+ * @see MouseManager.registerMouse
91
+ */
92
+ registerMouse(eventNames, rect) {
93
+ if (!this.#currentRender || this.#currentRender.screen !== this.#screen) {
94
+ return;
95
+ }
96
+ if (rect) {
97
+ rect = this.#visibleRect.intersection(rect);
98
+ }
99
+ else {
100
+ rect = this.#visibleRect;
101
+ }
102
+ const maxX = rect.maxX();
103
+ const maxY = rect.maxY();
104
+ const events = typeof eventNames === 'string' ? [eventNames] : eventNames;
105
+ for (let y = rect.minY(); y < maxY; ++y)
106
+ for (let x = rect.minX(); x < maxX; ++x) {
107
+ this.#screen.registerMouse(this.#currentRender, this.#offset, new geometry_1.Point(x, y), events);
108
+ }
109
+ }
110
+ registerTick() {
111
+ if (!this.#currentRender) {
112
+ return;
113
+ }
114
+ this.#screen.registerTick(this.#currentRender);
115
+ }
116
+ /**
117
+ * Clears out, and optionally "paints" default foreground/background colors. If no
118
+ * region is provided, the entire visibleRect is painted.
119
+ */
120
+ paint(defaultStyle, region) {
121
+ if (region instanceof geometry_1.Point) {
122
+ this.write(ansi_1.BG_DRAW, region, defaultStyle);
123
+ }
124
+ else {
125
+ region ??= this.visibleRect;
126
+ region.forEachPoint(pt => this.write(ansi_1.BG_DRAW, pt, defaultStyle));
127
+ }
128
+ }
129
+ /**
130
+ * Does not support newlines (no default wrapping behavior),
131
+ * always prints left-to-right.
132
+ */
133
+ write(input, to, style) {
134
+ const minX = this.#visibleRect.minX(), maxX = this.#visibleRect.maxX(), minY = this.#visibleRect.minY(), maxY = this.#visibleRect.maxY();
135
+ if (to.x >= maxX || to.y < minY || to.y >= maxY) {
136
+ return;
137
+ }
138
+ style ??= this.#style;
139
+ const startingStyle = style;
140
+ let x = to.x, y = to.y;
141
+ for (const char of sys_1.unicode.printableChars(input)) {
142
+ if (char === '\n') {
143
+ x = to.x;
144
+ y += 1;
145
+ if (y >= maxY) {
146
+ break;
147
+ }
148
+ continue;
149
+ }
150
+ if (x >= maxX) {
151
+ continue;
152
+ }
153
+ const width = sys_1.unicode.charWidth(char);
154
+ if (width === 0) {
155
+ style =
156
+ char === ansi_1.RESET
157
+ ? startingStyle
158
+ : startingStyle.merge(Style_1.Style.fromSGR(char, startingStyle));
159
+ }
160
+ else if (x >= minX && x + width - 1 < maxX) {
161
+ this.#terminal.writeChar(char, this.#offset.x + x, this.#offset.y + y, style);
162
+ if (this.#currentRender &&
163
+ // if the currentRender wasn't added as a child to the screen's tree,
164
+ // we shouldn't perform this check
165
+ this.#currentRender.screen === this.#screen) {
166
+ this.#screen.checkMouse(this.#currentRender, this.#offset.x + x, this.#offset.y + y);
167
+ }
168
+ }
169
+ x += width;
170
+ }
171
+ }
172
+ /**
173
+ * Forwards 'meta' ANSI sequences (see ITerm) to the terminal
174
+ */
175
+ writeMeta(str) {
176
+ this.#terminal.writeMeta(str);
177
+ }
178
+ usingPen(...args) {
179
+ const prevStyle = this.#style;
180
+ const pen = new Pen(prevStyle, (style) => {
181
+ this.#style = style ?? prevStyle;
182
+ });
183
+ if (args.length === 2) {
184
+ if (args[0] && args[0] !== Style_1.Style.NONE) {
185
+ pen.replacePen(args[0]);
186
+ }
187
+ args[1](pen);
188
+ }
189
+ else {
190
+ args[0](pen);
191
+ }
192
+ this.#style = prevStyle;
193
+ }
194
+ _render(view, clip, draw) {
195
+ const prevRender = this.#currentRender;
196
+ this.#currentRender = view;
197
+ this.clipped(clip, draw);
198
+ this.#currentRender = prevRender;
199
+ }
200
+ clipped(...args) {
201
+ let clip;
202
+ let style;
203
+ let draw;
204
+ if (args.length === 3) {
205
+ ;
206
+ [clip, style, draw] = args;
207
+ }
208
+ else {
209
+ ;
210
+ [clip, draw] = args;
211
+ style = this.#style;
212
+ }
213
+ const offsetX = this.#offset.x + clip.origin.x;
214
+ const offsetY = this.#offset.y + clip.origin.y;
215
+ const contentWidth = Math.max(0, clip.size.width);
216
+ const contentHeight = Math.max(0, clip.size.height);
217
+ // visibleRect.origin doesn't go negative - Math.max(0) prevents that.
218
+ // The subtraction of clip.origin.x only has an effect when the clipped
219
+ // origin is *negative*. In that case, the effect is that (0, 0) is outside the
220
+ // visible space, and so visibleRect.origin represents the first visiblePoint
221
+ // (in local coordinates). Basically - trust this math, it looks wrong, but I
222
+ // double checked it.
223
+ const visibleMinX = Math.max(0, this.#visibleRect.origin.x - clip.origin.x);
224
+ const visibleMinY = Math.max(0, this.#visibleRect.origin.y - clip.origin.y);
225
+ const visibleMaxX = Math.min(clip.size.width, this.#visibleRect.origin.x + this.#visibleRect.size.width - clip.origin.x);
226
+ const visibleMaxY = Math.min(clip.size.height, this.#visibleRect.origin.y +
227
+ this.#visibleRect.size.height -
228
+ clip.origin.y);
229
+ const contentSize = new geometry_1.Size(contentWidth, contentHeight);
230
+ const visibleRect = new geometry_1.Rect(new geometry_1.Point(visibleMinX, visibleMinY), new geometry_1.Size(visibleMaxX - visibleMinX, visibleMaxY - visibleMinY));
231
+ const offset = new geometry_1.Point(offsetX, offsetY);
232
+ const prevContentSize = this.#contentSize;
233
+ const prevVisibleRect = this.#visibleRect;
234
+ const prevOffset = this.#offset;
235
+ const prevStyle = this.#style;
236
+ this.#contentSize = contentSize;
237
+ this.#visibleRect = visibleRect;
238
+ this.#offset = offset;
239
+ this.#style = style;
240
+ draw(this);
241
+ this.#contentSize = prevContentSize;
242
+ this.#visibleRect = prevVisibleRect;
243
+ this.#offset = prevOffset;
244
+ this.#style = prevStyle;
245
+ }
246
+ }
247
+ exports.Viewport = Viewport;
248
+ class Pen {
249
+ #setter;
250
+ #initial;
251
+ #stack;
252
+ constructor(initialStyle, setter) {
253
+ this.#setter = setter;
254
+ this.#initial = initialStyle;
255
+ this.#stack = [];
256
+ }
257
+ /**
258
+ * Used in Text drawing components - the component usually defines a starting
259
+ * style (`viewport.usingPen(style, pen => {})`), and as it prints characters
260
+ * (`char of unicode.printableChars(line)`) it will detect 0-width SGR codes
261
+ * (`unicode.charWidth(char) === 0`). These codes can be used to create a `Style`
262
+ * object (`Style.fromSGR(char)`).
263
+ *
264
+ * SGR codes do support turn-on/turn-off, but this doesn't work well when, say, the
265
+ * default style already has certain features turned on. For instance, if the
266
+ * string specifies one region to be bold, but the entire Text component is meant
267
+ * to be bold, the behaviour of "turn-off-bold" is actually incorrect here.
268
+ *
269
+ * This is why the `fromSGR` method accepts the default style - it can be compared
270
+ * with the SGR state to determine what to do.
271
+ */
272
+ mergePen(style) {
273
+ const current = this.#stack[0] ?? this.#initial;
274
+ style = current.merge(style);
275
+ this.replacePen(style);
276
+ }
277
+ /**
278
+ * replacePen is better when you need to control the drawing style, but you will
279
+ * assign the entire desired style.
280
+ */
281
+ replacePen(style) {
282
+ this.#stack[0] = style;
283
+ this.#setter(style);
284
+ }
285
+ pushPen(style = undefined) {
286
+ style ??= this.#stack[0] ?? this.#initial;
287
+ // yeah I know I said pushPen but #style[0] is easier!
288
+ this.#stack.unshift(style);
289
+ this.#setter(style);
290
+ }
291
+ popPen() {
292
+ this.#setter(this.#stack.shift());
293
+ }
294
+ }
295
+ //# sourceMappingURL=Viewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Viewport.js","sourceRoot":"","sources":["../lib/Viewport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export declare const RESET = "\u001B[0m";
2
+ export declare const BG_DRAW = "\u0014";
3
+ export declare function styled(input: string, attr: string): string;
4
+ export declare function style(attr: string): string;
5
+ export declare function ansi(code: number, input: string): string;
6
+ export declare function bold(input: string): string;
7
+ export declare function dim(input: string): string;
8
+ export declare function italic(input: string): string;
9
+ export declare function underline(input: string): string;
10
+ export declare function invert(input: string): string;
11
+ export declare function hide(input: string): string;
12
+ export declare function strikeout(input: string): string;
13
+ export declare function red(input: string): string;
14
+ export declare function green(input: string): string;
15
+ export declare function yellow(input: string): string;
16
+ export declare function blue(input: string): string;
17
+ export declare function magenta(input: string): string;
18
+ export declare function cyan(input: string): string;
19
+ export declare function gray(input: string): string;
20
+ interface Colorize {
21
+ format(input: any): string;
22
+ number(input: number): string;
23
+ symbol(input: symbol): string;
24
+ string(input: string, doQuote?: boolean): string;
25
+ key(input: string | symbol | number): string;
26
+ boolean(input: boolean): string;
27
+ undefined(): string;
28
+ null(): string;
29
+ }
30
+ export declare const colorize: Colorize;
31
+ export {};
package/.dist/ansi.js ADDED
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.colorize = exports.BG_DRAW = exports.RESET = void 0;
4
+ exports.styled = styled;
5
+ exports.style = style;
6
+ exports.ansi = ansi;
7
+ exports.bold = bold;
8
+ exports.dim = dim;
9
+ exports.italic = italic;
10
+ exports.underline = underline;
11
+ exports.invert = invert;
12
+ exports.hide = hide;
13
+ exports.strikeout = strikeout;
14
+ exports.red = red;
15
+ exports.green = green;
16
+ exports.yellow = yellow;
17
+ exports.blue = blue;
18
+ exports.magenta = magenta;
19
+ exports.cyan = cyan;
20
+ exports.gray = gray;
21
+ const sys_1 = require("./sys");
22
+ exports.RESET = '\x1b[0m';
23
+ // unicode.charWidth considers this "drawable" (width: 1). Buffer translates it
24
+ // to a space when it flushes to a terminal. It's used by Viewport.paint to
25
+ // put foreground/background colors into a region – subsequent draws that do
26
+ // _not_ specify foreground/background (value: undefined) will "inherit" this
27
+ // "paint" color.
28
+ exports.BG_DRAW = '\x14';
29
+ function styled(input, attr) {
30
+ return sys_1.program.global?.text(input, attr) ?? input;
31
+ }
32
+ function style(attr) {
33
+ if (attr.startsWith('\x1b[')) {
34
+ return attr;
35
+ }
36
+ return sys_1.program.global?.style(attr) ?? '';
37
+ }
38
+ function ansi(code, input) {
39
+ const opener = '\x1b['.concat(String(code), 'm');
40
+ return opener.concat(input.replace(exports.RESET, opener), exports.RESET);
41
+ }
42
+ function bold(input) {
43
+ return ansi(1, input);
44
+ }
45
+ function dim(input) {
46
+ return ansi(2, input);
47
+ }
48
+ function italic(input) {
49
+ return ansi(3, input);
50
+ }
51
+ function underline(input) {
52
+ return ansi(4, input);
53
+ }
54
+ function invert(input) {
55
+ return ansi(7, input);
56
+ }
57
+ function hide(input) {
58
+ return ansi(8, input);
59
+ }
60
+ function strikeout(input) {
61
+ return ansi(9, input);
62
+ }
63
+ function red(input) {
64
+ return ansi(31, input);
65
+ }
66
+ function green(input) {
67
+ return ansi(32, input);
68
+ }
69
+ function yellow(input) {
70
+ return ansi(33, input);
71
+ }
72
+ function blue(input) {
73
+ return ansi(34, input);
74
+ }
75
+ function magenta(input) {
76
+ return ansi(35, input);
77
+ }
78
+ function cyan(input) {
79
+ return ansi(36, input);
80
+ }
81
+ function gray(input) {
82
+ return ansi(90, input);
83
+ }
84
+ exports.colorize = {
85
+ format: function (input) {
86
+ switch (typeof input) {
87
+ case 'string':
88
+ return exports.colorize.string(input);
89
+ case 'symbol':
90
+ return exports.colorize.symbol(input);
91
+ case 'number':
92
+ return exports.colorize.number(input);
93
+ case 'undefined':
94
+ return exports.colorize.undefined();
95
+ case 'object':
96
+ return exports.colorize['null']();
97
+ default:
98
+ return String(input);
99
+ }
100
+ },
101
+ number: function (input) {
102
+ return yellow(''.concat(String(input)));
103
+ },
104
+ symbol: function (input) {
105
+ return red(''.concat(String(input)));
106
+ },
107
+ string: function (input, doQuote = true) {
108
+ let quote;
109
+ if (doQuote) {
110
+ if (input.includes("'")) {
111
+ quote = '"';
112
+ input = input.replaceAll('"', '\\"');
113
+ }
114
+ else {
115
+ quote = "'";
116
+ input = input.replaceAll("'", "\\'");
117
+ }
118
+ }
119
+ else {
120
+ quote = '';
121
+ }
122
+ input = input.replaceAll(/\n/g, '⤦');
123
+ input = input.replaceAll(/\x1b/g, '␛');
124
+ return green(quote.concat(input, quote));
125
+ },
126
+ key: function (input) {
127
+ return cyan(String(input));
128
+ },
129
+ boolean: function (input) {
130
+ return yellow(''.concat(String(input)));
131
+ },
132
+ undefined: function () {
133
+ return gray('undefined');
134
+ },
135
+ null: function () {
136
+ return bold('null');
137
+ },
138
+ };
139
+ //# sourceMappingURL=ansi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.js","sourceRoot":"","sources":["../lib/ansi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Container, type Props as ContainerProps } from '../Container';
2
+ import { Size } from '../geometry';
3
+ import { View } from '../View';
4
+ import { Viewport } from '../Viewport';
5
+ import { System } from '../System';
6
+ import { type MouseEvent } from '../events';
7
+ import { Style } from '../Style';
8
+ interface Props extends ContainerProps {
9
+ multiple?: boolean;
10
+ }
11
+ interface SectionProps extends ContainerProps {
12
+ title?: string;
13
+ isOpen?: boolean;
14
+ onClick?: (section: Section, isOpen: boolean) => void;
15
+ }
16
+ export declare class Accordion extends Container {
17
+ #private;
18
+ static Section: typeof Section;
19
+ static create(sections: ([string, View] | Section)[], extraProps?: Props): Accordion;
20
+ constructor(props?: Props);
21
+ update(props: Props): void;
22
+ get sections(): Section[];
23
+ addSection(title: string, view: View): void;
24
+ addSection(section: Section): void;
25
+ add(child: View, at?: number): void;
26
+ naturalSize(available: Size): Size;
27
+ render(viewport: Viewport): void;
28
+ }
29
+ declare class Section extends Container {
30
+ #private;
31
+ onClick: ((section: Section, isOpen: boolean) => void) | undefined;
32
+ static create(title: string, child: View, extraProps?: Omit<SectionProps, 'title' | 'view'>): Section;
33
+ constructor({ title, isOpen, ...props }: SectionProps);
34
+ get title(): string;
35
+ set title(value: string);
36
+ get isOpen(): boolean;
37
+ set isOpen(value: boolean);
38
+ get titleStyle(): Style;
39
+ open(): void;
40
+ close(): void;
41
+ update(props: Omit<SectionProps, 'view'>): void;
42
+ naturalSize(available: Size): Size;
43
+ receiveMouse(event: MouseEvent, system: System): void;
44
+ receiveTick(dt: number): boolean;
45
+ render(viewport: Viewport): void;
46
+ }
47
+ export {};