@tspro/web-music-score 5.4.0 → 5.4.2

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 (46) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +1 -1
  3. package/README.md +4 -4
  4. package/dist/audio/index.d.mts +1 -1
  5. package/dist/audio/index.d.ts +1 -1
  6. package/dist/audio/index.js +1 -1
  7. package/dist/audio/index.mjs +3 -3
  8. package/dist/audio-cg/index.js +1 -1
  9. package/dist/audio-cg/index.mjs +3 -3
  10. package/dist/audio-synth/index.js +1 -1
  11. package/dist/audio-synth/index.mjs +3 -3
  12. package/dist/{chunk-MHDBTCVG.mjs → chunk-42IBAVOC.mjs} +3 -3
  13. package/dist/{chunk-QGMOI7AP.mjs → chunk-CVYTUTL6.mjs} +2 -2
  14. package/dist/{chunk-ZWUBO5EW.mjs → chunk-MMWSQGVR.mjs} +3 -3
  15. package/dist/{chunk-AUT4C6TY.mjs → chunk-ROBXPR34.mjs} +2 -2
  16. package/dist/core/index.js +2 -2
  17. package/dist/core/index.mjs +4 -4
  18. package/dist/{guitar-CarHGDAt.d.ts → guitar-CNOxM4ZK.d.ts} +1 -1
  19. package/dist/{guitar-DXlB-9vK.d.mts → guitar-DK18GZ6h.d.mts} +1 -1
  20. package/dist/iife/audio-cg.global.js +1 -1
  21. package/dist/iife/index.global.js +11 -11
  22. package/dist/{music-objects-ONIuVUgs.d.mts → music-objects-DqoO-Sfv.d.mts} +100 -45
  23. package/dist/{music-objects-3Esbz7ij.d.ts → music-objects-T8u8bnNP.d.ts} +100 -45
  24. package/dist/pieces/index.d.mts +3 -3
  25. package/dist/pieces/index.d.ts +3 -3
  26. package/dist/pieces/index.js +1 -1
  27. package/dist/pieces/index.mjs +2 -2
  28. package/dist/react-ui/index.d.mts +5 -5
  29. package/dist/react-ui/index.d.ts +5 -5
  30. package/dist/react-ui/index.js +1 -1
  31. package/dist/react-ui/index.mjs +2 -2
  32. package/dist/{scale-DulPFco_.d.ts → scale-CUYFBo-8.d.ts} +2 -2
  33. package/dist/{scale-C8gHC448.d.mts → scale-DWM4RQco.d.mts} +2 -2
  34. package/dist/score/index.d.mts +5 -5
  35. package/dist/score/index.d.ts +5 -5
  36. package/dist/score/index.js +743 -512
  37. package/dist/score/index.mjs +639 -409
  38. package/dist/{tempo-BlCGZuYg.d.mts → tempo-Cxu8vusu.d.mts} +1 -1
  39. package/dist/{tempo-BnUjm25M.d.ts → tempo-DwuZsv2T.d.ts} +1 -1
  40. package/dist/theory/index.d.mts +6 -6
  41. package/dist/theory/index.d.ts +6 -6
  42. package/dist/theory/index.js +1 -1
  43. package/dist/theory/index.mjs +3 -3
  44. package/package.json +2 -1
  45. /package/dist/{note-CJuq5aBy.d.ts → note-CJuq5aBy.d.mts} +0 -0
  46. /package/dist/{note-RVXvpfyV.d.mts → note-RVXvpfyV.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
- import { N as Note, A as Accidental } from './note-RVXvpfyV.mjs';
2
- import { R as RhythmProps, N as NoteLength, i as NoteLengthStr, l as TupletRatio, d as Tempo, K as KeySignature, b as TimeSignature } from './tempo-BlCGZuYg.mjs';
3
- import { AnchoredRect, Rect, Vec } from '@tspro/ts-utils-lib';
1
+ import { N as Note, A as Accidental } from './note-CJuq5aBy.mjs';
2
+ import { R as RhythmProps, N as NoteLength, i as NoteLengthStr, l as TupletRatio, d as Tempo, K as KeySignature, b as TimeSignature } from './tempo-Cxu8vusu.mjs';
3
+ import { AnchoredRect, UniMap, Rect, Vec } from '@tspro/ts-utils-lib';
4
4
 
5
5
  /** Staff preset values for score configuration. */
6
6
  declare enum StaffPreset {
@@ -776,12 +776,12 @@ declare class ObjRhythmColumn extends MusicObject {
776
776
  getVoiceSymbol(voiceId: VoiceId): RhythmSymbol | undefined;
777
777
  getLyricsObject(verse: VerseNumber, line: ObjNotationLine, vpos: VerticalPos): ObjLyrics | undefined;
778
778
  addLyricsObject(lyricsObj: ObjLyrics): void;
779
- getMinWidth(): number;
780
779
  updateNoteDisplacements(): void;
781
780
  isEmpty(): boolean;
782
781
  getPlayerNotes(): ScorePlayerNote[];
783
782
  requestLayout(): void;
784
783
  layout(ctx: RenderContext, accState: AccidentalState): void;
784
+ layoutReserveSpace(ctx: RenderContext): void;
785
785
  layoutDone(): void;
786
786
  updateRect(): void;
787
787
  offset(dx: number, dy: number): void;
@@ -805,6 +805,26 @@ declare class PlayerColumnProps {
805
805
  getFermataHoldTicks(): number;
806
806
  }
807
807
 
808
+ declare class ObjScoreRowGroup extends MusicObject {
809
+ readonly lines: readonly ObjNotationLine[];
810
+ private space;
811
+ readonly instrument: string;
812
+ private readonly instrText;
813
+ private braceRect;
814
+ readonly mi: MScoreRowGroup;
815
+ constructor(lines: readonly ObjNotationLine[]);
816
+ getMusicInterface(): MScoreRowGroup;
817
+ get row(): ObjScoreRow;
818
+ get hasBrace(): boolean;
819
+ get hasInstrument(): boolean;
820
+ pick(x: number, y: number): MusicObject[];
821
+ updateRect(): void;
822
+ layout(ctx: RenderContext): void;
823
+ layoutToNotationLines(): void;
824
+ offset(dx: number, dy: number): void;
825
+ draw(ctx: RenderContext): void;
826
+ }
827
+
808
828
  declare enum BarLineType {
809
829
  None = 0,
810
830
  Single = 1,
@@ -814,10 +834,10 @@ declare enum BarLineType {
814
834
  EndRepeat = 5,
815
835
  EndStartRepeat = 6
816
836
  }
817
- declare class ObjStaffTabBarLine extends MusicObject {
837
+ declare class ObjStaffBarLine extends MusicObject {
818
838
  readonly barLine: ObjBarLine;
819
839
  readonly line: ObjNotationLine;
820
- verticalLines: {
840
+ vlines: {
821
841
  left: number;
822
842
  width: number;
823
843
  }[];
@@ -826,17 +846,17 @@ declare class ObjStaffTabBarLine extends MusicObject {
826
846
  y: number;
827
847
  r: number;
828
848
  }[];
829
- readonly mi: MStaffTabBarLine;
849
+ readonly mi: MStaffBarLine;
830
850
  constructor(barLine: ObjBarLine, line: ObjNotationLine);
831
851
  getMusicInterface(): MusicInterface;
832
852
  pick(x: number, y: number): MusicObject[];
833
- setRect(r: AnchoredRect): void;
853
+ updateRect(): void;
834
854
  offset(dx: number, dy: number): void;
835
855
  }
836
856
  declare abstract class ObjBarLine extends MusicObject {
837
857
  readonly measure: ObjMeasure;
838
- protected staffTabObjects: ObjStaffTabBarLine[];
839
- protected staffTabObjectGroups: ObjStaffTabBarLine[][];
858
+ protected notationLineObjects: ObjStaffBarLine[];
859
+ protected notationLineObjectsByGrp: UniMap<ObjScoreRowGroup, ObjStaffBarLine[]>;
840
860
  protected barLineType: BarLineType;
841
861
  constructor(measure: ObjMeasure);
842
862
  abstract solveBarLineType(): BarLineType;
@@ -893,7 +913,6 @@ declare class ObjConnective extends MusicObject {
893
913
  declare class ObjMeasure extends MusicObject {
894
914
  readonly row: ObjScoreRow;
895
915
  private readonly options;
896
- static readonly MinFlexContentWidth = 10;
897
916
  private prevMeasure;
898
917
  private nextMeasure;
899
918
  private keySignature;
@@ -909,12 +928,9 @@ declare class ObjMeasure extends MusicObject {
909
928
  private barLineRight;
910
929
  private connectives;
911
930
  private beamGroups;
912
- private tabStringNotesWidth;
913
931
  private measureId;
932
+ private regions;
914
933
  private needLayout;
915
- private leftSolidAreaWidth;
916
- private minColumnsAreaWidth;
917
- private rightSolidAreaWidth;
918
934
  private voiceSymbols;
919
935
  private lastAddedRhythmColumn?;
920
936
  private lastAddedRhythmSymbol?;
@@ -998,10 +1014,10 @@ declare class ObjMeasure extends MusicObject {
998
1014
  getMeasureTicks(): number;
999
1015
  getConsumedTicks(voiceId?: VoiceId): number;
1000
1016
  getColumnsContentRect(): AnchoredRect;
1001
- getLeftSolidAreaWidth(): number;
1002
- getMinColumnsAreaWidth(): number;
1003
- getRightSolidAreaWidth(): number;
1004
- getSolidAreaWidth(): number;
1017
+ getLeftSolidWidth(): number;
1018
+ getMinColumnsWidth(): number;
1019
+ getRightSolidWidth(): number;
1020
+ getTotalSolidWidth(): number;
1005
1021
  getMinWidth(): number;
1006
1022
  getStaffLineLeft(): number;
1007
1023
  getStaffLineRight(): number;
@@ -1033,17 +1049,29 @@ declare class ObjMeasure extends MusicObject {
1033
1049
  draw(ctx: RenderContext): void;
1034
1050
  }
1035
1051
 
1052
+ declare class ScoreRowRegions {
1053
+ instrWidth: number;
1054
+ staffWidth: number;
1055
+ resetWidths(): void;
1056
+ addRowInstrWidth(w: number): void;
1057
+ addRowstaffWidth(w: number): void;
1058
+ get instrLeft(): number;
1059
+ get instrRight(): number;
1060
+ get staffLeft(): number;
1061
+ get staffRight(): number;
1062
+ get left(): number;
1063
+ get right(): number;
1064
+ get width(): number;
1065
+ }
1036
1066
  declare class ObjScoreRow extends MusicObject {
1037
1067
  readonly doc: ObjDocument;
1038
1068
  private readonly prevRow;
1039
1069
  private readonly scoreConfig;
1040
1070
  private nextRow?;
1041
- private minWidth;
1042
1071
  private readonly notationLines;
1043
- private readonly instrumentLineGroups;
1072
+ private readonly rowGroups;
1044
1073
  private readonly staves;
1045
1074
  private readonly tabs;
1046
- private readonly instrumentNames;
1047
1075
  private readonly measures;
1048
1076
  private needLayout;
1049
1077
  readonly mi: MScoreRow;
@@ -1051,8 +1079,9 @@ declare class ObjScoreRow extends MusicObject {
1051
1079
  getMusicInterface(): MScoreRow;
1052
1080
  private createNotationLines;
1053
1081
  getNotationLines(): ReadonlyArray<ObjNotationLine>;
1054
- getInstrumentLineGroups(): ReadonlyArray<ReadonlyArray<ObjNotationLine>>;
1082
+ getRowGroups(): ReadonlyArray<ObjScoreRowGroup>;
1055
1083
  findMatchingLine(line: ObjNotationLine): ObjNotationLine | undefined;
1084
+ get regions(): ScoreRowRegions;
1056
1085
  getStaves(): ReadonlyArray<ObjStaff>;
1057
1086
  getTabs(): ReadonlyArray<ObjTab>;
1058
1087
  get hasStaff(): boolean;
@@ -1073,16 +1102,13 @@ declare class ObjScoreRow extends MusicObject {
1073
1102
  getNextRow(): ObjScoreRow | undefined;
1074
1103
  getFirstMeasure(): ObjMeasure | undefined;
1075
1104
  getLastMeasure(): ObjMeasure | undefined;
1076
- getMinWidth(): number;
1077
1105
  solveAutoStemDir(symbols: ReadonlyArray<RhythmSymbol>): Stem.Up | Stem.Down;
1078
- getInstrumentNameWidth(ctx: RenderContext): number;
1079
1106
  requestLayout(): void;
1080
1107
  layout(ctx: RenderContext): void;
1081
- layoutWidth(ctx: RenderContext, left: number, right: number): void;
1108
+ layoutStretch(ctx: RenderContext): void;
1082
1109
  updateRect(): void;
1083
1110
  alignStemsToBeams(): void;
1084
1111
  layoutSetNotationLines(ctx: RenderContext): void;
1085
- layoutPadding(ctx: RenderContext): void;
1086
1112
  layoutDone(): void;
1087
1113
  offset(dx: number, dy: number): void;
1088
1114
  draw(ctx: RenderContext): void;
@@ -1091,6 +1117,7 @@ declare class ObjScoreRow extends MusicObject {
1091
1117
  declare class ObjDocument extends MusicObject {
1092
1118
  private needLayout;
1093
1119
  private ctx?;
1120
+ readonly regions: ScoreRowRegions;
1094
1121
  private readonly rows;
1095
1122
  private readonly measures;
1096
1123
  private measuresPerRow;
@@ -1127,15 +1154,10 @@ declare class ObjDocument extends MusicObject {
1127
1154
  private forEachMeasure;
1128
1155
  resetMeasures(): void;
1129
1156
  updateCursorRect(cursorRect?: Rect): void;
1130
- getInstrumentGroupSize(ctx: RenderContext): {
1131
- nameLeft: number;
1132
- nameRight: number;
1133
- braceLeft: number;
1134
- braceRight: number;
1135
- };
1136
1157
  requestLayout(): void;
1137
1158
  requestFullLayout(): void;
1138
1159
  layout(): void;
1160
+ offset(dx: number, dy: number): void;
1139
1161
  drawContent(): void;
1140
1162
  pickStaffPosAt(x: number, y: number): {
1141
1163
  scoreRow: ObjScoreRow;
@@ -1229,11 +1251,13 @@ declare class RenderContext {
1229
1251
  strokeRect(x: number, y: number, w: number, h: number): RenderContext;
1230
1252
  fillText(text: string, x: number, y: number): RenderContext;
1231
1253
  getTextWidth(text: string, font: string): number;
1232
- arc(x: number, y: number, radius: number, startRadians: number, endRadians: number): void;
1233
- fillCircle(x: number, y: number, radius: number): void;
1234
- strokeLine(startX: number, startY: number, endX: number, endY: number): void;
1235
- strokePartialLine(startX: number, startY: number, endX: number, endY: number, startT: number, endT: number): void;
1236
- drawBrace(rect: AnchoredRect, side: "left" | "right"): void;
1254
+ arc(x: number, y: number, radius: number, startRadians: number, endRadians: number): RenderContext;
1255
+ fillCircle(x: number, y: number, radius: number): RenderContext;
1256
+ strokeLine(startX: number, startY: number, endX: number, endY: number): RenderContext;
1257
+ strokePartialLine(startX: number, startY: number, endX: number, endY: number, startT: number, endT: number): RenderContext;
1258
+ /** @deprecated - Use {@link drawBracket} instead. */
1259
+ drawBrace(rect: AnchoredRect, side: "left" | "right"): RenderContext;
1260
+ drawBracket(rect: AnchoredRect, bracket: "(" | ")" | "[" | "]" | "{" | "}" | "<" | ">"): RenderContext;
1237
1261
  }
1238
1262
 
1239
1263
  declare class ObjEnding extends MusicObject {
@@ -1386,13 +1410,14 @@ declare class LayoutObjectWrapper {
1386
1410
  getTextContent(): string | undefined;
1387
1411
  layout(ctx: RenderContext): void;
1388
1412
  offset(dx: number, dy: number): void;
1413
+ setAnchorY(y: number): void;
1389
1414
  getRect(): AnchoredRect;
1390
1415
  }
1391
1416
  declare class LayoutGroup {
1392
1417
  readonly layoutGroupId: number;
1393
1418
  private readonly layoutObject;
1394
1419
  readonly rowAlign: boolean;
1395
- readonly widensColumn: boolean;
1420
+ readonly reserveSpace: boolean;
1396
1421
  readonly padding: number;
1397
1422
  constructor(layoutGroupId: number);
1398
1423
  getLayoutObjects(verticalPos: VerticalPos): Readonly<LayoutObjectWrapper[]>;
@@ -1422,7 +1447,21 @@ declare abstract class MusicObject {
1422
1447
  private needRectUpdate;
1423
1448
  requestRectUpdate(): void;
1424
1449
  updateRect(): void;
1450
+ forceRectUpdate(): void;
1425
1451
  getRect(): AnchoredRect;
1452
+ abstract offset(dx: number, dy: number): void;
1453
+ offsetX(dx: number): void;
1454
+ offsetY(dy: number): void;
1455
+ setLeft(x: number): void;
1456
+ setRight(x: number): void;
1457
+ setTop(y: number): void;
1458
+ setBottom(y: number): void;
1459
+ setAnchor(x: number, y: number): void;
1460
+ setAnchorX(x: number): void;
1461
+ setAnchorY(y: number): void;
1462
+ setCenter(x: number, y: number): void;
1463
+ setCenterX(x: number): void;
1464
+ setCenterY(y: number): void;
1426
1465
  /**
1427
1466
  * Most objects are simple rects in shape.
1428
1467
  * Some objects might be more complex consisting of multiple rects.
@@ -1465,6 +1504,7 @@ declare class ObjArpeggio extends MusicObject {
1465
1504
  }
1466
1505
 
1467
1506
  declare class ObjHeader extends MusicObject {
1507
+ readonly doc: ObjDocument;
1468
1508
  readonly title?: string | undefined;
1469
1509
  readonly composer?: string | undefined;
1470
1510
  readonly arranger?: string | undefined;
@@ -1475,7 +1515,7 @@ declare class ObjHeader extends MusicObject {
1475
1515
  constructor(doc: ObjDocument, title?: string | undefined, composer?: string | undefined, arranger?: string | undefined);
1476
1516
  getMusicInterface(): MHeader;
1477
1517
  pick(x: number, y: number): MusicObject[];
1478
- layoutWidth(ctx: RenderContext, left: number, right: number): void;
1518
+ layout(ctx: RenderContext): void;
1479
1519
  offset(dx: number, dy: number): void;
1480
1520
  draw(ctx: RenderContext): void;
1481
1521
  }
@@ -1975,14 +2015,14 @@ declare class MBarLineLeft extends MusicInterface {
1975
2015
  getMusicObject(): ObjBarLineLeft;
1976
2016
  }
1977
2017
  /** Bar line object for certain staff or tab. */
1978
- declare class MStaffTabBarLine extends MusicInterface {
2018
+ declare class MStaffBarLine extends MusicInterface {
1979
2019
  private readonly obj;
1980
2020
  /** Object name. */
1981
- static readonly Name = "StaffTabBarLine";
2021
+ static readonly Name = "StaffBarLine";
1982
2022
  /** @internal */
1983
- constructor(obj: ObjStaffTabBarLine);
2023
+ constructor(obj: ObjStaffBarLine);
1984
2024
  /** @internal */
1985
- getMusicObject(): ObjStaffTabBarLine;
2025
+ getMusicObject(): ObjStaffBarLine;
1986
2026
  /**
1987
2027
  * Get parent bar line object.
1988
2028
  * @returns - Parent bar line object.
@@ -2192,6 +2232,21 @@ declare class MScoreRow extends MusicInterface {
2192
2232
  */
2193
2233
  getNotationLines(): ReadonlyArray<MStaff | MTab>;
2194
2234
  }
2235
+ /** Score row group object. */
2236
+ declare class MScoreRowGroup extends MusicInterface {
2237
+ private readonly obj;
2238
+ /** Object name. */
2239
+ static readonly Name = "ScoreRowGroup";
2240
+ /** @internal */
2241
+ constructor(obj: ObjScoreRowGroup);
2242
+ /** @internal */
2243
+ getMusicObject(): ObjScoreRowGroup;
2244
+ /**
2245
+ * Get instrument name.
2246
+ * @returns - instrument name.
2247
+ */
2248
+ getInstrument(): string;
2249
+ }
2195
2250
  /** Staff notatio line object. */
2196
2251
  declare class MStaff extends MusicInterface {
2197
2252
  private readonly obj;
@@ -2348,4 +2403,4 @@ declare class MExtensionLine extends MusicInterface {
2348
2403
  getMusicObject(): ObjExtensionLine;
2349
2404
  }
2350
2405
 
2351
- export { MTabSignature as $, type AnnotationText as A, MFermata as B, Connective as C, MHeader as D, MImage as E, Fermata as F, MMeasure as G, MBarLineRight as H, MBarLineLeft as I, MStaffTabBarLine as J, MNoteGroup as K, type LyricsOptions as L, MDocument as M, type NoteOptions as N, MStaffNoteGroup as O, MTabNoteGroup as P, MRest as Q, type RestOptions as R, StaffPreset as S, type TupletOptions as T, MStaffRest as U, type VoiceId as V, MRhythmColumn as W, MScoreRow as X, MStaff as Y, MTab as Z, MStaffSignature as _, type ScoreConfiguration as a, MTabRhythm as a0, MSpecialText as a1, MText as a2, MLyrics as a3, MExtensionLine as a4, Clef as a5, type BaseConfig as a6, type StaffConfig as a7, type TabConfig as a8, getVoiceIds as a9, isVoiceId as aa, validateVoiceId as ab, type StringNumber as ac, getStringNumbers as ad, isStringNumber as ae, validateStringNumber as af, getVerseNumbers as ag, isVerseNumber as ah, validateVerseNumber as ai, Stem as aj, Arpeggio as ak, type StaffTabOrGroup as al, LyricsAlign as am, LyricsHyphen as an, DynamicsAnnotation as ao, TempoAnnotation as ap, PlayState as aq, type PlayStateChangeListener as ar, type MeasureOptions as b, type VerseNumber as c, type StaffTabOrGroups as d, Navigation as e, Annotation as f, Label as g, TieType as h, NoteAnchor as i, VerticalPosition as j, type ScoreEventType as k, ScoreEvent as l, ScoreStaffPosEvent as m, ScoreObjectEvent as n, type ScoreEventListener as o, MPlayer as p, MRenderContext as q, MRenderer as r, MPlaybackButtons as s, MusicInterface as t, MAccidental as u, MConnective as v, MArpeggio as w, MBeamGroup as x, MStaffBeamGroup as y, MEnding as z };
2406
+ export { MStaffSignature as $, type AnnotationText as A, MFermata as B, Connective as C, MHeader as D, MImage as E, Fermata as F, MMeasure as G, MBarLineRight as H, MBarLineLeft as I, MStaffBarLine as J, MNoteGroup as K, type LyricsOptions as L, MDocument as M, type NoteOptions as N, MStaffNoteGroup as O, MTabNoteGroup as P, MRest as Q, type RestOptions as R, StaffPreset as S, type TupletOptions as T, MStaffRest as U, type VoiceId as V, MRhythmColumn as W, MScoreRow as X, MScoreRowGroup as Y, MStaff as Z, MTab as _, type ScoreConfiguration as a, MTabSignature as a0, MTabRhythm as a1, MSpecialText as a2, MText as a3, MLyrics as a4, MExtensionLine as a5, Clef as a6, type BaseConfig as a7, type StaffConfig as a8, type TabConfig as a9, getVoiceIds as aa, isVoiceId as ab, validateVoiceId as ac, type StringNumber as ad, getStringNumbers as ae, isStringNumber as af, validateStringNumber as ag, getVerseNumbers as ah, isVerseNumber as ai, validateVerseNumber as aj, Stem as ak, Arpeggio as al, type StaffTabOrGroup as am, LyricsAlign as an, LyricsHyphen as ao, DynamicsAnnotation as ap, TempoAnnotation as aq, PlayState as ar, type PlayStateChangeListener as as, type MeasureOptions as b, type VerseNumber as c, type StaffTabOrGroups as d, Navigation as e, Annotation as f, Label as g, TieType as h, NoteAnchor as i, VerticalPosition as j, type ScoreEventType as k, ScoreEvent as l, ScoreStaffPosEvent as m, ScoreObjectEvent as n, type ScoreEventListener as o, MPlayer as p, MRenderContext as q, MRenderer as r, MPlaybackButtons as s, MusicInterface as t, MAccidental as u, MConnective as v, MArpeggio as w, MBeamGroup as x, MStaffBeamGroup as y, MEnding as z };
@@ -1,6 +1,6 @@
1
- import { N as Note, A as Accidental } from './note-CJuq5aBy.js';
2
- import { R as RhythmProps, N as NoteLength, i as NoteLengthStr, l as TupletRatio, d as Tempo, K as KeySignature, b as TimeSignature } from './tempo-BnUjm25M.js';
3
- import { AnchoredRect, Rect, Vec } from '@tspro/ts-utils-lib';
1
+ import { N as Note, A as Accidental } from './note-RVXvpfyV.js';
2
+ import { R as RhythmProps, N as NoteLength, i as NoteLengthStr, l as TupletRatio, d as Tempo, K as KeySignature, b as TimeSignature } from './tempo-DwuZsv2T.js';
3
+ import { AnchoredRect, UniMap, Rect, Vec } from '@tspro/ts-utils-lib';
4
4
 
5
5
  /** Staff preset values for score configuration. */
6
6
  declare enum StaffPreset {
@@ -776,12 +776,12 @@ declare class ObjRhythmColumn extends MusicObject {
776
776
  getVoiceSymbol(voiceId: VoiceId): RhythmSymbol | undefined;
777
777
  getLyricsObject(verse: VerseNumber, line: ObjNotationLine, vpos: VerticalPos): ObjLyrics | undefined;
778
778
  addLyricsObject(lyricsObj: ObjLyrics): void;
779
- getMinWidth(): number;
780
779
  updateNoteDisplacements(): void;
781
780
  isEmpty(): boolean;
782
781
  getPlayerNotes(): ScorePlayerNote[];
783
782
  requestLayout(): void;
784
783
  layout(ctx: RenderContext, accState: AccidentalState): void;
784
+ layoutReserveSpace(ctx: RenderContext): void;
785
785
  layoutDone(): void;
786
786
  updateRect(): void;
787
787
  offset(dx: number, dy: number): void;
@@ -805,6 +805,26 @@ declare class PlayerColumnProps {
805
805
  getFermataHoldTicks(): number;
806
806
  }
807
807
 
808
+ declare class ObjScoreRowGroup extends MusicObject {
809
+ readonly lines: readonly ObjNotationLine[];
810
+ private space;
811
+ readonly instrument: string;
812
+ private readonly instrText;
813
+ private braceRect;
814
+ readonly mi: MScoreRowGroup;
815
+ constructor(lines: readonly ObjNotationLine[]);
816
+ getMusicInterface(): MScoreRowGroup;
817
+ get row(): ObjScoreRow;
818
+ get hasBrace(): boolean;
819
+ get hasInstrument(): boolean;
820
+ pick(x: number, y: number): MusicObject[];
821
+ updateRect(): void;
822
+ layout(ctx: RenderContext): void;
823
+ layoutToNotationLines(): void;
824
+ offset(dx: number, dy: number): void;
825
+ draw(ctx: RenderContext): void;
826
+ }
827
+
808
828
  declare enum BarLineType {
809
829
  None = 0,
810
830
  Single = 1,
@@ -814,10 +834,10 @@ declare enum BarLineType {
814
834
  EndRepeat = 5,
815
835
  EndStartRepeat = 6
816
836
  }
817
- declare class ObjStaffTabBarLine extends MusicObject {
837
+ declare class ObjStaffBarLine extends MusicObject {
818
838
  readonly barLine: ObjBarLine;
819
839
  readonly line: ObjNotationLine;
820
- verticalLines: {
840
+ vlines: {
821
841
  left: number;
822
842
  width: number;
823
843
  }[];
@@ -826,17 +846,17 @@ declare class ObjStaffTabBarLine extends MusicObject {
826
846
  y: number;
827
847
  r: number;
828
848
  }[];
829
- readonly mi: MStaffTabBarLine;
849
+ readonly mi: MStaffBarLine;
830
850
  constructor(barLine: ObjBarLine, line: ObjNotationLine);
831
851
  getMusicInterface(): MusicInterface;
832
852
  pick(x: number, y: number): MusicObject[];
833
- setRect(r: AnchoredRect): void;
853
+ updateRect(): void;
834
854
  offset(dx: number, dy: number): void;
835
855
  }
836
856
  declare abstract class ObjBarLine extends MusicObject {
837
857
  readonly measure: ObjMeasure;
838
- protected staffTabObjects: ObjStaffTabBarLine[];
839
- protected staffTabObjectGroups: ObjStaffTabBarLine[][];
858
+ protected notationLineObjects: ObjStaffBarLine[];
859
+ protected notationLineObjectsByGrp: UniMap<ObjScoreRowGroup, ObjStaffBarLine[]>;
840
860
  protected barLineType: BarLineType;
841
861
  constructor(measure: ObjMeasure);
842
862
  abstract solveBarLineType(): BarLineType;
@@ -893,7 +913,6 @@ declare class ObjConnective extends MusicObject {
893
913
  declare class ObjMeasure extends MusicObject {
894
914
  readonly row: ObjScoreRow;
895
915
  private readonly options;
896
- static readonly MinFlexContentWidth = 10;
897
916
  private prevMeasure;
898
917
  private nextMeasure;
899
918
  private keySignature;
@@ -909,12 +928,9 @@ declare class ObjMeasure extends MusicObject {
909
928
  private barLineRight;
910
929
  private connectives;
911
930
  private beamGroups;
912
- private tabStringNotesWidth;
913
931
  private measureId;
932
+ private regions;
914
933
  private needLayout;
915
- private leftSolidAreaWidth;
916
- private minColumnsAreaWidth;
917
- private rightSolidAreaWidth;
918
934
  private voiceSymbols;
919
935
  private lastAddedRhythmColumn?;
920
936
  private lastAddedRhythmSymbol?;
@@ -998,10 +1014,10 @@ declare class ObjMeasure extends MusicObject {
998
1014
  getMeasureTicks(): number;
999
1015
  getConsumedTicks(voiceId?: VoiceId): number;
1000
1016
  getColumnsContentRect(): AnchoredRect;
1001
- getLeftSolidAreaWidth(): number;
1002
- getMinColumnsAreaWidth(): number;
1003
- getRightSolidAreaWidth(): number;
1004
- getSolidAreaWidth(): number;
1017
+ getLeftSolidWidth(): number;
1018
+ getMinColumnsWidth(): number;
1019
+ getRightSolidWidth(): number;
1020
+ getTotalSolidWidth(): number;
1005
1021
  getMinWidth(): number;
1006
1022
  getStaffLineLeft(): number;
1007
1023
  getStaffLineRight(): number;
@@ -1033,17 +1049,29 @@ declare class ObjMeasure extends MusicObject {
1033
1049
  draw(ctx: RenderContext): void;
1034
1050
  }
1035
1051
 
1052
+ declare class ScoreRowRegions {
1053
+ instrWidth: number;
1054
+ staffWidth: number;
1055
+ resetWidths(): void;
1056
+ addRowInstrWidth(w: number): void;
1057
+ addRowstaffWidth(w: number): void;
1058
+ get instrLeft(): number;
1059
+ get instrRight(): number;
1060
+ get staffLeft(): number;
1061
+ get staffRight(): number;
1062
+ get left(): number;
1063
+ get right(): number;
1064
+ get width(): number;
1065
+ }
1036
1066
  declare class ObjScoreRow extends MusicObject {
1037
1067
  readonly doc: ObjDocument;
1038
1068
  private readonly prevRow;
1039
1069
  private readonly scoreConfig;
1040
1070
  private nextRow?;
1041
- private minWidth;
1042
1071
  private readonly notationLines;
1043
- private readonly instrumentLineGroups;
1072
+ private readonly rowGroups;
1044
1073
  private readonly staves;
1045
1074
  private readonly tabs;
1046
- private readonly instrumentNames;
1047
1075
  private readonly measures;
1048
1076
  private needLayout;
1049
1077
  readonly mi: MScoreRow;
@@ -1051,8 +1079,9 @@ declare class ObjScoreRow extends MusicObject {
1051
1079
  getMusicInterface(): MScoreRow;
1052
1080
  private createNotationLines;
1053
1081
  getNotationLines(): ReadonlyArray<ObjNotationLine>;
1054
- getInstrumentLineGroups(): ReadonlyArray<ReadonlyArray<ObjNotationLine>>;
1082
+ getRowGroups(): ReadonlyArray<ObjScoreRowGroup>;
1055
1083
  findMatchingLine(line: ObjNotationLine): ObjNotationLine | undefined;
1084
+ get regions(): ScoreRowRegions;
1056
1085
  getStaves(): ReadonlyArray<ObjStaff>;
1057
1086
  getTabs(): ReadonlyArray<ObjTab>;
1058
1087
  get hasStaff(): boolean;
@@ -1073,16 +1102,13 @@ declare class ObjScoreRow extends MusicObject {
1073
1102
  getNextRow(): ObjScoreRow | undefined;
1074
1103
  getFirstMeasure(): ObjMeasure | undefined;
1075
1104
  getLastMeasure(): ObjMeasure | undefined;
1076
- getMinWidth(): number;
1077
1105
  solveAutoStemDir(symbols: ReadonlyArray<RhythmSymbol>): Stem.Up | Stem.Down;
1078
- getInstrumentNameWidth(ctx: RenderContext): number;
1079
1106
  requestLayout(): void;
1080
1107
  layout(ctx: RenderContext): void;
1081
- layoutWidth(ctx: RenderContext, left: number, right: number): void;
1108
+ layoutStretch(ctx: RenderContext): void;
1082
1109
  updateRect(): void;
1083
1110
  alignStemsToBeams(): void;
1084
1111
  layoutSetNotationLines(ctx: RenderContext): void;
1085
- layoutPadding(ctx: RenderContext): void;
1086
1112
  layoutDone(): void;
1087
1113
  offset(dx: number, dy: number): void;
1088
1114
  draw(ctx: RenderContext): void;
@@ -1091,6 +1117,7 @@ declare class ObjScoreRow extends MusicObject {
1091
1117
  declare class ObjDocument extends MusicObject {
1092
1118
  private needLayout;
1093
1119
  private ctx?;
1120
+ readonly regions: ScoreRowRegions;
1094
1121
  private readonly rows;
1095
1122
  private readonly measures;
1096
1123
  private measuresPerRow;
@@ -1127,15 +1154,10 @@ declare class ObjDocument extends MusicObject {
1127
1154
  private forEachMeasure;
1128
1155
  resetMeasures(): void;
1129
1156
  updateCursorRect(cursorRect?: Rect): void;
1130
- getInstrumentGroupSize(ctx: RenderContext): {
1131
- nameLeft: number;
1132
- nameRight: number;
1133
- braceLeft: number;
1134
- braceRight: number;
1135
- };
1136
1157
  requestLayout(): void;
1137
1158
  requestFullLayout(): void;
1138
1159
  layout(): void;
1160
+ offset(dx: number, dy: number): void;
1139
1161
  drawContent(): void;
1140
1162
  pickStaffPosAt(x: number, y: number): {
1141
1163
  scoreRow: ObjScoreRow;
@@ -1229,11 +1251,13 @@ declare class RenderContext {
1229
1251
  strokeRect(x: number, y: number, w: number, h: number): RenderContext;
1230
1252
  fillText(text: string, x: number, y: number): RenderContext;
1231
1253
  getTextWidth(text: string, font: string): number;
1232
- arc(x: number, y: number, radius: number, startRadians: number, endRadians: number): void;
1233
- fillCircle(x: number, y: number, radius: number): void;
1234
- strokeLine(startX: number, startY: number, endX: number, endY: number): void;
1235
- strokePartialLine(startX: number, startY: number, endX: number, endY: number, startT: number, endT: number): void;
1236
- drawBrace(rect: AnchoredRect, side: "left" | "right"): void;
1254
+ arc(x: number, y: number, radius: number, startRadians: number, endRadians: number): RenderContext;
1255
+ fillCircle(x: number, y: number, radius: number): RenderContext;
1256
+ strokeLine(startX: number, startY: number, endX: number, endY: number): RenderContext;
1257
+ strokePartialLine(startX: number, startY: number, endX: number, endY: number, startT: number, endT: number): RenderContext;
1258
+ /** @deprecated - Use {@link drawBracket} instead. */
1259
+ drawBrace(rect: AnchoredRect, side: "left" | "right"): RenderContext;
1260
+ drawBracket(rect: AnchoredRect, bracket: "(" | ")" | "[" | "]" | "{" | "}" | "<" | ">"): RenderContext;
1237
1261
  }
1238
1262
 
1239
1263
  declare class ObjEnding extends MusicObject {
@@ -1386,13 +1410,14 @@ declare class LayoutObjectWrapper {
1386
1410
  getTextContent(): string | undefined;
1387
1411
  layout(ctx: RenderContext): void;
1388
1412
  offset(dx: number, dy: number): void;
1413
+ setAnchorY(y: number): void;
1389
1414
  getRect(): AnchoredRect;
1390
1415
  }
1391
1416
  declare class LayoutGroup {
1392
1417
  readonly layoutGroupId: number;
1393
1418
  private readonly layoutObject;
1394
1419
  readonly rowAlign: boolean;
1395
- readonly widensColumn: boolean;
1420
+ readonly reserveSpace: boolean;
1396
1421
  readonly padding: number;
1397
1422
  constructor(layoutGroupId: number);
1398
1423
  getLayoutObjects(verticalPos: VerticalPos): Readonly<LayoutObjectWrapper[]>;
@@ -1422,7 +1447,21 @@ declare abstract class MusicObject {
1422
1447
  private needRectUpdate;
1423
1448
  requestRectUpdate(): void;
1424
1449
  updateRect(): void;
1450
+ forceRectUpdate(): void;
1425
1451
  getRect(): AnchoredRect;
1452
+ abstract offset(dx: number, dy: number): void;
1453
+ offsetX(dx: number): void;
1454
+ offsetY(dy: number): void;
1455
+ setLeft(x: number): void;
1456
+ setRight(x: number): void;
1457
+ setTop(y: number): void;
1458
+ setBottom(y: number): void;
1459
+ setAnchor(x: number, y: number): void;
1460
+ setAnchorX(x: number): void;
1461
+ setAnchorY(y: number): void;
1462
+ setCenter(x: number, y: number): void;
1463
+ setCenterX(x: number): void;
1464
+ setCenterY(y: number): void;
1426
1465
  /**
1427
1466
  * Most objects are simple rects in shape.
1428
1467
  * Some objects might be more complex consisting of multiple rects.
@@ -1465,6 +1504,7 @@ declare class ObjArpeggio extends MusicObject {
1465
1504
  }
1466
1505
 
1467
1506
  declare class ObjHeader extends MusicObject {
1507
+ readonly doc: ObjDocument;
1468
1508
  readonly title?: string | undefined;
1469
1509
  readonly composer?: string | undefined;
1470
1510
  readonly arranger?: string | undefined;
@@ -1475,7 +1515,7 @@ declare class ObjHeader extends MusicObject {
1475
1515
  constructor(doc: ObjDocument, title?: string | undefined, composer?: string | undefined, arranger?: string | undefined);
1476
1516
  getMusicInterface(): MHeader;
1477
1517
  pick(x: number, y: number): MusicObject[];
1478
- layoutWidth(ctx: RenderContext, left: number, right: number): void;
1518
+ layout(ctx: RenderContext): void;
1479
1519
  offset(dx: number, dy: number): void;
1480
1520
  draw(ctx: RenderContext): void;
1481
1521
  }
@@ -1975,14 +2015,14 @@ declare class MBarLineLeft extends MusicInterface {
1975
2015
  getMusicObject(): ObjBarLineLeft;
1976
2016
  }
1977
2017
  /** Bar line object for certain staff or tab. */
1978
- declare class MStaffTabBarLine extends MusicInterface {
2018
+ declare class MStaffBarLine extends MusicInterface {
1979
2019
  private readonly obj;
1980
2020
  /** Object name. */
1981
- static readonly Name = "StaffTabBarLine";
2021
+ static readonly Name = "StaffBarLine";
1982
2022
  /** @internal */
1983
- constructor(obj: ObjStaffTabBarLine);
2023
+ constructor(obj: ObjStaffBarLine);
1984
2024
  /** @internal */
1985
- getMusicObject(): ObjStaffTabBarLine;
2025
+ getMusicObject(): ObjStaffBarLine;
1986
2026
  /**
1987
2027
  * Get parent bar line object.
1988
2028
  * @returns - Parent bar line object.
@@ -2192,6 +2232,21 @@ declare class MScoreRow extends MusicInterface {
2192
2232
  */
2193
2233
  getNotationLines(): ReadonlyArray<MStaff | MTab>;
2194
2234
  }
2235
+ /** Score row group object. */
2236
+ declare class MScoreRowGroup extends MusicInterface {
2237
+ private readonly obj;
2238
+ /** Object name. */
2239
+ static readonly Name = "ScoreRowGroup";
2240
+ /** @internal */
2241
+ constructor(obj: ObjScoreRowGroup);
2242
+ /** @internal */
2243
+ getMusicObject(): ObjScoreRowGroup;
2244
+ /**
2245
+ * Get instrument name.
2246
+ * @returns - instrument name.
2247
+ */
2248
+ getInstrument(): string;
2249
+ }
2195
2250
  /** Staff notatio line object. */
2196
2251
  declare class MStaff extends MusicInterface {
2197
2252
  private readonly obj;
@@ -2348,4 +2403,4 @@ declare class MExtensionLine extends MusicInterface {
2348
2403
  getMusicObject(): ObjExtensionLine;
2349
2404
  }
2350
2405
 
2351
- export { MTabSignature as $, type AnnotationText as A, MFermata as B, Connective as C, MHeader as D, MImage as E, Fermata as F, MMeasure as G, MBarLineRight as H, MBarLineLeft as I, MStaffTabBarLine as J, MNoteGroup as K, type LyricsOptions as L, MDocument as M, type NoteOptions as N, MStaffNoteGroup as O, MTabNoteGroup as P, MRest as Q, type RestOptions as R, StaffPreset as S, type TupletOptions as T, MStaffRest as U, type VoiceId as V, MRhythmColumn as W, MScoreRow as X, MStaff as Y, MTab as Z, MStaffSignature as _, type ScoreConfiguration as a, MTabRhythm as a0, MSpecialText as a1, MText as a2, MLyrics as a3, MExtensionLine as a4, Clef as a5, type BaseConfig as a6, type StaffConfig as a7, type TabConfig as a8, getVoiceIds as a9, isVoiceId as aa, validateVoiceId as ab, type StringNumber as ac, getStringNumbers as ad, isStringNumber as ae, validateStringNumber as af, getVerseNumbers as ag, isVerseNumber as ah, validateVerseNumber as ai, Stem as aj, Arpeggio as ak, type StaffTabOrGroup as al, LyricsAlign as am, LyricsHyphen as an, DynamicsAnnotation as ao, TempoAnnotation as ap, PlayState as aq, type PlayStateChangeListener as ar, type MeasureOptions as b, type VerseNumber as c, type StaffTabOrGroups as d, Navigation as e, Annotation as f, Label as g, TieType as h, NoteAnchor as i, VerticalPosition as j, type ScoreEventType as k, ScoreEvent as l, ScoreStaffPosEvent as m, ScoreObjectEvent as n, type ScoreEventListener as o, MPlayer as p, MRenderContext as q, MRenderer as r, MPlaybackButtons as s, MusicInterface as t, MAccidental as u, MConnective as v, MArpeggio as w, MBeamGroup as x, MStaffBeamGroup as y, MEnding as z };
2406
+ export { MStaffSignature as $, type AnnotationText as A, MFermata as B, Connective as C, MHeader as D, MImage as E, Fermata as F, MMeasure as G, MBarLineRight as H, MBarLineLeft as I, MStaffBarLine as J, MNoteGroup as K, type LyricsOptions as L, MDocument as M, type NoteOptions as N, MStaffNoteGroup as O, MTabNoteGroup as P, MRest as Q, type RestOptions as R, StaffPreset as S, type TupletOptions as T, MStaffRest as U, type VoiceId as V, MRhythmColumn as W, MScoreRow as X, MScoreRowGroup as Y, MStaff as Z, MTab as _, type ScoreConfiguration as a, MTabSignature as a0, MTabRhythm as a1, MSpecialText as a2, MText as a3, MLyrics as a4, MExtensionLine as a5, Clef as a6, type BaseConfig as a7, type StaffConfig as a8, type TabConfig as a9, getVoiceIds as aa, isVoiceId as ab, validateVoiceId as ac, type StringNumber as ad, getStringNumbers as ae, isStringNumber as af, validateStringNumber as ag, getVerseNumbers as ah, isVerseNumber as ai, validateVerseNumber as aj, Stem as ak, Arpeggio as al, type StaffTabOrGroup as am, LyricsAlign as an, LyricsHyphen as ao, DynamicsAnnotation as ap, TempoAnnotation as aq, PlayState as ar, type PlayStateChangeListener as as, type MeasureOptions as b, type VerseNumber as c, type StaffTabOrGroups as d, Navigation as e, Annotation as f, Label as g, TieType as h, NoteAnchor as i, VerticalPosition as j, type ScoreEventType as k, ScoreEvent as l, ScoreStaffPosEvent as m, ScoreObjectEvent as n, type ScoreEventListener as o, MPlayer as p, MRenderContext as q, MRenderer as r, MPlaybackButtons as s, MusicInterface as t, MAccidental as u, MConnective as v, MArpeggio as w, MBeamGroup as x, MStaffBeamGroup as y, MEnding as z };
@@ -1,6 +1,6 @@
1
- import { M as MDocument } from '../music-objects-ONIuVUgs.mjs';
2
- import '../note-RVXvpfyV.mjs';
3
- import '../tempo-BlCGZuYg.mjs';
1
+ import { M as MDocument } from '../music-objects-DqoO-Sfv.mjs';
2
+ import '../note-CJuq5aBy.mjs';
3
+ import '../tempo-Cxu8vusu.mjs';
4
4
  import '@tspro/ts-utils-lib';
5
5
 
6
6
  /**