// Editor View
import { api } from '../api.js';
export async function renderEditor(app) {
const { id, projectId, libraryId } = app.state.params;
let doc = null;
let libraries = [];
if (id) {
try {
doc = await api.getDocument(id);
} catch (e) {
app.showToast('Failed to load document', 'error');
app.navigate(projectId ? 'project' : 'projects', { id: projectId });
return;
}
}
try {
const libResult = await api.getLibraries();
libraries = libResult.libraries || [];
} catch (e) {}
const isNew = !id;
const appEl = document.getElementById('app');
// Determine back navigation target
const backTarget = projectId
? { view: 'project', params: { id: projectId } }
: { view: 'projects', params: {} };
const backToParent = () => {
if (projectId) {
app.navigate('project', { id: projectId });
} else {
app.navigate('projects');
}
};
// Mobile menu functions
window.toggleEditorMenu = function() {
const menu = document.getElementById('editor-menu');
if (menu) menu.classList.toggle('open');
};
window.closeEditorMenu = function() {
const menu = document.getElementById('editor-menu');
if (menu) menu.classList.remove('open');
};
let formData = {
title: doc?.title || '',
content: doc?.content || '',
tags: doc?.tags?.join(', ') || '',
type: doc?.type || 'general',
priority: doc?.priority || 'medium',
status: doc?.status || 'draft',
libraryId: doc?.libraryId || libraryId || ''
};
let showPreview = false;
let hasChanges = false;
function render() {
appEl.innerHTML = `
Nothing to preview
'; if (typeof marked !== 'undefined') { return marked.parse(content); } // Fallback return content .replace(/&/g, '&') .replace(//g, '>') .replace(/^### (.+)$/gm, '$1')
.replace(/\n\n/g, ''); }