(function () {
'use strict';
var textarea = document.getElementById('description');
if (!textarea) return;
var form = textarea.closest('form');
if (!form) return;
// Create editor container
var editorContainer = document.createElement('div');
editorContainer.id = 'description-editor';
textarea.parentNode.insertBefore(editorContainer, textarea.nextSibling);
// Hide original textarea
textarea.style.display = 'none';
// Determine initial content
var initialContent = textarea.value || '';
var isHtml = /<[a-z][\s\S]*>/i.test(initialContent);
// Better-Table-Modul registrieren (idempotent)
if (typeof quillBetterTable !== 'undefined') {
Quill.register({ 'modules/better-table': quillBetterTable }, true);
}
// Initialize Quill auf Goldstandard-Compact (kein Image/Video)
var quill = new Quill('#description-editor', {
theme: 'snow',
placeholder: 'Beschreibung eingeben...',
modules: {
toolbar: {
container: window.QuillToolbarPresets.compact(),
handlers: {
table: function () {
var tableModule = this.quill.getModule('better-table');
if (tableModule) tableModule.insertTable(3, 3);
}
}
},
table: false,
'better-table': window.QuillToolbarPresets.betterTableConfig(),
keyboard: (typeof quillBetterTable !== 'undefined')
? { bindings: quillBetterTable.keyboardBindings }
: undefined,
imageResize: true
}
});
// Load existing content via dangerouslyPasteHTML statt innerHTML —
// so behält Quill 2.x auch alte Listen-Strukturen korrekt.
if (initialContent !== '') {
if (isHtml) {
quill.clipboard.dangerouslyPasteHTML(0, initialContent, 'silent');
} else {
// Plain text: convert newlines to paragraphs
var paragraphs = initialContent.split(/\n\n+/);
var html = paragraphs.map(function (p) {
var escaped = p.replace(/&/g, '&').replace(//g, '>');
escaped = escaped.replace(/\n/g, '
');
return '
' + escaped + '
'; }).join(''); quill.clipboard.dangerouslyPasteHTML(0, html, 'silent'); } } // Sync Quill content to textarea before form submit form.addEventListener('submit', function () { var html = quill.root.innerHTML || ''; // Treat Quill empty state as empty string if (html === '\s*
\s*<\/p>/g, '').trim() === '') {
textarea.value = '';
} else {
textarea.value = html;
}
});
})();