MCPcopy
hub / github.com/facebook/react / TabBar

Function TabBar

packages/react-devtools-shared/src/devtools/views/TabBar.js:35–140  ·  view source on GitHub ↗
({
  currentTab,
  disabled = false,
  id: groupName,
  selectTab,
  tabs,
  type,
}: Props)

Source from the content-addressed store, hash-verified

33};
34
35export default function TabBar({
36 currentTab,
37 disabled = false,
38 id: groupName,
39 selectTab,
40 tabs,
41 type,
42}: Props): React.Node {
43 if (!tabs.some(tab => tab !== null && tab.id === currentTab)) {
44 const firstTab = ((tabs.find(tab => tab !== null): any): TabInfo);
45 selectTab(firstTab.id);
46 }
47
48 const onChange = useCallback(
49 ({currentTarget}: $FlowFixMe) => selectTab(currentTarget.value),
50 [selectTab],
51 );
52
53 const handleKeyDown = useCallback((event: $FlowFixMe) => {
54 switch (event.key) {
55 case 'ArrowDown':
56 case 'ArrowLeft':
57 case 'ArrowRight':
58 case 'ArrowUp':
59 event.stopPropagation();
60 break;
61 default:
62 break;
63 }
64 }, []);
65
66 let iconSizeClassName;
67 let tabLabelClassName;
68 let tabSizeClassName;
69 switch (type) {
70 case 'navigation':
71 iconSizeClassName = styles.IconSizeNavigation;
72 tabLabelClassName = styles.TabLabelNavigation;
73 tabSizeClassName = styles.TabSizeNavigation;
74 break;
75 case 'profiler':
76 iconSizeClassName = styles.IconSizeProfiler;
77 tabLabelClassName = styles.TabLabelProfiler;
78 tabSizeClassName = styles.TabSizeProfiler;
79 break;
80 case 'settings':
81 iconSizeClassName = styles.IconSizeSettings;
82 tabLabelClassName = styles.TabLabelSettings;
83 tabSizeClassName = styles.TabSizeSettings;
84 break;
85 default:
86 throw Error(`Unsupported type "${type}"`);
87 }
88
89 return (
90 <Fragment>
91 {tabs.map(tab => {
92 if (tab === null) {

Callers

nothing calls this directly

Calls 4

useCallbackFunction · 0.90
joinMethod · 0.80
findMethod · 0.65
mapMethod · 0.65

Tested by

no test coverage detected