From f885e1e775c29e105c9c6b1e9057fcd06e78cf71 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Thu, 29 Jan 2026 00:24:55 +0100 Subject: [PATCH] asdsd --- config/current.ver | 2 +- public/editor/bridge-core.js | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/config/current.ver b/config/current.ver index 8eefee3..c39e7b3 100644 --- a/config/current.ver +++ b/config/current.ver @@ -1 +1 @@ -1.1.51 \ No newline at end of file +1.1.52 \ No newline at end of file diff --git a/public/editor/bridge-core.js b/public/editor/bridge-core.js index bbbd607..2e533c7 100644 --- a/public/editor/bridge-core.js +++ b/public/editor/bridge-core.js @@ -453,13 +453,30 @@ const ensureViewMatchesModel = (model) => { const target = resolveTextModel(model); if (!isTextLike(target)) return; + if (syncing.has(target)) return; const el = resolveViewEl(target); - if (!el) return; - if (el.isContentEditable || el.getAttribute('contenteditable') === 'true') return; const modelHtml = String(getModelHtml(target) || '').trim(); if (!modelHtml) return; - const viewHtml = String(el.innerHTML || '').trim(); + if (el && (el.isContentEditable || el.getAttribute('contenteditable') === 'true')) return; + const viewHtml = String((el && el.innerHTML) || '').trim(); if (viewHtml) return; + try { + syncing.add(target); + if (target.components) { + try { target.components(modelHtml); } catch {} + } + if (target.set) target.set('content', modelHtml); + 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); + } + } catch {} finally { + syncing.delete(target); + } + if (!el) return; const apply = () => { try { const current = String(el.innerHTML || '').trim(); @@ -475,8 +492,12 @@ if (!isTextLike(target) || !target.view || !target.view.el || syncing.has(target)) return; if (window.__bridgeRteOpen) return; const viewHtml = normalizeViewHtmlForModel(target.view.el.innerHTML || ''); - if (!viewHtml) return; const modelHtml = normalizeViewHtmlForModel(getModelHtml(target)); + if (!viewHtml && modelHtml) { + ensureViewMatchesModel(target); + return; + } + if (!viewHtml) return; if (viewHtml === modelHtml) return; try { syncing.add(target);