UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

32 lines (31 loc) 990 B
import { Part } from './part'; import { FragmentContext } from './contexts'; export class Fragment { config; log; signature; parts; constructor(config, log, signature, parts) { this.config = config; this.log = log; this.signature = signature; this.parts = parts; } static create(config, log, signature, events, partIds) { const parts = partIds.map((partId) => Part.create(config, log, partId, signature, events.filter((e) => e.partId === partId))); return new Fragment(config, log, signature, parts); } getSignature() { return this.signature; } parse(ctx) { const fragmentCtx = new FragmentContext(ctx, this.signature); return { type: 'fragment', kind: 'musical', minWidth: null, signature: this.signature.asFragmentSignature().parse(), parts: this.parts.map((part) => part.parse(fragmentCtx)), }; } }