Version 0.1.0
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
/**
|
||||
* Simple Metadata Section Toggle
|
||||
*
|
||||
* Handles showing/hiding the metadata grid with a simple button
|
||||
*/
|
||||
|
||||
// Global function to toggle metadata section visibility
|
||||
function toggleMetadataSection() {
|
||||
console.log('toggleMetadataSection called');
|
||||
|
||||
const content = document.getElementById('metadataContent');
|
||||
const arrow = document.getElementById('metadataArrow');
|
||||
|
||||
if (!content) {
|
||||
console.log('No metadata content found');
|
||||
return;
|
||||
}
|
||||
|
||||
const isVisible = content.style.display !== 'none';
|
||||
|
||||
if (isVisible) {
|
||||
// Hide the content
|
||||
content.style.display = 'none';
|
||||
if (arrow) arrow.textContent = '▼';
|
||||
console.log('Metadata hidden');
|
||||
} else {
|
||||
// Show the content
|
||||
content.style.display = 'block';
|
||||
if (arrow) arrow.textContent = '▲';
|
||||
console.log('Metadata shown');
|
||||
|
||||
// Trigger MathJax rendering for LaTeX content
|
||||
if (typeof MathJax !== 'undefined') {
|
||||
MathJax.typesetPromise([content]).catch(function (err) {
|
||||
console.log('MathJax typeset failed: ' + err.message);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Save state to localStorage
|
||||
localStorage.setItem('metadataVisible', (!isVisible).toString());
|
||||
}
|
||||
|
||||
// Function to expand long text
|
||||
function expandText(button) {
|
||||
const longText = button.previousElementSibling;
|
||||
const fullText = button.nextElementSibling;
|
||||
|
||||
if (fullText.style.display === 'none') {
|
||||
longText.style.display = 'none';
|
||||
fullText.style.display = 'inline';
|
||||
button.textContent = 'Show less';
|
||||
} else {
|
||||
longText.style.display = 'inline';
|
||||
fullText.style.display = 'none';
|
||||
button.textContent = 'Show more';
|
||||
}
|
||||
}
|
||||
|
||||
// Copy metadata file path to clipboard
|
||||
async function copyMetadataPath() {
|
||||
const pathElement = document.getElementById('metadata-file-path');
|
||||
const copyBtn = document.querySelector('.copy-path-btn');
|
||||
|
||||
if (!pathElement || !copyBtn) {
|
||||
console.log('Path element or copy button not found');
|
||||
return;
|
||||
}
|
||||
|
||||
const path = pathElement.textContent;
|
||||
console.log('Attempting to copy path:', path);
|
||||
|
||||
try {
|
||||
// Try using the modern clipboard API
|
||||
if (navigator.clipboard && window.isSecureContext) {
|
||||
await navigator.clipboard.writeText(path);
|
||||
} else {
|
||||
// Fallback for older browsers
|
||||
const textArea = document.createElement('textarea');
|
||||
textArea.value = path;
|
||||
textArea.style.position = 'fixed';
|
||||
textArea.style.left = '-999999px';
|
||||
textArea.style.top = '-999999px';
|
||||
document.body.appendChild(textArea);
|
||||
textArea.focus();
|
||||
textArea.select();
|
||||
document.execCommand('copy');
|
||||
textArea.remove();
|
||||
}
|
||||
|
||||
// Visual feedback
|
||||
const originalText = copyBtn.innerHTML;
|
||||
copyBtn.innerHTML = '✅ Copied!';
|
||||
copyBtn.classList.add('copied');
|
||||
|
||||
setTimeout(() => {
|
||||
copyBtn.innerHTML = originalText;
|
||||
copyBtn.classList.remove('copied');
|
||||
}, 2000);
|
||||
|
||||
console.log('Path copied successfully');
|
||||
|
||||
} catch (err) {
|
||||
console.error('Failed to copy path: ', err);
|
||||
|
||||
// Show error feedback
|
||||
const originalText = copyBtn.innerHTML;
|
||||
copyBtn.innerHTML = '❌ Failed';
|
||||
|
||||
setTimeout(() => {
|
||||
copyBtn.innerHTML = originalText;
|
||||
}, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
// Make functions globally available
|
||||
window.toggleMetadataSection = toggleMetadataSection;
|
||||
window.expandText = expandText;
|
||||
window.copyMetadataPath = copyMetadataPath;
|
||||
|
||||
// Initialize on page load
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
console.log('Metadata section script loaded');
|
||||
|
||||
const content = document.getElementById('metadataContent');
|
||||
if (content) {
|
||||
// Check if user previously had it expanded
|
||||
const wasVisible = localStorage.getItem('metadataVisible') === 'true';
|
||||
|
||||
if (wasVisible) {
|
||||
content.style.display = 'block';
|
||||
const arrow = document.getElementById('metadataArrow');
|
||||
if (arrow) arrow.textContent = '▲';
|
||||
} else {
|
||||
content.style.display = 'none';
|
||||
const arrow = document.getElementById('metadataArrow');
|
||||
if (arrow) arrow.textContent = '▼';
|
||||
}
|
||||
|
||||
console.log('Metadata section initialized, visible:', wasVisible);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user