@stringsync/vexml
Version:
MusicXML to Vexflow
41 lines (40 loc) • 1.64 kB
JavaScript
;
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 });
}