-
Notifications
You must be signed in to change notification settings - Fork 232
Description
I'm not sure this is the right place to discuss this issue, it is about the interface of SVG and CHTML class.
Lines 112 to 115 in b526361
| constructor(options: OptionList = null) { | |
| super(options, SVGWrapperFactory as any, TeXFont); | |
| this.fontCache = new FontCache(this); | |
| } |
MathJax-src/ts/output/chtml.ts
Lines 127 to 130 in b526361
| constructor(options: OptionList = null) { | |
| super(options, CHTMLWrapperFactory as any, TeXFont); | |
| this.font.adaptiveCSS(this.options.adaptiveCSS); | |
| } |
Currently, SVG and CHTML class takes option params which are defined as OptionList.
MathJax-src/ts/util/Options.ts
Line 40 in b526361
| export type OptionList = {[name: string]: any}; |
OptionList is an object with an index signature that accepts any key and value, resulting TypeScript won't check key of a passed parameter so that it is hard for users to tell what options are available for SVG or CHTML class without seeing the document.
I've already written these interfaces for another project and feel like it should be bundled with MathJax by default.
remarkjs/remark-math#48
interface MathJaxSVGOptions {
scale: number
minScale: number
mtextInheritFont: boolean
merrorInheritFont: boolean
mathmlSpacing: boolean
skipAttributes: {[index: string]: boolean}
exFactor: number
displayAlign: 'left' | 'center' | 'right'
displayIndent: string
fontCache: 'local' | 'global'
localID: string | null
internalSpeechTitles: boolean
titleID: number
}Is it ok to send a PR to include these interfaces?