В моем проекте у меня есть устаревшая компоновка, которую я хочу конвертировать, используя конвертацию CKEditor 5 (если это возможно). Это стандартный способ сделать блочный виджет. Я использую тот же способ для преобразования
conversion.for('upcast')
.elementToElement({
model: 'info',
view: {
name: 'div',
classes: 'info'
}
})
.elementToElement({
model: 'infoInner',
view: {
name: 'div'
}
});
conversion.for('dataDowncast')
.elementToElement({
model: 'info',
view: {
name: 'div',
classes: 'info'
}
})
.elementToElement({
model: 'infoInner',
view: {
name: 'div'
}
});
conversion.for('editingDowncast')
.elementToElement({
model: 'info',
view: (modelElement, viewWriter) => {
const section = viewWriter.createContainerElement('div', {
class: 'info'
});
return toWidget(section, viewWriter, { hasSelectionHandler: true });
}
})
.elementToElement({
model: 'infoInner',
view: (modelElement, viewWriter) => {
const div = viewWriter.createEditableElement('div');
return toWidgetEditable(div, viewWriter);
}
});
Это делает макет как
<div class="info">
<div>
<p>Content</p>
<p>Content</p>
</div>
</div>
В устаревшем коде у меня есть этот тип html
<div>
<p>Content</p>
<p>Content</p>
</div>
Как я Предположим, что возможно вывести старый макет на новый, использовать только функцию upcast
conversion.for('upcast').elementToElement({
view: 'div',
model: (viewElement, modelWriter) => {
if (!viewElement.getAttribute('class')) {
// What I have to do here?
// This is idea below, but it doesn't work
const info = modelWriter.createElement('info');
const infoInner = modelWriter.createElement('infoInner');
modelWriter.append(viewElement.getChildren(), infoInner);
modelWriter.append(infoInner, info);
return info;
}
}
})
Как получить дочерние элементы, переместить их в новый блок виджетов и удалить старый html?