Content deleted Content added
Polygnotus (talk | contribs) ←Created page with '// ==UserScript== // @name Wikipedia Claude Proofreader // @namespace http://tampermonkey.net/ // @version 2.0 // @description Proofread Wikipedia articles using Claude API // @author You // @match https://*.wikipedia.org/wiki/* // @match https://*.wikipedia.org/w/index.php* // @grant none // ==/UserScript== (function() { 'use strict'; class WikipediaClaudeProofreader { constructor() {...' |
Polygnotus (talk | contribs) No edit summary |
||
Line 2:
// @name Wikipedia Claude Proofreader
// @namespace http://tampermonkey.net/
// @version 2.
// @description Proofread Wikipedia articles using Claude API
// @author You
Line 18:
this.sidebarWidth = localStorage.getItem('claude_sidebar_width') || '350px';
this.isVisible = localStorage.getItem('claude_sidebar_visible') !== 'false';
this.isMinimized = localStorage.getItem('claude_sidebar_minimized') === 'true';
this.currentResults = localStorage.getItem('claude_current_results') || '';
this.init();
Line 36 ⟶ 37:
<h3>Claude Proofreader</h3>
<div id="claude-sidebar-controls">
<button id="claude-minimize-btn" title="Minimize">${this.
<button id="claude-close-btn" title="Close">×</button>
</div>
</div>
<div id="claude-sidebar-content" ${
<div id="claude-controls">
<button id="claude-set-key-btn" ${this.apiKey ? 'style="display:none"' : ''}>Set API Key</button>
Line 60 ⟶ 61:
toggleButton.innerHTML = '📝';
toggleButton.title = 'Open Claude Proofreader';
toggleButton.style.display = this.isVisible ? 'none' : 'block';
// Add CSS styles
Line 69 ⟶ 70:
top: 0;
right: 0;
width: ${this.isMinimized ? '200px' : this.sidebarWidth};
height: ${this.isMinimized ? 'auto' : '100vh'};
background: #fff;
border-left: 2px solid #0645ad;
Line 79 ⟶ 80:
display: flex;
flex-direction: column;
transition:
}▼
#claude-proofreader-sidebar.minimized {
}
Line 213 ⟶ 219:
cursor: ew-resize;
z-index: 10001;
display: ${this.isMinimized ? 'none' : 'block'};
}
Line 234 ⟶ 241:
z-index: 9999;
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
Line 241 ⟶ 249:
body {
margin-right: ${this.isVisible ? (this.isMinimized ? '200px' : this.sidebarWidth) : '0'};
transition: margin-right 0.
}
Line 254 ⟶ 262:
.claude-sidebar-hidden body {
margin-right: 0 !important;
}
Line 262 ⟶ 270:
.claude-sidebar-hidden #claude-toggle-sidebar {
display: block !important;
}
`;
Line 273 ⟶ 281:
if (!this.isVisible) {
this.hideSidebar();
} else if (this.isMinimized) {
this.minimizeSidebar();
}
// Make sidebar resizable (only when not minimized)
if (!this.
this.makeResizable();
}
}
Line 282 ⟶ 294:
const handle = document.getElementById('claude-resize-handle');
const sidebar = document.getElementById('claude-proofreader-sidebar');
if (!handle || !sidebar) return;
let isResizing = false;
Line 292 ⟶ 307:
const handleMouseMove = (e) => {
if (!isResizing || this.isMinimized) return;
const newWidth = window.innerWidth - e.clientX;
Line 312 ⟶ 327:
document.removeEventListener('mouseup', handleMouseUp);
};
}
minimizeSidebar() {
const sidebar = document.getElementById('claude-proofreader-sidebar');
const content = document.getElementById('claude-sidebar-content');
const handle = document.getElementById('claude-resize-handle');
const btn = document.getElementById('claude-minimize-btn');
sidebar.classList.add('minimized');
sidebar.style.height = 'auto';
content.style.display = 'none';
handle.style.display = 'none';
btn.textContent = '+';
document.body.style.marginRight = '200px';
this.isMinimized = true;
localStorage.setItem('claude_sidebar_minimized', 'true');
}
expandSidebar() {
const sidebar = document.getElementById('claude-proofreader-sidebar');
const content = document.getElementById('claude-sidebar-content');
const handle = document.getElementById('claude-resize-handle');
const btn = document.getElementById('claude-minimize-btn');
sidebar.classList.remove('minimized');
sidebar.style.width = this.sidebarWidth;
sidebar.style.height = '100vh';
content.style.display = 'flex';
handle.style.display = 'block';
btn.textContent = '−';
document.body.style.marginRight = this.sidebarWidth;
this.isMinimized = false;
localStorage.setItem('claude_sidebar_minimized', 'false');
// Re-enable resizing
this.makeResizable();
}
showSidebar() {
const toggleBtn = document.getElementById('claude-toggle-sidebar');
document.body.classList.remove('claude-sidebar-hidden');
if (this.isMinimized) {
document.body.style.marginRight = '200px';
} else {
document.body.style.marginRight = this.sidebarWidth;
}
this.isVisible = true;
localStorage.setItem('claude_sidebar_visible', 'true');
Line 322 ⟶ 387:
hideSidebar() {
const toggleBtn = document.getElementById('claude-toggle-sidebar');
document.body.classList.add('claude-sidebar-hidden');
toggleBtn.style.display = 'block';
document.body.style.marginRight = '0';
this.isVisible = false;
localStorage.setItem('claude_sidebar_visible', 'false');
Line 330 ⟶ 399:
adjustMainContent() {
if (this.isVisible) {
document.body.style.marginRight = '200px';
} else {
document.body.style.marginRight = this.sidebarWidth;
}
} else {
document.body.style.marginRight = '0';
}
}
Line 336 ⟶ 411:
attachEventListeners() {
document.getElementById('claude-minimize-btn').addEventListener('click', () => {
▲ if (content.style.display === 'none') {
▲ content.style.display = 'flex';
▲ btn.textContent = '−';
} else {
▲ btn.textContent = '+';
}
});
|