@tspro/web-music-score 3.0.1 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +63 -20
  3. package/dist/audio/index.d.mts +1 -8
  4. package/dist/audio/index.d.ts +1 -8
  5. package/dist/audio/index.js +1 -1
  6. package/dist/audio/index.mjs +2 -2
  7. package/dist/audio-cg/index.d.mts +0 -1
  8. package/dist/audio-cg/index.d.ts +0 -1
  9. package/dist/audio-cg/index.js +1 -1
  10. package/dist/audio-cg/index.mjs +2 -2
  11. package/dist/{chunk-4AS76G4O.mjs → chunk-PU4J7K4Z.mjs} +2 -2
  12. package/dist/core/index.d.mts +0 -3
  13. package/dist/core/index.d.ts +0 -3
  14. package/dist/core/index.js +2 -2
  15. package/dist/core/index.mjs +3 -3
  16. package/dist/{guitar-BIFwFT31.d.ts → guitar-C2Cp71NZ.d.ts} +1 -8
  17. package/dist/{guitar-zASF7B1g.d.mts → guitar-DggbM2UL.d.mts} +1 -8
  18. package/dist/iife/index.global.js +11 -11
  19. package/dist/{interface-DkUnsAjj.d.mts → interface-Bz_525zj.d.mts} +94 -104
  20. package/dist/{interface-1TQHxSpb.d.ts → interface-Fn8ufBQx.d.ts} +94 -104
  21. package/dist/{note-B5ZtlHc8.d.mts → note-BFa43I86.d.mts} +0 -14
  22. package/dist/{note-B5ZtlHc8.d.ts → note-BFa43I86.d.ts} +0 -14
  23. package/dist/pieces/index.d.mts +3 -6
  24. package/dist/pieces/index.d.ts +3 -6
  25. package/dist/pieces/index.js +1 -1
  26. package/dist/pieces/index.mjs +2 -2
  27. package/dist/react-ui/index.d.mts +5 -23
  28. package/dist/react-ui/index.d.ts +5 -23
  29. package/dist/react-ui/index.js +1 -1
  30. package/dist/react-ui/index.mjs +2 -2
  31. package/dist/{scale-B_2MZaT9.d.ts → scale-DRR-t4Kr.d.mts} +2 -15
  32. package/dist/{scale-C-YS5iVG.d.mts → scale-ebJm37q1.d.ts} +2 -15
  33. package/dist/score/index.d.mts +32 -8
  34. package/dist/score/index.d.ts +32 -8
  35. package/dist/score/index.js +919 -675
  36. package/dist/score/index.mjs +893 -650
  37. package/dist/{tempo-TjQKn46X.d.mts → tempo-B4h5Ktob.d.mts} +1 -17
  38. package/dist/{tempo-DoJd-UYT.d.ts → tempo-DgqDEsn0.d.ts} +1 -17
  39. package/dist/theory/index.d.mts +6 -8
  40. package/dist/theory/index.d.ts +6 -8
  41. package/dist/theory/index.js +1 -1
  42. package/dist/theory/index.mjs +2 -2
  43. package/package.json +1 -1
@@ -1,10 +1,8 @@
1
- import { N as Note, A as Accidental } from './note-B5ZtlHc8.mjs';
2
- import { R as RhythmProps, N as NoteLength, c as Tempo, K as KeySignature, a as TimeSignature, T as TimeSignatureString } from './tempo-TjQKn46X.mjs';
1
+ import { N as Note, A as Accidental } from './note-BFa43I86.mjs';
2
+ import { R as RhythmProps, N as NoteLength, c as Tempo, K as KeySignature, a as TimeSignature, T as TimeSignatureString } from './tempo-B4h5Ktob.mjs';
3
3
  import { Vec2 } from '@tspro/ts-utils-lib';
4
4
 
5
5
  /**
6
- * @public
7
- *
8
6
  * DivRect class, left, top, right, bottom rectangle divided into four sections by centerX, centerY.
9
7
  */
