image_to_pixle_params_yoloSAM/ultralytics-main/docs/overrides/javascript/extra.js

220 lines
6.2 KiB
JavaScript

// Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
// Apply theme colors based on dark/light mode
const applyTheme = (isDark) => {
document.body.setAttribute(
"data-md-color-scheme",
isDark ? "slate" : "default",
);
document.body.setAttribute(
"data-md-color-primary",
isDark ? "black" : "indigo",
);
};
// Check and apply appropriate theme based on system/user preference
const checkTheme = () => {
const palette = JSON.parse(localStorage.getItem(".__palette") || "{}");
if (palette.index === 0) {
// Auto mode is selected
applyTheme(window.matchMedia("(prefers-color-scheme: dark)").matches);
}
};
// Watch for system theme changes
window
.matchMedia("(prefers-color-scheme: dark)")
.addEventListener("change", checkTheme);
// Initialize theme handling on page load
document.addEventListener("DOMContentLoaded", () => {
// Watch for theme toggle changes
document
.getElementById("__palette_1")
?.addEventListener(
"change",
(e) => e.target.checked && setTimeout(checkTheme),
);
// Initial theme check
checkTheme();
});
// Inkeep --------------------------------------------------------------------------------------------------------------
document.addEventListener("DOMContentLoaded", () => {
const enableSearchBar = true;
const inkeepScript = document.createElement("script");
inkeepScript.src =
"https://cdn.jsdelivr.net/npm/@inkeep/cxkit-js@0.5/dist/embed.js";
inkeepScript.type = "module";
inkeepScript.defer = true;
document.head.appendChild(inkeepScript);
if (enableSearchBar) {
const containerDiv = document.createElement("div");
containerDiv.style.transform = "scale(0.7)";
containerDiv.style.transformOrigin = "left center";
const inkeepDiv = document.createElement("div");
inkeepDiv.id = "inkeepSearchBar";
containerDiv.appendChild(inkeepDiv);
const headerElement = document.querySelector(".md-header__inner");
const searchContainer = headerElement.querySelector(".md-header__source");
if (headerElement && searchContainer) {
headerElement.insertBefore(containerDiv, searchContainer);
}
}
// Configuration object for Inkeep
const config = {
baseSettings: {
apiKey: "13dfec2e75982bc9bae3199a08e13b86b5fbacd64e9b2f89",
primaryBrandColor: "#E1FF25",
organizationDisplayName: "Ultralytics",
colorMode: {
enableSystem: true,
},
theme: {
styles: [
{
key: "main",
type: "link",
value: "/stylesheets/style.css",
},
{
key: "chat-button",
type: "style",
value: `
/* Light mode styling */
.ikp-chat-button__button {
background-color: #E1FF25;
color: #111F68;
}
/* Dark mode styling */
[data-theme="dark"] .ikp-chat-button__button {
background-color: #40434f;
color: #ffffff;
}
.ikp-chat-button__container {
position: fixed;
right: 1rem;
bottom: 3rem;
}
`,
},
],
},
},
searchSettings: {
placeholder: "Search",
},
aiChatSettings: {
chatSubjectName: "Ultralytics",
aiAssistantAvatar:
"https://storage.googleapis.com/organization-image-assets/ultralytics-botAvatarSrcUrl-1729379860806.svg",
exampleQuestions: [
"What's new in Ultralytics YOLO11?",
"How can I get started with Ultralytics HUB?",
"How does Ultralytics Enterprise Licensing work?",
],
getHelpOptions: [
{
name: "Ask on Ultralytics GitHub",
icon: {
builtIn: "FaGithub",
},
action: {
type: "open_link",
url: "https://github.com/ultralytics/ultralytics",
},
},
{
name: "Ask on Ultralytics Discourse",
icon: {
builtIn: "FaDiscourse",
},
action: {
type: "open_link",
url: "https://community.ultralytics.com/",
},
},
{
name: "Ask on Ultralytics Discord",
icon: {
builtIn: "FaDiscord",
},
action: {
type: "open_link",
url: "https://discord.com/invite/ultralytics",
},
},
],
},
};
// Initialize Inkeep widgets when script loads
inkeepScript.addEventListener("load", () => {
const widgetContainer = document.getElementById("inkeepSearchBar");
Inkeep.ChatButton(config);
widgetContainer && Inkeep.SearchBar("#inkeepSearchBar", config);
});
});
// Fix language switcher links
(function () {
function fixLanguageLinks() {
const path = location.pathname;
const links = document.querySelectorAll(".md-select__link");
if (!links.length) return;
const langs = [];
let defaultLink = null;
// Extract language codes
links.forEach((link) => {
const href = link.getAttribute("href");
if (!href) return;
const url = new URL(href, location.origin);
const match = url.pathname.match(/^\/([a-z]{2})\/?$/);
if (match) langs.push({ code: match[1], link });
else if (url.pathname === "/" || url.pathname === "") defaultLink = link;
});
// Find current language and base path
let basePath = path;
for (const lang of langs) {
if (path.startsWith("/" + lang.code + "/")) {
basePath = path.substring(lang.code.length + 1);
break;
}
}
// Update links
langs.forEach(
(lang) => (lang.link.href = location.origin + "/" + lang.code + basePath),
);
if (defaultLink) defaultLink.href = location.origin + basePath;
}
// Run immediately
fixLanguageLinks();
// Handle SPA navigation
if (typeof document$ !== "undefined") {
document$.subscribe(() => setTimeout(fixLanguageLinks, 50));
} else {
let lastPath = location.pathname;
setInterval(() => {
if (location.pathname !== lastPath) {
lastPath = location.pathname;
setTimeout(fixLanguageLinks, 50);
}
}, 200);
}
})();