diff --git a/public/assets/js/bridge/rte-editor.js b/public/assets/js/bridge/rte-editor.js index c9321bc..a6b2549 100644 --- a/public/assets/js/bridge/rte-editor.js +++ b/public/assets/js/bridge/rte-editor.js @@ -48,11 +48,19 @@ 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 tag = (model && model.get && (model.get('tagName') || model.get('tag'))) || 'div'; + 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(); - const rx = new RegExp(`<${tagName}([^>]*\\\\bid=[\"']${id}[\"'][^>]*)>([\\\\s\\\\S]*?)<\\\\/${tagName}>`, 'i'); - html = html.replace(rx, `<${tagName}$1>${content}`); + 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}`); + } }); } } catch {} @@ -186,6 +194,11 @@ } 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'); @@ -330,7 +343,12 @@ this.allowClose = true; this.modalOpen = false; if (rteInstance && typeof rteInstance.enable === 'function' && rteTargetEl) { - try { rteInstance.enable(rteTargetEl); } catch {} + try { + const res = rteInstance.enable(rteTargetEl); + if (res && typeof res.catch === 'function') { + res.catch(() => {}); + } + } catch {} } if (this.B.allowModalCloseOnce) this.B.allowModalCloseOnce(); if (typeof modal.close === 'function') {