10
8
  declare class DivRect {
@@ -199,7 +197,6 @@ declare class DivRect {
199
197
  getRect(): DivRect;
200
198
  }
201
199
 
202
- /** @public */
203
200
  declare enum StaffPreset {
204
201
  /** Treble staff has treble (G-) clef. */
205
202
  Treble = 1,
@@ -212,54 +209,44 @@ declare enum StaffPreset {
212
209
  GuitarTab = 8,
213
210
  GuitarCombined = 12
214
211
  }
215
- /** @public */
216
212
  declare enum Clef {
217
213
  G = "G",
218
214
  F = "F"
219
215
  }
220
- /** @public */
221
216
  type StaffConfig = {
222
217
  type: "staff";
223
218
  clef: Clef;
219
+ name?: string;
224
220
  isOctaveDown?: boolean;
225
221
  minNote?: string;
226
222
  maxNote?: string;
227
223
  voiceIds?: number[];
228
224
  isGrand?: boolean;
229
225
  };
230
- /** @public */
231
226
  type TabConfig = {
232
227
  type: "tab";
228
+ name?: string;
233
229
  tuning?: string | string[];
234
230
  voiceIds?: number[];
235
231
  };
236
- /** @public */
237
232
  type ScoreConfiguration = StaffConfig | TabConfig | (StaffConfig | TabConfig)[];
238
- /** @public */
239
233
  type VoiceId = 0 | 1 | 2 | 3;
240
- /** @public */
241
234
  declare function getVoiceIds(): ReadonlyArray<VoiceId>;
242
- /** @public */
243
235
  type StringNumber = 1 | 2 | 3 | 4 | 5 | 6;
244
- /** @public */
245
236
  declare function getStringNumbers(): ReadonlyArray<StringNumber>;
246
- /** @public */
247
237
  declare enum Stem {
248
238
  Auto = 0,
249
239
  Up = 1,
250
240
  Down = 2
251
241
  }
252
- /** @public */
253
242
  declare enum Arpeggio {
254
243
  Up = 0,
255
244
  Down = 1
256
245
  }
257
- /** @public */
258
246
  declare enum TieType {
259
247
  Stub = -1,
260
248
  ToMeasureEnd = -2
261
249
  }
262
- /** @public */
263
250
  declare enum NoteAnchor {
264
251
  Auto = 0,
265
252
  Above = 1,
@@ -267,15 +254,20 @@ declare enum NoteAnchor {
267
254
  Below = 3,
268
255
  StemTip = 4
269
256
  }
270
- /** @public */
271
257
  declare enum Connective {
272
258
  Tie = 0,
273
259
  Slur = 1,
274
260
  Slide = 2
275
261
  }
276
- /** @public */
277
262
  type ConnectiveSpan = number | TieType;
278
- /** @public */
263
+ declare enum VerticalPosition {
264
+ Above = 0,
265
+ Below = 1,
266
+ Both = 2,
267
+ Auto = 3
268
+ }
269
+ type StaffTabOrGroup = number | string;
270
+ type StaffTabOrGroups = StaffTabOrGroup | StaffTabOrGroup[];
279
271
  type NoteOptions = {
280
272
  dotted?: boolean;
281
273
  stem?: Stem;
@@ -286,7 +278,6 @@ type NoteOptions = {
286
278
  triplet?: boolean;
287
279
  string?: StringNumber | StringNumber[];
288
280
  };
289
- /** @public */
290
281
  type RestOptions = {
291
282
  dotted?: boolean;
292
283
  staffPos?: Note | string | number;
@@ -294,20 +285,16 @@ type RestOptions = {
294
285
  hide?: boolean;
295
286
  triplet?: boolean;
296
287
  };
297
- /** @public */
298
288
  declare enum PlayState {
299
289
  Playing = 0,
300
290
  Paused = 1,
301
291
  Stopped = 2
302
292
  }
303
- /** @public */
304
293
  type PlayStateChangeListener = (playState: PlayState) => void;
305
- /** @public */
306
294
  declare enum Fermata {
307
295
  AtNote = 0,
308
296
  AtMeasureEnd = 1
309
297
  }
310
- /** @public */
311
298
  declare enum Navigation {
312
299
  /** Repeat back to beginning and play to the "Fine" marking. */
313
300
  DC_al_Fine = 0,
@@ -332,14 +319,12 @@ declare enum Navigation {
332
319
  /** Jump to ending with correct passage number. */
333
320
  Ending = 10
334
321
  }
335
- /** @public */
336
322
  declare enum Annotation {
337
323
  /** "ppp", "pp", "p", "mp", "m", "mf", "f", "ff", "fff", "cresc.", "decresc.", "dim." */
338
324
  Dynamics = 0,
339
325
  /** "accel.", "rit.", "a tempo" */
340
326
  Tempo = 1
341
327
  }
342
- /** @public */
343
328
  declare enum Label {
344
329
  /** "C", "C#", "Db", "D", etc. */
345
330
  Note = 0,
@@ -434,9 +419,35 @@ type NotationLineObject = {
434
419
  offset?: (dx: number, dy: number) => void;
435
420
  offsetInPlace?: (dx: number, dy: number) => void;
436
421
  };
437
- declare class ObjStaff extends MusicObject {
422
+ declare abstract class ObjNotationLine extends MusicObject {
423
+ protected readonly objects: NotationLineObject[];
424
+ abstract readonly id: number;
425
+ abstract readonly name: string;
426
+ private layoutGroups;
427
+ constructor(parent: MusicObject);
428
+ addObject(o: NotationLineObject): void;
429
+ removeObjects(): void;
430
+ getLayoutGroup(lauoutGroupId: LayoutGroupId): LayoutGroup;
431
+ resetLayoutGroups(renderer: Renderer): void;
432
+ layoutLayoutGroups(renderer: Renderer): void;
433
+ private setObjectY;
434
+ private alignObjectsY;
435
+ layoutLayoutGroup(renderer: Renderer, layoutGroup: LayoutGroup, verticalPos: VerticalPos): void;
436
+ abstract calcTop(): number;
437
+ abstract calcBottom(): number;
438
+ abstract getTopLineY(): number;
439
+ abstract getBottomLineY(): number;
440
+ abstract containsVoiceId(voiceId: number): boolean;
441
+ abstract containsDiatonicId(diatonicId: number): boolean;
442
+ abstract layoutWidth(renderer: Renderer): void;
443
+ abstract layoutHeight(renderer: Renderer): void;
444
+ abstract offset(dx: number, dy: number): void;
445
+ abstract draw(renderer: Renderer): void;
446
+ }
447
+ declare class ObjStaff extends ObjNotationLine {
438
448
  readonly row: ObjScoreRow;
439
449
  readonly staffConfig: StaffConfig;
450
+ readonly id: number;
440
451
  readonly clefImageAsset: ImageAsset;
441
452
  readonly clefLineDiatonicId: number;
442
453
  readonly topLineDiatonicId: number;
@@ -447,11 +458,11 @@ declare class ObjStaff extends MusicObject {
447
458
  private joinedGrandStaff?;
448
459
  private topLineY;
449
460
  private bottomLineY;
450
- private readonly objects;
451
461
  readonly mi: MStaff;
452
- constructor(row: ObjScoreRow, staffConfig: StaffConfig);
462
+ constructor(row: ObjScoreRow, staffConfig: StaffConfig, id: number);
453
463
  getMusicInterface(): MStaff;
454
464
  get isOctaveDown(): boolean;
465
+ get name(): string;
455
466
  getTopLineY(): number;
456
467
  getMiddleLineY(): number;
457
468
  getBottomLineY(): number;
@@ -468,38 +479,38 @@ declare class ObjStaff extends MusicObject {
468
479
  isGrand(): boolean;
469
480
  calcTop(): number;
470
481
  calcBottom(): number;
471
- addObject(o: NotationLineObject): void;
472
- removeObjects(): void;
473
482
  pick(x: number, y: number): MusicObject[];
474
483
  layoutHeight(renderer: Renderer): void;
475
484
  layoutWidth(renderer: Renderer): void;
476
485
  offset(dx: number, dy: number): void;
477
486
  draw(renderer: Renderer): void;
478
487
  }
479
- declare class ObjTab extends MusicObject {
488
+ declare class ObjTab extends ObjNotationLine {
480
489
  readonly row: ObjScoreRow;
481
490
  readonly tabConfig: TabConfig;
491
+ readonly id: number;
482
492
  private top;
483
493
  private bottom;
484
- private readonly objects;
485
494
  private readonly tuningName?;
486
495
  private readonly tuningStrings;
487
496
  readonly mi: MTab;
488
- constructor(row: ObjScoreRow, tabConfig: TabConfig);
497
+ constructor(row: ObjScoreRow, tabConfig: TabConfig, id: number);
489
498
  getMusicInterface(): MTab;
499
+ get name(): string;
490
500
  getTuningName(): string | undefined;
491
501
  getTuningStrings(): ReadonlyArray<Note>;
492
502
  /** Return Y coordinate of string. */
493
503
  getStringY(stringId: number): number;
494
504
  getTopStringY(): number;
495
505
  getBottomStringY(): number;
506
+ getTopLineY(): number;
507
+ getBottomLineY(): number;
496
508
  getTop(): number;
497
509
  getBottom(): number;
498
510
  containsVoiceId(voiceId: number): boolean;
511
+ containsDiatonicId(diatonicId: number): boolean;
499
512
  calcTop(): number;
500
513
  calcBottom(): number;
501
- addObject(o: NotationLineObject): void;
502
- removeObjects(): void;
503
514
  pick(x: number, y: number): MusicObject[];
504
515
  layoutHeight(renderer: Renderer): void;
505
516
  layoutWidth(renderer: Renderer): void;
@@ -566,12 +577,13 @@ declare class ObjNoteGroup extends MusicObject {
566
577
  get row(): ObjScoreRow;
567
578
  get stemDir(): Stem.Up | Stem.Down;
568
579
  get triplet(): boolean;
569
- enableConnective(line: ObjStaff | ObjTab): boolean;
580
+ enableConnective(line: ObjNotationLine): boolean;
570
581
  startConnective(connectiveProps: ConnectiveProps): void;
582
+ getStaticObjects(line: ObjNotationLine): ReadonlyArray<MusicObject>;
571
583
  pick(x: number, y: number): MusicObject[];
572
584
  getTopNote(): Note;
573
585
  getBottomNote(): Note;
574
- getConnectiveAnchorPoint(connectiveProps: ConnectiveProps, line: ObjStaff | ObjTab, noteIndex: number, noteAnchor: NoteAnchor, side: "left" | "right"): {
586
+ getConnectiveAnchorPoint(connectiveProps: ConnectiveProps, line: ObjNotationLine, noteIndex: number, noteAnchor: NoteAnchor, side: "left" | "right"): {
575
587
  x: number;
576
588
  y: number;
577
589
  };
@@ -696,6 +708,7 @@ declare class ObjRest extends MusicObject {
696
708
  get dotted(): boolean;
697
709
  get stemDir(): Stem.Up | Stem.Down;
698
710
  get triplet(): boolean;
711
+ getStaticObjects(line: ObjNotationLine): ReadonlyArray<MusicObject>;
699
712
  pick(x: number, y: number): MusicObject[];
700
713
  getBeamGroup(): ObjBeamGroup | undefined;
701
714
  setBeamGroup(beam: ObjBeamGroup): void;
@@ -754,6 +767,7 @@ declare class ObjRhythmColumn extends MusicObject {
754
767
  getNextColumn(): ObjRhythmColumn | undefined;
755
768
  getTicksToNextColumn(): number;
756
769
  getShapeRects(): DivRect[];
770
+ getStaticObjects(line: ObjNotationLine): ReadonlyArray<MusicObject>;
757
771
  get doc(): ObjDocument;
758
772
  get row(): ObjScoreRow;
759
773
  pick(x: number, y: number): MusicObject[];
@@ -801,11 +815,11 @@ declare enum BarLineType {
801
815
  EndStartRepeat = 6
802
816
  }
803
817
  declare class ObjStaffTabBarLine extends MusicObject {
804
- readonly line: ObjStaff | ObjTab;
818
+ readonly line: ObjNotationLine;
805
819
  lineRects: DivRect[];
806
820
  dotRects: DivRect[];
807
821
  readonly mi: MStaffTabBarLine;
808
- constructor(line: ObjStaff | ObjTab);
822
+ constructor(line: ObjNotationLine);
809
823
  getMusicInterface(): MusicInterface;
810
824
  pick(x: number, y: number): MusicObject[];
811
825
  setRect(r: DivRect): void;
@@ -840,7 +854,7 @@ declare class ObjBarLineRight extends ObjBarLine {
840
854
 
841
855
  declare class ObjConnective extends MusicObject {
842
856
  readonly connectiveProps: ConnectiveProps;
843
- readonly line: ObjStaff | ObjTab;
857
+ readonly line: ObjNotationLine;
844
858
  readonly measure: ObjMeasure;
845
859
  private lx;
846
860
  private ly;
@@ -857,8 +871,8 @@ declare class ObjConnective extends MusicObject {
857
871
  private readonly rightNoteId?;
858
872
  private readonly tieType?;
859
873
  readonly mi: MConnective;
860
- constructor(connectiveProps: ConnectiveProps, line: ObjStaff | ObjTab, measure: ObjMeasure, leftNoteGroup: ObjNoteGroup, leftNoteId: number, rightNoteGroup: ObjNoteGroup, rightNoteId: number);
861
- constructor(connectiveProps: ConnectiveProps, line: ObjStaff | ObjTab, measure: ObjMeasure, leftNoteGroup: ObjNoteGroup, leftNoteId: number, tie: TieType);
874
+ constructor(connectiveProps: ConnectiveProps, line: ObjNotationLine, measure: ObjMeasure, leftNoteGroup: ObjNoteGroup, leftNoteId: number, rightNoteGroup: ObjNoteGroup, rightNoteId: number);
875
+ constructor(connectiveProps: ConnectiveProps, line: ObjNotationLine, measure: ObjMeasure, leftNoteGroup: ObjNoteGroup, leftNoteId: number, tie: TieType);
862
876
  getMusicInterface(): MConnective;
863
877
  isInsideMeasure(): boolean;
864
878
  pick(x: number, y: number): MusicObject[];
@@ -897,7 +911,7 @@ declare class ObjMeasure extends MusicObject {
897
911
  private voiceSymbols;
898
912
  private lastAddedRhythmColumn?;
899
913
  private lastAddedRhythmSymbol?;
900
- private addExtensionToMusicObject?;
914
+ private addExtensionToMusicObjects;
901
915
  private layoutObjects;
902
916
  private postMeasureBreakWidth;
903
917
  private passCount;
@@ -907,6 +921,7 @@ declare class ObjMeasure extends MusicObject {
907
921
  private isEndSection;
908
922
  private endRepeatPlayCount;
909
923
  private endRepeatPlayCountText?;
924
+ private staticObjectsCache;
910
925
  readonly mi: MMeasure;
911
926
  constructor(row: ObjScoreRow);
912
927
  getMusicInterface(): MMeasure;
@@ -940,25 +955,26 @@ declare class ObjMeasure extends MusicObject {
940
955
  hasPostMeasureBreak(): boolean;
941
956
  getPostMeasureBreakWidth(): number;
942
957
  private addLayoutObject;
943
- addFermata(fermata: Fermata): void;
958
+ private forEachStaffGroup;
959
+ addFermata(staffTabOrGroups: StaffTabOrGroups | undefined, fermata: Fermata): void;
944
960
  hasFermata(anchor: ObjRhythmColumn | ObjBarLineRight): boolean;
945
- addNavigation(navigation: Navigation, ...args: unknown[]): void;
961
+ addNavigation(staffTabOrGroups: StaffTabOrGroups | undefined, navigation: Navigation, ...args: unknown[]): void;
946
962
  hasNavigation(n: Navigation): boolean;
947
- getEnding(): ObjEnding | undefined;
948
- getEndRepeatPlayCount(): number;
963
+ addAnnotation(staffTabOrGroups: StaffTabOrGroups | undefined, annotation: Annotation, text: string): void;
964
+ addLabel(staffTabOrGroups: StaffTabOrGroups | undefined, label: Label, text: string): void;
949
965
  addConnective(connective: Connective.Tie, tieSpan?: number | TieType, notAnchor?: NoteAnchor): void;
950
966
  addConnective(connective: Connective.Slur, slurSpan?: number, notAnchor?: NoteAnchor): void;
951
967
  addConnective(connective: Connective.Slide, notAnchor?: NoteAnchor): void;
952
- addLabel(label: Label, text: string): void;
953
- addAnnotation(annotation: Annotation, text: string): void;
968
+ addExtension(extensionLength: number, extensionVisible: boolean): void;
969
+ private enableExtension;
970
+ private disableExtension;
971
+ getEnding(): ObjEnding | undefined;
972
+ getEndRepeatPlayCount(): number;
954
973
  endSong(): void;
955
974
  hasEndSong(): boolean;
956
975
  endSection(): void;
957
976
  hasEndSection(): boolean;
958
977
  endRow(): void;
959
- private enableExtension;
960
- private disableExtension;
961
- addExtension(extensionLength: number, extensionVisible: boolean): void;
962
978
  private addRhythmSymbol;
963
979
  addNoteGroup(voiceId: number, notes: (Note | string)[], noteLength: NoteLength, options?: NoteOptions): void;
964
980
  addRest(voiceId: number, restLength: NoteLength, options?: RestOptions): void;
@@ -978,7 +994,7 @@ declare class ObjMeasure extends MusicObject {
978
994
  getMinWidth(): number;
979
995
  getStaffLineLeft(): number;
980
996
  getStaffLineRight(): number;
981
- getStaticObjects(): ReadonlyArray<ObjRhythmColumn | LayoutableMusicObject>;
997
+ getStaticObjects(line: ObjNotationLine): ReadonlyArray<MusicObject>;
982
998
  removeLayoutObjects(musicObj: MusicObject): void;
983
999
  addConnectiveObject(connective: ObjConnective): void;
984
1000
  removeConnectiveObjects(): void;
@@ -1018,7 +1034,7 @@ declare class ObjScoreRow extends MusicObject {
1018
1034
  constructor(doc: ObjDocument, prevRow: ObjScoreRow | undefined, scoreConfig: (StaffConfig | TabConfig)[]);
1019
1035
  getMusicInterface(): MScoreRow;
1020
1036
  private createNotationLines;
1021
- getNotationLines(): ReadonlyArray<ObjStaff | ObjTab>;
1037
+ getNotationLines(): ReadonlyArray<ObjNotationLine>;
1022
1038
  getStaves(): ReadonlyArray<ObjStaff>;
1023
1039
  getTabs(): ReadonlyArray<ObjTab>;
1024
1040
  get hasStaff(): boolean;
@@ -1026,6 +1042,8 @@ declare class ObjScoreRow extends MusicObject {
1026
1042
  getTopStaff(): ObjStaff;
1027
1043
  getBottomStaff(): ObjStaff;
1028
1044
  getStaff(diatonicId: number): ObjStaff | undefined;
1045
+ resetLayoutGroups(renderer: Renderer): void;
1046
+ layoutLayoutGroups(renderer: Renderer): void;
1029
1047
  pick(x: number, y: number): MusicObject[];
1030
1048
  getConnectivesContentRect(): DivRect;
1031
1049
  getDiatonicIdAt(y: number): number | undefined;
@@ -1041,12 +1059,9 @@ declare class ObjScoreRow extends MusicObject {
1041
1059
  requestLayout(): void;
1042
1060
  layout(renderer: Renderer): void;
1043
1061
  layoutWidth(renderer: Renderer, width: number): void;
1062
+ updateRect(): void;
1044
1063
  alignStemsToBeams(): void;
1045
1064
  layoutPositionLines(renderer: Renderer): void;
1046
- updateRect(): void;
1047
- private setObjectY;
1048
- private alignObjectsY;
1049
- layoutLayoutGroup(renderer: Renderer, layoutGroup: LayoutGroup, verticalPos: VerticalPos): void;
1050
1065
  layoutPadding(renderer: Renderer): void;
1051
1066
  layoutDone(): void;
1052
1067
  offset(dx: number, dy: number): void;
@@ -1061,16 +1076,15 @@ declare class ObjDocument extends MusicObject {
1061
1076
  private measuresPerRow;
1062
1077
  private curScoreConfig;
1063
1078
  private header?;
1064
- private layoutGroups;
1065
1079
  private newRowRequested;
1066
1080
  private allConnectiveProps;
1081
+ private staffGroups;
1067
1082
  private readonly mi;
1068
1083
  constructor();
1069
1084
  getMusicInterface(): MDocument;
1070
1085
  setScoreConfiguration(config: StaffPreset | ScoreConfiguration): void;
1071
1086
  setMeasuresPerRow(measuresPerRow: number): void;
1072
1087
  addConnectiveProps(connectiveProps: ConnectiveProps): void;
1073
- getLayoutGroup(lauoutGroupId: LayoutGroupId): LayoutGroup;
1074
1088
  setRenderer(renderer?: Renderer): void;
1075
1089
  setHeader(title?: string, composer?: string, arranger?: string): void;
1076
1090
  getTitle(): string | undefined;
@@ -1084,6 +1098,8 @@ declare class ObjDocument extends MusicObject {
1084
1098
  getLastRow(): ObjScoreRow;
1085
1099
  requestNewRow(): void;
1086
1100
  addMeasure(): ObjMeasure;
1101
+ addStaffGroup(groupName: string, layoutElements: number | string | (number | string)[], verticalPosition: VerticalPosition): void;
1102
+ getStaffGroup(groupName: string): StaffGroup | undefined;
1087
1103
  getVoiceSymbols(voiceId: number): ReadonlyArray<RhythmSymbol>;
1088
1104
  removeLayoutObjects(musicObj: MusicObject): void;
1089
1105
  private forEachMeasure;
@@ -1267,12 +1283,19 @@ declare enum LayoutGroupId {
1267
1283
  ChordLabel = 6
1268
1284
  }
1269
1285
  declare enum VerticalPos {
1270
- AboveStaff = 0,
1271
- BelowStaff = 1
1286
+ Above = 0,
1287
+ Below = 1
1272
1288
  }
1273
1289
  type LayoutableMusicObject = ObjText | ObjSpecialText | ObjExtensionLine | ObjFermata | ObjEnding;
1290
+ declare class StaffGroup {
1291
+ readonly groupName: string;
1292
+ readonly staffsTabsAndGroups: number | string | (number | string)[];
1293
+ readonly verticalPosition: VerticalPosition;
1294
+ constructor(groupName: string, staffsTabsAndGroups: number | string | (number | string)[], verticalPosition: VerticalPosition);
1295
+ }
1274
1296
  declare class LayoutObjectWrapper {
1275
1297
  readonly musicObj: LayoutableMusicObject;
1298
+ readonly line: ObjNotationLine;
1276
1299
  readonly layoutGroupId: LayoutGroupId;
1277
1300
  readonly verticalPos: VerticalPos;
1278
1301
  readonly anchor: MusicObject;
@@ -1280,12 +1303,15 @@ declare class LayoutObjectWrapper {
1280
1303
  readonly row: ObjScoreRow;
1281
1304
  readonly layoutGroup: LayoutGroup;
1282
1305
  private positionResolved;
1283
- constructor(musicObj: LayoutableMusicObject, layoutGroupId: LayoutGroupId, verticalPos: VerticalPos);
1306
+ constructor(musicObj: LayoutableMusicObject, line: ObjNotationLine, layoutGroupId: LayoutGroupId, verticalPos: VerticalPos);
1284
1307
  clearPositionResolved(): void;
1285
1308
  setPositionResolved(): void;
1286
1309
  isPositionResolved(): boolean;
1287
1310
  resolveClosestToStaffY(renderer: Renderer): number;
1288
1311
  getTextContent(): string | undefined;
1312
+ layout(renderer: Renderer): void;
1313
+ offset(dx: number, dy: number): void;
1314
+ getRect(): DivRect;
1289
1315
  }
1290
1316
  declare class LayoutGroup {
1291
1317
  readonly layoutGroupId: number;
@@ -1345,7 +1371,7 @@ declare abstract class MusicObject {
1345
1371
 
1346
1372
  declare class ObjArpeggio extends MusicObject {
1347
1373
  readonly col: ObjRhythmColumn;
1348
- readonly line: ObjStaff | ObjTab;
1374
+ readonly line: ObjNotationLine;
1349
1375
  readonly arpeggioDir: Arpeggio;
1350
1376
  private topArrowHeight;
1351
1377
  private bottomArrowHeight;
@@ -1353,7 +1379,7 @@ declare class ObjArpeggio extends MusicObject {
1353
1379
  private numCycles;
1354
1380
  private color;
1355
1381
  readonly mi: MArpeggio;
1356
- constructor(col: ObjRhythmColumn, line: ObjStaff | ObjTab, arpeggioDir: Arpeggio);
1382
+ constructor(col: ObjRhythmColumn, line: ObjNotationLine, arpeggioDir: Arpeggio);
1357
1383
  getMusicInterface(): MArpeggio;
1358
1384
  pick(x: number, y: number): MusicObject[];
1359
1385
  layout(renderer: Renderer): void;
@@ -1417,21 +1443,17 @@ declare class ObjSignature extends MusicObject {
1417
1443
  draw(renderer: Renderer): void;
1418
1444
  }
1419
1445
 
1420
- /** @public */
1421
1446
  type ScoreEventType = "enter" | "leave" | "click";
1422
- /** @public */
1423
1447
  declare abstract class ScoreEvent {
1424
1448
  readonly type: ScoreEventType;
1425
1449
  constructor(type: ScoreEventType);
1426
1450
  }
1427
- /** @public */
1428
1451
  declare class ScoreStaffPosEvent extends ScoreEvent {
1429
1452
  readonly renderer: MRenderer;
1430
1453
  readonly scoreRow: MScoreRow;
1431
1454
  readonly diatonicId: number;
1432
1455
  constructor(type: ScoreEventType, renderer: MRenderer, scoreRow: MScoreRow, diatonicId: number);
1433
1456
  }
1434
- /** @public */
1435
1457
  declare class ScoreObjectEvent extends ScoreEvent {
1436
1458
  readonly renderer: MRenderer;
1437
1459
  readonly objects: MusicInterface[];
@@ -1439,10 +1461,8 @@ declare class ScoreObjectEvent extends ScoreEvent {
1439
1461
  get topObject(): MusicInterface;
1440
1462
  findObject(fn: (obj: MusicInterface) => boolean): MusicInterface | undefined;
1441
1463
  }
1442
- /** @public */
1443
1464
  type ScoreEventListener = (event: ScoreEvent) => void;
1444
1465
 
1445
- /** @public */
1446
1466
  declare abstract class MusicInterface {
1447
1467
  readonly name: string;
1448
1468
  constructor(name: string);
@@ -1450,7 +1470,6 @@ declare abstract class MusicInterface {
1450
1470
  abstract getMusicObject(): MusicObject;
1451
1471
  getParent(): MusicInterface | undefined;
1452
1472
  }
1453
- /** @public */
1454
1473
  declare class MAccidental extends MusicInterface {
1455
1474
  private readonly obj;
1456
1475
  static readonly Name = "Accidental";
@@ -1460,7 +1479,6 @@ declare class MAccidental extends MusicInterface {
1460
1479
  getMusicObject(): ObjAccidental;
1461
1480
  getAccidental(): Accidental;
1462
1481
  }
1463
- /** @public */
1464
1482
  declare class MConnective extends MusicInterface {
1465
1483
  private readonly obj;
1466
1484
  static readonly Name = "Connective";
@@ -1469,7 +1487,6 @@ declare class MConnective extends MusicInterface {
1469
1487
  /** @internal */
1470
1488
  getMusicObject(): ObjConnective;
1471
1489
  }
1472
- /** @public */
1473
1490
  declare class MArpeggio extends MusicInterface {
1474
1491
  private readonly obj;
1475
1492
  static readonly Name = "Arpeggio";
@@ -1478,7 +1495,6 @@ declare class MArpeggio extends MusicInterface {
1478
1495
  /** @internal */
1479
1496
  getMusicObject(): ObjArpeggio;
1480
1497
  }
1481
- /** @public */
1482
1498
  declare class MBeamGroup extends MusicInterface {
1483
1499
  private readonly obj;
1484
1500
  static readonly Name = "BeamGroup";
@@ -1487,7 +1503,6 @@ declare class MBeamGroup extends MusicInterface {
1487
1503
  /** @internal */
1488
1504
  getMusicObject(): ObjBeamGroup;
1489
1505
  }
1490
- /** @public */
1491
1506
  declare class MStaffBeamGroup extends MusicInterface {
1492
1507
  private readonly obj;
1493
1508
  static readonly Name = "StaffBeamGroup";
@@ -1496,7 +1511,6 @@ declare class MStaffBeamGroup extends MusicInterface {
1496
1511
  /** @internal */
1497
1512
  getMusicObject(): ObjStaffBeamGroup;
1498
1513
  }
1499
- /** @public */
1500
1514
  declare class MDocument extends MusicInterface {
1501
1515
  private readonly obj;
1502
1516
  static readonly Name = "Document";
@@ -1509,7 +1523,6 @@ declare class MDocument extends MusicInterface {
1509
1523
  getArranger(): string | undefined;
1510
1524
  play(fn?: PlayStateChangeListener): MPlayer;
1511
1525
  }
1512
- /** @public */
1513
1526
  declare class MEnding extends MusicInterface {
1514
1527
  private readonly obj;
1515
1528
  static readonly Name = "Ending";
@@ -1520,7 +1533,6 @@ declare class MEnding extends MusicInterface {
1520
1533
  getPassages(): ReadonlyArray<number>;
1521
1534
  hasPassage(passage: number): boolean;
1522
1535
  }
1523
- /** @public */
1524
1536
  declare class MFermata extends MusicInterface {
1525
1537
  private readonly obj;
1526
1538
  static readonly Name = "Fermata";
@@ -1529,7 +1541,6 @@ declare class MFermata extends MusicInterface {
1529
1541
  /** @internal */
1530
1542
  getMusicObject(): ObjFermata;
1531
1543
  }
1532
- /** @public */
1533
1544
  declare class MHeader extends MusicInterface {
1534
1545
  private readonly obj;
1535
1546
  static readonly Name = "Header";
@@ -1541,7 +1552,6 @@ declare class MHeader extends MusicInterface {
1541
1552
  getComposer(): string | undefined;
1542
1553
  getArranger(): string | undefined;
1543
1554
  }
1544
- /** @public */
1545
1555
  declare class MImage extends MusicInterface {
1546
1556
  private readonly obj;
1547
1557
  static readonly Name = "Image";
@@ -1550,7 +1560,6 @@ declare class MImage extends MusicInterface {
1550
1560
  /** @internal */
1551
1561
  getMusicObject(): ObjImage;
1552
1562
  }
1553
- /** @public */
1554
1563
  declare class MMeasure extends MusicInterface {
1555
1564
  private readonly obj;
1556
1565
  static readonly Name = "Measure";
@@ -1561,7 +1570,6 @@ declare class MMeasure extends MusicInterface {
1561
1570
  getMeasureNumber(): number;
1562
1571
  getRhythmColumns(): ReadonlyArray<MRhythmColumn>;
1563
1572
  }
1564
- /** @public */
1565
1573
  declare class MBarLineRight extends MusicInterface {
1566
1574
  private readonly obj;
1567
1575
  static readonly Name = "BarLineRight";
@@ -1570,7 +1578,6 @@ declare class MBarLineRight extends MusicInterface {
1570
1578
  /** @internal */
1571
1579
  getMusicObject(): ObjBarLineRight;
1572
1580
  }
1573
- /** @public */
1574
1581
  declare class MBarLineLeft extends MusicInterface {
1575
1582
  private readonly obj;
1576
1583
  static readonly Name = "BarLineLeft";
@@ -1579,7 +1586,6 @@ declare class MBarLineLeft extends MusicInterface {
1579
1586
  /** @internal */
1580
1587
  getMusicObject(): ObjBarLineLeft;
1581
1588
  }
1582
- /** @public */
1583
1589
  declare class MStaffTabBarLine extends MusicInterface {
1584
1590
  private readonly obj;
1585
1591
  static readonly Name = "StaffTabBarLine";
@@ -1588,7 +1594,6 @@ declare class MStaffTabBarLine extends MusicInterface {
1588
1594
  /** @internal */
1589
1595
  getMusicObject(): ObjStaffTabBarLine;
1590
1596
  }
1591
- /** @public */
1592
1597
  declare class MNoteGroup extends MusicInterface {
1593
1598
  private readonly obj;
1594
1599
  static readonly Name = "NoteGroup";
@@ -1599,7 +1604,6 @@ declare class MNoteGroup extends MusicInterface {
1599
1604
  getNotes(): ReadonlyArray<Note>;
1600
1605
  getRhythmProps(): RhythmProps;
1601
1606
  }
1602
- /** @public */
1603
1607
  declare class MStaffNoteGroup extends MusicInterface {
1604
1608
  private readonly obj;
1605
1609
  static readonly Name = "StaffNoteGroup";
@@ -1609,7 +1613,6 @@ declare class MStaffNoteGroup extends MusicInterface {
1609
1613
  getMusicObject(): ObjStaffNoteGroup;
1610
1614
  getNoteGroup(): MNoteGroup;
1611
1615
  }
1612
- /** @public */
1613
1616
  declare class MTabNoteGroup extends MusicInterface {
1614
1617
  private readonly obj;
1615
1618
  static readonly Name = "TabNoteGroup";
@@ -1619,7 +1622,6 @@ declare class MTabNoteGroup extends MusicInterface {
1619
1622
  getMusicObject(): ObjTabNoteGroup;
1620
1623
  getNoteGroup(): MNoteGroup;
1621
1624
  }
1622
- /** @public */
1623
1625
  declare class MRest extends MusicInterface {
1624
1626
  private readonly obj;
1625
1627
  static readonly Name = "Rest";
@@ -1629,7 +1631,6 @@ declare class MRest extends MusicInterface {
1629
1631
  getMusicObject(): ObjRest;
1630
1632
  getRhythmProps(): RhythmProps;
1631
1633
  }
1632
- /** @public */
1633
1634
  declare class MStaffRest extends MusicInterface {
1634
1635
  private readonly obj;
1635
1636
  static readonly Name = "StaffRest";
@@ -1639,7 +1640,6 @@ declare class MStaffRest extends MusicInterface {
1639
1640
  getMusicObject(): ObjStaffRest;
1640
1641
  getRest(): MRest;
1641
1642
  }
1642
- /** @public */
1643
1643
  declare class MRhythmColumn extends MusicInterface {
1644
1644
  private readonly obj;
1645
1645
  static readonly Name = "RhythmColumn";
@@ -1649,7 +1649,6 @@ declare class MRhythmColumn extends MusicInterface {
1649
1649
  getMusicObject(): ObjRhythmColumn;
1650
1650
  getRhythmSymbol(voiceId: number): MNoteGroup | MRest | undefined;
1651
1651
  }
1652
- /** @public */
1653
1652
  declare class MScoreRow extends MusicInterface {
1654
1653
  private readonly obj;
1655
1654
  static readonly Name = "ScoreRow";
@@ -1659,7 +1658,6 @@ declare class MScoreRow extends MusicInterface {
1659
1658
  getMusicObject(): ObjScoreRow;
1660
1659
  getMeasures(): ReadonlyArray<MMeasure>;
1661
1660
  }
1662
- /** @public */
1663
1661
  declare class MStaff extends MusicInterface {
1664
1662
  private readonly obj;
1665
1663
  static readonly Name = "Staff";
@@ -1668,7 +1666,6 @@ declare class MStaff extends MusicInterface {
1668
1666
  /** @internal */
1669
1667
  getMusicObject(): ObjStaff;
1670
1668
  }
1671
- /** @public */
1672
1669
  declare class MTab extends MusicInterface {
1673
1670
  private readonly obj;
1674
1671
  static readonly Name = "Tab";
@@ -1677,7 +1674,6 @@ declare class MTab extends MusicInterface {
1677
1674
  /** @internal */
1678
1675
  getMusicObject(): ObjTab;
1679
1676
  }
1680
- /** @public */
1681
1677
  declare class MSignature extends MusicInterface {
1682
1678
  private readonly obj;
1683
1679
  static readonly Name = "Signature";
@@ -1686,7 +1682,6 @@ declare class MSignature extends MusicInterface {
1686
1682
  /** @internal */
1687
1683
  getMusicObject(): ObjSignature;
1688
1684
  }
1689
- /** @public */
1690
1685
  declare class MSpecialText extends MusicInterface {
1691
1686
  private readonly obj;
1692
1687
  static readonly Name = "SpecialText";
@@ -1695,7 +1690,6 @@ declare class MSpecialText extends MusicInterface {
1695
1690
  /** @internal */
1696
1691
  getMusicObject(): ObjSpecialText;
1697
1692
  }
1698
- /** @public */
1699
1693
  declare class MText extends MusicInterface {
1700
1694
  private readonly obj;
1701
1695
  static readonly Name = "Text";
@@ -1705,7 +1699,6 @@ declare class MText extends MusicInterface {
1705
1699
  getMusicObject(): ObjText;
1706
1700
  getText(): string;
1707
1701
  }
1708
- /** @public */
1709
1702
  declare class MExtensionLine extends MusicInterface {
1710
1703
  private readonly obj;
1711
1704
  static readonly Name = "ExtensionLine";
@@ -1714,7 +1707,6 @@ declare class MExtensionLine extends MusicInterface {
1714
1707
  /** @internal */
1715
1708
  getMusicObject(): ObjExtensionLine;
1716
1709
  }
1717
- /** @public */
1718
1710
  declare class MPlayer {
1719
1711
  private static currentlyPlaying;
1720
1712
  private readonly player;
@@ -1724,7 +1716,6 @@ declare class MPlayer {
1724
1716
  pause(): this;
1725
1717
  stop(): this;
1726
1718
  }
1727
- /** @public */
1728
1719
  declare class MRenderer {
1729
1720
  private readonly renderer;
1730
1721
  constructor();
@@ -1738,7 +1729,6 @@ declare class MRenderer {
1738
1729
  }): void;
1739
1730
  draw(): void;
1740
1731
  }
1741
- /** @public */
1742
1732
  declare class MPlaybackButtons {
1743
1733
  private playButton?;
1744
1734
  private stopButton?;
@@ -1766,4 +1756,4 @@ declare class MPlaybackButtons {
1766
1756
  private static addOnClickListener;
1767
1757
  }
1768
1758
 
1769
- export { type StringNumber as $, Annotation as A, MStaffRest as B, Connective as C, DivRect as D, MRhythmColumn as E, Fermata as F, MScoreRow as G, MStaff as H, MTab as I, MSignature as J, MSpecialText as K, Label as L, MDocument as M, type NoteOptions as N, MText as O, MExtensionLine as P, MPlayer as Q, type RestOptions as R, StaffPreset as S, TieType as T, MRenderer as U, MPlaybackButtons as V, Clef as W, type StaffConfig as X, type TabConfig as Y, type VoiceId as Z, getVoiceIds as _, type ScoreConfiguration as a, getStringNumbers as a0, Stem as a1, Arpeggio as a2, type ConnectiveSpan as a3, PlayState as a4, type PlayStateChangeListener as a5, Navigation as b, NoteAnchor as c, type ScoreEventType as d, ScoreEvent as e, ScoreStaffPosEvent as f, ScoreObjectEvent as g, type ScoreEventListener as h, MusicInterface as i, MAccidental as j, MConnective as k, MArpeggio as l, MBeamGroup as m, MStaffBeamGroup as n, MEnding as o, MFermata as p, MHeader as q, MImage as r, MMeasure as s, MBarLineRight as t, MBarLineLeft as u, MStaffTabBarLine as v, MNoteGroup as w, MStaffNoteGroup as x, MTabNoteGroup as y, MRest as z };
1759
+ export { type VoiceId as $, Annotation as A, MRest as B, Connective as C, DivRect as D, MStaffRest as E, Fermata as F, MRhythmColumn as G, MScoreRow as H, MStaff as I, MTab as J, MSignature as K, Label as L, MDocument as M, type NoteOptions as N, MSpecialText as O, MText as P, MExtensionLine as Q, type RestOptions as R, StaffPreset as S, TieType as T, MPlayer as U, VerticalPosition as V, MRenderer as W, MPlaybackButtons as X, Clef as Y, type StaffConfig as Z, type TabConfig as _, type ScoreConfiguration as a, getVoiceIds as a0, type StringNumber as a1, getStringNumbers as a2, Stem as a3, Arpeggio as a4, type ConnectiveSpan as a5, type StaffTabOrGroup as a6, PlayState as a7, type PlayStateChangeListener as a8, type StaffTabOrGroups as b, Navigation as c, NoteAnchor as d, type ScoreEventType as e, ScoreEvent as f, ScoreStaffPosEvent as g, ScoreObjectEvent as h, type ScoreEventListener as i, MusicInterface as j, MAccidental as k, MConnective as l, MArpeggio as m, MBeamGroup as n, MStaffBeamGroup as o, MEnding as p, MFermata as q, MHeader as r, MImage as s, MMeasure as t, MBarLineRight as u, MBarLineLeft as v, MStaffTabBarLine as w, MNoteGroup as x, MStaffNoteGroup as y, MTabNoteGroup as z };