asdasd
This commit is contained in:
@@ -1 +1 @@
|
|||||||
1.1.43
|
1.1.44
|
||||||
@@ -556,6 +556,15 @@
|
|||||||
if (!body || body.__bridgeBlurLoggerBound) return;
|
if (!body || body.__bridgeBlurLoggerBound) return;
|
||||||
body.__bridgeBlurLoggerBound = true;
|
body.__bridgeBlurLoggerBound = true;
|
||||||
const focusSnapshots = new WeakMap();
|
const focusSnapshots = new WeakMap();
|
||||||
|
const syncing = new WeakSet();
|
||||||
|
const normalizeViewHtml = (html) => {
|
||||||
|
return String(html || '')
|
||||||
|
.replace(/<br\b[^>]*>/gi, '<br>')
|
||||||
|
.replace(/\sdata-gjs-type="[^"]*"/gi, '')
|
||||||
|
.replace(/\sdraggable="[^"]*"/gi, '')
|
||||||
|
.replace(/\scontenteditable="[^"]*"/gi, '')
|
||||||
|
.trim();
|
||||||
|
};
|
||||||
const buildSnapshot = (target, selected, selectedEl, editorHtml) => {
|
const buildSnapshot = (target, selected, selectedEl, editorHtml) => {
|
||||||
let modelContent = '';
|
let modelContent = '';
|
||||||
try {
|
try {
|
||||||
@@ -616,9 +625,41 @@
|
|||||||
focusSnapshots.set(target, buildSnapshot(target, selected, selectedEl, editorHtml));
|
focusSnapshots.set(target, buildSnapshot(target, selected, selectedEl, editorHtml));
|
||||||
} catch {}
|
} catch {}
|
||||||
};
|
};
|
||||||
|
const syncFromDomInput = (evt) => {
|
||||||
|
const target = evt && evt.target;
|
||||||
|
if (!target) return;
|
||||||
|
if (window.__bridgeRteOpen) return;
|
||||||
|
const isEditable = !!(target.isContentEditable || (target.getAttribute && target.getAttribute('contenteditable') === 'true'));
|
||||||
|
if (!isEditable) return;
|
||||||
|
const selected = editor.getSelected && editor.getSelected();
|
||||||
|
const selectedEl = selected && selected.view && selected.view.el;
|
||||||
|
if (!selected || !selectedEl) return;
|
||||||
|
if (!(selectedEl === target || selectedEl.contains(target))) return;
|
||||||
|
if (syncing.has(selected)) return;
|
||||||
|
try {
|
||||||
|
const viewHtml = normalizeViewHtml(target.innerHTML || '');
|
||||||
|
if (!viewHtml) return;
|
||||||
|
syncing.add(selected);
|
||||||
|
if (selected.components) {
|
||||||
|
try { selected.components(viewHtml); } catch {}
|
||||||
|
}
|
||||||
|
if (selected.set) selected.set('content', viewHtml);
|
||||||
|
selected.trigger && selected.trigger('change:content');
|
||||||
|
if (selected.view && typeof selected.view.render === 'function') {
|
||||||
|
selected.view.render();
|
||||||
|
}
|
||||||
|
if (editor && typeof editor.trigger === 'function') {
|
||||||
|
editor.trigger('component:update', selected);
|
||||||
|
}
|
||||||
|
} catch {} finally {
|
||||||
|
syncing.delete(selected);
|
||||||
|
}
|
||||||
|
};
|
||||||
body.addEventListener('focusin', logFocus, true);
|
body.addEventListener('focusin', logFocus, true);
|
||||||
body.addEventListener('blur', logBlur, true);
|
body.addEventListener('blur', logBlur, true);
|
||||||
body.addEventListener('focusout', logBlur, true);
|
body.addEventListener('focusout', logBlur, true);
|
||||||
|
body.addEventListener('input', syncFromDomInput, true);
|
||||||
|
body.addEventListener('keyup', syncFromDomInput, true);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user