(t0)
| 715 | return factoids[randomIndex]!; |
| 716 | } |
| 717 | function ModelsTab(t0) { |
| 718 | const $ = _c(15); |
| 719 | const { |
| 720 | stats, |
| 721 | dateRange, |
| 722 | isLoading |
| 723 | } = t0; |
| 724 | const { |
| 725 | headerFocused, |
| 726 | focusHeader |
| 727 | } = useTabHeaderFocus(); |
| 728 | const [scrollOffset, setScrollOffset] = useState(0); |
| 729 | const { |
| 730 | columns: terminalWidth |
| 731 | } = useTerminalSize(); |
| 732 | const modelEntries = Object.entries(stats.modelUsage).sort(_temp7); |
| 733 | const t1 = !headerFocused; |
| 734 | let t2; |
| 735 | if ($[0] !== t1) { |
| 736 | t2 = { |
| 737 | isActive: t1 |
| 738 | }; |
| 739 | $[0] = t1; |
| 740 | $[1] = t2; |
| 741 | } else { |
| 742 | t2 = $[1]; |
| 743 | } |
| 744 | useInput((_input, key) => { |
| 745 | if (key.downArrow && scrollOffset < modelEntries.length - 4) { |
| 746 | setScrollOffset(prev => Math.min(prev + 2, modelEntries.length - 4)); |
| 747 | } |
| 748 | if (key.upArrow) { |
| 749 | if (scrollOffset > 0) { |
| 750 | setScrollOffset(_temp8); |
| 751 | } else { |
| 752 | focusHeader(); |
| 753 | } |
| 754 | } |
| 755 | }, t2); |
| 756 | if (modelEntries.length === 0) { |
| 757 | let t3; |
| 758 | if ($[2] === Symbol.for("react.memo_cache_sentinel")) { |
| 759 | t3 = <Box><Text color="subtle">No model usage data available</Text></Box>; |
| 760 | $[2] = t3; |
| 761 | } else { |
| 762 | t3 = $[2]; |
| 763 | } |
| 764 | return t3; |
| 765 | } |
| 766 | const totalTokens = modelEntries.reduce(_temp9, 0); |
| 767 | const chartOutput = generateTokenChart(stats.dailyModelTokens, modelEntries.map(_temp0), terminalWidth); |
| 768 | const visibleModels = modelEntries.slice(scrollOffset, scrollOffset + 4); |
| 769 | const midpoint = Math.ceil(visibleModels.length / 2); |
| 770 | const leftModels = visibleModels.slice(0, midpoint); |
| 771 | const rightModels = visibleModels.slice(midpoint); |
| 772 | const canScrollUp = scrollOffset > 0; |
| 773 | const canScrollDown = scrollOffset < modelEntries.length - 4; |
| 774 | const showScrollHint = modelEntries.length > 4; |
nothing calls this directly
no test coverage detected