UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

41 lines (40 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderMusicXML = renderMusicXML; exports.renderMXL = renderMXL; const config_1 = require("./config"); const debug_1 = require("./debug"); const formatting_1 = require("./formatting"); const parsing_1 = require("./parsing"); const rendering_1 = require("./rendering"); function renderMusicXML(musicXML, div, opts) { const config = { ...config_1.DEFAULT_CONFIG, ...opts?.config }; const logger = opts?.logger ?? new debug_1.NoopLogger(); const parser = new parsing_1.MusicXMLParser({ config }); const renderer = new rendering_1.Renderer({ config }); let formatter; const width = config.WIDTH; const height = config.HEIGHT; if (width && height) { formatter = new formatting_1.DefaultFormatter({ config, logger }); } else if (width) { formatter = new formatting_1.DefaultFormatter({ config, logger }); } else if (height) { formatter = new formatting_1.PanoramicFormatter({ config, logger }); } else { formatter = new formatting_1.PanoramicFormatter({ config, logger }); } const document = parser.parse(musicXML); const formattedDocument = formatter.format(document); return renderer.render(div, formattedDocument); } async function renderMXL(mxl, div, opts) { const config = { ...config_1.DEFAULT_CONFIG, ...opts?.config }; const logger = opts?.logger ?? new debug_1.NoopLogger(); const parser = new parsing_1.MXLParser({ config }); const musicXML = await parser.raw(mxl); return renderMusicXML(musicXML, div, { config, logger }); }