|
leaderboard_css = """ |
|
|
|
.markdown-text { |
|
font-size: 16px !important; |
|
} |
|
|
|
#models-to-add-text { |
|
font-size: 18px !important; |
|
} |
|
|
|
#citation-button span { |
|
font-size: 16px !important; |
|
} |
|
|
|
#citation-button textarea { |
|
font-size: 16px !important; |
|
} |
|
|
|
#citation-button > label > button { |
|
margin: 6px; |
|
transform: scale(1.3); |
|
} |
|
|
|
#leaderboard-table { |
|
margin-top: 15px |
|
} |
|
|
|
#leaderboard-table-lite { |
|
margin-top: 15px |
|
} |
|
|
|
#search-bar-table-box > div:first-child { |
|
background: none; |
|
border: none; |
|
} |
|
|
|
#search-bar { |
|
padding: 0px; |
|
} |
|
|
|
/* Limit the width of the first AutoEvalColumn so that names don't expand too much */ |
|
#leaderboard-table td:nth-child(2), |
|
#leaderboard-table th:nth-child(2) { |
|
max-width: 400px; |
|
overflow: auto; |
|
white-space: nowrap; |
|
} |
|
|
|
#scale-logo { |
|
border-style: none !important; |
|
box-shadow: none; |
|
display: block; |
|
margin-left: auto; |
|
margin-right: auto; |
|
max-width: 600px; |
|
} |
|
|
|
#scale-logo .download { |
|
display: none; |
|
} |
|
#filter_type{ |
|
border: 0; |
|
padding-left: 0; |
|
padding-top: 0; |
|
} |
|
#filter_type label { |
|
display: flex; |
|
} |
|
#filter_type label > span{ |
|
margin-top: var(--spacing-lg); |
|
margin-right: 0.5em; |
|
} |
|
#filter_type label > .wrap{ |
|
width: 103px; |
|
} |
|
#filter_type label > .wrap .wrap-inner{ |
|
padding: 2px; |
|
} |
|
#filter_type label > .wrap .wrap-inner input{ |
|
width: 1px |
|
} |
|
#filter-columns-type{ |
|
border:0; |
|
padding:0.5; |
|
} |
|
#filter-columns-size{ |
|
border:0; |
|
padding:0.5; |
|
} |
|
#box-filter > .form{ |
|
border: 0 |
|
} |
|
""" |
|
|
|
|
|
workflow_json_css = """ |
|
/* Workflow JSON styling */ |
|
.workflow-json-container { |
|
margin-top: 20px; |
|
margin-bottom: 30px; |
|
} |
|
|
|
.workflow-json { |
|
border: 1px solid #ddd; |
|
border-radius: 8px; |
|
box-shadow: 0 2px 5px rgba(0,0,0,0.1); |
|
} |
|
|
|
.workflow-json pre { |
|
max-height: 500px; |
|
overflow-y: auto; |
|
} |
|
|
|
""" |
|
|
|
get_window_url_params = """ |
|
function(url_params) { |
|
const params = new URLSearchParams(window.location.search); |
|
url_params = Object.fromEntries(params); |
|
return url_params; |
|
} |
|
""" |
|
|
|
|
|
fonts_header = """ |
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
|
<link href="https://fonts.googleapis.com/css2?family=Shantell+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet"> |
|
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> |
|
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap" rel="stylesheet"> |
|
""" |
|
|
|
js_head = """ |
|
<script> |
|
const gradioApp = document.getElementsByTagName('gradio-app')[0]; |
|
console.log("Gradio app:", gradioApp); |
|
console.log(gradioApp.querySelectorAll('.token')); |
|
console.log(document.querySelectorAll('.token')); |
|
|
|
// Function to trigger Python callback |
|
const setHiddenIndex = (index) => { |
|
console.log("Setting hidden index to:", index); |
|
const hiddenIndex = gradioApp.querySelector("#hidden-index textarea"); |
|
if (hiddenIndex) { |
|
hiddenIndex.value = index; |
|
let event = new Event("input", { bubbles: true}); |
|
Object.defineProperty(event, "target", { value: hiddenIndex}); |
|
hiddenIndex.dispatchEvent(event); |
|
} |
|
}; |
|
|
|
// Add event listeners to all tokens |
|
function setupTokenListeners() { |
|
const tokens = gradioApp.querySelectorAll('.token'); |
|
console.log("Tokens:", tokens); |
|
tokens.forEach(token => { |
|
token.addEventListener('mouseover', function() { |
|
const index = parseInt(this.getAttribute('data-index')); |
|
console.log("Mouseover token index:", index); |
|
|
|
// Reset all tokens |
|
gradioApp.querySelectorAll('.token').forEach(el => { |
|
el.classList.remove('highlighted'); |
|
}); |
|
|
|
// Highlight this token |
|
this.classList.add('highlighted'); |
|
|
|
// Update the hidden index to trigger the Python callback |
|
setHiddenIndex(index); |
|
}); |
|
}); |
|
} |
|
console.log("Preamble complete"); |
|
|
|
document.addEventListener("DOMContentLoaded", function() { |
|
// Setup initial listeners |
|
console.log("DOM fully loaded and parsed"); |
|
setupTokenListeners(); |
|
|
|
// Setup a mutation observer to handle dynamically added tokens |
|
const observer = new MutationObserver(function(mutations) { |
|
mutations.forEach(function(mutation) { |
|
if (mutation.addedNodes.length) { |
|
setupTokenListeners(); |
|
} |
|
}); |
|
}); |
|
|
|
// Start observing the token container for changes |
|
const tokenContainer = gradioApp.querySelector('.token-container'); |
|
console.log("Token container:", tokenContainer); |
|
if (tokenContainer) { |
|
observer.observe(tokenContainer.parentNode, { childList: true, subtree: true }); |
|
} |
|
console.log("Listener setup complete"); |
|
}); |
|
</script> |
|
""" |
|
|