Mercurial
changeset 203:92a57bd716c1
removed unused file
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 15 Feb 2026 09:13:09 -0800 |
| parents | b9b184b3303c |
| children | e5aed6c36672 |
| files | mrjunejune/src/editor/index.html |
| diffstat | 1 files changed, 0 insertions(+), 221 deletions(-) [+] |
line wrap: on
line diff
--- a/mrjunejune/src/editor/index.html Sun Feb 15 09:12:57 2026 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - {{/parts/base_head.html}} - <title>Editor | MrJuneJune</title> - <style> - .editor-page { - max-width: 900px; - margin: 0 auto; - padding: 20px; - } - .editor-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 20px; - } - .editor-header h1 { - margin: 0; - } - .doc-selector { - display: flex; - gap: 10px; - align-items: center; - } - .doc-selector input { - padding: 8px 12px; - border: 1px solid #ccc; - border-radius: 4px; - font-size: 14px; - } - .doc-selector button { - padding: 8px 16px; - background: #0078ff; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - } - .doc-selector button:hover { - background: #0066dd; - } - .auth-section { - margin-bottom: 20px; - padding: 16px; - background: #f5f5f5; - border-radius: 4px; - } - .auth-section input { - width: 300px; - padding: 8px 12px; - border: 1px solid #ccc; - border-radius: 4px; - font-size: 14px; - } - .auth-section label { - display: block; - margin-bottom: 8px; - font-weight: bold; - } - </style> -</head> -<body> - {{/parts/header.html}} - - <main class="editor-page"> - <div class="editor-header"> - <h1>Rich Editor</h1> - <div class="doc-selector"> - <input type="text" id="doc-id" placeholder="Document ID" value="default"> - <button onclick="loadDocument()">Load</button> - </div> - </div> - - <div class="auth-section"> - <label for="auth-token">Auth Token:</label> - <input type="password" id="auth-token" placeholder="Enter your auth token"> - </div> - - <div id="editor-container"></div> - </main> - - {{/parts/footer.html}} - - <script src="/public/js/rich_editor.js"></script> - <script> - let editor = null; - - function getAuthToken() { - return document.getElementById('auth-token').value; - } - - function getDocId() { - return document.getElementById('doc-id').value || 'default'; - } - - async function uploadFile(file) { - const token = getAuthToken(); - if (!token) { - alert('Please enter your auth token'); - throw new Error('No auth token'); - } - - // Get presigned upload URL - const response = await fetch('/api/s3/upload-url', { - method: 'POST', - headers: { - 'Authorization': 'Bearer ' + token, - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - filename: file.name, - content_type: file.type - }) - }); - - if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to get upload URL'); - } - - const data = await response.json(); - - // Upload file directly to S3 - const uploadResponse = await fetch(data.upload_url, { - method: 'PUT', - headers: { - 'Content-Type': file.type - }, - body: file - }); - - if (!uploadResponse.ok) { - throw new Error('Failed to upload file to S3'); - } - - return { - url: data.public_url, - key: data.key - }; - } - - async function saveContent(content) { - const token = getAuthToken(); - if (!token) { - console.warn('No auth token, skipping save'); - return; - } - - const response = await fetch('/api/editor/save', { - method: 'POST', - headers: { - 'Authorization': 'Bearer ' + token, - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - doc_id: getDocId(), - content: content - }) - }); - - if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to save'); - } - } - - async function loadDocument() { - const token = getAuthToken(); - if (!token) { - alert('Please enter your auth token'); - return; - } - - const docId = getDocId(); - - try { - const response = await fetch('/api/editor/load/' + encodeURIComponent(docId), { - headers: { - 'Authorization': 'Bearer ' + token - } - }); - - if (!response.ok) { - const error = await response.json(); - alert('Error: ' + (error.error || 'Failed to load')); - return; - } - - const data = await response.json(); - editor.setContent(data.content || ''); - console.log('Loaded document:', docId); - } catch (error) { - console.error('Load error:', error); - alert('Failed to load document'); - } - } - - // Initialize editor - document.addEventListener('DOMContentLoaded', function() { - editor = RichEditor.init('editor-container', { - uploadCallback: uploadFile, - saveCallback: saveContent, - debounceMs: 1500, - placeholder: 'Start writing... (paste images, use /upload for files)' - }); - - // Try to load saved token from localStorage - const savedToken = localStorage.getItem('editor-auth-token'); - if (savedToken) { - document.getElementById('auth-token').value = savedToken; - } - - // Save token to localStorage on change - document.getElementById('auth-token').addEventListener('change', function() { - localStorage.setItem('editor-auth-token', this.value); - }); - }); - </script> -</body> -</html>