@teaui/core 1.6.8 → 1.7.8
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.
- package/.dist/Screen.d.ts +4 -5
- package/.dist/Screen.js +4 -6
- package/.dist/Screen.js.map +1 -1
- package/.dist/Viewport.d.ts +6 -1
- package/.dist/Viewport.js +6 -2
- package/.dist/Viewport.js.map +1 -1
- package/.dist/components/Accordion.js +1 -1
- package/.dist/components/Accordion.js.map +1 -1
- package/.dist/components/Breadcrumb.d.ts +93 -0
- package/.dist/components/Breadcrumb.js +287 -0
- package/.dist/components/Breadcrumb.js.map +1 -0
- package/.dist/components/Button.js +23 -11
- package/.dist/components/Button.js.map +1 -1
- package/.dist/components/Calendar.d.ts +36 -0
- package/.dist/components/Calendar.js +721 -0
- package/.dist/components/Calendar.js.map +1 -0
- package/.dist/components/Canvas.d.ts +48 -0
- package/.dist/components/Canvas.js +230 -0
- package/.dist/components/Canvas.js.map +1 -0
- package/.dist/components/Checkbox.d.ts +3 -2
- package/.dist/components/Checkbox.js +31 -9
- package/.dist/components/Checkbox.js.map +1 -1
- package/.dist/components/Dropdown.d.ts +1 -1
- package/.dist/components/Dropdown.js +14 -6
- package/.dist/components/Dropdown.js.map +1 -1
- package/.dist/components/Geometry.d.ts +29 -0
- package/.dist/components/Geometry.js +40 -0
- package/.dist/components/Geometry.js.map +1 -0
- package/.dist/components/HotKey.js +1 -1
- package/.dist/components/HotKey.js.map +1 -1
- package/.dist/components/Log.js +1 -1
- package/.dist/components/Log.js.map +1 -1
- package/.dist/components/Logo.d.ts +19 -0
- package/.dist/components/Logo.js +204 -0
- package/.dist/components/Logo.js.map +1 -0
- package/.dist/components/Modal.d.ts +74 -0
- package/.dist/components/Modal.js +113 -0
- package/.dist/components/Modal.js.map +1 -0
- package/.dist/components/Pane.d.ts +43 -0
- package/.dist/components/Pane.js +321 -0
- package/.dist/components/Pane.js.map +1 -0
- package/.dist/components/Pin.d.ts +25 -0
- package/.dist/components/Pin.js +80 -0
- package/.dist/components/Pin.js.map +1 -0
- package/.dist/components/Plot.d.ts +25 -0
- package/.dist/components/Plot.js +171 -0
- package/.dist/components/Plot.js.map +1 -0
- package/.dist/components/Scrollable.d.ts +6 -0
- package/.dist/components/Scrollable.js +14 -2
- package/.dist/components/Scrollable.js.map +1 -1
- package/.dist/components/ScrollableList.d.ts +2 -2
- package/.dist/components/ScrollableList.js +4 -4
- package/.dist/components/ScrollableList.js.map +1 -1
- package/.dist/components/Slider.d.ts +2 -0
- package/.dist/components/Slider.js +11 -1
- package/.dist/components/Slider.js.map +1 -1
- package/.dist/components/Table.d.ts +79 -0
- package/.dist/components/Table.js +603 -0
- package/.dist/components/Table.js.map +1 -0
- package/.dist/components/Tabs.d.ts +2 -0
- package/.dist/components/Tabs.js +14 -1
- package/.dist/components/Tabs.js.map +1 -1
- package/.dist/components/ZStack.d.ts +19 -0
- package/.dist/components/ZStack.js +34 -0
- package/.dist/components/ZStack.js.map +1 -0
- package/.dist/components/charts/BarChart.d.ts +27 -0
- package/.dist/components/charts/BarChart.js +122 -0
- package/.dist/components/charts/BarChart.js.map +1 -0
- package/.dist/components/charts/Chart.d.ts +43 -0
- package/.dist/components/charts/Chart.js +41 -0
- package/.dist/components/charts/Chart.js.map +1 -0
- package/.dist/components/charts/LineChart.d.ts +23 -0
- package/.dist/components/charts/LineChart.js +109 -0
- package/.dist/components/charts/LineChart.js.map +1 -0
- package/.dist/components/charts/index.d.ts +3 -0
- package/.dist/components/charts/index.js +4 -0
- package/.dist/components/charts/index.js.map +1 -0
- package/.dist/components/index.d.ts +12 -0
- package/.dist/components/index.js +12 -0
- package/.dist/components/index.js.map +1 -1
- package/.dist/iTerm2.js +1 -3
- package/.dist/iTerm2.js.map +1 -1
- package/.dist/inspect.js +1 -1
- package/.dist/inspect.js.map +1 -1
- package/.dist/managers/ModalManager.d.ts +2 -1
- package/.dist/managers/ModalManager.js +23 -51
- package/.dist/managers/ModalManager.js.map +1 -1
- package/.dist/testing.d.ts +5 -0
- package/.dist/testing.js +19 -3
- package/.dist/testing.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import { Container } from '../Container.js';
|
|
2
|
+
import { Rect, Point, Size } from '../geometry.js';
|
|
3
|
+
import { isMousePressStart, isMousePressEnd, } from '../events/index.js';
|
|
4
|
+
import { Style } from '../Style.js';
|
|
5
|
+
/** Minimum width when collapsible — below this threshold the pane will collapse on release. */
|
|
6
|
+
const COLLAPSE_THRESHOLD = 3;
|
|
7
|
+
/** Minimum width when NOT collapsible. */
|
|
8
|
+
const MIN_PANE_WIDTH_NOT_COLLAPSIBLE = 4;
|
|
9
|
+
/** Absolute minimum width during drag when collapsible (allows dragging into the collapse zone). */
|
|
10
|
+
const MIN_PANE_WIDTH_DRAG = 1;
|
|
11
|
+
/** Default minimum width (non-drag). */
|
|
12
|
+
const MIN_PANE_WIDTH = 5;
|
|
13
|
+
const SEPARATOR_WIDTH = 1;
|
|
14
|
+
/**
|
|
15
|
+
* A split-pane container for index/detail layouts. The first N-1 children are
|
|
16
|
+
* collapsible "browser" panes with draggable separators. The last child is the
|
|
17
|
+
* "detail" pane that takes remaining space.
|
|
18
|
+
*/
|
|
19
|
+
export class Pane extends Container {
|
|
20
|
+
#border = false;
|
|
21
|
+
#collapsible = true;
|
|
22
|
+
#browserPanes = [];
|
|
23
|
+
// Drag state
|
|
24
|
+
#dragSeparator = -1;
|
|
25
|
+
#dragStartX = 0;
|
|
26
|
+
#dragStartWidth = 0;
|
|
27
|
+
// Hover state
|
|
28
|
+
#hoverSeparator = -1;
|
|
29
|
+
// Cached layout info for mouse hit-testing
|
|
30
|
+
#separatorPositions = [];
|
|
31
|
+
#borderInset = 0;
|
|
32
|
+
#lastAvailableWidth = 80;
|
|
33
|
+
constructor(props = {}) {
|
|
34
|
+
super(props);
|
|
35
|
+
this.#update(props);
|
|
36
|
+
}
|
|
37
|
+
update(props) {
|
|
38
|
+
this.#update(props);
|
|
39
|
+
super.update(props);
|
|
40
|
+
}
|
|
41
|
+
get border() {
|
|
42
|
+
return this.#border;
|
|
43
|
+
}
|
|
44
|
+
set border(value) {
|
|
45
|
+
if (value === this.#border)
|
|
46
|
+
return;
|
|
47
|
+
this.#border = value;
|
|
48
|
+
this.invalidateSize();
|
|
49
|
+
}
|
|
50
|
+
#update({ border, collapsible }) {
|
|
51
|
+
this.#border = border ?? false;
|
|
52
|
+
this.#collapsible = collapsible ?? true;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the browser panes (all children except the last).
|
|
56
|
+
*/
|
|
57
|
+
get browserViews() {
|
|
58
|
+
const children = this.children;
|
|
59
|
+
if (children.length <= 1)
|
|
60
|
+
return [];
|
|
61
|
+
return children.slice(0, -1);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Returns the detail pane (the last child).
|
|
65
|
+
*/
|
|
66
|
+
get detailView() {
|
|
67
|
+
const children = this.children;
|
|
68
|
+
return children.length > 0 ? children[children.length - 1] : undefined;
|
|
69
|
+
}
|
|
70
|
+
#ensurePaneState() {
|
|
71
|
+
const browserCount = Math.max(0, this.children.length - 1);
|
|
72
|
+
while (this.#browserPanes.length < browserCount) {
|
|
73
|
+
this.#browserPanes.push({ width: 20, collapsed: false });
|
|
74
|
+
}
|
|
75
|
+
if (this.#browserPanes.length > browserCount) {
|
|
76
|
+
this.#browserPanes.length = browserCount;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
naturalSize(available) {
|
|
80
|
+
this.#ensurePaneState();
|
|
81
|
+
const borderInset = this.#border ? 2 : 0;
|
|
82
|
+
const innerAvailable = available.shrink(borderInset, borderInset);
|
|
83
|
+
const browsers = this.browserViews;
|
|
84
|
+
let usedWidth = 0;
|
|
85
|
+
for (let i = 0; i < browsers.length; i++) {
|
|
86
|
+
const ns = browsers[i].naturalSize(innerAvailable);
|
|
87
|
+
// Initialize widths from natural size on first layout
|
|
88
|
+
if (this.#browserPanes[i].width === 20) {
|
|
89
|
+
this.#browserPanes[i].width = Math.max(MIN_PANE_WIDTH, Math.min(ns.width, Math.floor(innerAvailable.width / 3)));
|
|
90
|
+
}
|
|
91
|
+
usedWidth +=
|
|
92
|
+
(this.#browserPanes[i].collapsed ? 0 : this.#browserPanes[i].width) +
|
|
93
|
+
SEPARATOR_WIDTH;
|
|
94
|
+
}
|
|
95
|
+
const detailNs = this.detailView?.naturalSize(innerAvailable.shrink(usedWidth, 0));
|
|
96
|
+
const detailWidth = detailNs?.width ?? 0;
|
|
97
|
+
const totalWidth = usedWidth + detailWidth + borderInset;
|
|
98
|
+
return new Size(Math.min(available.width, Math.max(totalWidth, MIN_PANE_WIDTH)), available.height);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Hit-test: given an absolute x position in viewport coordinates,
|
|
102
|
+
* find which separator index (if any) was hit.
|
|
103
|
+
*/
|
|
104
|
+
#hitTestSeparator(x) {
|
|
105
|
+
for (let i = 0; i < this.#separatorPositions.length; i++) {
|
|
106
|
+
if (x === this.#separatorPositions[i]) {
|
|
107
|
+
return i;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return -1;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Whether a given browser pane is in the "will collapse" zone during a drag.
|
|
114
|
+
*/
|
|
115
|
+
#isInCollapseZone(index) {
|
|
116
|
+
if (!this.#collapsible)
|
|
117
|
+
return false;
|
|
118
|
+
const pane = this.#browserPanes[index];
|
|
119
|
+
return !pane.collapsed && pane.width <= COLLAPSE_THRESHOLD;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Whether a given mouse event is part of an ongoing button-drag gesture.
|
|
123
|
+
* This includes dragInside, dragOutside, exit (leaving the region while
|
|
124
|
+
* dragging), and the initial down event itself.
|
|
125
|
+
*/
|
|
126
|
+
#isDragGesture(event) {
|
|
127
|
+
if (!event.name.startsWith('mouse.button.'))
|
|
128
|
+
return false;
|
|
129
|
+
// up and cancel end the gesture
|
|
130
|
+
if (event.name.endsWith('.up') || event.name.endsWith('.cancel'))
|
|
131
|
+
return false;
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
receiveMouse(event, system) {
|
|
135
|
+
super.receiveMouse(event, system);
|
|
136
|
+
const x = event.position.x;
|
|
137
|
+
// During a drag, always track the dragged separator
|
|
138
|
+
if (this.#dragSeparator >= 0) {
|
|
139
|
+
if (this.#isDragGesture(event)) {
|
|
140
|
+
const dx = x - this.#dragStartX;
|
|
141
|
+
const maxWidth = Math.floor(this.#lastAvailableWidth / 2);
|
|
142
|
+
const pane = this.#browserPanes[this.#dragSeparator];
|
|
143
|
+
if (!pane.collapsed) {
|
|
144
|
+
const minDrag = this.#collapsible
|
|
145
|
+
? MIN_PANE_WIDTH_DRAG
|
|
146
|
+
: MIN_PANE_WIDTH_NOT_COLLAPSIBLE;
|
|
147
|
+
pane.width = Math.max(minDrag, Math.min(maxWidth, this.#dragStartWidth + dx));
|
|
148
|
+
}
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (isMousePressEnd(event)) {
|
|
152
|
+
const pane = this.#browserPanes[this.#dragSeparator];
|
|
153
|
+
const dx = Math.abs(x - this.#dragStartX);
|
|
154
|
+
if (this.#collapsible &&
|
|
155
|
+
!pane.collapsed &&
|
|
156
|
+
this.#isInCollapseZone(this.#dragSeparator)) {
|
|
157
|
+
// Released in collapse zone — collapse and restore width
|
|
158
|
+
pane.collapsed = true;
|
|
159
|
+
pane.width = this.#dragStartWidth;
|
|
160
|
+
}
|
|
161
|
+
else if (dx <= 1) {
|
|
162
|
+
// Click without drag — toggle collapse (only if collapsible)
|
|
163
|
+
if (this.#collapsible) {
|
|
164
|
+
pane.collapsed = !pane.collapsed;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
this.#dragSeparator = -1;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const separatorIndex = this.#hitTestSeparator(x);
|
|
172
|
+
// Handle hover
|
|
173
|
+
if (event.name === 'mouse.move.in' || event.name === 'mouse.move.enter') {
|
|
174
|
+
this.#hoverSeparator = separatorIndex;
|
|
175
|
+
}
|
|
176
|
+
else if (event.name === 'mouse.move.exit') {
|
|
177
|
+
this.#hoverSeparator = -1;
|
|
178
|
+
}
|
|
179
|
+
// Handle drag start on a separator
|
|
180
|
+
if (isMousePressStart(event) && separatorIndex >= 0) {
|
|
181
|
+
this.#dragSeparator = separatorIndex;
|
|
182
|
+
this.#dragStartX = x;
|
|
183
|
+
this.#dragStartWidth = this.#browserPanes[separatorIndex].width;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
render(viewport) {
|
|
187
|
+
if (viewport.isEmpty) {
|
|
188
|
+
return super.render(viewport);
|
|
189
|
+
}
|
|
190
|
+
this.#ensurePaneState();
|
|
191
|
+
this.#borderInset = this.#border ? 1 : 0;
|
|
192
|
+
const innerSize = viewport.contentSize.shrink(this.#borderInset * 2, this.#borderInset * 2);
|
|
193
|
+
this.#lastAvailableWidth = innerSize.width;
|
|
194
|
+
// Draw border if enabled
|
|
195
|
+
if (this.#border) {
|
|
196
|
+
this.#renderBorder(viewport);
|
|
197
|
+
}
|
|
198
|
+
// Panes get the full width minus left/right border, but full height
|
|
199
|
+
// so that #renderSeparator can draw border junctions on the top/bottom rows.
|
|
200
|
+
const panesRect = this.#border
|
|
201
|
+
? new Rect(new Point(this.#borderInset, 0), viewport.contentSize.shrink(this.#borderInset * 2, 0))
|
|
202
|
+
: viewport.contentRect;
|
|
203
|
+
viewport.clipped(panesRect, inner => {
|
|
204
|
+
this.#renderPanes(inner);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
#renderPanes(viewport) {
|
|
208
|
+
const browsers = this.browserViews;
|
|
209
|
+
const detail = this.detailView;
|
|
210
|
+
const fullHeight = viewport.contentSize.height;
|
|
211
|
+
// Child content is inset from top/bottom border rows
|
|
212
|
+
const contentTop = this.#borderInset;
|
|
213
|
+
const contentHeight = fullHeight - this.#borderInset * 2;
|
|
214
|
+
let x = 0;
|
|
215
|
+
this.#separatorPositions = [];
|
|
216
|
+
for (let i = 0; i < browsers.length; i++) {
|
|
217
|
+
const pane = this.#browserPanes[i];
|
|
218
|
+
// Render browser pane content (if not collapsed)
|
|
219
|
+
if (!pane.collapsed) {
|
|
220
|
+
const paneWidth = pane.width;
|
|
221
|
+
const paneRect = new Rect(new Point(x, contentTop), new Size(paneWidth, contentHeight));
|
|
222
|
+
viewport.clipped(paneRect, inner => {
|
|
223
|
+
browsers[i].render(inner);
|
|
224
|
+
});
|
|
225
|
+
x += paneWidth;
|
|
226
|
+
}
|
|
227
|
+
// Render separator (full height, including border rows)
|
|
228
|
+
this.#separatorPositions.push(x);
|
|
229
|
+
this.#renderSeparator(viewport, i, x, fullHeight, pane.collapsed);
|
|
230
|
+
x += SEPARATOR_WIDTH;
|
|
231
|
+
}
|
|
232
|
+
// Render detail pane (fills remaining space)
|
|
233
|
+
if (detail) {
|
|
234
|
+
const detailWidth = Math.max(0, viewport.contentSize.width - x);
|
|
235
|
+
if (detailWidth > 0) {
|
|
236
|
+
const detailRect = new Rect(new Point(x, contentTop), new Size(detailWidth, contentHeight));
|
|
237
|
+
viewport.clipped(detailRect, inner => {
|
|
238
|
+
detail.render(inner);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
#renderSeparator(viewport, index, x, fullHeight, collapsed) {
|
|
244
|
+
const isHover = this.#hoverSeparator === index;
|
|
245
|
+
const isDragging = this.#dragSeparator === index;
|
|
246
|
+
const willCollapse = isDragging && this.#isInCollapseZone(index);
|
|
247
|
+
const style = isHover || isDragging ? this.theme.ui({ isHover: true }) : Style.NONE;
|
|
248
|
+
const separatorRect = new Rect(new Point(x, 0), new Size(SEPARATOR_WIDTH, fullHeight));
|
|
249
|
+
viewport.registerMouse(['mouse.move', 'mouse.button.left'], separatorRect);
|
|
250
|
+
const topRow = this.#border ? 0 : -1;
|
|
251
|
+
const bottomRow = this.#border ? fullHeight - 1 : -1;
|
|
252
|
+
const point = new Point(x, 0).mutableCopy();
|
|
253
|
+
viewport.usingPen(style, () => {
|
|
254
|
+
for (point.y = 0; point.y < fullHeight; point.y++) {
|
|
255
|
+
let char;
|
|
256
|
+
if (point.y === topRow) {
|
|
257
|
+
char = collapsed ? BORDER_TOP_COLLAPSED : BORDER_TOP_SEP;
|
|
258
|
+
}
|
|
259
|
+
else if (point.y === bottomRow) {
|
|
260
|
+
char = collapsed ? BORDER_BOTTOM_COLLAPSED : BORDER_BOTTOM_SEP;
|
|
261
|
+
}
|
|
262
|
+
else if (collapsed) {
|
|
263
|
+
char = SEP_COLLAPSED;
|
|
264
|
+
}
|
|
265
|
+
else if (willCollapse) {
|
|
266
|
+
char = point.y % 2 === 1 ? SEP_WILL_COLLAPSE : SEP_DEFAULT;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
char = SEP_DEFAULT;
|
|
270
|
+
}
|
|
271
|
+
viewport.write(char, point);
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
#renderBorder(viewport) {
|
|
276
|
+
const w = viewport.contentSize.width;
|
|
277
|
+
const h = viewport.contentSize.height;
|
|
278
|
+
const point = new Point(0, 0).mutableCopy();
|
|
279
|
+
// Top edge
|
|
280
|
+
point.y = 0;
|
|
281
|
+
for (point.x = 1; point.x < w - 1; point.x++) {
|
|
282
|
+
viewport.write(BORDER_HORIZONTAL, point);
|
|
283
|
+
}
|
|
284
|
+
// Bottom edge
|
|
285
|
+
point.y = h - 1;
|
|
286
|
+
for (point.x = 1; point.x < w - 1; point.x++) {
|
|
287
|
+
viewport.write(BORDER_HORIZONTAL, point);
|
|
288
|
+
}
|
|
289
|
+
// Left & right edges
|
|
290
|
+
for (point.y = 1; point.y < h - 1; point.y++) {
|
|
291
|
+
point.x = 0;
|
|
292
|
+
viewport.write(BORDER_VERTICAL, point);
|
|
293
|
+
point.x = w - 1;
|
|
294
|
+
viewport.write(BORDER_VERTICAL, point);
|
|
295
|
+
}
|
|
296
|
+
// Corners
|
|
297
|
+
viewport.write(BORDER_TOP_LEFT, new Point(0, 0));
|
|
298
|
+
viewport.write(BORDER_TOP_RIGHT, new Point(w - 1, 0));
|
|
299
|
+
viewport.write(BORDER_BOTTOM_LEFT, new Point(0, h - 1));
|
|
300
|
+
viewport.write(BORDER_BOTTOM_RIGHT, new Point(w - 1, h - 1));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
////
|
|
304
|
+
/// Drawing constants
|
|
305
|
+
//
|
|
306
|
+
// Separator characters
|
|
307
|
+
const SEP_DEFAULT = '┃';
|
|
308
|
+
const SEP_COLLAPSED = '║';
|
|
309
|
+
const SEP_WILL_COLLAPSE = '←';
|
|
310
|
+
// Border characters
|
|
311
|
+
const BORDER_HORIZONTAL = '─';
|
|
312
|
+
const BORDER_VERTICAL = '│';
|
|
313
|
+
const BORDER_TOP_LEFT = '╭';
|
|
314
|
+
const BORDER_TOP_RIGHT = '╮';
|
|
315
|
+
const BORDER_BOTTOM_LEFT = '╰';
|
|
316
|
+
const BORDER_BOTTOM_RIGHT = '╯';
|
|
317
|
+
const BORDER_TOP_SEP = '┰';
|
|
318
|
+
const BORDER_BOTTOM_SEP = '┸';
|
|
319
|
+
const BORDER_TOP_COLLAPSED = '╥';
|
|
320
|
+
const BORDER_BOTTOM_COLLAPSED = '╨';
|
|
321
|
+
//# sourceMappingURL=Pane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pane.js","sourceRoot":"","sources":["../../lib/components/Pane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Viewport } from '../Viewport.js';
|
|
2
|
+
import { type Props as ViewProps } from '../View.js';
|
|
3
|
+
import { Container } from '../Container.js';
|
|
4
|
+
import { Size } from '../geometry.js';
|
|
5
|
+
export type PinLocation = 'top-left' | 'top-center' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
6
|
+
interface Props extends ViewProps {
|
|
7
|
+
location?: PinLocation;
|
|
8
|
+
children?: import('../View.js').View[];
|
|
9
|
+
child?: import('../View.js').View;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Positions its children at a specific location within the available space.
|
|
13
|
+
* Takes up all available space (like a flex container) and places children
|
|
14
|
+
* at the specified grid position.
|
|
15
|
+
*/
|
|
16
|
+
export declare class Pin extends Container {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(props?: Props);
|
|
19
|
+
get location(): PinLocation;
|
|
20
|
+
set location(value: PinLocation);
|
|
21
|
+
update(props: Props): void;
|
|
22
|
+
naturalSize(available: Size): Size;
|
|
23
|
+
render(viewport: Viewport): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Container } from '../Container.js';
|
|
2
|
+
import { Rect, Point } from '../geometry.js';
|
|
3
|
+
/**
|
|
4
|
+
* Positions its children at a specific location within the available space.
|
|
5
|
+
* Takes up all available space (like a flex container) and places children
|
|
6
|
+
* at the specified grid position.
|
|
7
|
+
*/
|
|
8
|
+
export class Pin extends Container {
|
|
9
|
+
#location = 'top-left';
|
|
10
|
+
constructor(props = {}) {
|
|
11
|
+
super(props);
|
|
12
|
+
this.#update(props);
|
|
13
|
+
}
|
|
14
|
+
get location() {
|
|
15
|
+
return this.#location;
|
|
16
|
+
}
|
|
17
|
+
set location(value) {
|
|
18
|
+
if (value === this.#location)
|
|
19
|
+
return;
|
|
20
|
+
this.#location = value;
|
|
21
|
+
this.invalidateSize();
|
|
22
|
+
}
|
|
23
|
+
update(props) {
|
|
24
|
+
this.#update(props);
|
|
25
|
+
super.update(props);
|
|
26
|
+
}
|
|
27
|
+
#update({ location }) {
|
|
28
|
+
this.#location = location ?? 'top-left';
|
|
29
|
+
}
|
|
30
|
+
naturalSize(available) {
|
|
31
|
+
return available;
|
|
32
|
+
}
|
|
33
|
+
render(viewport) {
|
|
34
|
+
if (viewport.isEmpty) {
|
|
35
|
+
return super.render(viewport);
|
|
36
|
+
}
|
|
37
|
+
for (const child of this.children) {
|
|
38
|
+
if (!child.isVisible)
|
|
39
|
+
continue;
|
|
40
|
+
const childSize = child.naturalSize(viewport.contentSize);
|
|
41
|
+
const origin = this.#computeOrigin(viewport.contentSize, childSize);
|
|
42
|
+
viewport.clipped(new Rect(origin, childSize), inside => {
|
|
43
|
+
child.render(inside);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
#computeOrigin(available, childSize) {
|
|
48
|
+
let x, y;
|
|
49
|
+
// horizontal
|
|
50
|
+
if (this.#location === 'top-left' ||
|
|
51
|
+
this.#location === 'left' ||
|
|
52
|
+
this.#location === 'bottom-left') {
|
|
53
|
+
x = 0;
|
|
54
|
+
}
|
|
55
|
+
else if (this.#location === 'top-center' ||
|
|
56
|
+
this.#location === 'center' ||
|
|
57
|
+
this.#location === 'bottom-center') {
|
|
58
|
+
x = Math.round((available.width - childSize.width) / 2);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
x = available.width - childSize.width;
|
|
62
|
+
}
|
|
63
|
+
// vertical
|
|
64
|
+
if (this.#location === 'top-left' ||
|
|
65
|
+
this.#location === 'top-center' ||
|
|
66
|
+
this.#location === 'top-right') {
|
|
67
|
+
y = 0;
|
|
68
|
+
}
|
|
69
|
+
else if (this.#location === 'left' ||
|
|
70
|
+
this.#location === 'center' ||
|
|
71
|
+
this.#location === 'right') {
|
|
72
|
+
y = Math.round((available.height - childSize.height) / 2);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
y = available.height - childSize.height;
|
|
76
|
+
}
|
|
77
|
+
return new Point(Math.max(0, x), Math.max(0, y));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=Pin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pin.js","sourceRoot":"","sources":["../../lib/components/Pin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Viewport } from '../Viewport.js';
|
|
2
|
+
import type { Props as ViewProps } from '../View.js';
|
|
3
|
+
import { View } from '../View.js';
|
|
4
|
+
import { Size } from '../geometry.js';
|
|
5
|
+
import { Chart } from './charts/Chart.js';
|
|
6
|
+
interface Props extends ViewProps {
|
|
7
|
+
/** Title displayed above the chart */
|
|
8
|
+
title?: string;
|
|
9
|
+
/** Show x-axis tick labels (default true) */
|
|
10
|
+
xAxisLabels?: boolean;
|
|
11
|
+
/** Show y-axis tick labels (default true) */
|
|
12
|
+
yAxisLabels?: boolean;
|
|
13
|
+
/** Show border/axes lines (default true) */
|
|
14
|
+
showAxes?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class Plot extends View {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(props?: Props);
|
|
19
|
+
update(props: Props): void;
|
|
20
|
+
add(chart: Chart): void;
|
|
21
|
+
remove(chart: Chart): void;
|
|
22
|
+
naturalSize(available: Size): Size;
|
|
23
|
+
render(viewport: Viewport): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { View } from '../View.js';
|
|
2
|
+
import { Point, Rect, Size } from '../geometry.js';
|
|
3
|
+
import { Style } from '../Style.js';
|
|
4
|
+
export class Plot extends View {
|
|
5
|
+
#charts = [];
|
|
6
|
+
#title;
|
|
7
|
+
#xAxisLabels = true;
|
|
8
|
+
#yAxisLabels = true;
|
|
9
|
+
#showAxes = true;
|
|
10
|
+
constructor(props = {}) {
|
|
11
|
+
super(props);
|
|
12
|
+
this.#update(props);
|
|
13
|
+
}
|
|
14
|
+
update(props) {
|
|
15
|
+
this.#update(props);
|
|
16
|
+
super.update(props);
|
|
17
|
+
}
|
|
18
|
+
#update({ title, xAxisLabels, yAxisLabels, showAxes }) {
|
|
19
|
+
this.#title = title;
|
|
20
|
+
this.#xAxisLabels = xAxisLabels ?? true;
|
|
21
|
+
this.#yAxisLabels = yAxisLabels ?? true;
|
|
22
|
+
this.#showAxes = showAxes ?? true;
|
|
23
|
+
}
|
|
24
|
+
add(chart) {
|
|
25
|
+
this.#charts.push(chart);
|
|
26
|
+
this.invalidateRender();
|
|
27
|
+
}
|
|
28
|
+
remove(chart) {
|
|
29
|
+
const idx = this.#charts.indexOf(chart);
|
|
30
|
+
if (idx !== -1) {
|
|
31
|
+
this.#charts.splice(idx, 1);
|
|
32
|
+
this.invalidateRender();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
naturalSize(available) {
|
|
36
|
+
return available;
|
|
37
|
+
}
|
|
38
|
+
render(viewport) {
|
|
39
|
+
if (viewport.isEmpty || this.#charts.length === 0)
|
|
40
|
+
return;
|
|
41
|
+
const textStyle = this.theme.text();
|
|
42
|
+
const totalW = viewport.contentSize.width;
|
|
43
|
+
const totalH = viewport.contentSize.height;
|
|
44
|
+
// Compute combined data ranges from all charts
|
|
45
|
+
const xRange = this.#combinedXRange();
|
|
46
|
+
const yRange = this.#combinedYRange();
|
|
47
|
+
// Layout regions
|
|
48
|
+
let titleHeight = 0;
|
|
49
|
+
if (this.#title) {
|
|
50
|
+
titleHeight = 1;
|
|
51
|
+
}
|
|
52
|
+
// Y-axis labels on the left
|
|
53
|
+
let yLabelWidth = 0;
|
|
54
|
+
let yLabels = [];
|
|
55
|
+
const chartHeight = totalH -
|
|
56
|
+
titleHeight -
|
|
57
|
+
(this.#xAxisLabels ? 1 : 0) -
|
|
58
|
+
(this.#showAxes ? 1 : 0);
|
|
59
|
+
if (this.#yAxisLabels && chartHeight > 0) {
|
|
60
|
+
// Get labels from first chart
|
|
61
|
+
const labelCount = Math.max(2, Math.min(chartHeight, 8));
|
|
62
|
+
yLabels = this.#charts[0].getYLabels(labelCount);
|
|
63
|
+
yLabelWidth = Math.max(0, ...yLabels.map(l => l.length)) + 1; // +1 for space
|
|
64
|
+
}
|
|
65
|
+
// Axis line takes 1 column if shown
|
|
66
|
+
const axisLineWidth = this.#showAxes ? 1 : 0;
|
|
67
|
+
const chartX = yLabelWidth + axisLineWidth;
|
|
68
|
+
const chartY = titleHeight;
|
|
69
|
+
const chartW = Math.max(0, totalW - chartX);
|
|
70
|
+
const chartH = Math.max(0, chartHeight);
|
|
71
|
+
if (chartW <= 0 || chartH <= 0)
|
|
72
|
+
return;
|
|
73
|
+
// Draw title
|
|
74
|
+
if (this.#title && titleHeight > 0) {
|
|
75
|
+
const titleX = chartX + Math.max(0, Math.floor((chartW - this.#title.length) / 2));
|
|
76
|
+
viewport.write(this.#title.slice(0, totalW), new Point(titleX, 0), new Style({ bold: true }).merge(textStyle));
|
|
77
|
+
}
|
|
78
|
+
// Draw y-axis labels
|
|
79
|
+
if (this.#yAxisLabels && yLabels.length > 0 && chartH > 0) {
|
|
80
|
+
for (let i = 0; i < yLabels.length; i++) {
|
|
81
|
+
const labelY = chartY +
|
|
82
|
+
Math.round((i * (chartH - 1)) / Math.max(1, yLabels.length - 1));
|
|
83
|
+
if (labelY < chartY + chartH) {
|
|
84
|
+
const label = yLabels[i].padStart(yLabelWidth - 1);
|
|
85
|
+
viewport.write(label, new Point(0, labelY), textStyle);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Draw axes lines
|
|
90
|
+
if (this.#showAxes) {
|
|
91
|
+
const axisX = yLabelWidth;
|
|
92
|
+
const pt = new Point(0, 0).mutableCopy();
|
|
93
|
+
// Vertical axis line
|
|
94
|
+
for (let y = chartY; y < chartY + chartH; y++) {
|
|
95
|
+
pt.x = axisX;
|
|
96
|
+
pt.y = y;
|
|
97
|
+
viewport.write('│', pt, textStyle);
|
|
98
|
+
}
|
|
99
|
+
// Bottom-left corner
|
|
100
|
+
pt.x = axisX;
|
|
101
|
+
pt.y = chartY + chartH;
|
|
102
|
+
viewport.write('└', pt, textStyle);
|
|
103
|
+
// Horizontal axis line
|
|
104
|
+
for (let x = axisX + 1; x < totalW; x++) {
|
|
105
|
+
pt.x = x;
|
|
106
|
+
pt.y = chartY + chartH;
|
|
107
|
+
viewport.write('─', pt, textStyle);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Draw x-axis labels
|
|
111
|
+
if (this.#xAxisLabels && this.#charts.length > 0) {
|
|
112
|
+
const xLabels = this.#charts[0].getXLabels();
|
|
113
|
+
if (xLabels.length > 0) {
|
|
114
|
+
const xAxisY = chartY + chartH + (this.#showAxes ? 1 : 0);
|
|
115
|
+
if (xAxisY < totalH) {
|
|
116
|
+
// Distribute labels evenly
|
|
117
|
+
const labelCount = Math.min(xLabels.length, Math.floor(chartW / 4));
|
|
118
|
+
for (let i = 0; i < labelCount; i++) {
|
|
119
|
+
const dataIdx = Math.round((i * (xLabels.length - 1)) / Math.max(1, labelCount - 1));
|
|
120
|
+
const label = xLabels[dataIdx];
|
|
121
|
+
const labelX = chartX +
|
|
122
|
+
Math.round((i * (chartW - 1)) / Math.max(1, labelCount - 1));
|
|
123
|
+
const truncated = label.slice(0, Math.min(label.length, chartW - (labelX - chartX)));
|
|
124
|
+
viewport.write(truncated, new Point(labelX, xAxisY), textStyle);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Render charts in the chart area
|
|
130
|
+
const chartRect = new Rect(new Point(chartX, chartY), new Size(chartW, chartH));
|
|
131
|
+
for (const chart of this.#charts) {
|
|
132
|
+
viewport.clipped(chartRect, clippedViewport => {
|
|
133
|
+
chart.renderChart(clippedViewport, {
|
|
134
|
+
width: chartW,
|
|
135
|
+
height: chartH,
|
|
136
|
+
xRange,
|
|
137
|
+
yRange,
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
#combinedXRange() {
|
|
143
|
+
let min = Infinity;
|
|
144
|
+
let max = -Infinity;
|
|
145
|
+
for (const chart of this.#charts) {
|
|
146
|
+
const range = chart.getXRange();
|
|
147
|
+
if (range.min < min)
|
|
148
|
+
min = range.min;
|
|
149
|
+
if (range.max > max)
|
|
150
|
+
max = range.max;
|
|
151
|
+
}
|
|
152
|
+
if (!isFinite(min))
|
|
153
|
+
return { min: 0, max: 1 };
|
|
154
|
+
return { min, max };
|
|
155
|
+
}
|
|
156
|
+
#combinedYRange() {
|
|
157
|
+
let min = Infinity;
|
|
158
|
+
let max = -Infinity;
|
|
159
|
+
for (const chart of this.#charts) {
|
|
160
|
+
const range = chart.getYRange();
|
|
161
|
+
if (range.min < min)
|
|
162
|
+
min = range.min;
|
|
163
|
+
if (range.max > max)
|
|
164
|
+
max = range.max;
|
|
165
|
+
}
|
|
166
|
+
if (!isFinite(min))
|
|
167
|
+
return { min: 0, max: 1 };
|
|
168
|
+
return { min, max };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=Plot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plot.js","sourceRoot":"","sources":["../../lib/components/Plot.ts"],"names":[],"mappings":"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"}
|