This commit is contained in:
2026-01-16 01:46:16 +01:00
parent df9cd6c5d8
commit 35edcad664

View File

@@ -724,6 +724,7 @@
const isTextLike = (model) => !!(model && model.is && (model.is('text') || model.is('button') || model.is('link')));
let lastTextSelection = { id: null, ts: 0 };
let lastTextComponent = null;
editor.on('component:selected', (model) => {
ensureTextToolbarButton(editor, model);
if (!isTextLike(model)) return;
@@ -731,8 +732,14 @@
if (lastTextSelection.id === model.cid && (now - lastTextSelection.ts) < 450) {
openRichTextModal(editor, model);
}
lastTextComponent = model;
lastTextSelection = { id: model.cid, ts: now };
});
editor.on('component:deselected', (model) => {
if (isTextLike(model)) {
lastTextComponent = model;
}
});
editor.on('component:add', (model) => ensureTextToolbarButton(editor, model));
editor.on('component:dblclick', (model) => {
if (isTextLike(model)) {
@@ -754,9 +761,32 @@
if (!target) return;
const isEditable = !!(target.isContentEditable || (target.getAttribute && target.getAttribute('contenteditable') === 'true'));
if (!isEditable) return;
const selected = lastTextComponent || (editor.getSelected && editor.getSelected());
const selectedEl = selected && selected.view && selected.view.el;
if (selected && selectedEl && (selectedEl === target || selectedEl.contains(target))) {
const html = String(target.innerHTML || '').trim();
if (html) {
try {
if (selected.components) {
selected.components(html);
}
if (selected.set) {
selected.set('content', html);
selected.trigger && selected.trigger('change:content');
selected.trigger && selected.trigger('change:components');
}
if (selected.view && selected.view.render) {
selected.view.render();
}
if (editor && typeof editor.trigger === 'function') {
editor.trigger('component:update', selected);
}
try { console.log('[RTE BLUR UPDATE] content aktualisiert.'); } catch {}
} catch {}
}
}
let contentInfo = '';
try {
const selected = editor.getSelected && editor.getSelected();
const content = selected && selected.get ? selected.get('content') : '';
contentInfo = String(content || '').trim() ? 'Content vorhanden' : 'Content leer';
} catch {}