@tokscale/cli 1.4.2 → 2.0.0

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 (188) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +128 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +19 -26
  6. package/dist/auth.d.ts +0 -17
  7. package/dist/auth.d.ts.map +0 -1
  8. package/dist/auth.js +0 -162
  9. package/dist/auth.js.map +0 -1
  10. package/dist/cli.d.ts +0 -9
  11. package/dist/cli.d.ts.map +0 -1
  12. package/dist/cli.js +0 -1523
  13. package/dist/cli.js.map +0 -1
  14. package/dist/credentials.d.ts +0 -50
  15. package/dist/credentials.d.ts.map +0 -1
  16. package/dist/credentials.js +0 -151
  17. package/dist/credentials.js.map +0 -1
  18. package/dist/cursor.d.ts +0 -167
  19. package/dist/cursor.d.ts.map +0 -1
  20. package/dist/cursor.js +0 -906
  21. package/dist/cursor.js.map +0 -1
  22. package/dist/date-utils.d.ts +0 -10
  23. package/dist/date-utils.d.ts.map +0 -1
  24. package/dist/date-utils.js +0 -47
  25. package/dist/date-utils.js.map +0 -1
  26. package/dist/graph-types.d.ts +0 -142
  27. package/dist/graph-types.d.ts.map +0 -1
  28. package/dist/graph-types.js +0 -6
  29. package/dist/graph-types.js.map +0 -1
  30. package/dist/native-runner.d.ts +0 -11
  31. package/dist/native-runner.d.ts.map +0 -1
  32. package/dist/native-runner.js +0 -77
  33. package/dist/native-runner.js.map +0 -1
  34. package/dist/native.d.ts +0 -105
  35. package/dist/native.d.ts.map +0 -1
  36. package/dist/native.js +0 -302
  37. package/dist/native.js.map +0 -1
  38. package/dist/sessions/types.d.ts +0 -28
  39. package/dist/sessions/types.d.ts.map +0 -1
  40. package/dist/sessions/types.js +0 -27
  41. package/dist/sessions/types.js.map +0 -1
  42. package/dist/spinner.d.ts +0 -75
  43. package/dist/spinner.d.ts.map +0 -1
  44. package/dist/spinner.js +0 -203
  45. package/dist/spinner.js.map +0 -1
  46. package/dist/submit.d.ts +0 -22
  47. package/dist/submit.d.ts.map +0 -1
  48. package/dist/submit.js +0 -292
  49. package/dist/submit.js.map +0 -1
  50. package/dist/table.d.ts +0 -42
  51. package/dist/table.d.ts.map +0 -1
  52. package/dist/table.js +0 -181
  53. package/dist/table.js.map +0 -1
  54. package/dist/tui/App.d.ts +0 -4
  55. package/dist/tui/App.d.ts.map +0 -1
  56. package/dist/tui/App.js +0 -350
  57. package/dist/tui/App.js.map +0 -1
  58. package/dist/tui/components/BarChart.d.ts +0 -17
  59. package/dist/tui/components/BarChart.d.ts.map +0 -1
  60. package/dist/tui/components/BarChart.js +0 -146
  61. package/dist/tui/components/BarChart.js.map +0 -1
  62. package/dist/tui/components/DailyView.d.ts +0 -13
  63. package/dist/tui/components/DailyView.d.ts.map +0 -1
  64. package/dist/tui/components/DailyView.js +0 -86
  65. package/dist/tui/components/DailyView.js.map +0 -1
  66. package/dist/tui/components/DateBreakdownPanel.d.ts +0 -7
  67. package/dist/tui/components/DateBreakdownPanel.d.ts.map +0 -1
  68. package/dist/tui/components/DateBreakdownPanel.js +0 -36
  69. package/dist/tui/components/DateBreakdownPanel.js.map +0 -1
  70. package/dist/tui/components/Footer.d.ts +0 -28
  71. package/dist/tui/components/Footer.d.ts.map +0 -1
  72. package/dist/tui/components/Footer.js +0 -130
  73. package/dist/tui/components/Footer.js.map +0 -1
  74. package/dist/tui/components/Header.d.ts +0 -9
  75. package/dist/tui/components/Header.d.ts.map +0 -1
  76. package/dist/tui/components/Header.js +0 -20
  77. package/dist/tui/components/Header.js.map +0 -1
  78. package/dist/tui/components/Legend.d.ts +0 -7
  79. package/dist/tui/components/Legend.d.ts.map +0 -1
  80. package/dist/tui/components/Legend.js +0 -16
  81. package/dist/tui/components/Legend.js.map +0 -1
  82. package/dist/tui/components/LoadingSpinner.d.ts +0 -8
  83. package/dist/tui/components/LoadingSpinner.d.ts.map +0 -1
  84. package/dist/tui/components/LoadingSpinner.js +0 -55
  85. package/dist/tui/components/LoadingSpinner.js.map +0 -1
  86. package/dist/tui/components/ModelRow.d.ts +0 -13
  87. package/dist/tui/components/ModelRow.d.ts.map +0 -1
  88. package/dist/tui/components/ModelRow.js +0 -15
  89. package/dist/tui/components/ModelRow.js.map +0 -1
  90. package/dist/tui/components/ModelView.d.ts +0 -13
  91. package/dist/tui/components/ModelView.d.ts.map +0 -1
  92. package/dist/tui/components/ModelView.js +0 -96
  93. package/dist/tui/components/ModelView.js.map +0 -1
  94. package/dist/tui/components/OverviewView.d.ts +0 -14
  95. package/dist/tui/components/OverviewView.d.ts.map +0 -1
  96. package/dist/tui/components/OverviewView.js +0 -65
  97. package/dist/tui/components/OverviewView.js.map +0 -1
  98. package/dist/tui/components/StatsView.d.ts +0 -14
  99. package/dist/tui/components/StatsView.d.ts.map +0 -1
  100. package/dist/tui/components/StatsView.js +0 -102
  101. package/dist/tui/components/StatsView.js.map +0 -1
  102. package/dist/tui/components/TokenBreakdown.d.ts +0 -14
  103. package/dist/tui/components/TokenBreakdown.d.ts.map +0 -1
  104. package/dist/tui/components/TokenBreakdown.js +0 -10
  105. package/dist/tui/components/TokenBreakdown.js.map +0 -1
  106. package/dist/tui/components/index.d.ts +0 -16
  107. package/dist/tui/components/index.d.ts.map +0 -1
  108. package/dist/tui/components/index.js +0 -13
  109. package/dist/tui/components/index.js.map +0 -1
  110. package/dist/tui/config/settings.d.ts +0 -15
  111. package/dist/tui/config/settings.d.ts.map +0 -1
  112. package/dist/tui/config/settings.js +0 -147
  113. package/dist/tui/config/settings.js.map +0 -1
  114. package/dist/tui/config/themes.d.ts +0 -15
  115. package/dist/tui/config/themes.d.ts.map +0 -1
  116. package/dist/tui/config/themes.js +0 -82
  117. package/dist/tui/config/themes.js.map +0 -1
  118. package/dist/tui/hooks/useData.d.ts +0 -19
  119. package/dist/tui/hooks/useData.d.ts.map +0 -1
  120. package/dist/tui/hooks/useData.js +0 -467
  121. package/dist/tui/hooks/useData.js.map +0 -1
  122. package/dist/tui/index.d.ts +0 -4
  123. package/dist/tui/index.d.ts.map +0 -1
  124. package/dist/tui/index.js +0 -36
  125. package/dist/tui/index.js.map +0 -1
  126. package/dist/tui/types/index.d.ts +0 -137
  127. package/dist/tui/types/index.d.ts.map +0 -1
  128. package/dist/tui/types/index.js +0 -25
  129. package/dist/tui/types/index.js.map +0 -1
  130. package/dist/tui/utils/cleanup.d.ts +0 -22
  131. package/dist/tui/utils/cleanup.d.ts.map +0 -1
  132. package/dist/tui/utils/cleanup.js +0 -59
  133. package/dist/tui/utils/cleanup.js.map +0 -1
  134. package/dist/tui/utils/colors.d.ts +0 -19
  135. package/dist/tui/utils/colors.d.ts.map +0 -1
  136. package/dist/tui/utils/colors.js +0 -68
  137. package/dist/tui/utils/colors.js.map +0 -1
  138. package/dist/tui/utils/format.d.ts +0 -7
  139. package/dist/tui/utils/format.d.ts.map +0 -1
  140. package/dist/tui/utils/format.js +0 -45
  141. package/dist/tui/utils/format.js.map +0 -1
  142. package/dist/tui/utils/responsive.d.ts +0 -5
  143. package/dist/tui/utils/responsive.d.ts.map +0 -1
  144. package/dist/tui/utils/responsive.js +0 -5
  145. package/dist/tui/utils/responsive.js.map +0 -1
  146. package/dist/wrapped.d.ts +0 -43
  147. package/dist/wrapped.d.ts.map +0 -1
  148. package/dist/wrapped.js +0 -716
  149. package/dist/wrapped.js.map +0 -1
  150. package/src/auth.ts +0 -211
  151. package/src/cli.ts +0 -1865
  152. package/src/credentials.ts +0 -176
  153. package/src/cursor.ts +0 -1044
  154. package/src/date-utils.ts +0 -51
  155. package/src/graph-types.ts +0 -175
  156. package/src/native-runner.js +0 -4
  157. package/src/native-runner.ts +0 -91
  158. package/src/native.ts +0 -631
  159. package/src/sessions/types.ts +0 -59
  160. package/src/spinner.ts +0 -283
  161. package/src/submit.ts +0 -358
  162. package/src/table.ts +0 -233
  163. package/src/tui/App.tsx +0 -443
  164. package/src/tui/components/BarChart.tsx +0 -205
  165. package/src/tui/components/DailyView.tsx +0 -132
  166. package/src/tui/components/DateBreakdownPanel.tsx +0 -79
  167. package/src/tui/components/Footer.tsx +0 -368
  168. package/src/tui/components/Header.tsx +0 -68
  169. package/src/tui/components/Legend.tsx +0 -39
  170. package/src/tui/components/LoadingSpinner.tsx +0 -81
  171. package/src/tui/components/ModelRow.tsx +0 -47
  172. package/src/tui/components/ModelView.tsx +0 -147
  173. package/src/tui/components/OverviewView.tsx +0 -121
  174. package/src/tui/components/StatsView.tsx +0 -249
  175. package/src/tui/components/TokenBreakdown.tsx +0 -46
  176. package/src/tui/components/index.ts +0 -15
  177. package/src/tui/config/settings.ts +0 -183
  178. package/src/tui/config/themes.ts +0 -115
  179. package/src/tui/hooks/useData.ts +0 -557
  180. package/src/tui/index.tsx +0 -44
  181. package/src/tui/opentui.d.ts +0 -166
  182. package/src/tui/types/index.ts +0 -172
  183. package/src/tui/utils/cleanup.ts +0 -65
  184. package/src/tui/utils/colors.ts +0 -76
  185. package/src/tui/utils/format.ts +0 -36
  186. package/src/tui/utils/responsive.ts +0 -8
  187. package/src/types.d.ts +0 -28
  188. package/src/wrapped.ts +0 -845
