MCPcopy Index your code
hub / github.com/winfunc/opcode / TabManager

Function TabManager

src/components/TabManager.tsx:136–408  ·  view source on GitHub ↗
({ className })

Source from the content-addressed store, hash-verified

134}
135
136export const TabManager: React.FC<TabManagerProps> = ({ className }) => {
137 const {
138 tabs,
139 activeTabId,
140 createChatTab,
141 createProjectsTab,
142 closeTab,
143 switchToTab,
144 canAddTab
145 } = useTabState();
146
147 // Access reorderTabs from context
148 const { reorderTabs } = useTabContext();
149
150 const scrollContainerRef = useRef<HTMLDivElement>(null);
151 const [showLeftScroll, setShowLeftScroll] = useState(false);
152 const [showRightScroll, setShowRightScroll] = useState(false);
153 const [draggedTabId, setDraggedTabId] = useState<string | null>(null);
154
155 // Analytics tracking
156 const trackEvent = useTrackEvent();
157
158 // Listen for tab switch events
159 useEffect(() => {
160 const handleSwitchToTab = (event: CustomEvent) => {
161 const { tabId } = event.detail;
162 switchToTab(tabId);
163 };
164
165 window.addEventListener('switch-to-tab', handleSwitchToTab as EventListener);
166 return () => {
167 window.removeEventListener('switch-to-tab', handleSwitchToTab as EventListener);
168 };
169 }, [switchToTab]);
170
171 // Listen for keyboard shortcut events
172 useEffect(() => {
173 const handleCreateTab = () => {
174 createProjectsTab();
175 trackEvent.tabCreated('projects');
176 };
177
178 const handleCloseTab = async () => {
179 if (activeTabId) {
180 const tab = tabs.find(t => t.id === activeTabId);
181 if (tab) {
182 trackEvent.tabClosed(tab.type);
183 }
184 await closeTab(activeTabId);
185 }
186 };
187
188 const handleNextTab = () => {
189 const currentIndex = tabs.findIndex(tab => tab.id === activeTabId);
190 const nextIndex = (currentIndex + 1) % tabs.length;
191 if (tabs[nextIndex]) {
192 switchToTab(tabs[nextIndex].id);
193 }

Callers

nothing calls this directly

Calls 6

useTabStateFunction · 0.90
useTabContextFunction · 0.90
useTrackEventFunction · 0.90
cnFunction · 0.90
checkScrollButtonsFunction · 0.85
scrollTabsFunction · 0.85

Tested by

no test coverage detected