From 7813b4401de6127146c59b3ebe560f3780fb7a30 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Thu, 5 Feb 2026 00:30:48 +0100 Subject: [PATCH] asdasd --- config/current.ver | 2 +- public/assets/js/bridge/blocks-api.js | 44 +++++++++++++++++++-------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/config/current.ver b/config/current.ver index fc89a67..efa753a 100644 --- a/config/current.ver +++ b/config/current.ver @@ -1 +1 @@ -1.2.52 \ No newline at end of file +1.2.53 \ No newline at end of file diff --git a/public/assets/js/bridge/blocks-api.js b/public/assets/js/bridge/blocks-api.js index 7b6b78d..fa91f9b 100644 --- a/public/assets/js/bridge/blocks-api.js +++ b/public/assets/js/bridge/blocks-api.js @@ -509,19 +509,11 @@ return false; }; -<<<<<<< ours - // 1) Selection im DOM suchen (bevorzugt) -======= - // 1) Bevorzugt: ausgewähltes Component-Element aus der View - if (selected) { - const selEl = (selected.getEl && selected.getEl()) || (selected.view && selected.view.el); - if (selEl && (selEl.isContentEditable || (selEl.getAttribute && selEl.getAttribute('contenteditable') === 'true'))) { - syncFromElement(selected, selEl, 'selected:view'); - } - } + const win = doc && doc.defaultView; + const lastEl = win && win.__bridgeLastEditableEl; + const lastCompId = win && win.__bridgeLastEditableCompId; - // 2) Fallback: Selection im DOM suchen ->>>>>>> theirs + // 1) Selection im DOM suchen (bevorzugt) if (!syncResult && doc && selectionEl && (selectionEl.isContentEditable || (selectionEl.getAttribute && selectionEl.getAttribute('contenteditable') === 'true'))) { const root = (selectionEl.closest && selectionEl.closest('[data-gjs-type="text"]')) || selectionEl; const id = root && root.getAttribute ? root.getAttribute('id') : null; @@ -535,7 +527,33 @@ } } } - // 2) Fallback: ausgewähltes Component-Element aus der View + // 2) Fallback: zuletzt fokussiertes Element + if (!syncResult && lastEl && (lastEl.isContentEditable || (lastEl.getAttribute && lastEl.getAttribute('contenteditable') === 'true'))) { + const root = (lastEl.closest && lastEl.closest('[data-gjs-type="text"]')) || lastEl; + const id = root && root.getAttribute ? root.getAttribute('id') : null; + const wrapper = editor.getWrapper && editor.getWrapper(); + if (id && wrapper && wrapper.find) { + const found = wrapper.find(`#${id}`); + const comp = found && found[0]; + const type = comp && comp.get ? comp.get('type') : null; + if (!type || type === 'text' || type === 'textnode') { + syncFromElement(comp, root, 'last:element'); + } + } + } + if (!syncResult && lastCompId) { + const wrapper = editor.getWrapper && editor.getWrapper(); + if (wrapper && wrapper.find) { + const found = wrapper.find(`#${lastCompId}`); + const comp = found && found[0]; + const type = comp && comp.get ? comp.get('type') : null; + const el = comp && comp.view && comp.view.el; + if (el && (!type || type === 'text' || type === 'textnode')) { + syncFromElement(comp, el, 'last:compId'); + } + } + } + // 3) Fallback: ausgewähltes Component-Element aus der View if (!syncResult && selected) { const selEl = (selected.getEl && selected.getEl()) || (selected.view && selected.view.el); const type = selected.get ? selected.get('type') : null;