Skip to content

Dedicated interface for options #524

@uetchy

Description

@uetchy

I'm not sure this is the right place to discuss this issue, it is about the interface of SVG and CHTML class.

constructor(options: OptionList = null) {
super(options, SVGWrapperFactory as any, TeXFont);
this.fontCache = new FontCache(this);
}

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.

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions