mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-25 07:26:29 +00:00
77 lines
2.9 KiB
JavaScript
77 lines
2.9 KiB
JavaScript
|
function modifyLibsPanel() {
|
||
|
// Check if we should show Rust API
|
||
|
const params = new URLSearchParams(window.location.search);
|
||
|
var language = params.get('gi-language');
|
||
|
|
||
|
if (!language) {
|
||
|
language = utils.getStoredLanguage();
|
||
|
}
|
||
|
|
||
|
if (language === 'rust') {
|
||
|
let apiref = document.querySelector('a[data-nav-ref="gi-extension-GStreamer-libs.html"]');
|
||
|
apiref.innerText = "Rust crates";
|
||
|
apiref.href = "rust/stable/latest/docs/index.html?gi-language=rust";
|
||
|
|
||
|
// Add crates to the panel
|
||
|
const crates = CRATES_LIST; // This will be replaced by Python
|
||
|
const renames = CRATES_RENAMES; // This will be replaced by Python
|
||
|
|
||
|
const rootDiv = document.querySelector('div[data-nav-ref="gi-extension-GStreamer-libs.html"]');
|
||
|
if (!rootDiv) {
|
||
|
console.error('Root div not found');
|
||
|
return;
|
||
|
}
|
||
|
// Now iterate first level panel bodies to make links point to rust
|
||
|
// crates
|
||
|
const firstLevelPanels = rootDiv.querySelectorAll(':scope > div.sidenav-panel-body');
|
||
|
firstLevelPanels.forEach((panel, index) => {
|
||
|
if (index >= crates.length) {
|
||
|
panel.remove();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const crate = crates[index];
|
||
|
const link = panel.querySelector('a');
|
||
|
|
||
|
if (link) {
|
||
|
// Update href
|
||
|
link.setAttribute('href', `rust/stable/latest/docs/${crate}/index.html?gi-language=rust`);
|
||
|
|
||
|
// Update text content
|
||
|
link.textContent = renames[crate] ||
|
||
|
crate.replace("gstreamer", "")
|
||
|
.replace(/_/g, " ")
|
||
|
.trim()
|
||
|
.split(" ")
|
||
|
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
||
|
.join(" ");
|
||
|
|
||
|
// Remove children of the library item
|
||
|
const navRef = link.getAttribute('data-nav-ref');
|
||
|
if (navRef) {
|
||
|
const siblingDiv = rootDiv.querySelector(`div[data-nav-ref="${navRef}"]`);
|
||
|
if (siblingDiv) {
|
||
|
siblingDiv.remove();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// And now remove the glyphicons (arrows) as we removed the
|
||
|
// children
|
||
|
const linkContainer = link.closest('div');
|
||
|
if (linkContainer) {
|
||
|
const glyphicons = linkContainer.querySelectorAll('.glyphicon');
|
||
|
glyphicons.forEach(icon => icon.remove());
|
||
|
}
|
||
|
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Run when page loads and when URL changes
|
||
|
document.addEventListener('DOMContentLoaded', modifyLibsPanel);
|
||
|
window.addEventListener('popstate', modifyLibsPanel);
|
||
|
window.addEventListener('pushstate', modifyLibsPanel);
|
||
|
window.addEventListener('replacestate', modifyLibsPanel);
|
||
|
|