From 779f3adb45132e53244a279c9153bb2eeda2e128 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Wed, 28 Jan 2026 00:30:36 +0100 Subject: [PATCH] asasss --- config/current.ver | 2 +- public/assets/js/bridge/rte-editor.js | 25 ----------------- public/editor/bridge-core.js | 40 +++++++++++---------------- 3 files changed, 17 insertions(+), 50 deletions(-) diff --git a/config/current.ver b/config/current.ver index 474ad5b..e526099 100644 --- a/config/current.ver +++ b/config/current.ver @@ -1 +1 @@ -1.1.36 \ No newline at end of file +1.1.37 \ No newline at end of file diff --git a/public/assets/js/bridge/rte-editor.js b/public/assets/js/bridge/rte-editor.js index b8255b7..e724c17 100644 --- a/public/assets/js/bridge/rte-editor.js +++ b/public/assets/js/bridge/rte-editor.js @@ -173,31 +173,6 @@ const isText = (component.is && component.is('text')) || (component.get && component.get('type') === 'text'); try { - if (isText && component.components) { - try { - const comps = component.components(); - if (comps && comps.reset) comps.reset(); - } catch {} - try { - const wrapper = document.createElement('div'); - wrapper.innerHTML = content; - const newComps = []; - wrapper.childNodes.forEach((node) => { - if (node.nodeType === 3) { - const text = node.textContent || ''; - newComps.push({ type: 'textnode', content: text }); - } else if (node.nodeType === 1) { - const tag = node.tagName ? node.tagName.toLowerCase() : ''; - if (tag === 'br') { - newComps.push({ tagName: 'br', void: true }); - } else { - newComps.push(node.outerHTML); - } - } - }); - component.components(newComps.length ? newComps : content); - } catch {} - } if (component.set) component.set('content', content); } catch {} if (component.view && typeof component.view.render === 'function') { diff --git a/public/editor/bridge-core.js b/public/editor/bridge-core.js index 30f48dc..810865b 100644 --- a/public/editor/bridge-core.js +++ b/public/editor/bridge-core.js @@ -360,23 +360,13 @@ normalized: normalizeHtml(composite), }; }; - const buildTextComponentsFromHtml = (html) => { - const wrapper = document.createElement('div'); - wrapper.innerHTML = String(html || ''); - const newComps = []; - wrapper.childNodes.forEach((node) => { - if (node.nodeType === 3) { - newComps.push({ type: 'textnode', content: node.textContent || '' }); - } else if (node.nodeType === 1) { - const tag = node.tagName ? node.tagName.toLowerCase() : ''; - if (tag === 'br') { - newComps.push({ tagName: 'br', void: true }); - } else { - newComps.push(node.outerHTML); - } - } - }); - return newComps.length ? newComps : html; + const normalizeViewHtmlForModel = (html) => { + return String(html || '') + .replace(/]*>/gi, '
') + .replace(/\sdata-gjs-type="[^"]*"/gi, '') + .replace(/\sdraggable="[^"]*"/gi, '') + .replace(/\scontenteditable="[^"]*"/gi, '') + .trim(); }; const storeSnapshot = (model, snap) => { if (!model || !snap) return; @@ -413,9 +403,6 @@ : null); if (!stored || !stored.normalized) return; try { - if (target.components) { - target.components(buildTextComponentsFromHtml(stored.html)); - } target.set('content', stored.html); target.trigger && target.trigger('change:content'); try { console.log('[PLAIN TEXT RESTORE] Inhalt wiederhergestellt.'); } catch {} @@ -441,18 +428,23 @@ const syncTextFromViewOnDeselect = (model) => { const target = resolveTextModel(model); if (!isTextLike(target) || !target.view || !target.view.el || syncing.has(target)) return; - const viewHtml = String(target.view.el.innerHTML || '').trim(); + const viewHtml = normalizeViewHtmlForModel(target.view.el.innerHTML || ''); if (!viewHtml) return; - const modelHtml = String(target.get ? target.get('content') || '' : '').trim(); + const modelHtml = normalizeViewHtmlForModel(target.get ? target.get('content') || '' : ''); if (viewHtml === modelHtml) return; try { syncing.add(target); - if (target.components) target.components(buildTextComponentsFromHtml(viewHtml)); if (target.set) target.set('content', viewHtml); target.trigger && target.trigger('change:content'); + if (target.view && typeof target.view.render === 'function') { + target.view.render(); + } + if (editor && typeof editor.trigger === 'function') { + editor.trigger('component:update', target); + } const reapply = () => { try { - const current = String(target.view.el.innerHTML || '').trim(); + const current = normalizeViewHtmlForModel(target.view.el.innerHTML || ''); if (current !== viewHtml) target.view.el.innerHTML = viewHtml; } catch {} };