This commit is contained in:
2026-02-05 00:30:48 +01:00
parent bfe539d747
commit 7813b4401d
2 changed files with 32 additions and 14 deletions

View File

@@ -1 +1 @@
1.2.52
1.2.53

View File

@@ -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;