/* * /post journal form bundle — page-scoped (loaded only by post-form.html.twig). * Kept out of the global main.js so EasyMDE (+ the U4 HEIC converter, lazy-loaded) * never ship on any other page. Built as ESM with code-splitting so the heic-to * dynamic import becomes a separately-fetched chunk (see package.json / KTD2). * * Every init function presence-guards its own DOM, mirroring main.js's * initTripStats pattern, so this is a no-op if an element is absent. */ import EasyMDE from 'easymde'; import Sortable from 'sortablejs'; import 'easymde/dist/easymde.min.css'; import './post-form.css'; import { apiSend, apiErrorMsg } from './api-utils.js'; /* ── Markdown editor (EasyMDE) ───────────────────────────── */ function initEditor() { var textarea = document.querySelector('textarea[name="data[content]"]'); if (!textarea) return null; var editor = new EasyMDE({ element: textarea, spellChecker: false, autoDownloadFontAwesome: false, // toolbar glyphs come from post-form.css, no FA CDN status: false, placeholder: 'What happened today?', minHeight: '180px', // Minimal toolbar; custom classNames drive the CSS glyphs in post-form.css. toolbar: [ { name: 'bold', action: EasyMDE.toggleBold, className: 'mde-btn mde-bold', title: 'Bold' }, { name: 'italic', action: EasyMDE.toggleItalic, className: 'mde-btn mde-italic', title: 'Italic' }, { name: 'unordered-list', action: EasyMDE.toggleUnorderedList, className: 'mde-btn mde-ul', title: 'Bulleted list' }, { name: 'link', action: EasyMDE.drawLink, className: 'mde-btn mde-link', title: 'Insert link' }, '|', { name: 'preview', action: EasyMDE.togglePreview, className: 'mde-btn mde-preview', title: 'Toggle preview' }, ], }); // KTD3 / R15: keep the underlying