import Link from "next/link"; import {ActiveSwitchStyle, SwitchStyle} from "./styles"; import directory from "../../../directory/directory.mjs"; const ui = directory["ui"].items; const uiLegacy = directory["ui-legacy"].items; const uiLegacyPaths = []; const uiPaths = []; const itemsAndPaths: [object, string[]][] = [ [ui, uiPaths], [uiLegacy, uiLegacyPaths], ]; for (const [dirItems, paths] of itemsAndPaths) { for (const [_, value] of Object.entries(dirItems)) { const {items} = value; items.forEach((item) => { const {route, filters} = item; filters.forEach((filter) => { const path = route + "/q/framework/" + filter + "/"; paths.push(path); }); paths.push(route); }); } } uiLegacyPaths.push("/ui-legacy"); uiPaths.push("/ui"); const Option = function({href, title, isActive}) { const SwitchStyle = isActive ? ActiveSwitchStyle : "a"; return (
{title}
); }; export function VersionSwitcher({url}) { let leftActive = true; let urlEnd; const filter = url.includes("/framework") ? "q/framework" + url.split("/framework")[1] : ""; if (url.includes("/ui-legacy")) { leftActive = false; urlEnd = url.split("/ui-legacy")[1]; } else { urlEnd = url.split("/ui")[1]; } const leftHref = "/ui" + urlEnd; const leftOption = { title: "Latest", href: uiPaths.includes(leftHref) ? leftHref : "/ui/" + filter, }; const rightHref = "/ui-legacy" + urlEnd; const rightOption = { title: "Legacy", href: uiLegacyPaths.includes(rightHref) ? rightHref : "/ui-legacy/" + filter, }; return ( ); } const lib = directory["lib"].items; const libLegacy = directory["lib-v1"].items; const libLegacyPaths: string[] = []; const libPaths: string[] = []; const libItemsAndPaths: [object, string[]][] = [ [lib, libPaths], [libLegacy, libLegacyPaths], ]; for (const [dirItems, paths] of libItemsAndPaths) { for (const [_, value] of Object.entries(dirItems)) { const {items} = value; items.forEach((item) => { const {route, filters} = item; filters.forEach((filter) => { const path = route + "/q/platform/" + filter; paths.push(path); }); paths.push(route); }); } } libLegacyPaths.push("/lib-v1"); libPaths.push("/lib"); export function LibVersionSwitcher({ url, legacyVersion, latestVersion, }: { url: string; legacyVersion: string; latestVersion: string; }) { let rightActive; let urlEnd; const filter = url.includes("/platform") ? "q/platform" + url.split("/platform")[1] : ""; if (url.includes("/lib-v1")) { rightActive = false; urlEnd = url.split("/lib-v1")[1]; } else { rightActive = true urlEnd = url.split("/lib")[1]; } // Function to remove query string parameters before checking if href is included in the list of possibilities. // This is so we are only comparing the paths without the query string parameters to avoid false negatives. function isHrefIncluded(href: string, paths: string[]) { href = href.split("#")[0]; if (href.endsWith("/")) { href = href.substring(0, href.length-1); } return paths.includes(href); } const leftHref = "/lib-v1" + urlEnd; const leftOption = { title: legacyVersion, href: isHrefIncluded(leftHref, libLegacyPaths) ? leftHref : "/lib-v1/" + filter, }; const rightHref = "/lib" + urlEnd; const rightOption = { title: `${latestVersion} (latest)`, href: isHrefIncluded(rightHref, libPaths) ? rightHref : "/lib/" + filter, }; return ( ); }