diff --git a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue index 14e42bb..2163fc3 100644 --- a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue +++ b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue @@ -677,6 +677,17 @@ function scrollToResult() { const lineNumber = lineIndex + 1; // Convert to 1-based line number + // If result is beyond currently displayed lines, load more lines + if (lineIndex >= displayLines.value.length && lineIndex < fileLines.value.length) { + // Expand displayLines to include the result + const newLinesToDisplay = fileLines.value.slice(0, Math.min(lineIndex + 1000, fileLines.value.length)); + displayLines.value = newLinesToDisplay.map((content, index) => ({ + lineNumber: index + 1, + content, + hasMatch: searchResults.value.includes(index) + })); + } + // Retry logic for virtual scroller rendering const attemptScroll = (attempt = 0) => { const lineElement = document.querySelector(`[data-line="${lineNumber}"]`); @@ -694,7 +705,7 @@ function scrollToResult() { const container = document.querySelector('.scroller, .lines-container'); if (container) { const estimatedScroll = - (lineIndex / displayLines.value.length) * + (lineIndex / fileLines.value.length) * (container.scrollHeight - container.clientHeight); container.scrollTop = estimatedScroll; }