import { EXTENSION_ROUTE_NAME } from '../router/routeConstants.mjs'; export function getValidHashTab(routeHash, validTabs) { const hash = String(routeHash || ''); const tab = hash.includes('#') ? hash.slice(hash.lastIndexOf('#') + 1) : hash; return validTabs.includes(tab) ? tab : null; } export function createTabRouteLocation(route, tab, fallbackRouteName = EXTENSION_ROUTE_NAME) { const query = route?.query ? { ...route.query } : {}; const params = route?.params ? { ...route.params } : undefined; if (route?.name) { return { name: route.name, ...(params ? { params } : {}), query, hash: `#${tab}`, }; } if (route?.path) { return { path: route.path, query, hash: `#${tab}`, }; } return { name: fallbackRouteName, ...(params ? { params } : {}), query, hash: `#${tab}`, }; } export async function replaceTabRoute(router, route, tab, logger = console) { try { await router.replace(createTabRouteLocation(route, tab)); return true; } catch (error) { logger.warn?.('Failed to update extension tab route:', error); return false; } }