Fix preview rendering

This commit is contained in:
Sauli Anto 2019-10-03 12:43:58 +03:00
parent 6ea1c38e24
commit 2984df0a9a
2 changed files with 14 additions and 9 deletions

View File

@ -74,7 +74,7 @@ It's possible to implement with engine config. For example, this feature can be
InlineEditor.defaultConfig = { InlineEditor.defaultConfig = {
// ... // ...
math: { math: {
engine: (equation, element, display, previewHack) => { engine: (equation, element, display, preview) => {
// ... // ...
} }
} }
@ -83,7 +83,7 @@ InlineEditor.defaultConfig = {
- __equation__ is equation in TeX format without delimiters. - __equation__ is equation in TeX format without delimiters.
- __element__ is DOM element reserved for rendering. - __element__ is DOM element reserved for rendering.
- __display__ is boolean. Typesetting should be inline when false. - __display__ is boolean. Typesetting should be inline when false.
- __previewHack__ is boolean. Enable preview hack when true. It adds equation element to end of the body and use absolute position. - __preview__ is boolean. Preview Rendering when true.
### Supported input and output formats ### Supported input and output formats

View File

@ -15,30 +15,36 @@ export function getSelectedMathModelWidget( selection ) {
return null; return null;
} }
export function renderEquation( equation, element, engine = 'katex', display = false, previewHack = false ) { export function renderEquation( equation, element, engine = 'katex', display = false, preview = false ) {
if ( engine === 'mathjax' && typeof MathJax !== 'undefined' ) { if ( engine === 'mathjax' && typeof MathJax !== 'undefined' ) {
if ( isMathJaxVersion3( MathJax.version ) ) { if ( isMathJaxVersion3( MathJax.version ) ) {
selectRenderMode( element, previewHack, el => { selectRenderMode( element, preview, el => {
renderMathJax3( equation, el, display, () => { renderMathJax3( equation, el, display, () => {
if ( previewHack ) { if ( preview ) {
moveAndScaleElement( element, el ); moveAndScaleElement( element, el );
} }
} ); } );
} ); } );
} else { } else {
selectRenderMode( element, previewHack, el => { selectRenderMode( element, preview, el => {
renderMathJax2( equation, el, display ); renderMathJax2( equation, el, display );
if ( preview ) {
moveAndScaleElement( element, el );
}
} ); } );
} }
} else if ( engine === 'katex' && typeof katex !== 'undefined' ) { } else if ( engine === 'katex' && typeof katex !== 'undefined' ) {
selectRenderMode( element, previewHack, el => { selectRenderMode( element, preview, el => {
katex.render( equation, el, { katex.render( equation, el, {
throwOnError: false, throwOnError: false,
displayMode: display displayMode: display
} ); } );
if ( preview ) {
moveAndScaleElement( element, el );
}
} ); } );
} else if ( typeof engine === 'function' ) { } else if ( typeof engine === 'function' ) {
engine( equation, element, display, previewHack ); engine( equation, element, display, );
} else { } else {
element.innerHTML = equation; element.innerHTML = equation;
// eslint-disable-next-line // eslint-disable-next-line
@ -95,7 +101,6 @@ function renderMathJax2( equation, element, display ) {
function createPreviewElement( element, render ) { function createPreviewElement( element, render ) {
const prewviewEl = getPreviewElement( element ); const prewviewEl = getPreviewElement( element );
render( prewviewEl ); render( prewviewEl );
moveAndScaleElement( element, prewviewEl );
} }
export function getPreviewElement( element ) { export function getPreviewElement( element ) {