This commit is contained in:
2026-01-29 00:12:10 +01:00
parent 96ffb00527
commit c21c7dc796
2 changed files with 31 additions and 6 deletions

View File

@@ -340,6 +340,18 @@
}
return model;
};
const resolveViewEl = (model) => {
const direct = model && model.view && model.view.el;
if (direct) return direct;
try {
const id = model && (model.getId ? model.getId() : model.get && model.get('id'));
if (!id || !editor || !editor.Canvas || !editor.Canvas.getBody) return null;
const body = editor.Canvas.getBody();
if (!body) return null;
return body.querySelector(`#${id}`);
} catch {}
return null;
};
const lastContent = new Map();
const syncing = new WeakSet();
const normalizeHtml = (value) => {
@@ -437,8 +449,9 @@
};
const ensureViewMatchesModel = (model) => {
const target = resolveTextModel(model);
if (!isTextLike(target) || !target.view || !target.view.el) return;
const el = target.view.el;
if (!isTextLike(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;
@@ -564,7 +577,14 @@
const logComponentInput = (model, label) => {
try {
const modelType = model && model.get ? model.get('type') : undefined;
const selectedEl = model && model.view && model.view.el;
let selectedEl = model && model.view && model.view.el;
if (!selectedEl && editor && editor.Canvas && editor.Canvas.getBody) {
const body = editor.Canvas.getBody();
const id = model && (model.getId ? model.getId() : model.get && model.get('id'));
if (body && id) {
selectedEl = body.querySelector(`#${id}`);
}
}
const viewOuter = selectedEl ? String(selectedEl.outerHTML || '') : '';
const modelContent = String(getModelHtmlForLog(model) || '');
const editorHtml = editor && typeof editor.getHtml === 'function' ? String(editor.getHtml() || '') : '';
@@ -579,8 +599,13 @@
editorHtml: editorHtml.slice(0, 1000),
});
if (label === 'DESELECT' && model && model.get && model.get('type') === 'text') {
const viewHtml = selectedEl ? String(selectedEl.innerHTML || '') : '';
const visibleText = selectedEl ? String(selectedEl.textContent || '') : '';
let viewHtml = selectedEl ? String(selectedEl.innerHTML || '') : '';
let visibleText = selectedEl ? String(selectedEl.textContent || '') : '';
if (!viewHtml && selectedEl && modelContent) {
try { selectedEl.innerHTML = modelContent; } catch {}
viewHtml = selectedEl ? String(selectedEl.innerHTML || '') : '';
visibleText = selectedEl ? String(selectedEl.textContent || '') : '';
}
const summary = {
source: 'ui',
modelId: model && (model.getId ? model.getId() : model.get && model.get('id')),