diff --git a/public/assets/js/bridge/rte-editor.js b/public/assets/js/bridge/rte-editor.js index 4f3d50d..c24d620 100644 --- a/public/assets/js/bridge/rte-editor.js +++ b/public/assets/js/bridge/rte-editor.js @@ -71,6 +71,27 @@ const isTextLike = (component) => !!(component && component.is && (component.is('text') || component.is('button') || component.is('link'))); + const logConsoleSnapshot = (editor, component, label) => { + try { + const viewEl = component && component.view ? component.view.el : null; + const modelContent = component && component.get ? String(component.get('content') || '') : ''; + const editorHtml = editor && typeof editor.getHtml === 'function' ? String(editor.getHtml() || '') : ''; + const maxLen = 1000; + console.log(`[RTE DEBUG] ${label}`, { + modelId: component && (component.getId ? component.getId() : component.get && component.get('id')), + modelType: component && component.get ? component.get('type') : undefined, + modelContentLen: modelContent.length, + modelContent: modelContent.slice(0, maxLen), + viewHtmlLen: viewEl ? String(viewEl.innerHTML || '').length : 0, + viewHtml: viewEl ? String(viewEl.innerHTML || '').slice(0, maxLen) : '', + viewOuterLen: viewEl ? String(viewEl.outerHTML || '').length : 0, + viewOuter: viewEl ? String(viewEl.outerHTML || '').slice(0, maxLen) : '', + editorHtmlLen: editorHtml.length, + editorHtml: editorHtml.slice(0, maxLen), + }); + } catch {} + }; + const applyContentToComponent = (editor, component, html) => { if (!component) return; const content = String(html || ''); @@ -289,7 +310,9 @@ const rawHtml = content.innerHTML || ''; const html = sanitizeInlineHtml(rawHtml, content.textContent || ''); component.__bridgeRteLastContent = html; + logConsoleSnapshot(editor, component, 'before-save'); applyContentToComponent(editor, component, html); + logConsoleSnapshot(editor, component, 'after-save'); closeModal(); }); @@ -346,7 +369,9 @@ const current = String(model.get('content') || '').trim(); if (!current || current === '
' || current === '

' || current === '


') { model.__bridgeRteRestoring = true; + logConsoleSnapshot(editor, model, 'restore-start'); applyContentToComponent(editor, model, last); + logConsoleSnapshot(editor, model, 'restore-end'); model.__bridgeRteRestoring = false; } }; diff --git a/public/editor/bridge-core.js b/public/editor/bridge-core.js index 7adf10d..2a7626e 100644 --- a/public/editor/bridge-core.js +++ b/public/editor/bridge-core.js @@ -377,6 +377,14 @@ try { modelContent = selected && selected.get ? String(selected.get('content') || '') : ''; } catch {} + let viewOuter = ''; + try { + viewOuter = selectedEl ? String(selectedEl.outerHTML || '') : ''; + } catch {} + let editorHtml = ''; + try { + editorHtml = editor && typeof editor.getHtml === 'function' ? String(editor.getHtml() || '') : ''; + } catch {} try { console.warn('[BLUR LOG]', { tag: target.tagName, @@ -385,7 +393,12 @@ modelType: selected && selected.get ? selected.get('type') : undefined, modelId: selected && (selected.getId ? selected.getId() : selected.get && selected.get('id')), modelContentLen: modelContent.length, + modelContent: modelContent.slice(0, 1000), inSelected, + viewOuterLen: viewOuter.length, + viewOuter: viewOuter.slice(0, 1000), + editorHtmlLen: editorHtml.length, + editorHtml: editorHtml.slice(0, 1000), }); } catch {} };