Bring every tool's header in line with archive's pattern: [logo] [title] [version] [Add Local Directory] [⟳] ............... [◐] [?] ------------- header-left --------------- ----- header-right - Changes per tool: * browse: rename "Select Directory" → "Add Local Directory"; add the red-non-stable wrap to the build label (was missing); add a help panel + bundle shared/help.js. * classifier: rename selectDirectoryBtn → addDirectoryBtn, refreshBtn → refreshHeaderBtn for consistency. Update all JS callers and welcome-screen copy to the new label. * mdedit: same id rename. Move the previously-in-pane refresh button into the header. Stop renaming the dir button to "Directory: <name>" once a folder is loaded — instead use the shared btn--subtle variant to de-emphasize while keeping the standard label. * transmittal: convert non-standard <div class="app-header"> with spacer/icons containers to <header class="app-header"> with the canonical header-left/header-right pair. Move the publish split- button into header-left (Transmittal-specific primary action). Remove dead .app-header__spacer/__icons/header-icon-btn CSS now that nothing references those classes. * landing, form: add help-btn + help-panel + bundle shared/help.js. Each panel is tool-specific (project picker docs for landing, schema-driven form docs for form). Cross-cutting: * shared/base.css: promote .btn--subtle from browse/css/tree.css so any tool with an online mode can de-emphasize Add Local Directory consistently. Verified all 7 tools in headless Chromium: header structure correct, build label red on non-stable cuts, help panel opens + closes via button + Esc.
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
/**
|
|
* Global application state and constants
|
|
*/
|
|
|
|
// Set to true to enable verbose console logging for development.
|
|
const DEBUG = false;
|
|
|
|
// Check if File System Access API is available
|
|
const hasFileSystemAccess = 'showDirectoryPicker' in window;
|
|
|
|
// Directory and file handles
|
|
let directoryHandle = null;
|
|
let fileTree = {};
|
|
let currentFileHandle = null;
|
|
|
|
// True when the page is served over HTTP(S) and the file tree is sourced
|
|
// from the server's JSON directory listing instead of the local FS API.
|
|
let serverSourceMode = false;
|
|
|
|
// Map to store editor instances for each file
|
|
// Key: file path, Value: { editor, container, tocContainer, etc. }
|
|
const editorInstances = new Map();
|
|
|
|
// Current TOC max depth (1-6)
|
|
let tocMaxDepth = 3;
|
|
|
|
// Scratchpad ID constant
|
|
const SCRATCHPAD_ID = '__scratchpad__';
|
|
|
|
// Default scratchpad markdown — shown the first time mdedit loads.
|
|
// Acts as both a welcome message and a starter pad for quick notes.
|
|
const SCRATCHPAD_WELCOME = [
|
|
'# Welcome to ZDDC Markdown',
|
|
'',
|
|
'All editing happens locally on your computer — nothing is uploaded.',
|
|
'',
|
|
'Use this **Scratchpad** for quick notes. Download it any time with the ⬇',
|
|
'button on the Scratchpad row in the file list.',
|
|
'',
|
|
'Click **Add Local Directory** above to open a folder of Markdown files,',
|
|
'or just start typing here.',
|
|
'',
|
|
].join('\n');
|