@stringsync/vexml
Version:
MusicXML to Vexflow
32 lines (31 loc) • 990 B
JavaScript
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)),
};
}
}