单目3D初始代码
This commit is contained in:
84
docs/overrides/javascript/giscus.js
Executable file
84
docs/overrides/javascript/giscus.js
Executable file
@@ -0,0 +1,84 @@
|
||||
// Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
||||
|
||||
// Giscus functionality
|
||||
function loadGiscus() {
|
||||
const giscusContainer = document.getElementById("giscus-container");
|
||||
if (!giscusContainer || giscusContainer.querySelector("script")) {
|
||||
return;
|
||||
}
|
||||
|
||||
const script = document.createElement("script");
|
||||
script.src = "https://giscus.app/client.js";
|
||||
script.setAttribute("data-repo", "ultralytics/ultralytics");
|
||||
script.setAttribute("data-repo-id", "R_kgDOH-jzvQ");
|
||||
script.setAttribute("data-category", "Docs");
|
||||
script.setAttribute("data-category-id", "DIC_kwDOH-jzvc4CWLkL");
|
||||
script.setAttribute("data-mapping", "pathname");
|
||||
script.setAttribute("data-strict", "1");
|
||||
script.setAttribute("data-reactions-enabled", "1");
|
||||
script.setAttribute("data-emit-metadata", "0");
|
||||
script.setAttribute("data-input-position", "top");
|
||||
script.setAttribute("data-theme", "preferred_color_scheme");
|
||||
script.setAttribute("data-lang", "en");
|
||||
script.setAttribute("data-loading", "lazy");
|
||||
script.setAttribute("crossorigin", "anonymous");
|
||||
script.setAttribute("async", "");
|
||||
|
||||
giscusContainer.appendChild(script);
|
||||
|
||||
// Synchronize Giscus theme with palette
|
||||
const palette = __md_get("__palette");
|
||||
if (palette && typeof palette.color === "object") {
|
||||
const theme = palette.color.scheme === "slate" ? "dark" : "light";
|
||||
script.setAttribute("data-theme", theme);
|
||||
}
|
||||
|
||||
// Register event handlers for theme changes
|
||||
const ref = document.querySelector("[data-md-component=palette]");
|
||||
if (ref) {
|
||||
ref.addEventListener("change", () => {
|
||||
const palette = __md_get("__palette");
|
||||
if (palette && typeof palette.color === "object") {
|
||||
const theme = palette.color.scheme === "slate" ? "dark" : "light";
|
||||
|
||||
// Instruct Giscus to change theme
|
||||
const frame = document.querySelector(".giscus-frame");
|
||||
if (frame) {
|
||||
frame.contentWindow.postMessage({ giscus: { setConfig: { theme } } }, "https://giscus.app");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Use Intersection Observer to load Giscus when the container is visible
|
||||
function setupGiscusLoader() {
|
||||
const giscusContainer = document.getElementById("giscus-container");
|
||||
|
||||
if (giscusContainer) {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (entry.isIntersecting) {
|
||||
loadGiscus();
|
||||
observer.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
},
|
||||
{ threshold: 0.1 },
|
||||
); // Trigger when 10% of the element is visible
|
||||
|
||||
observer.observe(giscusContainer);
|
||||
}
|
||||
}
|
||||
|
||||
// Hook into MkDocs' navigation system
|
||||
if (typeof document$ !== "undefined") {
|
||||
document$.subscribe(() => {
|
||||
// This function is called on every page load/change
|
||||
setupGiscusLoader();
|
||||
});
|
||||
} else {
|
||||
console.warn("MkDocs document$ not found. Falling back to DOMContentLoaded.");
|
||||
document.addEventListener("DOMContentLoaded", setupGiscusLoader);
|
||||
}
|
||||
Reference in New Issue
Block a user