How lightwindw/zotero-better-vertical-tabs works
Better Vertical Tabs is a Zotero plugin for organizing and managing open tabs in a vertical sidebar across the main window and PDF reader. Its runtime initializes tracking and category state, renders the sidebar, and responds to user actions such as searching, dragging, and saving categories. Tracking and category management keep the view synchronized with open tabs and persisted organization. The README also documents reader and idle-tab management, expand modes, preferences, and saved-category import. Some subsystem links reflect documented capabilities; unsampled implementation details are not inferred.
Main entry points: events.ts UI events · categoryManager.ts Category manager · lazyInit.ts Lazy initializer · itemTracker.ts Open-tab tracker
Components 20
Plugin Runtime
- Plugin entry
src/index.ts - Lazy initializer
src/modules/core/lazyInit.ts - UI events
src/modules/core/events.ts
Sidebar Experience
- Vertical sidebar
src/modules/sidebar/sidebar.ts - Tab renderer
src/modules/render/uiRenderer.ts - Hover details
src/modules/ui/hoverCard.ts
Organization & State
- Category manager
src/modules/track/categoryManager.ts - Category state
src/modules/track/dataStore.ts - Saved categories
src/modules/save/savedCategoryStore.ts - Save & import UI
src/modules/save/saveCategoryDialog.ts
Drag & Interaction
- Tab drag & drop
src/modules/drag/categoryDropAction.ts - External item drop
src/modules/drag/externalDropPreview.ts
Tab & Reader Tracking
- Open-tab tracker
src/modules/track/itemTracker.ts - Reader controls
src/modules/track/readerRelease.ts - Idle reader timer
src/modules/track/readerReleaseTimer.ts - Idle tab closing
src/modules/track/autoClose.ts
Preferences
- Preferences UI
src/modules/preferenceScript.ts - Preference utilities
src/utils/prefs.ts
Other components
- Zotero user
- Zotero tabs & readers
Connections 30
- Zotero user → Vertical sidebar: uses
- Plugin entry → Lazy initializer: starts
- Lazy initializer → Open-tab tracker: starts tracking
- Lazy initializer → Category manager: initializes
- Lazy initializer → Vertical sidebar: shows
- Lazy initializer → Hover details: initializes
- Vertical sidebar → UI events: dispatches
- Tab renderer → UI events: dispatches
- Category manager → UI events: dispatches
- UI events → Category manager: notifies
- UI events → Tab renderer: triggers render
- Category manager → Category state: loads and saves
- Category manager → Saved categories: loads and saves
- Tab renderer → Hover details: shows details
- Zotero user → Tab renderer: searches & selects
- Zotero user → Tab drag & drop: drags tabs
- Tab drag & drop → UI events: dispatches drop
- Zotero user → External item drop: drags items
- External item drop → UI events: previews drop
- Zotero tabs & readers → Open-tab tracker: provides tab activity
- Open-tab tracker → Category manager: updates open tabs
- Zotero user → Reader controls: opens or closes reader
- Idle reader timer → Reader controls: closes idle readers
- Open-tab tracker → Idle reader timer: tracks reading activity
- Open-tab tracker → Idle tab closing: tracks tab activity
- Idle tab closing → Zotero tabs & readers: closes idle tabs
- Zotero user → Preferences UI: changes settings
- Preferences UI → Preference utilities: reads and writes
- Preferences UI → Saved categories: clears saved categories
- Preferences UI → UI events: refreshes views