package/dist/tui/App.js DELETED
@@ -1,350 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
- import { createEffect, createSignal, Switch, Match, onCleanup } from "solid-js";
3
- import { useKeyboard, useTerminalDimensions, useRenderer } from "@opentui/solid";
4
- import clipboardy from "clipboardy";
5
- import { Header } from "./components/Header.js";
6
- import { Footer } from "./components/Footer.js";
7
- import { ModelView } from "./components/ModelView.js";
8
- import { DailyView } from "./components/DailyView.js";
9
- import { StatsView } from "./components/StatsView.js";
10
- import { OverviewView } from "./components/OverviewView.js";
11
- import { LoadingSpinner } from "./components/LoadingSpinner.js";
12
- import { useData } from "./hooks/useData.js";
13
- import { DEFAULT_PALETTE, getPaletteNames } from "./config/themes.js";
14
- import { loadSettings, saveSettings, getCacheTimestamp } from "./config/settings.js";
15
- import { TABS, ALL_SOURCES } from "./types/index.js";
16
- const PALETTE_NAMES = getPaletteNames();
17
- function cycleTabForward(current) {
18
- const idx = TABS.indexOf(current);
19
- return TABS[(idx + 1) % TABS.length];
20
- }
21
- function cycleTabBackward(current) {
22
- const idx = TABS.indexOf(current);
23
- return TABS[(idx - 1 + TABS.length) % TABS.length];
24
- }
25
- export function App(props) {
26
- const renderer = useRenderer();
27
- const terminalDimensions = useTerminalDimensions();
28
- const columns = () => terminalDimensions().width;
29
- const rows = () => terminalDimensions().height;
30
- const settings = loadSettings();
31
- const [activeTab, setActiveTab] = createSignal(props.initialTab ?? "overview");
32
- const [enabledSources, setEnabledSources] = createSignal(new Set(props.enabledSources ?? ALL_SOURCES));
33
- const [sortBy, setSortBy] = createSignal(props.sortBy ?? "tokens");
34
- const [sortDesc, setSortDesc] = createSignal(props.sortDesc ?? true);
35
- const [selectedIndex, setSelectedIndex] = createSignal(0);
36
- const [scrollOffset, setScrollOffset] = createSignal(0);
37
- const [colorPalette, setColorPalette] = createSignal(props.colorPalette ?? settings.colorPalette ?? DEFAULT_PALETTE);
38
- const dateFilters = {
39
- since: props.since,
40
- until: props.until,
41
- year: props.year,
42
- sinceTs: props.sinceTs,
43
- untilTs: props.untilTs,
44
- };
45
- const { data, loading, error, refresh, loadingPhase, isRefreshing } = useData(() => enabledSources(), dateFilters);
46
- const cacheTimestamp = () => !isRefreshing() && !loading() ? getCacheTimestamp() : null;
47
- const [selectedDate, setSelectedDate] = createSignal(null);
48
- const [statusMessage, setStatusMessage] = createSignal(null);
49
- let statusTimeout = null;
50
- const [autoRefreshEnabled, setAutoRefreshEnabled] = createSignal(settings.autoRefreshEnabled ?? false);
51
- const [autoRefreshMs, setAutoRefreshMs] = createSignal(settings.autoRefreshMs ?? 60000);
52
- const showStatus = (msg, duration = 2000) => {
53
- if (statusTimeout)
54
- clearTimeout(statusTimeout);
55
- setStatusMessage(msg);
56
- statusTimeout = setTimeout(() => setStatusMessage(null), duration);
57
- };
58
- onCleanup(() => {
59
- if (statusTimeout)
60
- clearTimeout(statusTimeout);
61
- });
62
- const MIN_AUTO_REFRESH_MS = 30000;
63
- const MAX_AUTO_REFRESH_MS = 3600000;
64
- const AUTO_REFRESH_STEPS_MS = [
65
- 30000,
66
- 60000,
67
- 120000,
68
- 300000,
69
- 600000,
70
- ];
71
- const AUTO_REFRESH_AFTER_MAX_STEP_MS = 600000;
72
- const clampAutoRefresh = (value) => Math.min(MAX_AUTO_REFRESH_MS, Math.max(MIN_AUTO_REFRESH_MS, value));
73
- const formatIntervalSeconds = (ms) => {
74
- const seconds = Math.round(ms / 1000);
75
- if (seconds < 60)
76
- return `${seconds}s`;
77
- const minutes = Math.round(seconds / 60);
78
- return `${minutes}m`;
79
- };
80
- const getAutoRefreshIntervalStep = (current, direction) => {
81
- const value = clampAutoRefresh(current);
82
- const cappedSteps = AUTO_REFRESH_STEPS_MS;
83
- const maxStep = cappedSteps[cappedSteps.length - 1];
84
- if (value > maxStep) {
85
- const delta = direction === "up" ? AUTO_REFRESH_AFTER_MAX_STEP_MS : -AUTO_REFRESH_AFTER_MAX_STEP_MS;
86
- return clampAutoRefresh(value + delta);
87
- }
88
- if (value === maxStep && direction === "up") {
89
- return clampAutoRefresh(value + AUTO_REFRESH_AFTER_MAX_STEP_MS);
90
- }
91
- if (value === maxStep && direction === "down") {
92
- return cappedSteps[cappedSteps.length - 2];
93
- }
94
- let idx = cappedSteps.findIndex((step) => step >= value);
95
- if (idx === -1)
96
- idx = cappedSteps.length - 1;
97
- if (direction === "up") {
98
- const nextIndex = value === cappedSteps[idx] ? idx + 1 : idx;
99
- return clampAutoRefresh(cappedSteps[Math.min(nextIndex, cappedSteps.length - 1)]);
100
- }
101
- const prevIndex = value === cappedSteps[idx] ? idx - 1 : idx - 1;
102
- return clampAutoRefresh(cappedSteps[Math.max(prevIndex, 0)]);
103
- };
104
- createEffect(() => {
105
- if (!autoRefreshEnabled())
106
- return;
107
- const ms = autoRefreshMs();
108
- const interval = setInterval(() => {
109
- if (!loading() && !isRefreshing()) {
110
- refresh();
111
- }
112
- }, ms);
113
- onCleanup(() => clearInterval(interval));
114
- });
115
- const contentHeight = () => Math.max(rows() - 4, 12);
116
- const overviewChartHeight = () => Math.max(5, Math.floor(contentHeight() * 0.35));
117
- const overviewListHeight = () => Math.max(4, contentHeight() - overviewChartHeight() - 4);
118
- const overviewItemsPerPage = () => Math.max(1, Math.floor(overviewListHeight() / 2));
119
- const handleSourceToggle = (source) => {
120
- const newSources = new Set(enabledSources());
121
- if (newSources.has(source)) {
122
- if (newSources.size > 1) {
123
- newSources.delete(source);
124
- }
125
- }
126
- else {
127
- newSources.add(source);
128
- }
129
- setEnabledSources(newSources);
130
- };
131
- const handlePaletteChange = () => {
132
- const currentIdx = PALETTE_NAMES.indexOf(colorPalette());
133
- const nextIdx = (currentIdx + 1) % PALETTE_NAMES.length;
134
- const newPalette = PALETTE_NAMES[nextIdx];
135
- saveSettings({ colorPalette: newPalette });
136
- setColorPalette(newPalette);
137
- };
138
- const handleSortChange = (sort) => {
139
- if (sortBy() === sort) {
140
- setSortDesc(!sortDesc());
141
- }
142
- else {
143
- setSortBy(sort);
144
- setSortDesc(true);
145
- }
146
- };
147
- useKeyboard((key) => {
148
- if (key.name === "q") {
149
- renderer.destroy();
150
- return;
151
- }
152
- if (key.name === "r" && key.shift) {
153
- const next = !autoRefreshEnabled();
154
- setAutoRefreshEnabled(next);
155
- saveSettings({ autoRefreshEnabled: next });
156
- showStatus(`Auto update: ${next ? "ON" : "OFF"} (${formatIntervalSeconds(autoRefreshMs())})`);
157
- return;
158
- }
159
- if ((key.name === "+") || (key.name === "=" && key.shift)) {
160
- const next = getAutoRefreshIntervalStep(autoRefreshMs(), "up");
161
- setAutoRefreshMs(next);
162
- saveSettings({ autoRefreshMs: next });
163
- showStatus(`Auto update interval: ${formatIntervalSeconds(next)}`);
164
- return;
165
- }
166
- if (key.name === "-" || key.name === "_") {
167
- const next = getAutoRefreshIntervalStep(autoRefreshMs(), "down");
168
- setAutoRefreshMs(next);
169
- saveSettings({ autoRefreshMs: next });
170
- showStatus(`Auto update interval: ${formatIntervalSeconds(next)}`);
171
- return;
172
- }
173
- if (key.name === "r") {
174
- refresh();
175
- return;
176
- }
177
- if (key.name === "tab" || key.name === "right") {
178
- setActiveTab(cycleTabForward(activeTab()));
179
- setSelectedIndex(0);
180
- setScrollOffset(0);
181
- return;
182
- }
183
- if (key.name === "left") {
184
- setActiveTab(cycleTabBackward(activeTab()));
185
- setSelectedIndex(0);
186
- setScrollOffset(0);
187
- return;
188
- }
189
- if (key.name === "c" && !key.meta && !key.ctrl) {
190
- handleSortChange("cost");
191
- return;
192
- }
193
- if (key.name === "y") {
194
- const d = data();
195
- if (!d)
196
- return;
197
- let textToCopy = "";
198
- const tab = activeTab();
199
- if (tab === "model") {
200
- const sorted = [...d.modelEntries].sort((a, b) => {
201
- if (sortBy() === "cost")
202
- return sortDesc() ? b.cost - a.cost : a.cost - b.cost;
203
- if (sortBy() === "tokens")
204
- return sortDesc() ? b.total - a.total : a.total - b.total;
205
- return sortDesc() ? b.model.localeCompare(a.model) : a.model.localeCompare(b.model);
206
- });
207
- const entry = sorted[selectedIndex()];
208
- if (entry) {
209
- textToCopy = `${entry.source} ${entry.model}: ${entry.total.toLocaleString()} tokens, $${entry.cost.toFixed(2)}`;
210
- }
211
- }
212
- else if (tab === "daily") {
213
- const sorted = [...d.dailyEntries].sort((a, b) => {
214
- if (sortBy() === "cost")
215
- return sortDesc() ? b.cost - a.cost : a.cost - b.cost;
216
- if (sortBy() === "tokens")
217
- return sortDesc() ? b.total - a.total : a.total - b.total;
218
- return sortDesc() ? b.date.localeCompare(a.date) : a.date.localeCompare(b.date);
219
- });
220
- const entry = sorted[selectedIndex()];
221
- if (entry) {
222
- textToCopy = `${entry.date}: ${entry.total.toLocaleString()} tokens, $${entry.cost.toFixed(2)}`;
223
- }
224
- }
225
- else if (tab === "overview") {
226
- const model = d.topModels[scrollOffset() + selectedIndex()];
227
- if (model) {
228
- textToCopy = `${model.modelId}: ${model.totalTokens.toLocaleString()} tokens, $${model.cost.toFixed(2)}`;
229
- }
230
- }
231
- if (textToCopy) {
232
- clipboardy.write(textToCopy)
233
- .then(() => showStatus("Copied to clipboard"))
234
- .catch(() => showStatus("Failed to copy"));
235
- }
236
- return;
237
- }
238
- if (key.name === "t") {
239
- handleSortChange("tokens");
240
- return;
241
- }
242
- if (key.name === "d") {
243
- handleSortChange("date");
244
- return;
245
- }
246
- if (key.name === "p") {
247
- handlePaletteChange();
248
- return;
249
- }
250
- if (key.name === "1") {
251
- handleSourceToggle("opencode");
252
- return;
253
- }
254
- if (key.name === "2") {
255
- handleSourceToggle("claude");
256
- return;
257
- }
258
- if (key.name === "3") {
259
- handleSourceToggle("codex");
260
- return;
261
- }
262
- if (key.name === "4") {
263
- handleSourceToggle("cursor");
264
- return;
265
- }
266
- if (key.name === "5") {
267
- handleSourceToggle("gemini");
268
- return;
269
- }
270
- if (key.name === "6") {
271
- handleSourceToggle("amp");
272
- return;
273
- }
274
- if (key.name === "7") {
275
- handleSourceToggle("droid");
276
- return;
277
- }
278
- if (key.name === "8") {
279
- handleSourceToggle("openclaw");
280
- return;
281
- }
282
- if (key.name === "9") {
283
- handleSourceToggle("pi");
284
- return;
285
- }
286
- if (key.name === "up") {
287
- if (activeTab() === "overview") {
288
- if (selectedIndex() > 0) {
289
- setSelectedIndex(selectedIndex() - 1);
290
- }
291
- else if (scrollOffset() > 0) {
292
- setScrollOffset(scrollOffset() - 1);
293
- }
294
- }
295
- else {
296
- setSelectedIndex(Math.max(0, selectedIndex() - 1));
297
- }
298
- return;
299
- }
300
- if (key.name === "down") {
301
- if (activeTab() === "overview") {
302
- const maxVisible = Math.min(overviewItemsPerPage(), (data()?.topModels.length ?? 0) - scrollOffset());
303
- const maxOffset = Math.max(0, (data()?.topModels.length ?? 0) - overviewItemsPerPage());
304
- if (selectedIndex() < maxVisible - 1) {
305
- setSelectedIndex(selectedIndex() + 1);
306
- }
307
- else if (scrollOffset() < maxOffset) {
308
- setScrollOffset(scrollOffset() + 1);
309
- }
310
- }
311
- else {
312
- const d = data();
313
- const maxIndex = activeTab() === "model"
314
- ? (d?.modelEntries.length ?? 0)
315
- : (d?.dailyEntries.length ?? 0);
316
- if (maxIndex > 0) {
317
- setSelectedIndex(Math.min(selectedIndex() + 1, maxIndex - 1));
318
- }
319
- }
320
- return;
321
- }
322
- if (key.name === "e" && data()) {
323
- const d = data();
324
- const exportData = {
325
- exportedAt: new Date().toISOString(),
326
- totalCost: d.totalCost,
327
- modelCount: d.modelCount,
328
- models: d.modelEntries,
329
- daily: d.dailyEntries,
330
- stats: d.stats,
331
- };
332
- const filename = `tokscale-export-${new Date().toISOString().split("T")[0]}.json`;
333
- import("node:fs")
334
- .then((fs) => {
335
- fs.writeFileSync(filename, JSON.stringify(exportData, null, 2));
336
- showStatus(`Exported to ${filename}`);
337
- })
338
- .catch(() => showStatus("Export failed"));
339
- return;
340
- }
341
- });
342
- const handleTabClick = (tab) => {
343
- setActiveTab(tab);
344
- setSelectedIndex(0);
345
- setScrollOffset(0);
346
- setSelectedDate(null);
347
- };
348
- return (_jsxs("box", { flexDirection: "column", width: columns(), height: rows(), backgroundColor: "black", children: [_jsx(Header, { activeTab: activeTab(), onTabClick: handleTabClick, width: columns() }), _jsx("box", { flexDirection: "column", flexGrow: 1, paddingX: 1, children: _jsxs(Switch, { children: [_jsx(Match, { when: loading(), children: _jsx(LoadingSpinner, { phase: loadingPhase() }) }), _jsx(Match, { when: error(), children: _jsx("box", { justifyContent: "center", alignItems: "center", flexGrow: 1, children: _jsx("text", { fg: "red", children: `Error: ${error()}` }) }) }), _jsx(Match, { when: data(), children: _jsxs(Switch, { children: [_jsx(Match, { when: activeTab() === "overview", children: _jsx(OverviewView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, scrollOffset: scrollOffset, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "model", children: _jsx(ModelView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "daily", children: _jsx(DailyView, { data: data(), sortBy: sortBy(), sortDesc: sortDesc(), selectedIndex: selectedIndex, height: contentHeight(), width: columns() }) }), _jsx(Match, { when: activeTab() === "stats", children: _jsx(StatsView, { data: data(), height: contentHeight(), colorPalette: colorPalette(), width: columns(), selectedDate: selectedDate(), sortBy: sortBy() }) })] }) })] }) }), _jsx(Footer, { enabledSources: enabledSources(), sortBy: sortBy(), totals: data()?.totals, modelCount: data()?.modelCount ?? 0, activeTab: activeTab(), scrollStart: scrollOffset(), scrollEnd: Math.min(scrollOffset() + overviewItemsPerPage(), data()?.topModels.length ?? 0), totalItems: data()?.topModels.length, colorPalette: colorPalette(), statusMessage: statusMessage(), isRefreshing: isRefreshing(), loadingPhase: loadingPhase(), cacheTimestamp: cacheTimestamp(), autoRefreshEnabled: autoRefreshEnabled(), autoRefreshMs: autoRefreshMs(), width: columns(), onSourceToggle: handleSourceToggle, onSortChange: handleSortChange, onPaletteChange: handlePaletteChange, onRefresh: refresh })] }));
349
- }
350
- //# sourceMappingURL=App.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAoB,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAiE,MAAM,kBAAkB,CAAC;AAIpH,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;AAExC,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;IAE/C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAU,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;IACxF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CACtD,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,WAAW,CAAC,CAC7C,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAW,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAClD,KAAK,CAAC,YAAY,IAAK,QAAQ,CAAC,YAAiC,IAAI,eAAe,CACrF,CAAC;IAEF,MAAM,WAAW,GAAgB;QAC/B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;IAEnH,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAExF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,YAAY,CAAgB,IAAI,CAAC,CAAC;IAE1E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAgB,IAAI,CAAC,CAAC;IAC5E,IAAI,aAAa,GAAyC,IAAI,CAAC;IAC/D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,kBAAkB,IAAI,KAAK,CAAC,CAAC;IACvG,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;IAExF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE;QAClD,IAAI,aAAa;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtB,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,KAAK,CAAC;IAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACpC,MAAM,qBAAqB,GAAG;QAC5B,KAAK;QACL,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;KACP,CAAC;IACF,MAAM,8BAA8B,GAAG,MAAM,CAAC;IAE9C,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE,CACzC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtE,MAAM,qBAAqB,GAAG,CAAC,EAAU,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,GAAG,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAE,SAAwB,EAAE,EAAE;QAC/E,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,qBAAqB,CAAC;QAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEpD,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC;YACpG,OAAO,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,gBAAgB,CAAC,KAAK,GAAG,8BAA8B,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACzD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAE7C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,KAAK,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7D,OAAO,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACjE,OAAO,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,CAAC,kBAAkB,EAAE;YAAE,OAAO;QAClC,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClF,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1F,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAErF,MAAM,kBAAkB,GAAG,CAAC,MAAkB,EAAE,EAAE;QAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACxB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;QACxD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,YAAY,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3C,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAc,EAAE,EAAE;QAC1C,IAAI,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YACtB,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACnC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5B,YAAY,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,UAAU,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,qBAAqB,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,0BAA0B,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/D,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,UAAU,CAAC,yBAAyB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,0BAA0B,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;YACjE,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,UAAU,CAAC,yBAAyB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/C,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3C,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpB,eAAe,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC5C,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACpB,eAAe,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/C,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC;gBAAE,OAAO;YAEf,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;YAExB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,MAAM,EAAE,KAAK,MAAM;wBAAE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC/E,IAAI,MAAM,EAAE,KAAK,QAAQ;wBAAE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrF,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtF,CAAC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,UAAU,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnH,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,MAAM,EAAE,KAAK,MAAM;wBAAE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC/E,IAAI,MAAM,EAAE,KAAK,QAAQ;wBAAE,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;oBACrF,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,UAAU,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClG,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;gBAC5D,IAAI,KAAK,EAAE,CAAC;oBACV,UAAU,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3G,CAAC;YACH,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;qBACzB,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;qBAC7C,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjE,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjE,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE3D,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,SAAS,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;oBACxB,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;oBAC9B,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,SAAS,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;gBACtG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,oBAAoB,EAAE,CAAC,CAAC;gBACxF,IAAI,aAAa,EAAE,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;oBACrC,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;oBACtC,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,OAAO;oBACtC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBAClC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACjB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,EAAG,CAAC;YAClB,MAAM,UAAU,GAAG;gBACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,MAAM,EAAE,CAAC,CAAC,YAAY;gBACtB,KAAK,EAAE,CAAC,CAAC,YAAY;gBACrB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC;YACF,MAAM,QAAQ,GAAG,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAClF,MAAM,CAAC,SAAS,CAAC;iBACd,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACX,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChE,UAAU,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE;QACtC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpB,eAAe,CAAC,CAAC,CAAC,CAAC;QACnB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,eAAe,EAAC,OAAO,aACnF,KAAC,MAAM,IAAC,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,GAAI,EAEhF,cAAK,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAClD,MAAC,MAAM,eACL,KAAC,KAAK,IAAC,IAAI,EAAE,OAAO,EAAE,YACpB,KAAC,cAAc,IAAC,KAAK,EAAE,YAAY,EAAE,GAAI,GACnC,EACR,KAAC,KAAK,IAAC,IAAI,EAAE,KAAK,EAAE,YAClB,cAAK,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YAC1D,eAAM,EAAE,EAAC,KAAK,YAAE,UAAU,KAAK,EAAE,EAAE,GAAQ,GACvC,GACA,EACR,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,EAAE,YACjB,MAAC,MAAM,eACL,KAAC,KAAK,IAAC,IAAI,EAAE,SAAS,EAAE,KAAK,UAAU,YACrC,KAAC,YAAY,IACX,IAAI,EAAE,IAAI,EAAG,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,QAAQ,EAAE,EACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,OAAO,EAAE,GAChB,GACI,EACR,KAAC,KAAK,IAAC,IAAI,EAAE,SAAS,EAAE,KAAK,OAAO,YAClC,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EAAG,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,QAAQ,EAAE,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,OAAO,EAAE,GAChB,GACI,EACR,KAAC,KAAK,IAAC,IAAI,EAAE,SAAS,EAAE,KAAK,OAAO,YAClC,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EAAG,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,QAAQ,EAAE,EACpB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,OAAO,EAAE,GAChB,GACI,EACR,KAAC,KAAK,IAAC,IAAI,EAAE,SAAS,EAAE,KAAK,OAAO,YAClC,KAAC,SAAS,IACR,IAAI,EAAE,IAAI,EAAG,EACb,MAAM,EAAE,aAAa,EAAE,EACvB,YAAY,EAAE,YAAY,EAAE,EAC5B,KAAK,EAAE,OAAO,EAAE,EAChB,YAAY,EAAE,YAAY,EAAE,EAC5B,MAAM,EAAE,MAAM,EAAE,GAChB,GACI,IACD,GACH,IACD,GACL,EAEN,KAAC,MAAM,IACL,cAAc,EAAE,cAAc,EAAE,EAChC,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EACtB,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,IAAI,CAAC,EACnC,SAAS,EAAE,SAAS,EAAE,EACtB,WAAW,EAAE,YAAY,EAAE,EAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,EAC3F,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,MAAM,EACpC,YAAY,EAAE,YAAY,EAAE,EAC5B,aAAa,EAAE,aAAa,EAAE,EAC9B,YAAY,EAAE,YAAY,EAAE,EAC5B,YAAY,EAAE,YAAY,EAAE,EAC5B,cAAc,EAAE,cAAc,EAAE,EAChC,kBAAkB,EAAE,kBAAkB,EAAE,EACxC,aAAa,EAAE,aAAa,EAAE,EAC9B,KAAK,EAAE,OAAO,EAAE,EAChB,cAAc,EAAE,kBAAkB,EAClC,YAAY,EAAE,gBAAgB,EAC9B,eAAe,EAAE,mBAAmB,EACpC,SAAS,EAAE,OAAO,GAClB,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- export interface ChartDataPoint {
2
- date: string;
3
- models: {
4
- modelId: string;
5
- tokens: number;
6
- color: string;
7
- }[];
8
- total: number;
9
- }
10
- interface BarChartProps {
11
- data: ChartDataPoint[];
12
- width: number;
13
- height: number;
14
- }
15
- export declare function BarChart(props: BarChartProps): any;
16
- export {};
17
- //# sourceMappingURL=BarChart.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/tui/components/BarChart.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,OAyK5C"}
@@ -1,146 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
2
- import { For, Show, createMemo } from "solid-js";
3
- import { formatTokensCompact } from "../utils/format.js";
4
- import { isNarrow, isVeryNarrow } from "../utils/responsive.js";
5
- const BLOCKS = [" ", "▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"];
6
- const MONTH_NAMES = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
7
- const REPEAT_CACHE_MAX_SIZE = 256;
8
- const repeatCache = new Map();
9
- function getRepeatedString(char, count) {
10
- const key = `${char}:${count}`;
11
- let cached = repeatCache.get(key);
12
- if (!cached) {
13
- if (repeatCache.size >= REPEAT_CACHE_MAX_SIZE) {
14
- const firstKey = repeatCache.keys().next().value;
15
- if (firstKey)
16
- repeatCache.delete(firstKey);
17
- }
18
- cached = char.repeat(count);
19
- repeatCache.set(key, cached);
20
- }
21
- return cached;
22
- }
23
- export function BarChart(props) {
24
- const data = () => props.data;
25
- const width = () => props.width;
26
- const height = () => props.height;
27
- const isNarrowTerminal = () => isNarrow(width());
28
- const isVeryNarrowTerminal = () => isVeryNarrow(width());
29
- const safeHeight = () => Math.max(height(), 1);
30
- const maxTotal = createMemo(() => {
31
- const arr = data();
32
- if (arr.length === 0)
33
- return 1;
34
- let max = arr[0].total;
35
- for (let i = 1; i < arr.length; i++) {
36
- if (arr[i].total > max)
37
- max = arr[i].total;
38
- }
39
- return Math.max(max, 1);
40
- });
41
- const chartWidth = () => Math.max(width() - 8, 20);
42
- const getBarWidth = (index, total) => {
43
- const cw = chartWidth();
44
- if (total === 0)
45
- return 1;
46
- const start = Math.floor((index * cw) / total);
47
- const end = Math.floor(((index + 1) * cw) / total);
48
- return Math.max(1, end - start);
49
- };
50
- const visibleData = () => data();
51
- const sortedModelsMap = createMemo(() => {
52
- const vd = visibleData();
53
- const map = new Map();
54
- for (const point of vd) {
55
- const models = point.models ?? [];
56
- const sorted = [...models].sort((a, b) => a.modelId.localeCompare(b.modelId));
57
- map.set(point.date, sorted);
58
- }
59
- return map;
60
- });
61
- const rowIndices = createMemo(() => {
62
- const sh = safeHeight();
63
- const indices = new Array(sh);
64
- for (let i = 0; i < sh; i++) {
65
- indices[i] = sh - 1 - i;
66
- }
67
- return indices;
68
- });
69
- const dateLabels = createMemo(() => {
70
- const vd = visibleData();
71
- if (vd.length === 0)
72
- return [];
73
- const labelInterval = Math.max(1, Math.floor(vd.length / (isVeryNarrowTerminal() ? 2 : 3)));
74
- const labels = [];
75
- for (let i = 0; i < vd.length; i += labelInterval) {
76
- const dateStr = vd[i].date;
77
- const parts = dateStr.split("-");
78
- if (parts.length === 3) {
79
- const month = parseInt(parts[1], 10);
80
- const day = parseInt(parts[2], 10);
81
- labels.push(isVeryNarrowTerminal() ? `${month}/${day}` : `${MONTH_NAMES[month - 1]} ${day}`);
82
- }
83
- else {
84
- labels.push(dateStr.slice(5));
85
- }
86
- }
87
- return labels;
88
- });
89
- const axisWidth = () => chartWidth();
90
- const labelPadding = () => {
91
- const labels = dateLabels();
92
- return labels.length > 0 ? Math.floor(axisWidth() / labels.length) : 0;
93
- };
94
- const chartTitle = () => isVeryNarrowTerminal() ? "Tokens" : "Tokens per Day";
95
- const getBarContent = (point, row, barIndex) => {
96
- const mt = maxTotal();
97
- const sh = safeHeight();
98
- const rowThreshold = ((row + 1) / sh) * mt;
99
- const prevThreshold = (row / sh) * mt;
100
- const thresholdDiff = rowThreshold - prevThreshold;
101
- const bw = getBarWidth(barIndex, visibleData().length);
102
- if (point.total <= prevThreshold) {
103
- return { char: getRepeatedString(" ", bw), color: "dim" };
104
- }
105
- const sortedModels = sortedModelsMap().get(point.date) ?? [];
106
- if (sortedModels.length === 0) {
107
- return { char: getRepeatedString(" ", bw), color: "dim" };
108
- }
109
- let currentHeight = 0;
110
- let maxOverlap = 0;
111
- let color = sortedModels[0].color;
112
- const rowStart = prevThreshold;
113
- const rowEnd = rowThreshold;
114
- for (const m of sortedModels) {
115
- const mStart = currentHeight;
116
- const mEnd = currentHeight + m.tokens;
117
- currentHeight += m.tokens;
118
- const overlapStart = Math.max(mStart, rowStart);
119
- const overlapEnd = Math.min(mEnd, rowEnd);
120
- const overlap = Math.max(0, overlapEnd - overlapStart);
121
- if (overlap > maxOverlap) {
122
- maxOverlap = overlap;
123
- color = m.color;
124
- }
125
- }
126
- if (point.total >= rowThreshold) {
127
- return { char: getRepeatedString("█", bw), color };
128
- }
129
- const ratio = thresholdDiff > 0 ? (point.total - prevThreshold) / thresholdDiff : 1;
130
- const blockIndex = Math.min(8, Math.max(1, Math.floor(ratio * 8)));
131
- return { char: getRepeatedString(BLOCKS[blockIndex], bw), color };
132
- };
133
- return (_jsx(Show, { when: data().length > 0, fallback: _jsx("text", { dim: true, children: "No chart data" }), children: _jsxs("box", { flexDirection: "column", children: [_jsx("text", { bold: true, children: chartTitle() }), _jsx(For, { each: rowIndices(), children: (row) => {
134
- const yLabelWidth = isVeryNarrowTerminal() ? 5 : 6;
135
- const yLabel = row === safeHeight() - 1
136
- ? formatTokensCompact(maxTotal()).padStart(yLabelWidth)
137
- : " ".repeat(yLabelWidth);
138
- return (_jsxs("box", { flexDirection: "row", children: [_jsxs("text", { dim: true, children: [yLabel, "\u2502"] }), _jsx(For, { each: visibleData(), children: (point, barIndex) => {
139
- const bar = getBarContent(point, row, barIndex());
140
- return bar.color === "dim"
141
- ? _jsx("text", { dim: true, children: bar.char })
142
- : _jsx("text", { fg: bar.color, children: bar.char });
143
- } })] }));
144
- } }), _jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isVeryNarrowTerminal() ? " 0│" : " 0│" }), _jsx("text", { dim: true, children: getRepeatedString("─", axisWidth()) })] }), _jsx(Show, { when: dateLabels().length > 0, children: _jsxs("box", { flexDirection: "row", children: [_jsx("text", { dim: true, children: isVeryNarrowTerminal() ? " " : " " }), _jsx("text", { dim: true, children: dateLabels().map((l) => l.padEnd(labelPadding())).join("") })] }) })] }) }));
145
- }
146
- //# sourceMappingURL=BarChart.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/tui/components/BarChart.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { type Accessor } from "solid-js";
2
- import type { TUIData, SortType } from "../hooks/useData.js";
3
- interface DailyViewProps {
4
- data: TUIData;
5
- sortBy: SortType;
6
- sortDesc: boolean;
7
- selectedIndex: Accessor<number>;
8
- height: number;
9
- width?: number;
10
- }
11
- export declare function DailyView(props: DailyViewProps): any;
12
- export {};
13
- //# sourceMappingURL=DailyView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DailyView.d.ts","sourceRoot":"","sources":["../../../src/tui/components/DailyView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAiB7D,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,OAwG9C"}