diff --git a/public/assets/js/bridge/rte-editor.js b/public/assets/js/bridge/rte-editor.js index 527f0dd..8c814b5 100644 --- a/public/assets/js/bridge/rte-editor.js +++ b/public/assets/js/bridge/rte-editor.js @@ -44,24 +44,20 @@ try { const wrapper = editor.getWrapper && editor.getWrapper(); if (wrapper && wrapper.find) { + const doc = new DOMParser().parseFromString(html, 'text/html'); const candidates = wrapper.find('[data-gjs-type=\"text\"], [data-gjs-type=\"link\"], [data-gjs-type=\"button\"]'); candidates.forEach((model) => { const content = model && model.get ? String(model.get('content') || '') : ''; const id = model && (model.getId ? model.getId() : model.get && model.get('id')); - const viewEl = model && model.view && model.view.el ? model.view.el : null; - const tag = (model && model.get && (model.get('tagName') || model.get('tag'))) - || (viewEl && viewEl.tagName) - || 'div'; if (!content || !id) return; - const tagName = String(tag).toLowerCase(); - if (tagName && tagName !== 'div') { - const rx = new RegExp(`<${tagName}([^>]*\\\\bid=[\"']${id}[\"'][^>]*)>([\\\\s\\\\S]*?)<\\\\/${tagName}>`, 'i'); - html = html.replace(rx, `<${tagName}$1>${content}`); - } else { - const rxAny = new RegExp(`<([a-z0-9-]+)([^>]*\\\\bid=[\"']${id}[\"'][^>]*)>([\\\\s\\\\S]*?)<\\\\/\\1>`, 'i'); - html = html.replace(rxAny, `<$1$2>${content}`); + const el = doc.getElementById(id); + if (el) { + el.innerHTML = content; } }); + if (doc.body && doc.body.innerHTML !== undefined) { + html = `${doc.body.innerHTML}`; + } } } catch {} return html; @@ -174,23 +170,14 @@ const isText = (component.is && component.is('text')) || (component.get && component.get('type') === 'text'); if (isText && component.components) { - const comps = component.components(); - if (comps && typeof comps.reset === 'function') { - comps.reset([], { silent: true }); - } + try { + component.components(content); + } catch {} } if (component.set) component.set('content', content); } catch {} - if (component.view && component.view.el) { - component.view.el.innerHTML = content; - } if (component.view && typeof component.view.render === 'function') { component.view.render(); - try { - if (component.view && component.view.el) { - component.view.el.innerHTML = content; - } - } catch {} } if (component.trigger) { component.trigger('change:content');