asdsad
This commit is contained in:
@@ -1 +1 @@
|
|||||||
1.2.43
|
1.2.44
|
||||||
@@ -466,13 +466,38 @@
|
|||||||
|
|
||||||
// Sicherstellen, dass ggf. aktive Text-Edits vor dem Speichern synchronisiert werden
|
// Sicherstellen, dass ggf. aktive Text-Edits vor dem Speichern synchronisiert werden
|
||||||
try {
|
try {
|
||||||
|
const wrapper = editor.getWrapper && editor.getWrapper();
|
||||||
|
const resolveComponent = (el) => {
|
||||||
|
if (!el || !wrapper || !wrapper.find) return null;
|
||||||
|
const root = (el.closest && el.closest('[data-gjs-type="text"]')) || el;
|
||||||
|
const id = root && root.getAttribute ? root.getAttribute('id') : null;
|
||||||
|
if (!id) return null;
|
||||||
|
const found = wrapper.find(`#${id}`);
|
||||||
|
return found && found[0];
|
||||||
|
};
|
||||||
|
const syncElement = (el) => {
|
||||||
|
const comp = resolveComponent(el);
|
||||||
|
if (!comp || !comp.set) return;
|
||||||
|
const root = (el.closest && el.closest('[data-gjs-type="text"]')) || el;
|
||||||
|
const html = root && root.innerHTML ? root.innerHTML : '';
|
||||||
|
const current = typeof comp.get === 'function' ? (comp.get('content') || '') : '';
|
||||||
|
if (!html.trim() && current.trim()) return;
|
||||||
|
comp.set('content', html);
|
||||||
|
comp.trigger && comp.trigger('change:content');
|
||||||
|
};
|
||||||
|
|
||||||
|
const doc = editor.Canvas && editor.Canvas.getDocument ? editor.Canvas.getDocument() : null;
|
||||||
|
const active = doc && doc.activeElement;
|
||||||
|
if (active && (active.isContentEditable || (active.getAttribute && active.getAttribute('contenteditable') === 'true'))) {
|
||||||
|
syncElement(active);
|
||||||
|
}
|
||||||
|
|
||||||
const selected = editor.getSelected && editor.getSelected();
|
const selected = editor.getSelected && editor.getSelected();
|
||||||
const view = selected && selected.view;
|
const view = selected && selected.view;
|
||||||
if (view && view.el && view.el.isContentEditable) {
|
if (view && view.el && (view.el.isContentEditable || (view.el.getAttribute && view.el.getAttribute('contenteditable') === 'true'))) {
|
||||||
view.el.blur();
|
syncElement(view.el);
|
||||||
}
|
} else if (selected && typeof selected.is === 'function' && (selected.is('text') || selected.is('textnode')) && view && view.el) {
|
||||||
if (selected && view && view.el && typeof selected.is === 'function' && selected.is('text')) {
|
syncElement(view.el);
|
||||||
selected.set('content', view.el.innerHTML);
|
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// kein Block, falls Sync nicht moeglich
|
// kein Block, falls Sync nicht moeglich
|
||||||
|
|||||||
Reference in New Issue
Block a user