Commit a88446eb authored by Daniel Kaufmann's avatar Daniel Kaufmann

[FEATURE] keep classes of h3,h4

parent c1e82af5
import Plugin from "@ckeditor/ckeditor5-core/src/plugin"; import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
export class KeepCustomClasses extends Plugin { export class KeepCustomClasses extends Plugin {
init() { init() {
...@@ -6,24 +6,32 @@ export class KeepCustomClasses extends Plugin { ...@@ -6,24 +6,32 @@ export class KeepCustomClasses extends Plugin {
// Define on which elements the CSS classes should be preserved: // Define on which elements the CSS classes should be preserved:
setupCustomClassConversion( 'h2', 'heading1', editor ); setupCustomClassConversion( 'h2', 'heading1', editor );
setupCustomClassConversion( 'h3', 'heading2', editor );
setupCustomClassConversion( 'h4', 'heading3', editor );
setupCustomClassConversion( 'p', 'paragraph', editor ); setupCustomClassConversion( 'p', 'paragraph', editor );
// Define custom attributes that should be preserved. // Define custom attributes that should be preserved.
setupCustomAttributeConversion( 'h2', 'heading1', 'id', editor ); setupCustomAttributeConversion( 'h2', 'heading1', 'id', editor );
setupCustomAttributeConversion( 'h3', 'heading2', 'id', editor );
setupCustomAttributeConversion( 'h4', 'heading3', 'id', editor );
setupCustomAttributeConversion( 'p', 'paragraph', 'id', editor ); setupCustomAttributeConversion( 'p', 'paragraph', 'id', editor );
function setupCustomClassConversion( viewElementName, modelElementName, editor ) { function setupCustomClassConversion( viewElementName, modelElementName, editor ) {
// The 'customClass' attribute will store custom classes from the data in the model so schema definitions allow this attribute. // The 'customClass' attribute will store custom classes from the data in the model so schema definitions allow this attribute.
editor.model.schema.extend( modelElementName, { allowAttributes: [ 'customClass' ] } ); editor.model.schema.extend( modelElementName, { allowAttributes: [ 'customClass' ] } );
// Define upcast converters for the <img> and <table> elements with a "low" priority so they are run after the default converters. // Define upcast converters for the <img> and <table> elements with a
editor.conversion.for( 'upcast' ).add( upcastCustomClasses( viewElementName ), { priority: 'low' } ); // "low" priority so they are run after the default converters.
editor.conversion.for( 'upcast' ).add( upcastCustomClasses( viewElementName ),
// Define downcast converters for a model element with a "low" priority so they are run after the default converters. { priority: 'low' } );
// Use `downcastCustomClassesToFigure` if you'd like to keep your classes on <figure> element or `downcastCustomClassesToChild` if you'd like to keep your classes on a <figure> child element, i.e. <img>.
editor.conversion.for( 'downcast' ).add( downcastCustomClassesToFigure( modelElementName ), { priority: 'low' } ); // Define downcast converters for a model element with a
// editor.conversion.for( 'downcast' ).add( downcastCustomClassesToChild( viewElementName, modelElementName ), { priority: 'low' } ); // "low" priority so they are run after the default converters.
// Use `downcastCustomClassesToFigure` if you'd like to keep your classes on
// <figure> element or `downcastCustomClassesToChild` if you'd like to keep your
// classes on a <figure> child element, i.e. <img>.
editor.conversion.for( 'downcast' ).add( downcastCustomClassesToFigure( modelElementName ),
{ priority: 'low' } );
} }
function setupCustomAttributeConversion( viewElementName, modelElementName, viewAttribute, editor ) { function setupCustomAttributeConversion( viewElementName, modelElementName, viewAttribute, editor ) {
...@@ -33,7 +41,8 @@ export class KeepCustomClasses extends Plugin { ...@@ -33,7 +41,8 @@ export class KeepCustomClasses extends Plugin {
editor.model.schema.extend( modelElementName, { allowAttributes: [ modelAttribute ] } ); editor.model.schema.extend( modelElementName, { allowAttributes: [ modelAttribute ] } );
editor.conversion.for( 'upcast' ).add( upcastAttribute( viewElementName, viewAttribute, modelAttribute ) ); editor.conversion.for( 'upcast' ).add( upcastAttribute( viewElementName, viewAttribute, modelAttribute ) );
editor.conversion.for( 'downcast' ).add( downcastAttribute( modelElementName, viewElementName, viewAttribute, modelAttribute ) ); editor.conversion.for( 'downcast' ).add( downcastAttribute( modelElementName, viewElementName,
viewAttribute, modelAttribute ) );
} }
function upcastCustomClasses( elementName ) { function upcastCustomClasses( elementName ) {
...@@ -121,4 +130,4 @@ export class KeepCustomClasses extends Plugin { ...@@ -121,4 +130,4 @@ export class KeepCustomClasses extends Plugin {
} ); } );
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment