mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
synced 2024-11-13 17:56:59 +00:00
Merge "Workaround for WebKit XSLT issue"
This commit is contained in:
commit
a35b1bf38b
|
@ -9,6 +9,31 @@
|
|||
paths: {
|
||||
mathjax: extensionAssetsPath + '/Math/modules/mathjax/es5'
|
||||
}
|
||||
},
|
||||
// See https://phabricator.wikimedia.org/T375241 and the suggested startup function from
|
||||
// https://github.com/mathjax/MathJax/issues/3030#issuecomment-1490520850
|
||||
// This workaround will be included in the MathJax 4 release and no longer be
|
||||
// required when we upgrade to MathJax 4.
|
||||
startup: {
|
||||
ready() {
|
||||
const { Mml3 } = window.MathJax._.input.mathml.mml3.mml3;
|
||||
window.MathJax.startup.defaultReady();
|
||||
const mml3 = new Mml3( window.MathJax.startup.document );
|
||||
const adaptor = window.MathJax.startup.document.adaptor;
|
||||
const processor = new XSLTProcessor();
|
||||
const parsed = adaptor.parse( Mml3.XSLT, 'text/xml' );
|
||||
processor.importStylesheet( parsed );
|
||||
mml3.transform = ( node ) => {
|
||||
const div = adaptor.node( 'div', {}, [ adaptor.clone( node ) ] );
|
||||
const dom = adaptor.parse( adaptor.serializeXML( div ), 'text/xml' );
|
||||
const mml = processor.transformToDocument( dom );
|
||||
return ( mml ? adaptor.tags( mml, 'math' )[ 0 ] : node );
|
||||
};
|
||||
// inputJax[0] did not work as per https://github.com/mathjax/MathJax/issues/3287#issuecomment-2363843017
|
||||
const MML = window.MathJax.startup.document.inputJax[ 1 ];
|
||||
MML.mmlFilters.items.pop(); // remove old filter
|
||||
MML.mmlFilters.add( mml3.mmlFilter.bind( mml3 ) );
|
||||
}
|
||||
}
|
||||
};
|
||||
}() );
|
||||
|
|
Loading…
Reference in a new issue