import type { Tab, TabType } from '../store/appStore'; import { parseGitDiffTabId } from './tabPolicy'; export type EditorRoute = | 'dashboard' | 'post' | 'media' | 'settings' | 'style' | 'tags' | 'chat' | 'import' | 'menu-editor' | 'metadata-diff' | 'git-diff' | 'documentation' | 'api-documentation' | 'site-validation' | 'scripts' | 'templates'; export const EDITOR_TAB_ROUTE_REGISTRY: Record> = { post: 'post', media: 'media', settings: 'settings', style: 'style', tags: 'tags', chat: 'chat', import: 'import', 'menu-editor': 'menu-editor', 'metadata-diff': 'metadata-diff', 'git-diff': 'git-diff', documentation: 'documentation', 'api-documentation': 'api-documentation', 'site-validation': 'site-validation', scripts: 'scripts', templates: 'templates', }; export interface EditorRouteResolution { route: EditorRoute; tabId: string | null; gitDiffResource: string | null; } export function resolveEditorRoute(activeTab: Tab | undefined): EditorRouteResolution { if (!activeTab) { return { route: 'dashboard', tabId: null, gitDiffResource: null, }; } if (activeTab.type === 'git-diff') { return { route: 'git-diff', tabId: activeTab.id, gitDiffResource: parseGitDiffTabId(activeTab.id).resource, }; } return { route: EDITOR_TAB_ROUTE_REGISTRY[activeTab.type], tabId: activeTab.id, gitDiffResource: null, }; }