dsfsfds
This commit is contained in:
@@ -619,24 +619,19 @@ const buildPlaceholderHTML = (payload) => {
|
||||
log('PLACEHOLDER ERROR', 'Keine Text-Selektion gefunden. Bitte Cursor setzen und erneut versuchen.', 'red', 'error');
|
||||
return;
|
||||
}
|
||||
let markerId = null;
|
||||
const markerId = `bridge-placeholder-marker-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
||||
const restoreSelection = () => restoreRteSelection(selectionSnapshot);
|
||||
const ensureMarker = () => {
|
||||
if (markerId) return true;
|
||||
if (!restoreSelection()) return false;
|
||||
markerId = `bridge-placeholder-marker-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
||||
const inserted = insertPlaceholderIntoSelection(rteInstance, `<span ${PLACEHOLDER_MARKER_ATTR}="${markerId}"></span>`);
|
||||
if (inserted) {
|
||||
let markerInserted = false;
|
||||
if (restoreSelection()) {
|
||||
markerInserted = insertCaretMarker(rteInstance, markerId);
|
||||
if (markerInserted) {
|
||||
setTimeout(() => reparseTextComponent(target, editor), 0);
|
||||
return true;
|
||||
}
|
||||
markerId = null;
|
||||
return false;
|
||||
};
|
||||
}
|
||||
const cleanupMarker = () => {
|
||||
if (markerId) {
|
||||
if (markerInserted) {
|
||||
removeMarkerFromComponent(target, markerId, editor);
|
||||
markerId = null;
|
||||
markerInserted = false;
|
||||
}
|
||||
};
|
||||
openPlaceholderModal(editor, null, {
|
||||
@@ -647,25 +642,27 @@ const buildPlaceholderHTML = (payload) => {
|
||||
}
|
||||
},
|
||||
onSubmit: (payload) => {
|
||||
if (!ensureMarker()) {
|
||||
cleanupMarker();
|
||||
if (restoreSelection()) {
|
||||
const html = buildPlaceholderHTML(payload);
|
||||
if (insertPlaceholderIntoSelection(rteInstance, html)) {
|
||||
setTimeout(() => reparseTextComponent(target, editor), 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
log('PLACEHOLDER ERROR', 'Placeholder konnte nicht eingefügt werden (Marker fehlte).', 'red', 'error');
|
||||
return false;
|
||||
if (editor) {
|
||||
editor.__bridgePlaceholderSuppressAdd = (editor.__bridgePlaceholderSuppressAdd || 0) + 1;
|
||||
}
|
||||
let replaced = false;
|
||||
if (markerInserted) {
|
||||
replaced = replaceMarkerWithPlaceholder(target, markerId, payload, editor);
|
||||
}
|
||||
if (!replaced && restoreSelection()) {
|
||||
const html = buildPlaceholderHTML(payload);
|
||||
if (insertPlaceholderIntoSelection(rteInstance, html)) {
|
||||
setTimeout(() => reparseTextComponent(target, editor), 0);
|
||||
replaced = true;
|
||||
}
|
||||
}
|
||||
const replaced = replaceMarkerWithPlaceholder(target, markerId, payload, editor);
|
||||
if (!replaced) {
|
||||
cleanupMarker();
|
||||
const viewEl = target.view && target.view.el;
|
||||
if (viewEl) {
|
||||
viewEl.insertAdjacentHTML('beforeend', buildPlaceholderHTML(payload));
|
||||
reparseTextComponent(target, editor);
|
||||
replaced = true;
|
||||
} else {
|
||||
log('PLACEHOLDER ERROR', 'Placeholder konnte nicht eingefügt werden (kein Ziel).', 'red', 'error');
|
||||
return false;
|
||||
@@ -674,7 +671,7 @@ const buildPlaceholderHTML = (payload) => {
|
||||
if (rteInstance && typeof rteInstance.focus === 'function') {
|
||||
setTimeout(() => rteInstance.focus(), 0);
|
||||
}
|
||||
return true;
|
||||
return replaced;
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -1062,6 +1059,10 @@ const buildPlaceholderHTML = (payload) => {
|
||||
|
||||
editor.on('component:add', (cmp) => {
|
||||
if (!cmp || !cmp.is || !cmp.is(PLACEHOLDER_COMPONENT)) return;
|
||||
if (editor.__bridgePlaceholderSuppressAdd) {
|
||||
editor.__bridgePlaceholderSuppressAdd = Math.max(0, (editor.__bridgePlaceholderSuppressAdd || 1) - 1);
|
||||
return;
|
||||
}
|
||||
if (window.__GJS_IS_PARSING) return;
|
||||
if (cmp.__bridgePlaceholderPrompted) return;
|
||||
cmp.__bridgePlaceholderPrompted = true;
|
||||
|
||||
Reference in New Issue
Block a user