Add output options

This commit is contained in:
Sauli Anto 2019-09-17 19:39:49 +03:00
parent fe3c7ba393
commit 4bae994b4f
4 changed files with 20 additions and 10 deletions

View File

@ -2,7 +2,8 @@ import Command from '@ckeditor/ckeditor5-core/src/command';
import { getSelectedMathModelWidget } from './utils';
export default class MathCommand extends Command {
execute( equation, display ) {
execute( equation, display, outputType, forceOutputType ) {
console.log( 'execute', display, outputType, forceOutputType );
const model = this.editor.model;
const selection = model.document.selection;
const selectedElement = selection.getSelectedElement();
@ -11,11 +12,15 @@ export default class MathCommand extends Command {
let mathtex;
if ( selectedElement && selectedElement.is( 'mathtex' ) ) {
// Update selected element
const mode = selectedElement.getAttribute( 'mode' );
mathtex = writer.createElement( 'mathtex', { equation, mode, display } );
const typeAttr = selectedElement.getAttribute( 'type' );
// Use already set type if found and is not forced
const type = forceOutputType ? outputType : typeAttr || outputType;
mathtex = writer.createElement( 'mathtex', { equation, type, display } );
} else {
// Create new model element
mathtex = writer.createElement( 'mathtex', { equation, mode: 'script', display } );
mathtex = writer.createElement( 'mathtex', { equation, type: outputType, display } );
}
model.insertContent( mathtex );
writer.setSelection( mathtex, 'on' );

View File

@ -54,7 +54,7 @@ export default class MathEditing extends Plugin {
},
model: ( viewElement, modelWriter ) => {
const equation = viewElement.getChild( 0 ).data.trim();
return modelWriter.createElement( 'mathtex', { equation, type: 'script', display: false } );
return modelWriter.createElement( 'mathtex', { equation, type: mathConfig.forceOutputType ? mathConfig.outputType : 'script', display: false } );
}
} )
// MathJax display way (e.g. <script type="math/tex; mode=display">\sqrt{\frac{a}{b}}</script>)
@ -67,7 +67,7 @@ export default class MathEditing extends Plugin {
},
model: ( viewElement, modelWriter ) => {
const equation = viewElement.getChild( 0 ).data.trim();
return modelWriter.createElement( 'mathtex', { equation, type: 'script', display: true } );
return modelWriter.createElement( 'mathtex', { equation, type: mathConfig.forceOutputType ? mathConfig.outputType : 'script', display: true } );
}
} )
// CKEditor 4 way (e.g. <span class="math-tex">\( \sqrt{\frac{a}{b}} \)</span>)
@ -86,7 +86,7 @@ export default class MathEditing extends Plugin {
equation = equation.substring( 2, equation.length - 2 ).trim();
}
return modelWriter.createElement( 'mathtex', { equation, type: 'span', display: hasDisplayDelimiters } );
return modelWriter.createElement( 'mathtex', { equation, type: mathConfig.forceOutputType ? mathConfig.outputType : 'span', display: hasDisplayDelimiters } );
}
} );

View File

@ -71,7 +71,7 @@ export default class MathUI extends Plugin {
// Listen to submit button click
this.listenTo( formView, 'submit', () => {
editor.execute( 'math', formView.equation, formView.displayButtonView.isOn );
editor.execute( 'math', formView.equation, formView.displayButtonView.isOn, mathConfig.outputType, mathConfig.forceOutputType );
this._closeFormView();
} );

View File

@ -35,7 +35,12 @@ export function getSelectedMathModelWidget( selection ) {
export const defaultConfig = {
/*
engine: (equation, element, display) => {
console.log(equation, element, display);
},
*/
engine: 'mathjax',
outputMode: 'script',
forceOutputMode: false
outputType: 'script',
forceOutputType: false
}