asdasd
This commit is contained in:
@@ -1 +1 @@
|
|||||||
1.1.39
|
1.1.40
|
||||||
@@ -345,6 +345,7 @@
|
|||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
const closeModal = () => {
|
const closeModal = () => {
|
||||||
|
try { window.__bridgeRteOpen = false; } catch {}
|
||||||
this.allowClose = true;
|
this.allowClose = true;
|
||||||
this.modalOpen = false;
|
this.modalOpen = false;
|
||||||
if (rteInstance && typeof rteInstance.enable === 'function' && rteTargetEl) {
|
if (rteInstance && typeof rteInstance.enable === 'function' && rteTargetEl) {
|
||||||
@@ -366,6 +367,7 @@
|
|||||||
|
|
||||||
const doc = document;
|
const doc = document;
|
||||||
const container = doc.createElement('div');
|
const container = doc.createElement('div');
|
||||||
|
try { window.__bridgeRteOpen = true; } catch {}
|
||||||
container.style.display = 'flex';
|
container.style.display = 'flex';
|
||||||
container.style.flexDirection = 'column';
|
container.style.flexDirection = 'column';
|
||||||
container.style.gap = '10px';
|
container.style.gap = '10px';
|
||||||
|
|||||||
@@ -428,6 +428,7 @@
|
|||||||
const syncTextFromViewOnDeselect = (model) => {
|
const syncTextFromViewOnDeselect = (model) => {
|
||||||
const target = resolveTextModel(model);
|
const target = resolveTextModel(model);
|
||||||
if (!isTextLike(target) || !target.view || !target.view.el || syncing.has(target)) return;
|
if (!isTextLike(target) || !target.view || !target.view.el || syncing.has(target)) return;
|
||||||
|
if (window.__bridgeRteOpen) return;
|
||||||
const viewHtml = normalizeViewHtmlForModel(target.view.el.innerHTML || '');
|
const viewHtml = normalizeViewHtmlForModel(target.view.el.innerHTML || '');
|
||||||
if (!viewHtml) return;
|
if (!viewHtml) return;
|
||||||
const modelHtml = normalizeViewHtmlForModel(target.get ? target.get('content') || '' : '');
|
const modelHtml = normalizeViewHtmlForModel(target.get ? target.get('content') || '' : '');
|
||||||
@@ -459,11 +460,35 @@
|
|||||||
syncing.delete(target);
|
syncing.delete(target);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const syncTextFromViewOnInput = (model) => {
|
||||||
|
const target = resolveTextModel(model);
|
||||||
|
if (!isTextLike(target) || !target.view || !target.view.el || syncing.has(target)) return;
|
||||||
|
if (window.__bridgeRteOpen) return;
|
||||||
|
const viewHtml = normalizeViewHtmlForModel(target.view.el.innerHTML || '');
|
||||||
|
if (!viewHtml) return;
|
||||||
|
const modelHtml = normalizeViewHtmlForModel(target.get ? target.get('content') || '' : '');
|
||||||
|
const comps = target.components ? target.components() : null;
|
||||||
|
const hasComps = !!(comps && comps.length);
|
||||||
|
if (viewHtml === modelHtml && hasComps) return;
|
||||||
|
try {
|
||||||
|
syncing.add(target);
|
||||||
|
if (target.components) {
|
||||||
|
try { target.components(viewHtml); } catch {}
|
||||||
|
}
|
||||||
|
if (target.set) target.set('content', viewHtml);
|
||||||
|
target.trigger && target.trigger('change:content');
|
||||||
|
} catch {} finally {
|
||||||
|
syncing.delete(target);
|
||||||
|
}
|
||||||
|
};
|
||||||
editor.on('component:update', (model) => {
|
editor.on('component:update', (model) => {
|
||||||
restoreIfEmpty(model);
|
restoreIfEmpty(model);
|
||||||
ensureViewMatchesModel(model);
|
ensureViewMatchesModel(model);
|
||||||
});
|
});
|
||||||
editor.on('component:input', (model) => restoreIfEmpty(model));
|
editor.on('component:input', (model) => {
|
||||||
|
syncTextFromViewOnInput(model);
|
||||||
|
restoreIfEmpty(model);
|
||||||
|
});
|
||||||
editor.on('component:deselected', (model) => {
|
editor.on('component:deselected', (model) => {
|
||||||
syncTextFromViewOnDeselect(model);
|
syncTextFromViewOnDeselect(model);
|
||||||
restoreIfEmpty(model);
|
restoreIfEmpty(model);
|
||||||
@@ -480,25 +505,6 @@
|
|||||||
try {
|
try {
|
||||||
const modelType = model && model.get ? model.get('type') : undefined;
|
const modelType = model && model.get ? model.get('type') : undefined;
|
||||||
const selectedEl = model && model.view && model.view.el;
|
const selectedEl = model && model.view && model.view.el;
|
||||||
const normalizeViewHtmlForModel = (html) => {
|
|
||||||
return String(html || '')
|
|
||||||
.replace(/<br\b[^>]*>/gi, '<br>')
|
|
||||||
.replace(/\sdata-gjs-type="[^"]*"/gi, '')
|
|
||||||
.replace(/\sdraggable="[^"]*"/gi, '')
|
|
||||||
.replace(/\scontenteditable="[^"]*"/gi, '')
|
|
||||||
.trim();
|
|
||||||
};
|
|
||||||
if (label === 'DESELECT' && modelType === 'text' && selectedEl) {
|
|
||||||
try {
|
|
||||||
const viewHtml = normalizeViewHtmlForModel(selectedEl.innerHTML || '');
|
|
||||||
if (viewHtml && model && model.set) {
|
|
||||||
if (model.components) {
|
|
||||||
try { model.components(viewHtml); } catch {}
|
|
||||||
}
|
|
||||||
model.set('content', viewHtml);
|
|
||||||
}
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
const viewOuter = selectedEl ? String(selectedEl.outerHTML || '') : '';
|
const viewOuter = selectedEl ? String(selectedEl.outerHTML || '') : '';
|
||||||
const modelContent = model && model.get ? String(model.get('content') || '') : '';
|
const modelContent = model && model.get ? String(model.get('content') || '') : '';
|
||||||
const editorHtml = editor && typeof editor.getHtml === 'function' ? String(editor.getHtml() || '') : '';
|
const editorHtml = editor && typeof editor.getHtml === 'function' ? String(editor.getHtml() || '') : '';
|
||||||
|
|||||||
Reference in New Issue
Block a user