diff --git a/public/assets/js/bridge/blocks-placeholder.js b/public/assets/js/bridge/blocks-placeholder.js index ed9b642..04a288e 100644 --- a/public/assets/js/bridge/blocks-placeholder.js +++ b/public/assets/js/bridge/blocks-placeholder.js @@ -181,13 +181,35 @@ const buildPlaceholderHTML = (payload) => { return wrapper; }; + const buildTextnodeComponents = (el) => { + if (!el) return []; + const nodes = Array.from(el.childNodes || []); + const comps = []; + nodes.forEach((node) => { + if (!node) return; + if (node.nodeType === 3) { + const text = node.textContent; + if (text !== null && text !== undefined && text !== '') { + comps.push({ type: 'textnode', content: text }); + } + return; + } + if (node.nodeType === 1 && node.outerHTML) { + comps.push(node.outerHTML); + } + }); + return comps; + }; + const reparseTextComponent = (component, editor) => { if (!component || typeof component.components !== 'function') return; const viewEl = component.view && component.view.el; if (!viewEl) return; - const html = viewEl.innerHTML; + const comps = buildTextnodeComponents(viewEl); try { - component.components(html); + if (comps.length) { + component.components(comps); + } if (component.em && typeof component.em.trigger === 'function') { component.em.trigger('component:update', component); } else if (editor && typeof editor.trigger === 'function') {