This commit is contained in:
2026-01-16 01:11:57 +01:00
parent 97fb2bb860
commit f265e3b3e1

View File

@@ -155,6 +155,35 @@ const refreshPlaceholderComponent = (component) => {
return `{{${label}}}`;
};
const escapeAttr = (value) => {
return String(value || '')
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
};
const buildPlaceholderHTML = (payload) => {
const type = payload && payload.type === 'database' ? 'database' : 'custom';
const key = payload && payload.key ? payload.key : 'UEBERSCHRIFT';
const table = payload && payload.table ? payload.table : 'tabelle';
const column = payload && payload.column ? payload.column : 'feld';
const label = buildPlaceholderText(payload || {});
const attrs = [
`data-gjs-type="${PLACEHOLDER_COMPONENT}"`,
`data-placeholder-type="${escapeAttr(type)}"`,
`contenteditable="false"`,
`class="${INLINE_PLACEHOLDER_CLASS}"`
];
if (type === 'database') {
attrs.push(`data-placeholder-table="${escapeAttr(table)}"`);
attrs.push(`data-placeholder-column="${escapeAttr(column)}"`);
} else {
attrs.push(`data-placeholder-key="${escapeAttr(key)}"`);
}
return `<span ${attrs.join(' ')}>${label}</span>`;
};
const buildField = (labelText, control) => {
const controlId = `bridge-placeholder-field-${Math.random().toString(36).slice(2)}`;
control.id = controlId;