Вам нужно сделать 2 вещи для обработки новых атрибутов изображения.
Во-первых, вам необходимо расширить схему соответствующими правилами, которые сообщают модели, что данные атрибуты разрешены вредактор.
Во-вторых, нужно сообщить редактору, как преобразовать данный атрибут в структуру модели и наоборот с правильными конвертерами.
К сожалению, конвертеры изображений довольно сложны, потому что изображение всегда оборачивается <figure>
.Ниже вы можете найти код и ссылку на рабочий пример того, как вы можете создавать такие конвертеры (конвертеры создаются на основе исходного кода плагина изображения для CKEditor5).В этом примере атрибут data-source
сохраняется в модели как атрибут dSource
элемента изображения.
editor.model.schema.extend( 'image', { allowAttributes: 'dSource' } );
editor.conversion.for( 'upcast' ).attributeToAttribute( {
view: 'data-source',
model: 'dSource'
} );
editor.conversion.for( 'downcast' ).add( dispatcher => {
dispatcher.on( 'attribute:dSource:image', ( evt, data, conversionApi ) => {
if ( !conversionApi.consumable.consume( data.item, evt.name ) ) {
return;
}
const viewWriter = conversionApi.writer;
const figure = conversionApi.mapper.toViewElement( data.item );
const img = figure.getChild( 0 );
if ( data.attributeNewValue !== null ) {
viewWriter.setAttribute( 'data-source', data.attributeNewValue, img );
} else {
viewWriter.removeAttribute( 'data-source', img );
}
} );
} );
Ссылка на рабочий образец: https://codepen.io/msamsel/pen/pXKRed?editors=1010