web-music-score 6.0.0-pre.2 → 6.0.0-pre.4

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 (35) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/audio/index.d.ts +1 -1
  3. package/dist/audio/index.js +12 -2
  4. package/dist/audio/index.mjs +4 -4
  5. package/dist/audio-cg/index.js +1 -1
  6. package/dist/audio-cg/index.mjs +4 -4
  7. package/dist/audio-synth/index.js +1 -1
  8. package/dist/audio-synth/index.mjs +4 -4
  9. package/dist/{chunk-3L3RBNBV.mjs → chunk-6BEFVAAS.mjs} +3 -3
  10. package/dist/{chunk-7PNMM2PM.mjs → chunk-DVKR62RS.mjs} +14 -4
  11. package/dist/{chunk-5W6ROWBC.mjs → chunk-GNCSH24V.mjs} +2 -2
  12. package/dist/{chunk-OXLTN43T.mjs → chunk-GNFDJFUO.mjs} +2 -2
  13. package/dist/{chunk-5P4O5YX2.mjs → chunk-KFBULED3.mjs} +3 -3
  14. package/dist/{chunk-GNFWJCFN.mjs → chunk-UAVXEHYM.mjs} +4 -4
  15. package/dist/core/index.js +1830 -3
  16. package/dist/core/index.mjs +90 -4
  17. package/dist/iife/audio-cg.js +1 -1
  18. package/dist/iife/index.js +92 -12
  19. package/dist/{music-objects-CiIS8yPn.d.ts → music-objects-ChAdqdR8.d.ts} +74 -4
  20. package/dist/{note-CJuq5aBy.d.ts → note-RVXvpfyV.d.ts} +1 -1
  21. package/dist/pieces/index.d.ts +3 -3
  22. package/dist/pieces/index.js +1 -1
  23. package/dist/pieces/index.mjs +2 -2
  24. package/dist/react-ui/index.d.ts +6 -3
  25. package/dist/react-ui/index.js +43 -10
  26. package/dist/react-ui/index.mjs +44 -11
  27. package/dist/{scale-DxGqFxlv.d.ts → scale-B1M10_fu.d.ts} +2 -2
  28. package/dist/score/index.d.ts +6 -54
  29. package/dist/score/index.js +709 -597
  30. package/dist/score/index.mjs +700 -599
  31. package/dist/{tempo-pCAa6qgo.d.ts → tempo-D-JF-8b_.d.ts} +1 -1
  32. package/dist/theory/index.d.ts +5 -5
  33. package/dist/theory/index.js +12 -2
  34. package/dist/theory/index.mjs +4 -4
  35. package/package.json +5 -4
@@ -1,4 +1,4 @@
1
- /* WebMusicScore v6.0.0-pre.2 | (c) 2023-2025 Stefan Brockmann | MIT License | Includes: Tone.js (MIT License), Color Name to Code (MIT License) */
1
+ /* WebMusicScore v6.0.0-pre.4 | (c) 2023-2025 Stefan Brockmann | MIT License | Includes: Tone.js (MIT License), Color Name to Code (MIT License) */
2
2
  "use strict";
3
3
  var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
@@ -132,6 +132,7 @@ __export(score_exports, {
132
132
  MusicInterface: () => MusicInterface5,
133
133
  Navigation: () => Navigation,
134
134
  NoteAnchor: () => NoteAnchor,
135
+ Paint: () => Paint,
135
136
  PlayState: () => PlayState,
136
137
  ScoreEvent: () => ScoreEvent,
137
138
  ScoreObjectEvent: () => ScoreObjectEvent,
@@ -141,13 +142,13 @@ __export(score_exports, {
141
142
  TempoAnnotation: () => TempoAnnotation,
142
143
  TieType: () => TieType,
143
144
  VerticalPosition: () => VerticalPosition,
145
+ colorKey: () => colorKey,
144
146
  getStringNumbers: () => getStringNumbers,
145
147
  getVerseNumbers: () => getVerseNumbers,
146
148
  getVoiceIds: () => getVoiceIds,
147
149
  isStringNumber: () => isStringNumber,
148
150
  isVerseNumber: () => isVerseNumber,
149
151
  isVoiceId: () => isVoiceId,
150
- setColor: () => setColor,
151
152
  validateStringNumber: () => validateStringNumber,
152
153
  validateVerseNumber: () => validateVerseNumber,
153
154
  validateVoiceId: () => validateVoiceId
@@ -1573,6 +1574,7 @@ __export2(dom_exports, {
1573
1574
  getPadding: () => getPadding,
1574
1575
  getWidth: () => getWidth,
1575
1576
  hasClass: () => hasClass,
1577
+ injectCss: () => injectCss,
1576
1578
  removeClass: () => removeClass,
1577
1579
  removeFromParent: () => removeFromParent,
1578
1580
  setHeight: () => setHeight,
@@ -1758,6 +1760,15 @@ function getCanvasTextWidth(text, font) {
1758
1760
  ctx.font = font;
1759
1761
  return ctx.measureText(text).width;
1760
1762
  }
1763
+ function injectCss(styleId, styleCss) {
1764
+ if (styleId === "" || styleCss === "") return;
1765
+ if (typeof document === "undefined") return;
1766
+ if (document.getElementById(styleId)) return;
1767
+ const style = document.createElement("style");
1768
+ style.id = styleId;
1769
+ style.textContent = styleCss;
1770
+ document.head.appendChild(style);
1771
+ }
1761
1772
  var math_exports = {};
1762
1773
  __export2(math_exports, {
1763
1774
  avg: () => avg,
@@ -2718,15 +2729,15 @@ var IndexArray = class _IndexArray extends BaseContainer {
2718
2729
  }
2719
2730
  return result;
2720
2731
  }
2721
- equals(other, eq2) {
2732
+ equals(other, eq) {
2722
2733
  if (this.size !== other.size) return false;
2723
- eq2 != null ? eq2 : eq2 = (a, b) => a === b;
2734
+ eq != null ? eq : eq = (a, b) => a === b;
2724
2735
  const posLen = Math.max(this.posLen, other.posLen);
2725
2736
  for (let i = 0; i < posLen; ++i) {
2726
2737
  const hasA = this.hasPos[i];
2727
2738
  const hasB = other.hasPos[i];
2728
2739
  if (hasA !== hasB) return false;
2729
- if (hasA && !eq2(this.posVal[i], other.posVal[i])) return false;
2740
+ if (hasA && !eq(this.posVal[i], other.posVal[i])) return false;
2730
2741
  }
2731
2742
  return true;
2732
2743
  }
@@ -3617,99 +3628,6 @@ function asMulti(base) {
3617
3628
  return new MultiContainer(base);
3618
3629
  }
3619
3630
 
3620
- // src/score/engine/settings.ts
3621
- var DebugSettings = {
3622
- DrawDebugRects: false,
3623
- DisableBeams: false
3624
- };
3625
- var DocumentSettings = {
3626
- DocumentScale: 1,
3627
- MinStaffWidth: 75,
3628
- MinColumnsWidth: 10,
3629
- ColumnWidthScale: 1.7,
3630
- PostMeasureBreakWidth: 10,
3631
- NoteDotSpace: 0.5,
3632
- NoteAccSpace: 0.5,
3633
- NoteHeadWidth: 2,
3634
- NoteHeadHeight: 1.3,
3635
- DiamondNoteHeadSize: 1.8,
3636
- DotSize: 0.8,
3637
- StemHeight: 7,
3638
- // One octave
3639
- FlagWidth: 1.5,
3640
- FlagHeight: 4,
3641
- FlagSeparation: 2,
3642
- BeamSeparation: 1.25,
3643
- BeamAngleFactor: 0.5,
3644
- BeamThickness: 4,
3645
- RestDotSpace: 0.5,
3646
- LedgerLineWidth: 3.6,
3647
- StubTieLength: 5,
3648
- StaffHeight: 8,
3649
- TabHeight: 20
3650
- };
3651
- var DocumentColor = {
3652
- HilightStaffPos: "#55cc55",
3653
- HilightObject: "#55cc55",
3654
- PlayCursor: "#44aa44",
3655
- Background: "white",
3656
- Header_Title: "black",
3657
- Header_Composer: "black",
3658
- Header_Arranger: "black",
3659
- RowGroup_Instrument: "black",
3660
- RowGroup_Frame: "black",
3661
- Staff_Frame: "black",
3662
- Staff_Note: "black",
3663
- Staff_Rest: "black",
3664
- Staff_Connective: "black",
3665
- Staff_Signature_Clef: "black",
3666
- Staff_Signature_Key: "black",
3667
- Staff_Signature_Time: "black",
3668
- Staff_Signature_Tempo: "black",
3669
- Staff_Signature_MeasureNum: "black",
3670
- Staff_Element_Fermata: "black",
3671
- Staff_Element_Annotation: "black",
3672
- Staff_Element_Navigation: "black",
3673
- Staff_Element_Label: "black",
3674
- Tab_Frame: "black",
3675
- Tab_Note: "black",
3676
- Tab_Rest: "black",
3677
- Tab_Connective: "black",
3678
- Tab_Tuning: "black",
3679
- //Tab_Signature_Clef: "black",
3680
- //Tab_Signature_Key: "black",
3681
- Tab_Signature_Time: "black",
3682
- Tab_Signature_Tempo: "black",
3683
- Tab_Signature_MeasureNum: "black",
3684
- Tab_Element_Fermata: "black",
3685
- Tab_Element_Annotation: "black",
3686
- Tab_Element_Navigation: "black",
3687
- Tab_Element_Label: "black"
3688
- };
3689
-
3690
- // src/score/pub/color.ts
3691
- function eq(a, b) {
3692
- return a.toLocaleLowerCase() === b.toLocaleLowerCase();
3693
- }
3694
- function setColor(color, ...colorAttrs) {
3695
- const setBacground = colorAttrs.length === 1 && eq(colorAttrs[0], "background");
3696
- const setAllColors = colorAttrs.length === 0;
3697
- if (eq(color, ""))
3698
- color = setBacground ? "white" : "black";
3699
- let noMatch = true;
3700
- for (const key in DocumentColor) {
3701
- const keyAttrs = key.split("_");
3702
- const isColorMatch = colorAttrs.length > 0 && colorAttrs.every((a) => keyAttrs.some((b) => eq(a, b)));
3703
- const isBgColorMatch = keyAttrs.length === 1 && eq(keyAttrs[0], "background");
3704
- if (setAllColors && !isBgColorMatch || isColorMatch) {
3705
- DocumentColor[key] = color;
3706
- noMatch = false;
3707
- }
3708
- }
3709
- if (noMatch)
3710
- console.error(`Color attrs ${utils_exports.Str.stringify(colorAttrs)} did not match any color.`);
3711
- }
3712
-
3713
3631
  // src/core/error.ts
3714
3632
  var MusicErrorType = /* @__PURE__ */ ((MusicErrorType21) => {
3715
3633
  MusicErrorType21[MusicErrorType21["Unknown"] = 0] = "Unknown";
@@ -4016,6 +3934,38 @@ var import_theory12 = require("web-music-score/theory");
4016
3934
  // src/score/engine/obj-staff-and-tab.ts
4017
3935
  var import_theory11 = require("web-music-score/theory");
4018
3936
 
3937
+ // src/score/engine/settings.ts
3938
+ var DebugSettings = {
3939
+ DrawDebugRects: false,
3940
+ DisableBeams: false
3941
+ };
3942
+ var DocumentSettings = {
3943
+ DocumentScale: 1,
3944
+ MinStaffWidth: 75,
3945
+ MinColumnsWidth: 10,
3946
+ ColumnWidthScale: 1.7,
3947
+ PostMeasureBreakWidth: 10,
3948
+ NoteDotSpace: 0.5,
3949
+ NoteAccSpace: 0.5,
3950
+ NoteHeadWidth: 2,
3951
+ NoteHeadHeight: 1.3,
3952
+ DiamondNoteHeadSize: 1.8,
3953
+ DotSize: 0.8,
3954
+ StemHeight: 7,
3955
+ // One octave
3956
+ FlagWidth: 1.5,
3957
+ FlagHeight: 4,
3958
+ FlagSeparation: 2,
3959
+ BeamSeparation: 1.25,
3960
+ BeamAngleFactor: 0.5,
3961
+ BeamThickness: 4,
3962
+ RestDotSpace: 0.5,
3963
+ LedgerLineWidth: 3.6,
3964
+ StubTieLength: 5,
3965
+ StaffHeight: 8,
3966
+ TabHeight: 20
3967
+ };
3968
+
4019
3969
  // src/theory/rhythm.ts
4020
3970
  var import_core = require("web-music-score/core");
4021
3971
  var MaxTupletRatioValue = 12;
@@ -4261,397 +4211,11 @@ __publicField(_RhythmProps, "NoteSymbolMap", new IndexArray([[1, "\u{1D15D}"], [
4261
4211
  __publicField(_RhythmProps, "cache", new UniMap());
4262
4212
  var RhythmProps = _RhythmProps;
4263
4213
 
4264
- // node_modules/color-name-to-code/dist/color-name.enum.js
4265
- var ColorName;
4266
- (function(ColorName2) {
4267
- ColorName2["AliceBlue"] = "aliceblue";
4268
- ColorName2["AntiqueWhite"] = "antiquewhite";
4269
- ColorName2["Aqua"] = "aqua";
4270
- ColorName2["Aquamarine"] = "aquamarine";
4271
- ColorName2["Azure"] = "azure";
4272
- ColorName2["Beige"] = "beige";
4273
- ColorName2["Bisque"] = "bisque";
4274
- ColorName2["Black"] = "black";
4275
- ColorName2["BlanchedAlmond"] = "blanchedalmond";
4276
- ColorName2["Blue"] = "blue";
4277
- ColorName2["BlueViolet"] = "blueviolet";
4278
- ColorName2["Brown"] = "brown";
4279
- ColorName2["BurlyWood"] = "burlywood";
4280
- ColorName2["CadetBlue"] = "cadetblue";
4281
- ColorName2["Chartreuse"] = "chartreuse";
4282
- ColorName2["Chocolate"] = "chocolate";
4283
- ColorName2["Coral"] = "coral";
4284
- ColorName2["CornflowerBlue"] = "cornflowerblue";
4285
- ColorName2["CornSilk"] = "cornsilk";
4286
- ColorName2["Crimson"] = "crimson";
4287
- ColorName2["Cyan"] = "cyan";
4288
- ColorName2["DarkBlue"] = "darkblue";
4289
- ColorName2["DarkCyan"] = "darkcyan";
4290
- ColorName2["DarkGoldenRod"] = "darkgoldenrod";
4291
- ColorName2["DarkGray"] = "darkgray";
4292
- ColorName2["DarkGreen"] = "darkgreen";
4293
- ColorName2["DarkGrey"] = "darkgrey";
4294
- ColorName2["DarkKhaki"] = "darkkhaki";
4295
- ColorName2["DarkMagenta"] = "darkmagenta";
4296
- ColorName2["DarkOliveGreen"] = "darkolivegreen";
4297
- ColorName2["DarkOrange"] = "darkorange";
4298
- ColorName2["DarkOrchid"] = "darkorchid";
4299
- ColorName2["DarkRed"] = "darkred";
4300
- ColorName2["DarkSalmon"] = "darksalmon";
4301
- ColorName2["DarkSeaGreen"] = "darkseagreen";
4302
- ColorName2["DarkSlateBlue"] = "darkslateblue";
4303
- ColorName2["DarkSlateGray"] = "darkslategray";
4304
- ColorName2["DarkSlateGrey"] = "darkslategrey";
4305
- ColorName2["DarkTurquoise"] = "darkturquoise";
4306
- ColorName2["DarkViolet"] = "darkviolet";
4307
- ColorName2["DeepPink"] = "deeppink";
4308
- ColorName2["DeepSkyBlue"] = "deepskyblue";
4309
- ColorName2["DimGray"] = "dimgray";
4310
- ColorName2["DimGrey"] = "dimgrey";
4311
- ColorName2["DodgerBlue"] = "dodgerblue";
4312
- ColorName2["FireBrick"] = "firebrick";
4313
- ColorName2["FloralWhite"] = "floralwhite";
4314
- ColorName2["ForestGreen"] = "forestgreen";
4315
- ColorName2["Fuchsia"] = "fuchsia";
4316
- ColorName2["Gainsboro"] = "gainsboro";
4317
- ColorName2["GhostWhite"] = "ghostwhite";
4318
- ColorName2["Gold"] = "gold";
4319
- ColorName2["GoldenRod"] = "goldenrod";
4320
- ColorName2["Gray"] = "gray";
4321
- ColorName2["Green"] = "green";
4322
- ColorName2["GreenYellow"] = "greenyellow";
4323
- ColorName2["Grey"] = "grey";
4324
- ColorName2["Honeydew"] = "honeydew";
4325
- ColorName2["HotPink"] = "hotpink";
4326
- ColorName2["IndianRed"] = "indianred";
4327
- ColorName2["Indigo"] = "indigo";
4328
- ColorName2["Ivory"] = "ivory";
4329
- ColorName2["Khaki"] = "khaki";
4330
- ColorName2["Lavender"] = "lavender";
4331
- ColorName2["LavenderBlush"] = "lavenderblush";
4332
- ColorName2["LawnGreen"] = "lawngreen";
4333
- ColorName2["LemonChiffon"] = "lemonchiffon";
4334
- ColorName2["LightBlue"] = "lightblue";
4335
- ColorName2["LightCoral"] = "lightcoral";
4336
- ColorName2["LightCyan"] = "lightcyan";
4337
- ColorName2["LightGoldenRodYellow"] = "lightgoldenrodyellow";
4338
- ColorName2["LightGray"] = "lightgray";
4339
- ColorName2["LightGreen"] = "lightgreen";
4340
- ColorName2["LightGrey"] = "lightgrey";
4341
- ColorName2["LightPink"] = "lightpink";
4342
- ColorName2["LightSalmon"] = "lightsalmon";
4343
- ColorName2["LightSeaGreen"] = "lightseagreen";
4344
- ColorName2["LightSkyBlue"] = "lightskyblue";
4345
- ColorName2["LightSlateGray"] = "lightslategray";
4346
- ColorName2["LightSlateGrey"] = "lightslategrey";
4347
- ColorName2["LightSteelBlue"] = "lightsteelblue";
4348
- ColorName2["LightYellow"] = "lightyellow";
4349
- ColorName2["Lime"] = "lime";
4350
- ColorName2["LimeGreen"] = "limegreen";
4351
- ColorName2["Linen"] = "linen";
4352
- ColorName2["Magenta"] = "magenta";
4353
- ColorName2["Maroon"] = "maroon";
4354
- ColorName2["MediumAquamarine"] = "mediumaquamarine";
4355
- ColorName2["MediumBlue"] = "mediumblue";
4356
- ColorName2["MediumOrchid"] = "mediumorchid";
4357
- ColorName2["MediumPurple"] = "mediumpurple";
4358
- ColorName2["MediumSeaGreen"] = "mediumseagreen";
4359
- ColorName2["MediumSlateBlue"] = "mediumslateblue";
4360
- ColorName2["MediumSpringGreen"] = "mediumspringgreen";
4361
- ColorName2["MediumTurquoise"] = "mediumturquoise";
4362
- ColorName2["MediumVioletRed"] = "mediumvioletred";
4363
- ColorName2["MidnightBlue"] = "midnightblue";
4364
- ColorName2["MintCream"] = "mintcream";
4365
- ColorName2["MistyRose"] = "mistyrose";
4366
- ColorName2["Moccasin"] = "moccasin";
4367
- ColorName2["NavajoWhite"] = "navajowhite";
4368
- ColorName2["Navy"] = "navy";
4369
- ColorName2["OldLace"] = "oldlace";
4370
- ColorName2["Olive"] = "olive";
4371
- ColorName2["OliveDrab"] = "olivedrab";
4372
- ColorName2["Orange"] = "orange";
4373
- ColorName2["OrangeRed"] = "orangered";
4374
- ColorName2["Orchid"] = "orchid";
4375
- ColorName2["PaleGoldenRod"] = "palegoldenrod";
4376
- ColorName2["PaleGreen"] = "palegreen";
4377
- ColorName2["PaleTurquoise"] = "paleturquoise";
4378
- ColorName2["PaleVioletRed"] = "palevioletred";
4379
- ColorName2["PapayaWhip"] = "papayawhip";
4380
- ColorName2["PeachPuff"] = "peachpuff";
4381
- ColorName2["Peru"] = "peru";
4382
- ColorName2["Pink"] = "pink";
4383
- ColorName2["Plum"] = "plum";
4384
- ColorName2["PowderBlue"] = "powderblue";
4385
- ColorName2["Purple"] = "purple";
4386
- ColorName2["RebeccaPurple"] = "rebeccapurple";
4387
- ColorName2["Red"] = "red";
4388
- ColorName2["RosyBrown"] = "rosybrown";
4389
- ColorName2["RoyalBlue"] = "royalblue";
4390
- ColorName2["SaddleBrown"] = "saddlebrown";
4391
- ColorName2["Salmon"] = "salmon";
4392
- ColorName2["SandyBrown"] = "sandybrown";
4393
- ColorName2["SeaGreen"] = "seagreen";
4394
- ColorName2["SeaShell"] = "seashell";
4395
- ColorName2["Sienna"] = "sienna";
4396
- ColorName2["Silver"] = "silver";
4397
- ColorName2["SkyBlue"] = "skyblue";
4398
- ColorName2["SlateBlue"] = "slateblue";
4399
- ColorName2["SlateGray"] = "slategray";
4400
- ColorName2["SlateGrey"] = "slategrey";
4401
- ColorName2["Snow"] = "snow";
4402
- ColorName2["SpringGreen"] = "springgreen";
4403
- ColorName2["SteelBlue"] = "steelblue";
4404
- ColorName2["Tan"] = "tan";
4405
- ColorName2["Teal"] = "teal";
4406
- ColorName2["Thistle"] = "thistle";
4407
- ColorName2["Tomato"] = "tomato";
4408
- ColorName2["Turquoise"] = "turquoise";
4409
- ColorName2["Violet"] = "violet";
4410
- ColorName2["Wheat"] = "wheat";
4411
- ColorName2["White"] = "white";
4412
- ColorName2["WhiteSmoke"] = "whitesmoke";
4413
- ColorName2["Yellow"] = "yellow";
4414
- ColorName2["YellowGreen"] = "yellowgreen";
4415
- })(ColorName = ColorName || (ColorName = {}));
4214
+ // src/score/engine/assets/G-clef.png
4215
+ var G_clef_default = "data:image/png;base64,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TTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NDA3ODVjMzYtNDAxZC00YTZlLTkxODctMDQ1NTI4MmM0ZGY2IgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhiZTJkYzc1LTVlYjQtNDk0Yy1iNWRlLWQ2MzZkNzZhNjI2YiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmU3YWE0MWNhLTNiYjMtNGU5Yi05NDQxLTllNTNmZTJiZjM5ZiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IldpbmRvd3MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg2NDA4NjA5MzE2NDM4IgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzOjA2OjEwVDE3OjUwOjA5KzAzOjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMzowNjoxMFQxNzo1MDowOSswMzowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MzY2YmY0LWVkZDMtNDE5OC05NjJhLWU5ZTM5MTBlNThiZSIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0wOC0yMlQwMjo1NTozNiIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NjVlMTM3OS0wZDlmLTQ5ODItYWQ3MC05MzhjOWMzOWE0ZjMiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMDktMTFUMTY6MzU6MDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTBmYmEwYTMtOTI5Yi00NTRlLThjNGMtOGVkOGM4YWJhZGRjIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA2LTEwVDE3OjUwOjA5Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Ppn4NIQAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnBgoOMgm5WlWBAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAACHtJREFUeNrtnXuQVmMcxz+77cauTWUpbGSVu2w3BpnUEBq3chkmBjGayG1GBuNWLtUgw5SJkBkjl4QKg1wyQyarK0lRSlstU20bWam9+OM8O3P6vc8553nOe97tnO18Z84f57zP7XvOc/ndnueFfQx5e6neUmAI0B3oDPwD/AJ8Dvzcml5we+Al4D+gyeOaB1S0BrLHAut9iLqv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";
4416
4216
 
4417
- // node_modules/color-name-to-code/dist/color-code-format.enum.js
4418
- var ColorCodeFormat;
4419
- (function(ColorCodeFormat2) {
4420
- ColorCodeFormat2["Hex"] = "hex";
4421
- ColorCodeFormat2["RGB"] = "rgb";
4422
- ColorCodeFormat2["Array"] = "array";
4423
- })(ColorCodeFormat = ColorCodeFormat || (ColorCodeFormat = {}));
4424
-
4425
- // node_modules/color-name/index.js
4426
- var colors = {
4427
- aliceblue: [240, 248, 255],
4428
- antiquewhite: [250, 235, 215],
4429
- aqua: [0, 255, 255],
4430
- aquamarine: [127, 255, 212],
4431
- azure: [240, 255, 255],
4432
- beige: [245, 245, 220],
4433
- bisque: [255, 228, 196],
4434
- black: [0, 0, 0],
4435
- blanchedalmond: [255, 235, 205],
4436
- blue: [0, 0, 255],
4437
- blueviolet: [138, 43, 226],
4438
- brown: [165, 42, 42],
4439
- burlywood: [222, 184, 135],
4440
- cadetblue: [95, 158, 160],
4441
- chartreuse: [127, 255, 0],
4442
- chocolate: [210, 105, 30],
4443
- coral: [255, 127, 80],
4444
- cornflowerblue: [100, 149, 237],
4445
- cornsilk: [255, 248, 220],
4446
- crimson: [220, 20, 60],
4447
- cyan: [0, 255, 255],
4448
- darkblue: [0, 0, 139],
4449
- darkcyan: [0, 139, 139],
4450
- darkgoldenrod: [184, 134, 11],
4451
- darkgray: [169, 169, 169],
4452
- darkgreen: [0, 100, 0],
4453
- darkgrey: [169, 169, 169],
4454
- darkkhaki: [189, 183, 107],
4455
- darkmagenta: [139, 0, 139],
4456
- darkolivegreen: [85, 107, 47],
4457
- darkorange: [255, 140, 0],
4458
- darkorchid: [153, 50, 204],
4459
- darkred: [139, 0, 0],
4460
- darksalmon: [233, 150, 122],
4461
- darkseagreen: [143, 188, 143],
4462
- darkslateblue: [72, 61, 139],
4463
- darkslategray: [47, 79, 79],
4464
- darkslategrey: [47, 79, 79],
4465
- darkturquoise: [0, 206, 209],
4466
- darkviolet: [148, 0, 211],
4467
- deeppink: [255, 20, 147],
4468
- deepskyblue: [0, 191, 255],
4469
- dimgray: [105, 105, 105],
4470
- dimgrey: [105, 105, 105],
4471
- dodgerblue: [30, 144, 255],
4472
- firebrick: [178, 34, 34],
4473
- floralwhite: [255, 250, 240],
4474
- forestgreen: [34, 139, 34],
4475
- fuchsia: [255, 0, 255],
4476
- gainsboro: [220, 220, 220],
4477
- ghostwhite: [248, 248, 255],
4478
- gold: [255, 215, 0],
4479
- goldenrod: [218, 165, 32],
4480
- gray: [128, 128, 128],
4481
- green: [0, 128, 0],
4482
- greenyellow: [173, 255, 47],
4483
- grey: [128, 128, 128],
4484
- honeydew: [240, 255, 240],
4485
- hotpink: [255, 105, 180],
4486
- indianred: [205, 92, 92],
4487
- indigo: [75, 0, 130],
4488
- ivory: [255, 255, 240],
4489
- khaki: [240, 230, 140],
4490
- lavender: [230, 230, 250],
4491
- lavenderblush: [255, 240, 245],
4492
- lawngreen: [124, 252, 0],
4493
- lemonchiffon: [255, 250, 205],
4494
- lightblue: [173, 216, 230],
4495
- lightcoral: [240, 128, 128],
4496
- lightcyan: [224, 255, 255],
4497
- lightgoldenrodyellow: [250, 250, 210],
4498
- lightgray: [211, 211, 211],
4499
- lightgreen: [144, 238, 144],
4500
- lightgrey: [211, 211, 211],
4501
- lightpink: [255, 182, 193],
4502
- lightsalmon: [255, 160, 122],
4503
- lightseagreen: [32, 178, 170],
4504
- lightskyblue: [135, 206, 250],
4505
- lightslategray: [119, 136, 153],
4506
- lightslategrey: [119, 136, 153],
4507
- lightsteelblue: [176, 196, 222],
4508
- lightyellow: [255, 255, 224],
4509
- lime: [0, 255, 0],
4510
- limegreen: [50, 205, 50],
4511
- linen: [250, 240, 230],
4512
- magenta: [255, 0, 255],
4513
- maroon: [128, 0, 0],
4514
- mediumaquamarine: [102, 205, 170],
4515
- mediumblue: [0, 0, 205],
4516
- mediumorchid: [186, 85, 211],
4517
- mediumpurple: [147, 112, 219],
4518
- mediumseagreen: [60, 179, 113],
4519
- mediumslateblue: [123, 104, 238],
4520
- mediumspringgreen: [0, 250, 154],
4521
- mediumturquoise: [72, 209, 204],
4522
- mediumvioletred: [199, 21, 133],
4523
- midnightblue: [25, 25, 112],
4524
- mintcream: [245, 255, 250],
4525
- mistyrose: [255, 228, 225],
4526
- moccasin: [255, 228, 181],
4527
- navajowhite: [255, 222, 173],
4528
- navy: [0, 0, 128],
4529
- oldlace: [253, 245, 230],
4530
- olive: [128, 128, 0],
4531
- olivedrab: [107, 142, 35],
4532
- orange: [255, 165, 0],
4533
- orangered: [255, 69, 0],
4534
- orchid: [218, 112, 214],
4535
- palegoldenrod: [238, 232, 170],
4536
- palegreen: [152, 251, 152],
4537
- paleturquoise: [175, 238, 238],
4538
- palevioletred: [219, 112, 147],
4539
- papayawhip: [255, 239, 213],
4540
- peachpuff: [255, 218, 185],
4541
- peru: [205, 133, 63],
4542
- pink: [255, 192, 203],
4543
- plum: [221, 160, 221],
4544
- powderblue: [176, 224, 230],
4545
- purple: [128, 0, 128],
4546
- rebeccapurple: [102, 51, 153],
4547
- red: [255, 0, 0],
4548
- rosybrown: [188, 143, 143],
4549
- royalblue: [65, 105, 225],
4550
- saddlebrown: [139, 69, 19],
4551
- salmon: [250, 128, 114],
4552
- sandybrown: [244, 164, 96],
4553
- seagreen: [46, 139, 87],
4554
- seashell: [255, 245, 238],
4555
- sienna: [160, 82, 45],
4556
- silver: [192, 192, 192],
4557
- skyblue: [135, 206, 235],
4558
- slateblue: [106, 90, 205],
4559
- slategray: [112, 128, 144],
4560
- slategrey: [112, 128, 144],
4561
- snow: [255, 250, 250],
4562
- springgreen: [0, 255, 127],
4563
- steelblue: [70, 130, 180],
4564
- tan: [210, 180, 140],
4565
- teal: [0, 128, 128],
4566
- thistle: [216, 191, 216],
4567
- tomato: [255, 99, 71],
4568
- turquoise: [64, 224, 208],
4569
- violet: [238, 130, 238],
4570
- wheat: [245, 222, 179],
4571
- white: [255, 255, 255],
4572
- whitesmoke: [245, 245, 245],
4573
- yellow: [255, 255, 0],
4574
- yellowgreen: [154, 205, 50]
4575
- };
4576
- for (const key in colors) Object.freeze(colors[key]);
4577
- var color_name_default = Object.freeze(colors);
4578
-
4579
- // node_modules/color-name-to-code/dist/color-names.js
4580
- var colorNames = color_name_default;
4581
-
4582
- // node_modules/color-name-to-code/dist/color-array-to-hex.js
4583
- var colorArrayToHexDefaultOptions = {
4584
- hash: true,
4585
- lowercase: false,
4586
- short: false
4587
- };
4588
- function colorArrayToHex(arr, partialOptions) {
4589
- const options = __spreadValues(__spreadValues({}, colorArrayToHexDefaultOptions), partialOptions);
4590
- const { hash, lowercase, short } = options;
4591
- let hex = arr.map((num) => {
4592
- let str2 = num.toString(16);
4593
- str2 = str2.length === 1 ? `0${str2}` : str2;
4594
- return str2;
4595
- }).join("");
4596
- if (short) {
4597
- const chars = [...hex];
4598
- if (chars[0] === chars[1] && chars[2] === chars[3] && chars[4] === chars[5]) {
4599
- hex = `${chars[0]}${chars[2]}${chars[4]}`;
4600
- }
4601
- }
4602
- hex = lowercase ? hex.toLowerCase() : hex.toUpperCase();
4603
- if (hash) {
4604
- hex = `#${hex}`;
4605
- }
4606
- return hex;
4607
- }
4608
-
4609
- // node_modules/color-name-to-code/dist/color-array-to-rgb.js
4610
- function colorArrayToRGB(arr, alpha = 1) {
4611
- alpha = Math.min(1, Math.max(0, alpha));
4612
- if (alpha < 1) {
4613
- return `rgba(${arr[0]}, ${arr[1]}, ${arr[2]}, ${alpha})`;
4614
- }
4615
- return `rgb(${arr[0]}, ${arr[1]}, ${arr[2]})`;
4616
- }
4617
-
4618
- // node_modules/color-name-to-code/dist/color-name-to-code.js
4619
- var colorNameToCodeDefaultOptions = __spreadProps(__spreadValues({}, colorArrayToHexDefaultOptions), {
4620
- fallback: true,
4621
- alpha: 1,
4622
- format: ColorCodeFormat.Hex
4623
- });
4624
- function colorNameToCode(value, partialOptions = {}) {
4625
- const options = __spreadValues(__spreadValues({}, colorNameToCodeDefaultOptions), partialOptions);
4626
- const { fallback, format, hash, lowercase, short, alpha } = options;
4627
- value = `${value}`;
4628
- const colorName = value.toLowerCase().replaceAll(/[^a-z]/g, "");
4629
- let colorArray = colorNames[colorName];
4630
- if (!colorArray) {
4631
- if (!fallback) {
4632
- throw new Error(`no matching color found for '${value}'`);
4633
- }
4634
- const hex = value.toLowerCase().replaceAll(/[^\da-f]/g, "");
4635
- colorArray = (hex.length <= 3 ? [hex.slice(0, 1).repeat(2), hex.slice(1, 2).repeat(2), hex.slice(2, 3).repeat(2)] : [hex.slice(0, 2), hex.slice(2, 4), hex.slice(4, 6)]).map((str2) => Number.parseInt(str2.length < 2 ? `${"0".repeat(2 - str2.length)}${str2}` : str2, 16));
4636
- }
4637
- switch (format) {
4638
- case ColorCodeFormat.Array: {
4639
- return [...colorArray];
4640
- }
4641
- case ColorCodeFormat.RGB: {
4642
- return colorArrayToRGB(colorArray, alpha);
4643
- }
4644
- default: {
4645
- return colorArrayToHex(colorArray, { hash, lowercase, short });
4646
- }
4647
- }
4648
- }
4649
-
4650
- // src/score/engine/assets/G-clef.png
4651
- var G_clef_default = "data:image/png;base64,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TTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NDA3ODVjMzYtNDAxZC00YTZlLTkxODctMDQ1NTI4MmM0ZGY2IgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhiZTJkYzc1LTVlYjQtNDk0Yy1iNWRlLWQ2MzZkNzZhNjI2YiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmU3YWE0MWNhLTNiYjMtNGU5Yi05NDQxLTllNTNmZTJiZjM5ZiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IldpbmRvd3MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg2NDA4NjA5MzE2NDM4IgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiCiAgIHhtcDpDcmVhdG9yVG9vbD0iR0lNUCAyLjEwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzOjA2OjEwVDE3OjUwOjA5KzAzOjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMzowNjoxMFQxNzo1MDowOSswMzowMCI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MzY2YmY0LWVkZDMtNDE5OC05NjJhLWU5ZTM5MTBlNThiZSIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0wOC0yMlQwMjo1NTozNiIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NjVlMTM3OS0wZDlmLTQ5ODItYWQ3MC05MzhjOWMzOWE0ZjMiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMDktMTFUMTY6MzU6MDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTBmYmEwYTMtOTI5Yi00NTRlLThjNGMtOGVkOGM4YWJhZGRjIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA2LTEwVDE3OjUwOjA5Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Ppn4NIQAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnBgoOMgm5WlWBAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAACHtJREFUeNrtnXuQVmMcxz+77cauTWUpbGSVu2w3BpnUEBq3chkmBjGayG1GBuNWLtUgw5SJkBkjl4QKg1wyQyarK0lRSlstU20bWam9+OM8O3P6vc8553nOe97tnO18Z84f57zP7XvOc/ndnueFfQx5e6neUmAI0B3oDPwD/AJ8Dvzcml5we+Al4D+gyeOaB1S0BrLHAut9iLqv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";
4652
-
4653
- // src/score/engine/assets/F-clef.png
4654
- var F_clef_default = "data:image/png;base64,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IHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo0MDc4NWMzNi00MDFkLTRhNmUtOTE4Ny0wNDU1MjgyYzRkZjYiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Nzg3YjYxN2YtMjg1MS00YzhlLTg2MTYtZWM3NGMwYzYwMWVlIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZTdhYTQxY2EtM2JiMy00ZTliLTk0NDEtOWU1M2ZlMmJmMzlmIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2ODY2MTM5NDcxOTU2ODAiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zNCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjM6MDY6MTNUMDI6NTI6MjUrMDM6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzOjA2OjEzVDAyOjUyOjI1KzAzOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjczNjZiZjQtZWRkMy00MTk4LTk2MmEtZTllMzkxMGU1OGJlIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTA4LTIyVDAyOjU1OjM2Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2NWUxMzc5LTBkOWYtNDk4Mi1hZDcwLTkzOGM5YzM5YTRmMyIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0wOS0xMVQxNjozNTowMCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMGZiYTBhMy05MjliLTQ1NGUtOGM0Yy04ZWQ4YzhhYmFkZGMiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDYtMTBUMTc6NTA6MDkiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDBmYjM4YTMtZjZiMi00NjQ1LTliMTYtMjlhNWE0ODZlMjhhIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA2LTEzVDAyOjUyOjI3Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PsIRrtIAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnBgwXNBsqJURsAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAABF9JREFUeNrtmluIF1Ucxz9/E8P1VnnJ9dJWC4Frmq2JJmqolGEILoQvK2gZeXlRCSm1Fx9UEsJQERWsXhRftECs0Gq70EK9ZHlbFyHbds3VVXFX91+7664P81tYhpnfmft//st84TzMzDm/8/vOnPO7nYEMGTJkyJAhQ4YMGSJBLkJZw4FyYAIwDHgU+A9oAxqBv4C7xfyySoBlwKfAFaAb6DG0euAzoAoYXCxEnwH2A60eCGrtFrALGJNWokNEwY6QRO2tFXgPGJAmss8DlyImam/fASPTQHaeGJueBFod8FQhrfSLwM+ynDX8L1/oV+BP4LZY58eBUUAlMB94ycPSvQTMERmJ4jGgwYPh2Qg84VFmGbAP6DTI/aoQS/lzg1JfA2MDyn4ZuGaQvyZJspUGv3oKGBhyjmeBJmWOmxLMJIITiiIXIgwaZgFdylxbDeNHANXAZmAVUBpEiScNe2xRxC/3Y2WuRmUlLRHD1rd/HljvV4F3FAVqYlhNo4B7Pl/wdPEMbmOq/ShwRBH0Vkxb6LAy536fW64HuOpn8vOKoLKYCC9Q5rzs0L/JQxDjyYPkgHYXAW0xGslByrLuFuPUFw0eCI92mmiAQ4LgZoEbYyTcAZxVPsJk271ag7x6cWueCLvhfsyu8LzybKLtersUF9ywxe2BnXBnAZOUJuXZeNv1OSki3LLdzwPrgONuguw+7g7wAHjEoW+vEagAXgeelr1yUSZoCUn4hvJsqMO9byRaWyLGtFkiwOtBJnYzBKcVg/ZuSMIrlHl3RrWMnFK1OqX/q8oXOAisDqFLVxL7xonw9yHk7Q5RoxpuyLdjI3wmhLzBwMqAY0ck4SGcCNeKIQqKOTF84RtxEu4BPgohc2QM467HSRjgqBL5mBDUPU1Rnl1JwqBNUuJqrW0M+OLdYuk8Cdas38Rf4b3FR0HP/nLdZNYaioKbxSVuA6ZGQfoNvNWlO6VvEKxW5O5yGbNc4ml7ZrUtCtLjgGMSdjop9Q+wMIT8GoXwKw79ZxrKUG9r+a8flMoyr5AA4ybwo1QgggYHpZJ6Ou3Ta5IpddvufwEsVWQ2xFisCI1Nypf6RMmsIql4JI0S8bFuSs9UvmCgikeh8b6i8C/KuKOYD+VShzGSwLsprRnByYYYoSqNhE8qCv/kYfxrYjT7jmuPIC+PBWsVsl1YRzBeE45qqWGtwjo1SR0WoZ8a7KAfYa5h7/2OVaPuF1gqtS83srclpi565IAP0c+b7wOz+wPZckOc3Jt0LC52oiXABx7y6VasGnfRYgiwwRAu9raGqPLXQmAGcADvvyN+m9bgXnP4i4E9wN8+KiJ5WQG5QilumnioJP9lwHPANKw/fF7A+fxJw2ms/y9SFdiPBf4Vn9hJNL8T/iFxbyoxgej+m6zBOtnLpXlvhiXcDOyVJV8UCEL4KnBI/OnAtBP0q+ADMTq/SfshrdUFr4TzwJdY9d57WIdYzRIk1GMdeXSQIUOGDBmSwUMtd8u2ArdcUAAAAABJRU5ErkJggg==";
4217
+ // src/score/engine/assets/F-clef.png
4218
+ var F_clef_default = "data:image/png;base64,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IHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDo0MDc4NWMzNi00MDFkLTRhNmUtOTE4Ny0wNDU1MjgyYzRkZjYiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Nzg3YjYxN2YtMjg1MS00YzhlLTg2MTYtZWM3NGMwYzYwMWVlIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZTdhYTQxY2EtM2JiMy00ZTliLTk0NDEtOWU1M2ZlMmJmMzlmIgogICBkYzpGb3JtYXQ9ImltYWdlL3BuZyIKICAgR0lNUDpBUEk9IjIuMCIKICAgR0lNUDpQbGF0Zm9ybT0iV2luZG93cyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2ODY2MTM5NDcxOTU2ODAiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zNCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjM6MDY6MTNUMDI6NTI6MjUrMDM6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDIzOjA2OjEzVDAyOjUyOjI1KzAzOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjczNjZiZjQtZWRkMy00MTk4LTk2MmEtZTllMzkxMGU1OGJlIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTA4LTIyVDAyOjU1OjM2Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2NWUxMzc5LTBkOWYtNDk4Mi1hZDcwLTkzOGM5YzM5YTRmMyIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMi0wOS0xMVQxNjozNTowMCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMGZiYTBhMy05MjliLTQ1NGUtOGM0Yy04ZWQ4YzhhYmFkZGMiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoV2luZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDYtMTBUMTc6NTA6MDkiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDBmYjM4YTMtZjZiMi00NjQ1LTliMTYtMjlhNWE0ODZlMjhhIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJHaW1wIDIuMTAgKFdpbmRvd3MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTA2LTEzVDAyOjUyOjI3Ii8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PsIRrtIAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfnBgwXNBsqJURsAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAABF9JREFUeNrtmluIF1Ucxz9/E8P1VnnJ9dJWC4Frmq2JJmqolGEILoQvK2gZeXlRCSm1Fx9UEsJQERWsXhRftECs0Gq70EK9ZHlbFyHbds3VVXFX91+7664P81tYhpnfmft//st84TzMzDm/8/vOnPO7nYEMGTJkyJAhQ4YMGSJBLkJZw4FyYAIwDHgU+A9oAxqBv4C7xfyySoBlwKfAFaAb6DG0euAzoAoYXCxEnwH2A60eCGrtFrALGJNWokNEwY6QRO2tFXgPGJAmss8DlyImam/fASPTQHaeGJueBFod8FQhrfSLwM+ynDX8L1/oV+BP4LZY58eBUUAlMB94ycPSvQTMERmJ4jGgwYPh2Qg84VFmGbAP6DTI/aoQS/lzg1JfA2MDyn4ZuGaQvyZJspUGv3oKGBhyjmeBJmWOmxLMJIITiiIXIgwaZgFdylxbDeNHANXAZmAVUBpEiScNe2xRxC/3Y2WuRmUlLRHD1rd/HljvV4F3FAVqYlhNo4B7Pl/wdPEMbmOq/ShwRBH0Vkxb6LAy536fW64HuOpn8vOKoLKYCC9Q5rzs0L/JQxDjyYPkgHYXAW0xGslByrLuFuPUFw0eCI92mmiAQ4LgZoEbYyTcAZxVPsJk271ag7x6cWueCLvhfsyu8LzybKLtersUF9ywxe2BnXBnAZOUJuXZeNv1OSki3LLdzwPrgONuguw+7g7wAHjEoW+vEagAXgeelr1yUSZoCUn4hvJsqMO9byRaWyLGtFkiwOtBJnYzBKcVg/ZuSMIrlHl3RrWMnFK1OqX/q8oXOAisDqFLVxL7xonw9yHk7Q5RoxpuyLdjI3wmhLzBwMqAY0ck4SGcCNeKIQqKOTF84RtxEu4BPgohc2QM467HSRjgqBL5mBDUPU1Rnl1JwqBNUuJqrW0M+OLdYuk8Cdas38Rf4b3FR0HP/nLdZNYaioKbxSVuA6ZGQfoNvNWlO6VvEKxW5O5yGbNc4ml7ZrUtCtLjgGMSdjop9Q+wMIT8GoXwKw79ZxrKUG9r+a8flMoyr5AA4ybwo1QgggYHpZJ6Ou3Ta5IpddvufwEsVWQ2xFisCI1Nypf6RMmsIql4JI0S8bFuSs9UvmCgikeh8b6i8C/KuKOYD+VShzGSwLsprRnByYYYoSqNhE8qCv/kYfxrYjT7jmuPIC+PBWsVsl1YRzBeE45qqWGtwjo1SR0WoZ8a7KAfYa5h7/2OVaPuF1gqtS83srclpi565IAP0c+b7wOz+wPZckOc3Jt0LC52oiXABx7y6VasGnfRYgiwwRAu9raGqPLXQmAGcADvvyN+m9bgXnP4i4E9wN8+KiJ5WQG5QilumnioJP9lwHPANKw/fF7A+fxJw2ms/y9SFdiPBf4Vn9hJNL8T/iFxbyoxgej+m6zBOtnLpXlvhiXcDOyVJV8UCEL4KnBI/OnAtBP0q+ADMTq/SfshrdUFr4TzwJdY9d57WIdYzRIk1GMdeXSQIUOGDBmSwUMtd8u2ArdcUAAAAABJRU5ErkJggg==";
4655
4219
 
4656
4220
  // src/score/engine/render-context.ts
4657
4221
  var ImageData = new UniMap([
@@ -4660,14 +4224,6 @@ var ImageData = new UniMap([
4660
4224
  ]);
4661
4225
  var getImageData = (asset) => ImageData.getOrDefault(asset, "");
4662
4226
  var ImageCache = new BiMap();
4663
- function colorNameToRGBA(name, alpha = 1) {
4664
- const hex = colorNameToCode(name).replace("#", "");
4665
- const r = parseInt(hex.slice(0, 2), 16);
4666
- const g = parseInt(hex.slice(2, 4), 16);
4667
- const b = parseInt(hex.slice(4, 6), 16);
4668
- const a = Math.round(alpha * 255);
4669
- return [r, g, b, a];
4670
- }
4671
4227
  function staffPosEquals(a, b) {
4672
4228
  if (!a && !b) return true;
4673
4229
  else if (!a || !b) return false;
@@ -4689,6 +4245,7 @@ var RenderContext = class {
4689
4245
  __publicField(this, "canvas");
4690
4246
  __publicField(this, "ctx");
4691
4247
  __publicField(this, "mdoc");
4248
+ __publicField(this, "paint", Paint.default);
4692
4249
  __publicField(this, "cursorRect");
4693
4250
  __publicField(this, "mousePos");
4694
4251
  // Mouse coord in document space
@@ -4741,12 +4298,13 @@ var RenderContext = class {
4741
4298
  }
4742
4299
  onImageLoaded(data) {
4743
4300
  if (data.loaded || !data.img) return;
4744
- if (data.colorized || data.color === "") {
4301
+ const color = this.paint.getColor(data.color);
4302
+ if (data.colorized || color === "" || color === "black" || color === "#000" || color === "#0000" || color === "#000000" || color === "#00000000") {
4745
4303
  this.forceDraw();
4746
4304
  data.loaded = true;
4747
4305
  return;
4748
4306
  }
4749
- const [nr, ng, nb, na] = colorNameToRGBA(data.color);
4307
+ const [nr, ng, nb, na] = Paint.colorNameToRGBA(color);
4750
4308
  const threshold = 40;
4751
4309
  if (typeof document === "undefined") {
4752
4310
  console.error("Failed to colorize image: document is undefined.");
@@ -4796,6 +4354,12 @@ var RenderContext = class {
4796
4354
  mdoc.getMusicObject().setRenderContext(this);
4797
4355
  }
4798
4356
  }
4357
+ setPaint(paint) {
4358
+ this.paint = paint != null ? paint : Paint.default;
4359
+ }
4360
+ getPaint() {
4361
+ return this.paint;
4362
+ }
4799
4363
  setCanvas(canvas2) {
4800
4364
  var _a, _b;
4801
4365
  if (this.canvas !== canvas2) {
@@ -4948,7 +4512,7 @@ var RenderContext = class {
4948
4512
  if (!staff) {
4949
4513
  return;
4950
4514
  }
4951
- this.fillColor(DocumentColor.HilightStaffPos);
4515
+ this.fillColor(this.paint.colors["hilight.staffpos"]);
4952
4516
  this.fillRect(staff.row.getRect().left, staff.getDiatonicIdY(diatonicId) - unitSize, staff.row.getRect().width, 2 * unitSize);
4953
4517
  if (mousePos !== void 0) {
4954
4518
  this.drawLedgerLines(staff, diatonicId, mousePos.x);
@@ -4960,13 +4524,13 @@ var RenderContext = class {
4960
4524
  return;
4961
4525
  }
4962
4526
  let rect = hilightedObj.getRect();
4963
- this.lineColor(DocumentColor.HilightObject);
4527
+ this.lineColor(this.paint.colors["hilight.object"]);
4964
4528
  this.strokeRect(rect.left, rect.top, rect.width, rect.height);
4965
4529
  }
4966
4530
  drawPlayCursor() {
4967
4531
  let { cursorRect: r } = this;
4968
4532
  if (r) {
4969
- this.color(DocumentColor.PlayCursor).lineWidth(2).strokeLine(r.centerX, r.top, r.centerX, r.bottom);
4533
+ this.color(this.paint.colors["play.cursor"]).lineWidth(2).strokeLine(r.centerX, r.top, r.centerX, r.bottom);
4970
4534
  }
4971
4535
  }
4972
4536
  txFromScreenCoord(screenCoord) {
@@ -4977,7 +4541,7 @@ var RenderContext = class {
4977
4541
  }
4978
4542
  clearCanvas() {
4979
4543
  if (this.ctx) {
4980
- this.ctx.canvas.style.background = DocumentColor.Background;
4544
+ this.ctx.canvas.style.background = this.getPaint().colors["background"];
4981
4545
  this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
4982
4546
  }
4983
4547
  }
@@ -5121,15 +4685,16 @@ var RenderContext = class {
5121
4685
  this.stroke();
5122
4686
  }
5123
4687
  color(color) {
5124
- if (this.ctx) this.ctx.strokeStyle = this.ctx.fillStyle = color;
4688
+ if (this.ctx)
4689
+ this.ctx.strokeStyle = this.ctx.fillStyle = this.paint.getColor(color);
5125
4690
  return this;
5126
4691
  }
5127
4692
  lineColor(color) {
5128
- if (this.ctx) this.ctx.strokeStyle = color;
4693
+ if (this.ctx) this.ctx.strokeStyle = this.paint.getColor(color);
5129
4694
  return this;
5130
4695
  }
5131
4696
  fillColor(color) {
5132
- if (this.ctx) this.ctx.fillStyle = color;
4697
+ if (this.ctx) this.ctx.fillStyle = this.paint.getColor(color);
5133
4698
  return this;
5134
4699
  }
5135
4700
  lineWidth(lineWidth) {
@@ -5597,7 +5162,7 @@ var ObjStaffSignature = class extends MusicObject {
5597
5162
  }
5598
5163
  updateClefImage(ctx, showClef) {
5599
5164
  if (showClef) {
5600
- let color = DocumentColor.Staff_Signature_Clef;
5165
+ let color = ctx.getPaint().getColor(colorKey("staff.signature.clef"));
5601
5166
  if (["black", "#000", "#000000"].includes(color))
5602
5167
  color = "";
5603
5168
  let img = ctx.getImageAsset(this.staff.clefImageAsset, color);
@@ -5609,7 +5174,7 @@ var ObjStaffSignature = class extends MusicObject {
5609
5174
  }
5610
5175
  updateMeasureNumber(showMeasureNumber) {
5611
5176
  if (showMeasureNumber) {
5612
- let color = DocumentColor.Staff_Signature_MeasureNum;
5177
+ let color = colorKey("staff.signature.measurenum");
5613
5178
  let text = this.measure.getMeasureNumber().toString();
5614
5179
  this.measureNumber = new ObjText(this, { text, color }, 0, 1);
5615
5180
  } else {
@@ -5619,7 +5184,7 @@ var ObjStaffSignature = class extends MusicObject {
5619
5184
  updateKeySignature(showKeySignature) {
5620
5185
  if (showKeySignature) {
5621
5186
  let { measure } = this;
5622
- let color = DocumentColor.Staff_Signature_Key;
5187
+ let color = colorKey("staff.signature.key");
5623
5188
  let prevMeasure = measure.getPrevMeasure();
5624
5189
  let prevKeySignature = prevMeasure ? prevMeasure.getKeySignature() : void 0;
5625
5190
  let newKeySignature = measure.getKeySignature();
@@ -5641,7 +5206,7 @@ var ObjStaffSignature = class extends MusicObject {
5641
5206
  updateTimeSignature(showTimeSignature) {
5642
5207
  if (showTimeSignature) {
5643
5208
  let timeSignature = this.measure.getTimeSignature();
5644
- let color = DocumentColor.Staff_Signature_Time;
5209
+ let color = colorKey("staff.signature.time");
5645
5210
  let beatCount = timeSignature.beatCount.toString();
5646
5211
  this.beatCountText = new ObjText(this, { text: beatCount, color, scale: 1.4 }, 0.5, 0.5);
5647
5212
  let beatSize = timeSignature.beatSize.toString();
@@ -5652,7 +5217,7 @@ var ObjStaffSignature = class extends MusicObject {
5652
5217
  }
5653
5218
  updateTempo(showTempo) {
5654
5219
  if (showTempo) {
5655
- let color = DocumentColor.Staff_Signature_Tempo;
5220
+ let color = colorKey("staff.signature.tempo");
5656
5221
  let text = (0, import_theory2.getTempoString)(this.measure.getTempo());
5657
5222
  this.tempoText = new ObjText(this, { text, color }, 0.5, 1);
5658
5223
  } else {
@@ -5864,7 +5429,7 @@ var ObjTabSignature = class extends MusicObject {
5864
5429
  }
5865
5430
  updateMeasureNumber(showMeasureNumber) {
5866
5431
  if (showMeasureNumber) {
5867
- let color = DocumentColor.Tab_Signature_MeasureNum;
5432
+ let color = colorKey("tab.signature.measurenum");
5868
5433
  let text = this.measure.getMeasureNumber().toString();
5869
5434
  this.measureNumber = new ObjText(this, { text, color }, 0, 1);
5870
5435
  } else {
@@ -5874,7 +5439,7 @@ var ObjTabSignature = class extends MusicObject {
5874
5439
  updateTimeSignature(showTimeSignature) {
5875
5440
  if (showTimeSignature) {
5876
5441
  let timeSignature = this.measure.getTimeSignature();
5877
- let color = DocumentColor.Tab_Signature_Time;
5442
+ let color = colorKey("tab.signature.time");
5878
5443
  let beatCount = timeSignature.beatCount.toString();
5879
5444
  this.beatCountText = new ObjText(this, { text: beatCount, color, scale: 1.4 }, 0.5, 0.5);
5880
5445
  let beatSize = timeSignature.beatSize.toString();
@@ -5885,7 +5450,7 @@ var ObjTabSignature = class extends MusicObject {
5885
5450
  }
5886
5451
  updateTempo(showTempo) {
5887
5452
  if (showTempo) {
5888
- let color = DocumentColor.Tab_Signature_Tempo;
5453
+ let color = colorKey("tab.signature.tempo");
5889
5454
  let text = (0, import_theory2.getTempoString)(this.measure.getTempo());
5890
5455
  this.tempoText = new ObjText(this, { text, color }, 0, 1);
5891
5456
  } else {
@@ -6118,7 +5683,7 @@ var _ObjRest = class _ObjRest extends MusicObject {
6118
5683
  }
6119
5684
  this.runningDiatonicId = this.setDiatonicId;
6120
5685
  this.runningStemDir = "up" /* Up */;
6121
- this.color = (_c = options == null ? void 0 : options.color) != null ? _c : DocumentColor.Staff_Rest;
5686
+ this.color = (_c = options == null ? void 0 : options.color) != null ? _c : colorKey("staff.rest");
6122
5687
  this.hide = (_d = options == null ? void 0 : options.hide) != null ? _d : false;
6123
5688
  this.oldStyleTriplet = tupletRatio === void 0 && import_theory3.NoteLengthProps.get(noteLength).isTriplet;
6124
5689
  this.rhythmProps = import_theory3.RhythmProps.get(noteLength, void 0, (tupletRatio != null ? tupletRatio : this.oldStyleTriplet) ? import_theory3.Tuplet.Triplet : void 0);
@@ -6434,7 +5999,7 @@ var ObjNoteGroup = class _ObjNoteGroup extends MusicObject {
6434
5999
  this.runningDiatonicId = this.setDiatonicId;
6435
6000
  this.runningStemDir = "up" /* Up */;
6436
6001
  this.runningStringNumbers = [];
6437
- this.color = (_a = options == null ? void 0 : options.color) != null ? _a : DocumentColor.Staff_Note;
6002
+ this.color = (_a = options == null ? void 0 : options.color) != null ? _a : colorKey("staff.note");
6438
6003
  this.staccato = (_b = options == null ? void 0 : options.staccato) != null ? _b : false;
6439
6004
  this.diamond = (_c = options == null ? void 0 : options.diamond) != null ? _c : false;
6440
6005
  this.arpeggio = getArpeggio(options == null ? void 0 : options.arpeggio);
@@ -6818,8 +6383,8 @@ var ObjNoteGroup = class _ObjNoteGroup extends MusicObject {
6818
6383
  return;
6819
6384
  }
6820
6385
  let obj = new ObjTabNoteGroup(tab, this);
6821
- const bgcolor = DocumentColor.Background;
6822
- const color = DocumentColor.Tab_Note;
6386
+ const bgcolor = colorKey("background");
6387
+ const color = colorKey("tab.note");
6823
6388
  this.notes.forEach((note, noteIndex) => {
6824
6389
  let stringNumber = this.runningStringNumbers[noteIndex];
6825
6390
  if (guard_exports.isIntegerBetween(stringNumber, 1, 6)) {
@@ -7283,7 +6848,7 @@ var ObjRhythmColumn = class extends MusicObject {
7283
6848
  this.rect.offsetInPlace(dx, dy);
7284
6849
  }
7285
6850
  draw(ctx) {
7286
- ctx.color(DocumentColor.Staff_Frame);
6851
+ ctx.color(colorKey("staff.frame"));
7287
6852
  this.row.getStaves().forEach((staff) => {
7288
6853
  let minDiatonicId = this.staffMinDiatonicId.get(staff);
7289
6854
  let maxDiatonicId = this.staffMaxDiatonicId.get(staff);
@@ -9030,10 +8595,8 @@ var ObjConnective = class extends MusicObject {
9030
8595
  ctx.drawDebugRect(rect);
9031
8596
  let t = _lineWidth * 1.5;
9032
8597
  let s = _lineWidth * 0.25;
8598
+ ctx.color(this.line instanceof ObjTab ? colorKey("tab.connective") : colorKey("staff.connective"));
9033
8599
  ctx.lineWidth(1);
9034
- ctx.color(
9035
- this.line instanceof ObjTab ? DocumentColor.Tab_Connective : DocumentColor.Staff_Connective
9036
- );
9037
8600
  if (this.arcHeight === 0) {
9038
8601
  ctx.beginPath();
9039
8602
  ctx.moveTo(this.lx, this.ly);
@@ -9332,7 +8895,7 @@ var ObjTabRhythm = class extends MusicObject {
9332
8895
  let colX = sym.col.getRect().anchorX;
9333
8896
  if (sym instanceof ObjNoteGroup) {
9334
8897
  ctx.lineWidth(1);
9335
- ctx.color(DocumentColor.Tab_Note);
8898
+ ctx.color(colorKey("tab.note"));
9336
8899
  if (sym.rhythmProps.noteSize >= 2) {
9337
8900
  ctx.lineWidth(sym.rhythmProps.noteSize === 4 ? 2 : 1);
9338
8901
  ctx.strokeLine(colX, stemBottom, colX, stemTop);
@@ -9347,7 +8910,7 @@ var ObjTabRhythm = class extends MusicObject {
9347
8910
  }
9348
8911
  } else if (sym instanceof ObjRest) {
9349
8912
  ctx.lineWidth(1);
9350
- ctx.color(DocumentColor.Tab_Rest);
8913
+ ctx.color(colorKey("tab.rest"));
9351
8914
  let cx = colX;
9352
8915
  let cy = (stemTop + stemBottom) / 2;
9353
8916
  let scale = 0.65;
@@ -9368,7 +8931,7 @@ var ObjTabRhythm = class extends MusicObject {
9368
8931
  let leftBeamCount = left.hasTuplet() ? 1 : left instanceof ObjNoteGroup ? left.getRightBeamCount() : 1;
9369
8932
  let rightBeamCount = right.hasTuplet() ? 1 : right instanceof ObjNoteGroup ? right.getLeftBeamCount() : 1;
9370
8933
  let maxBeamCount = Math.max(leftBeamCount, rightBeamCount);
9371
- ctx.color(DocumentColor.Tab_Note);
8934
+ ctx.color(colorKey("tab.note"));
9372
8935
  ctx.lineWidth(2);
9373
8936
  for (let i = 0; i < maxBeamCount; i++) {
9374
8937
  let leftT = rightBeamCount > leftBeamCount && i >= leftBeamCount ? 0.75 : 0;
@@ -9384,7 +8947,7 @@ var ObjTabRhythm = class extends MusicObject {
9384
8947
  }
9385
8948
  }
9386
8949
  if (beamGroup && beamGroup.isTuplet()) {
9387
- ctx.color(DocumentColor.Tab_Note);
8950
+ ctx.color(colorKey("tab.note"));
9388
8951
  let cx = (symbols[0].col.getRect().anchorX + symbols[symbols.length - 1].col.getRect().anchorX) / 2;
9389
8952
  let text = beamGroup.getTupletRatioText();
9390
8953
  let textObj = this.tupletPartsTextObjMap.get(text);
@@ -9870,7 +9433,7 @@ var ObjMeasure = class extends MusicObject {
9870
9433
  throw new import_core11.MusicError(import_core11.MusicErrorType.Score, "Cannot add Fermata because anchor is undefined.");
9871
9434
  }
9872
9435
  this.forEachStaffGroup(staffTabOrGroups, 0 /* Above */, (line, vpos) => {
9873
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Fermata : DocumentColor.Tab_Element_Fermata;
9436
+ const color = line instanceof ObjTab ? colorKey("staff.element.fermata") : colorKey("tab.element.fermata");
9874
9437
  this.addLayoutObject(new ObjFermata(anchor, vpos, color), line, 1 /* Fermata */, vpos);
9875
9438
  });
9876
9439
  this.disableExtension();
@@ -9890,7 +9453,7 @@ var ObjMeasure = class extends MusicObject {
9890
9453
  let passages = args;
9891
9454
  addLayoutObjectProps = {
9892
9455
  createObj: (line) => {
9893
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Navigation : DocumentColor.Tab_Element_Navigation;
9456
+ const color = line instanceof ObjTab ? colorKey("staff.element.navigation") : colorKey("tab.element.navigation");
9894
9457
  return new ObjEnding(anchor, color, passages);
9895
9458
  },
9896
9459
  layoutGroupId: 4 /* Ending */,
@@ -9905,7 +9468,7 @@ var ObjMeasure = class extends MusicObject {
9905
9468
  let text = getNavigationString(navigation);
9906
9469
  addLayoutObjectProps = {
9907
9470
  createObj: (line) => {
9908
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Navigation : DocumentColor.Tab_Element_Navigation;
9471
+ const color = line instanceof ObjTab ? colorKey("staff.element.navigation") : colorKey("tab.element.navigation");
9909
9472
  return new ObjText(anchor2, { text, color }, 1, 1);
9910
9473
  },
9911
9474
  layoutGroupId: 3 /* Navigation */,
@@ -9920,7 +9483,7 @@ var ObjMeasure = class extends MusicObject {
9920
9483
  let text = getNavigationString(navigation);
9921
9484
  addLayoutObjectProps = {
9922
9485
  createObj: (line) => {
9923
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Navigation : DocumentColor.Tab_Element_Navigation;
9486
+ const color = line instanceof ObjTab ? colorKey("staff.element.navigation") : colorKey("tab.element.navigation");
9924
9487
  return new ObjText(anchor2, { text, color }, 1, 1);
9925
9488
  },
9926
9489
  layoutGroupId: 3 /* Navigation */,
@@ -9934,7 +9497,7 @@ var ObjMeasure = class extends MusicObject {
9934
9497
  let text = getNavigationString(navigation);
9935
9498
  addLayoutObjectProps = {
9936
9499
  createObj: (line) => {
9937
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Navigation : DocumentColor.Tab_Element_Navigation;
9500
+ const color = line instanceof ObjTab ? colorKey("staff.element.navigation") : colorKey("tab.element.navigation");
9938
9501
  return new ObjSpecialText(anchor2, text, color);
9939
9502
  },
9940
9503
  layoutGroupId: 3 /* Navigation */,
@@ -9947,7 +9510,7 @@ var ObjMeasure = class extends MusicObject {
9947
9510
  let text = getNavigationString(navigation);
9948
9511
  addLayoutObjectProps = {
9949
9512
  createObj: (line) => {
9950
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Navigation : DocumentColor.Tab_Element_Navigation;
9513
+ const color = line instanceof ObjTab ? colorKey("staff.element.navigation") : colorKey("tab.element.navigation");
9951
9514
  return new ObjSpecialText(anchor2, text, color);
9952
9515
  },
9953
9516
  layoutGroupId: 3 /* Navigation */,
@@ -9968,7 +9531,7 @@ var ObjMeasure = class extends MusicObject {
9968
9531
  const textProps = {
9969
9532
  text,
9970
9533
  scale: 0.8,
9971
- color: DocumentColor.Staff_Frame
9534
+ color: colorKey("staff.frame")
9972
9535
  };
9973
9536
  this.endRepeatPlayCountText = new ObjText(this, textProps, 0.5, 1);
9974
9537
  }
@@ -10014,7 +9577,7 @@ var ObjMeasure = class extends MusicObject {
10014
9577
  const anchorY = getExtensionAnchorY(linePos);
10015
9578
  this.disableExtension();
10016
9579
  this.forEachStaffGroup(staffTabOrGroups, defaultVerticalPos, (line, vpos) => {
10017
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Annotation : DocumentColor.Tab_Element_Annotation;
9580
+ const color = line instanceof ObjTab ? colorKey("tab.element.annotation") : colorKey("staff.element.annotation");
10018
9581
  textProps.color = color;
10019
9582
  let textObj = new ObjText(anchor, textProps, anchorX, anchorY);
10020
9583
  const layoutObj = this.addLayoutObject(textObj, line, layoutGroupId, vpos);
@@ -10043,7 +9606,7 @@ var ObjMeasure = class extends MusicObject {
10043
9606
  }
10044
9607
  this.disableExtension();
10045
9608
  this.forEachStaffGroup(staffTabOrGroups, defaultVerticalPos, (line, vpos) => {
10046
- const color = line instanceof ObjTab ? DocumentColor.Staff_Element_Label : DocumentColor.Tab_Element_Label;
9609
+ const color = line instanceof ObjTab ? colorKey("staff.element.label") : colorKey("tab.element.label");
10047
9610
  textProps.color = color;
10048
9611
  let textObj = new ObjText(anchor, textProps, 0.5, 1);
10049
9612
  const layoutObj = this.addLayoutObject(textObj, line, layoutGroupId, vpos);
@@ -10489,8 +10052,7 @@ var ObjMeasure = class extends MusicObject {
10489
10052
  this.row.getTabs().forEach((tab) => {
10490
10053
  for (let stringId = 0; stringId < 6; stringId++) {
10491
10054
  let note = tab.getTuningStrings()[stringId].format(import_theory9.PitchNotation.Helmholtz, import_theory9.SymbolSet.Unicode);
10492
- let color = DocumentColor.Tab_Tuning;
10493
- let obj = new ObjText(this, { text: note, scale: 0.8, color }, 1, 0.5);
10055
+ let obj = new ObjText(this, { text: note, scale: 0.8, color: colorKey("tab.tuning") }, 1, 0.5);
10494
10056
  obj.layout(ctx);
10495
10057
  obj.setRight(this.regions.tabTuning_0 * 0.8);
10496
10058
  obj.setCenterY(tab.getStringY(stringId));
@@ -10513,7 +10075,7 @@ var ObjMeasure = class extends MusicObject {
10513
10075
  this.regions.padding_3 = padding;
10514
10076
  this.regions.columnsMin_4 = Math.max(
10515
10077
  DocumentSettings.MinColumnsWidth * unitSize,
10516
- this.columns.map((col) => col.getRect().width).reduce((acc, cur) => acc + cur)
10078
+ this.columns.map((col) => col.getRect().width).reduce((acc, cur) => acc + cur, 0)
10517
10079
  );
10518
10080
  this.regions.padding_5 = padding;
10519
10081
  this.regions.rightBarLine_6 = this.barLineRight.getRect().width;
@@ -10643,11 +10205,11 @@ var ObjMeasure = class extends MusicObject {
10643
10205
  this.row.getNotationLines().forEach((line) => {
10644
10206
  if (line instanceof ObjStaff) {
10645
10207
  for (let p = line.bottomLineDiatonicId; p <= line.topLineDiatonicId; p += 2) {
10646
- drawLine(line.getDiatonicIdY(p), DocumentColor.Staff_Frame);
10208
+ drawLine(line.getDiatonicIdY(p), colorKey("staff.frame"));
10647
10209
  }
10648
10210
  } else if (line instanceof ObjTab) {
10649
10211
  for (let stringId = 0; stringId < 6; stringId++) {
10650
- drawLine(line.getStringY(stringId), DocumentColor.Tab_Frame);
10212
+ drawLine(line.getStringY(stringId), colorKey("tab.frame"));
10651
10213
  }
10652
10214
  }
10653
10215
  });
@@ -10658,7 +10220,7 @@ var ObjMeasure = class extends MusicObject {
10658
10220
  const left2 = this.getStaffLineLeft();
10659
10221
  const top = tab.getTopLineY();
10660
10222
  const bottom = tab.getBottomLineY();
10661
- ctx.color(DocumentColor.Tab_Frame).lineWidth(1).strokeLine(left2, top, left2, bottom);
10223
+ ctx.color(colorKey("tab.frame")).lineWidth(1).strokeLine(left2, top, left2, bottom);
10662
10224
  });
10663
10225
  }
10664
10226
  this.signatures.forEach((signature) => signature.draw(ctx));
@@ -10893,7 +10455,7 @@ var ObjNotationLine6 = class extends MusicObject {
10893
10455
  }
10894
10456
  }
10895
10457
  drawVerticalLine(ctx, left, width, isSystemBarLine = false) {
10896
- ctx.color(this.getConfig().type === "tab" ? DocumentColor.Tab_Frame : DocumentColor.Staff_Frame);
10458
+ ctx.color(this.getConfig().type === "tab" ? colorKey("tab.frame") : colorKey("staff.frame"));
10897
10459
  const i = this.row.getNotationLines().indexOf(this);
10898
10460
  const nextLine = i >= 0 ? this.row.getNotationLines()[i + 1] : void 0;
10899
10461
  const isGroupLine = this.getRowGroup().lines.length > 1;
@@ -11186,7 +10748,7 @@ var ObjScoreRowGroup = class extends MusicObject {
11186
10748
  __publicField(this, "instrText");
11187
10749
  __publicField(this, "braceRect", new AnchoredRect());
11188
10750
  __publicField(this, "mi");
11189
- const color = DocumentColor.RowGroup_Instrument;
10751
+ const color = colorKey("rowgroup.instrument");
11190
10752
  const instr = parseInstr((_a = lines[0].getConfig().instrument) != null ? _a : "");
11191
10753
  this.instrument = instr.instrName;
11192
10754
  this.hasBrace = instr.hideBrace ? false : this.hasInstrument && lines.length >= 2;
@@ -11241,7 +10803,7 @@ var ObjScoreRowGroup = class extends MusicObject {
11241
10803
  this.instrText.draw(ctx);
11242
10804
  if (this.hasBrace) {
11243
10805
  const r = this.braceRect;
11244
- ctx.color(DocumentColor.RowGroup_Frame).lineWidth(1).drawBracket(r, "{");
10806
+ ctx.color(colorKey("rowgroup.frame")).lineWidth(1).drawBracket(r, "{");
11245
10807
  }
11246
10808
  }
11247
10809
  };
@@ -11619,12 +11181,9 @@ var ObjHeader = class extends MusicObject {
11619
11181
  __publicField(this, "arrangerText");
11620
11182
  __publicField(this, "mi");
11621
11183
  this.mi = new MHeader(this);
11622
- const titleColor = DocumentColor.Header_Title;
11623
- const compColor = DocumentColor.Header_Composer;
11624
- const arrColor = DocumentColor.Header_Arranger;
11625
- this.titleText = this.title ? new ObjText(this, { text: this.title, color: titleColor, scale: 2 }, 0.5, 0) : void 0;
11626
- this.composerText = this.composer ? new ObjText(this, { text: this.composer, color: compColor }, 1, 0) : void 0;
11627
- this.arrangerText = this.arranger ? new ObjText(this, { text: "Arr.: " + this.arranger, color: arrColor }, 1, 0) : void 0;
11184
+ this.titleText = this.title ? new ObjText(this, { text: this.title, color: colorKey("header.title"), scale: 2 }, 0.5, 0) : void 0;
11185
+ this.composerText = this.composer ? new ObjText(this, { text: this.composer, color: colorKey("header.composer") }, 1, 0) : void 0;
11186
+ this.arrangerText = this.arranger ? new ObjText(this, { text: "Arr.: " + this.arranger, color: colorKey("header.arranger") }, 1, 0) : void 0;
11628
11187
  }
11629
11188
  getMusicInterface() {
11630
11189
  return this.mi;
@@ -12125,6 +11684,7 @@ var _DocumentBuilder = class _DocumentBuilder {
12125
11684
  * @returns - Music document.
12126
11685
  */
12127
11686
  getDocument() {
11687
+ this.getMeasure();
12128
11688
  return this.doc.getMusicInterface();
12129
11689
  }
12130
11690
  /**
@@ -13581,52 +13141,593 @@ var MExtensionLine = _MExtensionLine;
13581
13141
 
13582
13142
  // src/score/pub/music-interface.ts
13583
13143
  var import_core19 = require("web-music-score/core");
13584
- function assertArg3(condition, argName, argValue) {
13585
- if (!condition) {
13586
- throw new import_core19.MusicError(import_core19.MusicErrorType.Score, `Invalid arg: ${argName} = ${argValue}`);
13587
- }
13588
- }
13589
- function require_t(t, message) {
13590
- if (t === void 0 || t === null) {
13591
- throw new TypeError(message);
13592
- } else {
13593
- return t;
13594
- }
13595
- }
13596
- var _MPlayer = class _MPlayer {
13597
- /**
13598
- * Create new music player.
13599
- * @param doc - Music document to play.
13600
- * @param playStateChangeListener - Play state change listener.
13601
- */
13602
- constructor(doc, playStateChangeListener) {
13603
- __publicField(this, "player");
13604
- assertArg3(doc instanceof MDocument2, "doc", doc);
13605
- assertArg3(guard_exports.isFunctionOrUndefined(playStateChangeListener), "playStateChangeListener", playStateChangeListener);
13606
- this.player = new Player();
13607
- this.player.setDocument(doc.getMusicObject());
13608
- this.player.setCursorPositionChangeListener((cursorRect) => {
13609
- doc.getMusicObject().updateCursorRect(cursorRect);
13610
- });
13611
- if (playStateChangeListener) {
13612
- this.player.setPlayStateChnageListener(playStateChangeListener);
13613
- }
13614
- }
13615
- /**
13616
- * Stop all playing.
13617
- */
13618
- static stopAll() {
13619
- this.currentlyPlaying.forEach((p) => p.stop());
13620
- Audio2.stop();
13621
- }
13622
- /**
13623
- * Playe attached document.
13624
- * @returns - This player instance.
13625
- */
13626
- play() {
13627
- _MPlayer.currentlyPlaying.add(this);
13628
- this.player.play();
13629
- return this;
13144
+
13145
+ // node_modules/color-name-to-code/dist/color-name.enum.js
13146
+ var ColorName;
13147
+ (function(ColorName2) {
13148
+ ColorName2["AliceBlue"] = "aliceblue";
13149
+ ColorName2["AntiqueWhite"] = "antiquewhite";
13150
+ ColorName2["Aqua"] = "aqua";
13151
+ ColorName2["Aquamarine"] = "aquamarine";
13152
+ ColorName2["Azure"] = "azure";
13153
+ ColorName2["Beige"] = "beige";
13154
+ ColorName2["Bisque"] = "bisque";
13155
+ ColorName2["Black"] = "black";
13156
+ ColorName2["BlanchedAlmond"] = "blanchedalmond";
13157
+ ColorName2["Blue"] = "blue";
13158
+ ColorName2["BlueViolet"] = "blueviolet";
13159
+ ColorName2["Brown"] = "brown";
13160
+ ColorName2["BurlyWood"] = "burlywood";
13161
+ ColorName2["CadetBlue"] = "cadetblue";
13162
+ ColorName2["Chartreuse"] = "chartreuse";
13163
+ ColorName2["Chocolate"] = "chocolate";
13164
+ ColorName2["Coral"] = "coral";
13165
+ ColorName2["CornflowerBlue"] = "cornflowerblue";
13166
+ ColorName2["CornSilk"] = "cornsilk";
13167
+ ColorName2["Crimson"] = "crimson";
13168
+ ColorName2["Cyan"] = "cyan";
13169
+ ColorName2["DarkBlue"] = "darkblue";
13170
+ ColorName2["DarkCyan"] = "darkcyan";
13171
+ ColorName2["DarkGoldenRod"] = "darkgoldenrod";
13172
+ ColorName2["DarkGray"] = "darkgray";
13173
+ ColorName2["DarkGreen"] = "darkgreen";
13174
+ ColorName2["DarkGrey"] = "darkgrey";
13175
+ ColorName2["DarkKhaki"] = "darkkhaki";
13176
+ ColorName2["DarkMagenta"] = "darkmagenta";
13177
+ ColorName2["DarkOliveGreen"] = "darkolivegreen";
13178
+ ColorName2["DarkOrange"] = "darkorange";
13179
+ ColorName2["DarkOrchid"] = "darkorchid";
13180
+ ColorName2["DarkRed"] = "darkred";
13181
+ ColorName2["DarkSalmon"] = "darksalmon";
13182
+ ColorName2["DarkSeaGreen"] = "darkseagreen";
13183
+ ColorName2["DarkSlateBlue"] = "darkslateblue";
13184
+ ColorName2["DarkSlateGray"] = "darkslategray";
13185
+ ColorName2["DarkSlateGrey"] = "darkslategrey";
13186
+ ColorName2["DarkTurquoise"] = "darkturquoise";
13187
+ ColorName2["DarkViolet"] = "darkviolet";
13188
+ ColorName2["DeepPink"] = "deeppink";
13189
+ ColorName2["DeepSkyBlue"] = "deepskyblue";
13190
+ ColorName2["DimGray"] = "dimgray";
13191
+ ColorName2["DimGrey"] = "dimgrey";
13192
+ ColorName2["DodgerBlue"] = "dodgerblue";
13193
+ ColorName2["FireBrick"] = "firebrick";
13194
+ ColorName2["FloralWhite"] = "floralwhite";
13195
+ ColorName2["ForestGreen"] = "forestgreen";
13196
+ ColorName2["Fuchsia"] = "fuchsia";
13197
+ ColorName2["Gainsboro"] = "gainsboro";
13198
+ ColorName2["GhostWhite"] = "ghostwhite";
13199
+ ColorName2["Gold"] = "gold";
13200
+ ColorName2["GoldenRod"] = "goldenrod";
13201
+ ColorName2["Gray"] = "gray";
13202
+ ColorName2["Green"] = "green";
13203
+ ColorName2["GreenYellow"] = "greenyellow";
13204
+ ColorName2["Grey"] = "grey";
13205
+ ColorName2["Honeydew"] = "honeydew";
13206
+ ColorName2["HotPink"] = "hotpink";
13207
+ ColorName2["IndianRed"] = "indianred";
13208
+ ColorName2["Indigo"] = "indigo";
13209
+ ColorName2["Ivory"] = "ivory";
13210
+ ColorName2["Khaki"] = "khaki";
13211
+ ColorName2["Lavender"] = "lavender";
13212
+ ColorName2["LavenderBlush"] = "lavenderblush";
13213
+ ColorName2["LawnGreen"] = "lawngreen";
13214
+ ColorName2["LemonChiffon"] = "lemonchiffon";
13215
+ ColorName2["LightBlue"] = "lightblue";
13216
+ ColorName2["LightCoral"] = "lightcoral";
13217
+ ColorName2["LightCyan"] = "lightcyan";
13218
+ ColorName2["LightGoldenRodYellow"] = "lightgoldenrodyellow";
13219
+ ColorName2["LightGray"] = "lightgray";
13220
+ ColorName2["LightGreen"] = "lightgreen";
13221
+ ColorName2["LightGrey"] = "lightgrey";
13222
+ ColorName2["LightPink"] = "lightpink";
13223
+ ColorName2["LightSalmon"] = "lightsalmon";
13224
+ ColorName2["LightSeaGreen"] = "lightseagreen";
13225
+ ColorName2["LightSkyBlue"] = "lightskyblue";
13226
+ ColorName2["LightSlateGray"] = "lightslategray";
13227
+ ColorName2["LightSlateGrey"] = "lightslategrey";
13228
+ ColorName2["LightSteelBlue"] = "lightsteelblue";
13229
+ ColorName2["LightYellow"] = "lightyellow";
13230
+ ColorName2["Lime"] = "lime";
13231
+ ColorName2["LimeGreen"] = "limegreen";
13232
+ ColorName2["Linen"] = "linen";
13233
+ ColorName2["Magenta"] = "magenta";
13234
+ ColorName2["Maroon"] = "maroon";
13235
+ ColorName2["MediumAquamarine"] = "mediumaquamarine";
13236
+ ColorName2["MediumBlue"] = "mediumblue";
13237
+ ColorName2["MediumOrchid"] = "mediumorchid";
13238
+ ColorName2["MediumPurple"] = "mediumpurple";
13239
+ ColorName2["MediumSeaGreen"] = "mediumseagreen";
13240
+ ColorName2["MediumSlateBlue"] = "mediumslateblue";
13241
+ ColorName2["MediumSpringGreen"] = "mediumspringgreen";
13242
+ ColorName2["MediumTurquoise"] = "mediumturquoise";
13243
+ ColorName2["MediumVioletRed"] = "mediumvioletred";
13244
+ ColorName2["MidnightBlue"] = "midnightblue";
13245
+ ColorName2["MintCream"] = "mintcream";
13246
+ ColorName2["MistyRose"] = "mistyrose";
13247
+ ColorName2["Moccasin"] = "moccasin";
13248
+ ColorName2["NavajoWhite"] = "navajowhite";
13249
+ ColorName2["Navy"] = "navy";
13250
+ ColorName2["OldLace"] = "oldlace";
13251
+ ColorName2["Olive"] = "olive";
13252
+ ColorName2["OliveDrab"] = "olivedrab";
13253
+ ColorName2["Orange"] = "orange";
13254
+ ColorName2["OrangeRed"] = "orangered";
13255
+ ColorName2["Orchid"] = "orchid";
13256
+ ColorName2["PaleGoldenRod"] = "palegoldenrod";
13257
+ ColorName2["PaleGreen"] = "palegreen";
13258
+ ColorName2["PaleTurquoise"] = "paleturquoise";
13259
+ ColorName2["PaleVioletRed"] = "palevioletred";
13260
+ ColorName2["PapayaWhip"] = "papayawhip";
13261
+ ColorName2["PeachPuff"] = "peachpuff";
13262
+ ColorName2["Peru"] = "peru";
13263
+ ColorName2["Pink"] = "pink";
13264
+ ColorName2["Plum"] = "plum";
13265
+ ColorName2["PowderBlue"] = "powderblue";
13266
+ ColorName2["Purple"] = "purple";
13267
+ ColorName2["RebeccaPurple"] = "rebeccapurple";
13268
+ ColorName2["Red"] = "red";
13269
+ ColorName2["RosyBrown"] = "rosybrown";
13270
+ ColorName2["RoyalBlue"] = "royalblue";
13271
+ ColorName2["SaddleBrown"] = "saddlebrown";
13272
+ ColorName2["Salmon"] = "salmon";
13273
+ ColorName2["SandyBrown"] = "sandybrown";
13274
+ ColorName2["SeaGreen"] = "seagreen";
13275
+ ColorName2["SeaShell"] = "seashell";
13276
+ ColorName2["Sienna"] = "sienna";
13277
+ ColorName2["Silver"] = "silver";
13278
+ ColorName2["SkyBlue"] = "skyblue";
13279
+ ColorName2["SlateBlue"] = "slateblue";
13280
+ ColorName2["SlateGray"] = "slategray";
13281
+ ColorName2["SlateGrey"] = "slategrey";
13282
+ ColorName2["Snow"] = "snow";
13283
+ ColorName2["SpringGreen"] = "springgreen";
13284
+ ColorName2["SteelBlue"] = "steelblue";
13285
+ ColorName2["Tan"] = "tan";
13286
+ ColorName2["Teal"] = "teal";
13287
+ ColorName2["Thistle"] = "thistle";
13288
+ ColorName2["Tomato"] = "tomato";
13289
+ ColorName2["Turquoise"] = "turquoise";
13290
+ ColorName2["Violet"] = "violet";
13291
+ ColorName2["Wheat"] = "wheat";
13292
+ ColorName2["White"] = "white";
13293
+ ColorName2["WhiteSmoke"] = "whitesmoke";
13294
+ ColorName2["Yellow"] = "yellow";
13295
+ ColorName2["YellowGreen"] = "yellowgreen";
13296
+ })(ColorName = ColorName || (ColorName = {}));
13297
+
13298
+ // node_modules/color-name-to-code/dist/color-code-format.enum.js
13299
+ var ColorCodeFormat;
13300
+ (function(ColorCodeFormat2) {
13301
+ ColorCodeFormat2["Hex"] = "hex";
13302
+ ColorCodeFormat2["RGB"] = "rgb";
13303
+ ColorCodeFormat2["Array"] = "array";
13304
+ })(ColorCodeFormat = ColorCodeFormat || (ColorCodeFormat = {}));
13305
+
13306
+ // node_modules/color-name/index.js
13307
+ var colors = {
13308
+ aliceblue: [240, 248, 255],
13309
+ antiquewhite: [250, 235, 215],
13310
+ aqua: [0, 255, 255],
13311
+ aquamarine: [127, 255, 212],
13312
+ azure: [240, 255, 255],
13313
+ beige: [245, 245, 220],
13314
+ bisque: [255, 228, 196],
13315
+ black: [0, 0, 0],
13316
+ blanchedalmond: [255, 235, 205],
13317
+ blue: [0, 0, 255],
13318
+ blueviolet: [138, 43, 226],
13319
+ brown: [165, 42, 42],
13320
+ burlywood: [222, 184, 135],
13321
+ cadetblue: [95, 158, 160],
13322
+ chartreuse: [127, 255, 0],
13323
+ chocolate: [210, 105, 30],
13324
+ coral: [255, 127, 80],
13325
+ cornflowerblue: [100, 149, 237],
13326
+ cornsilk: [255, 248, 220],
13327
+ crimson: [220, 20, 60],
13328
+ cyan: [0, 255, 255],
13329
+ darkblue: [0, 0, 139],
13330
+ darkcyan: [0, 139, 139],
13331
+ darkgoldenrod: [184, 134, 11],
13332
+ darkgray: [169, 169, 169],
13333
+ darkgreen: [0, 100, 0],
13334
+ darkgrey: [169, 169, 169],
13335
+ darkkhaki: [189, 183, 107],
13336
+ darkmagenta: [139, 0, 139],
13337
+ darkolivegreen: [85, 107, 47],
13338
+ darkorange: [255, 140, 0],
13339
+ darkorchid: [153, 50, 204],
13340
+ darkred: [139, 0, 0],
13341
+ darksalmon: [233, 150, 122],
13342
+ darkseagreen: [143, 188, 143],
13343
+ darkslateblue: [72, 61, 139],
13344
+ darkslategray: [47, 79, 79],
13345
+ darkslategrey: [47, 79, 79],
13346
+ darkturquoise: [0, 206, 209],
13347
+ darkviolet: [148, 0, 211],
13348
+ deeppink: [255, 20, 147],
13349
+ deepskyblue: [0, 191, 255],
13350
+ dimgray: [105, 105, 105],
13351
+ dimgrey: [105, 105, 105],
13352
+ dodgerblue: [30, 144, 255],
13353
+ firebrick: [178, 34, 34],
13354
+ floralwhite: [255, 250, 240],
13355
+ forestgreen: [34, 139, 34],
13356
+ fuchsia: [255, 0, 255],
13357
+ gainsboro: [220, 220, 220],
13358
+ ghostwhite: [248, 248, 255],
13359
+ gold: [255, 215, 0],
13360
+ goldenrod: [218, 165, 32],
13361
+ gray: [128, 128, 128],
13362
+ green: [0, 128, 0],
13363
+ greenyellow: [173, 255, 47],
13364
+ grey: [128, 128, 128],
13365
+ honeydew: [240, 255, 240],
13366
+ hotpink: [255, 105, 180],
13367
+ indianred: [205, 92, 92],
13368
+ indigo: [75, 0, 130],
13369
+ ivory: [255, 255, 240],
13370
+ khaki: [240, 230, 140],
13371
+ lavender: [230, 230, 250],
13372
+ lavenderblush: [255, 240, 245],
13373
+ lawngreen: [124, 252, 0],
13374
+ lemonchiffon: [255, 250, 205],
13375
+ lightblue: [173, 216, 230],
13376
+ lightcoral: [240, 128, 128],
13377
+ lightcyan: [224, 255, 255],
13378
+ lightgoldenrodyellow: [250, 250, 210],
13379
+ lightgray: [211, 211, 211],
13380
+ lightgreen: [144, 238, 144],
13381
+ lightgrey: [211, 211, 211],
13382
+ lightpink: [255, 182, 193],
13383
+ lightsalmon: [255, 160, 122],
13384
+ lightseagreen: [32, 178, 170],
13385
+ lightskyblue: [135, 206, 250],
13386
+ lightslategray: [119, 136, 153],
13387
+ lightslategrey: [119, 136, 153],
13388
+ lightsteelblue: [176, 196, 222],
13389
+ lightyellow: [255, 255, 224],
13390
+ lime: [0, 255, 0],
13391
+ limegreen: [50, 205, 50],
13392
+ linen: [250, 240, 230],
13393
+ magenta: [255, 0, 255],
13394
+ maroon: [128, 0, 0],
13395
+ mediumaquamarine: [102, 205, 170],
13396
+ mediumblue: [0, 0, 205],
13397
+ mediumorchid: [186, 85, 211],
13398
+ mediumpurple: [147, 112, 219],
13399
+ mediumseagreen: [60, 179, 113],
13400
+ mediumslateblue: [123, 104, 238],
13401
+ mediumspringgreen: [0, 250, 154],
13402
+ mediumturquoise: [72, 209, 204],
13403
+ mediumvioletred: [199, 21, 133],
13404
+ midnightblue: [25, 25, 112],
13405
+ mintcream: [245, 255, 250],
13406
+ mistyrose: [255, 228, 225],
13407
+ moccasin: [255, 228, 181],
13408
+ navajowhite: [255, 222, 173],
13409
+ navy: [0, 0, 128],
13410
+ oldlace: [253, 245, 230],
13411
+ olive: [128, 128, 0],
13412
+ olivedrab: [107, 142, 35],
13413
+ orange: [255, 165, 0],
13414
+ orangered: [255, 69, 0],
13415
+ orchid: [218, 112, 214],
13416
+ palegoldenrod: [238, 232, 170],
13417
+ palegreen: [152, 251, 152],
13418
+ paleturquoise: [175, 238, 238],
13419
+ palevioletred: [219, 112, 147],
13420
+ papayawhip: [255, 239, 213],
13421
+ peachpuff: [255, 218, 185],
13422
+ peru: [205, 133, 63],
13423
+ pink: [255, 192, 203],
13424
+ plum: [221, 160, 221],
13425
+ powderblue: [176, 224, 230],
13426
+ purple: [128, 0, 128],
13427
+ rebeccapurple: [102, 51, 153],
13428
+ red: [255, 0, 0],
13429
+ rosybrown: [188, 143, 143],
13430
+ royalblue: [65, 105, 225],
13431
+ saddlebrown: [139, 69, 19],
13432
+ salmon: [250, 128, 114],
13433
+ sandybrown: [244, 164, 96],
13434
+ seagreen: [46, 139, 87],
13435
+ seashell: [255, 245, 238],
13436
+ sienna: [160, 82, 45],
13437
+ silver: [192, 192, 192],
13438
+ skyblue: [135, 206, 235],
13439
+ slateblue: [106, 90, 205],
13440
+ slategray: [112, 128, 144],
13441
+ slategrey: [112, 128, 144],
13442
+ snow: [255, 250, 250],
13443
+ springgreen: [0, 255, 127],
13444
+ steelblue: [70, 130, 180],
13445
+ tan: [210, 180, 140],
13446
+ teal: [0, 128, 128],
13447
+ thistle: [216, 191, 216],
13448
+ tomato: [255, 99, 71],
13449
+ turquoise: [64, 224, 208],
13450
+ violet: [238, 130, 238],
13451
+ wheat: [245, 222, 179],
13452
+ white: [255, 255, 255],
13453
+ whitesmoke: [245, 245, 245],
13454
+ yellow: [255, 255, 0],
13455
+ yellowgreen: [154, 205, 50]
13456
+ };
13457
+ for (const key in colors) Object.freeze(colors[key]);
13458
+ var color_name_default = Object.freeze(colors);
13459
+
13460
+ // node_modules/color-name-to-code/dist/color-names.js
13461
+ var colorNames = color_name_default;
13462
+
13463
+ // node_modules/color-name-to-code/dist/color-array-to-hex.js
13464
+ var colorArrayToHexDefaultOptions = {
13465
+ hash: true,
13466
+ lowercase: false,
13467
+ short: false
13468
+ };
13469
+ function colorArrayToHex(arr, partialOptions) {
13470
+ const options = __spreadValues(__spreadValues({}, colorArrayToHexDefaultOptions), partialOptions);
13471
+ const { hash, lowercase, short } = options;
13472
+ let hex = arr.map((num) => {
13473
+ let str2 = num.toString(16);
13474
+ str2 = str2.length === 1 ? `0${str2}` : str2;
13475
+ return str2;
13476
+ }).join("");
13477
+ if (short) {
13478
+ const chars = [...hex];
13479
+ if (chars[0] === chars[1] && chars[2] === chars[3] && chars[4] === chars[5]) {
13480
+ hex = `${chars[0]}${chars[2]}${chars[4]}`;
13481
+ }
13482
+ }
13483
+ hex = lowercase ? hex.toLowerCase() : hex.toUpperCase();
13484
+ if (hash) {
13485
+ hex = `#${hex}`;
13486
+ }
13487
+ return hex;
13488
+ }
13489
+
13490
+ // node_modules/color-name-to-code/dist/color-array-to-rgb.js
13491
+ function colorArrayToRGB(arr, alpha = 1) {
13492
+ alpha = Math.min(1, Math.max(0, alpha));
13493
+ if (alpha < 1) {
13494
+ return `rgba(${arr[0]}, ${arr[1]}, ${arr[2]}, ${alpha})`;
13495
+ }
13496
+ return `rgb(${arr[0]}, ${arr[1]}, ${arr[2]})`;
13497
+ }
13498
+
13499
+ // node_modules/color-name-to-code/dist/color-name-to-code.js
13500
+ var colorNameToCodeDefaultOptions = __spreadProps(__spreadValues({}, colorArrayToHexDefaultOptions), {
13501
+ fallback: true,
13502
+ alpha: 1,
13503
+ format: ColorCodeFormat.Hex
13504
+ });
13505
+ function colorNameToCode(value, partialOptions = {}) {
13506
+ const options = __spreadValues(__spreadValues({}, colorNameToCodeDefaultOptions), partialOptions);
13507
+ const { fallback, format, hash, lowercase, short, alpha } = options;
13508
+ value = `${value}`;
13509
+ const colorName = value.toLowerCase().replaceAll(/[^a-z]/g, "");
13510
+ let colorArray = colorNames[colorName];
13511
+ if (!colorArray) {
13512
+ if (!fallback) {
13513
+ throw new Error(`no matching color found for '${value}'`);
13514
+ }
13515
+ const hex = value.toLowerCase().replaceAll(/[^\da-f]/g, "");
13516
+ colorArray = (hex.length <= 3 ? [hex.slice(0, 1).repeat(2), hex.slice(1, 2).repeat(2), hex.slice(2, 3).repeat(2)] : [hex.slice(0, 2), hex.slice(2, 4), hex.slice(4, 6)]).map((str2) => Number.parseInt(str2.length < 2 ? `${"0".repeat(2 - str2.length)}${str2}` : str2, 16));
13517
+ }
13518
+ switch (format) {
13519
+ case ColorCodeFormat.Array: {
13520
+ return [...colorArray];
13521
+ }
13522
+ case ColorCodeFormat.RGB: {
13523
+ return colorArrayToRGB(colorArray, alpha);
13524
+ }
13525
+ default: {
13526
+ return colorArrayToHex(colorArray, { hash, lowercase, short });
13527
+ }
13528
+ }
13529
+ }
13530
+
13531
+ // src/score/pub/paint.ts
13532
+ var norm = (s) => s.toLowerCase();
13533
+ function colorKey(colorKey2) {
13534
+ return colorKey2;
13535
+ }
13536
+ var _Paint = class _Paint {
13537
+ constructor() {
13538
+ __publicField(this, "colors", {
13539
+ "hilight.staffpos": "#55cc55",
13540
+ "hilight.object": "#55cc55",
13541
+ "play.cursor": "#44aa44",
13542
+ "background": "white",
13543
+ "header.title": "black",
13544
+ "header.composer": "black",
13545
+ "header.arranger": "black",
13546
+ "rowgroup.instrument": "black",
13547
+ "rowgroup.frame": "black",
13548
+ "staff.frame": "black",
13549
+ "staff.note": "black",
13550
+ "staff.rest": "black",
13551
+ "staff.lyrics": "black",
13552
+ "staff.connective": "black",
13553
+ "staff.signature.clef": "black",
13554
+ "staff.signature.key": "black",
13555
+ "staff.signature.time": "black",
13556
+ "staff.signature.tempo": "black",
13557
+ "staff.signature.measurenum": "black",
13558
+ "staff.element.fermata": "black",
13559
+ "staff.element.annotation": "black",
13560
+ "staff.element.navigation": "black",
13561
+ "staff.element.label": "black",
13562
+ "tab.frame": "black",
13563
+ "tab.note": "black",
13564
+ "tab.rest": "black",
13565
+ "tab.lyrics": "black",
13566
+ "tab.connective": "black",
13567
+ "tab.tuning": "black",
13568
+ "tab.signature.clef": "black",
13569
+ // not needed
13570
+ "tab.signature.key": "black",
13571
+ // not needed
13572
+ "tab.signature.time": "black",
13573
+ "tab.signature.tempo": "black",
13574
+ "tab.signature.measurenum": "black",
13575
+ "tab.element.fermata": "black",
13576
+ "tab.element.annotation": "black",
13577
+ "tab.element.navigation": "black",
13578
+ "tab.element.label": "black"
13579
+ });
13580
+ }
13581
+ /**
13582
+ * Set color of any score document element. Use combination of color key parts to set color of specific elements.
13583
+ * ```ts
13584
+ * setColor("all", "red"); // Set color of everything except background.
13585
+ * setColor("staff", "red"); // Set color of all staff elements.
13586
+ * setColor(["staff", "signature"], "red"); // Set color of all staff signature elements.
13587
+ * setColor(["staff", "signature", "key"], "red"); // Set color of staff key signature.
13588
+ * setColor(["staff", "signature", "time"], "red"); // Set color of staff time signature.
13589
+ * setColor("staff.signature.time", "red"); // Set color of staff time signature.
13590
+ * // etc.
13591
+ * ```
13592
+ *
13593
+ * @param colorKeyOrParts - Color key parts to set color for.
13594
+ * @param color - Color (HTML color code e.g. "green", "#AA6644", etc.)
13595
+ */
13596
+ setColor(colorKeyOrParts, color) {
13597
+ if (colorKeyOrParts === "all") {
13598
+ for (const key of Object.keys(this.colors)) {
13599
+ if (key !== "background" && key !== "hilight.object" && key !== "hilight.staffpos" && key !== "play.cursor")
13600
+ this.colors[key] = color || "black";
13601
+ }
13602
+ return;
13603
+ }
13604
+ const isBackground = typeof colorKeyOrParts === "string" && norm(colorKeyOrParts) === "background" || guard_exports.isArray(colorKeyOrParts) && colorKeyOrParts.length === 1 && norm(colorKeyOrParts[0]) === "background";
13605
+ const finalColor = color || (isBackground ? "white" : "black");
13606
+ if (isBackground) {
13607
+ this.colors.background = finalColor;
13608
+ return;
13609
+ }
13610
+ if (typeof colorKeyOrParts === "string" && colorKeyOrParts in this.colors) {
13611
+ this.colors[colorKeyOrParts] = finalColor;
13612
+ return;
13613
+ }
13614
+ const colorKeyParts = guard_exports.isArray(colorKeyOrParts) ? colorKeyOrParts : colorKeyOrParts.split(".");
13615
+ if (colorKeyParts.length === 0)
13616
+ return;
13617
+ const normalizedParts = colorKeyParts.map(norm);
13618
+ let matched = false;
13619
+ for (const key of Object.keys(this.colors)) {
13620
+ const parts = key.split(".").map(norm);
13621
+ const match = normalizedParts.every((a) => parts.includes(a));
13622
+ if (match) {
13623
+ this.colors[key] = finalColor;
13624
+ matched = true;
13625
+ }
13626
+ }
13627
+ if (!matched) {
13628
+ console.error(
13629
+ `Color attrs ${utils_exports.Str.stringify(colorKeyParts)} did not match any color.`
13630
+ );
13631
+ }
13632
+ }
13633
+ /**
13634
+ * Get color.
13635
+ * @param colorKeyOrColor - ColorKey or color.
13636
+ * @returns - Color value (e.g. "white" or "#FFFFFF").
13637
+ */
13638
+ getColor(colorKeyOrColor) {
13639
+ var _a;
13640
+ return (_a = this.colors[colorKeyOrColor]) != null ? _a : colorKeyOrColor;
13641
+ }
13642
+ /**
13643
+ * Get color code.
13644
+ * @param colorKeyOrColor - ColorKey or color.
13645
+ * @returns - Color code (e.g. "#FFFFFF").
13646
+ */
13647
+ getColorCode(colorKeyOrColor) {
13648
+ return _Paint.colorNameToCode(this.getColor(colorKeyOrColor));
13649
+ }
13650
+ /**
13651
+ * Get color RGBA.
13652
+ * @param colorKeyOrColor - ColorKey or color.
13653
+ * @returns - Color RGBA (e.g. [1, 1, 1, 1]).
13654
+ */
13655
+ getColorRGBA(colorKeyOrColor) {
13656
+ return _Paint.colorNameToRGBA(this.getColor(colorKeyOrColor));
13657
+ }
13658
+ /**
13659
+ * Convert color name to color code.
13660
+ * @param colorName - Color name (e.g. "white").
13661
+ * @returns - Color code (e.g. "#FFFFFF")
13662
+ */
13663
+ static colorNameToCode(colorName) {
13664
+ return colorNameToCode(colorName);
13665
+ }
13666
+ /**
13667
+ * Convert color name ro RGBA.
13668
+ * @param colorName - Color name (e.g. "white").
13669
+ * @param alpha - Alpha value 0..1 (default is 1).
13670
+ * @returns - RGBA (e.g. [1, 1, 1, 1]).
13671
+ */
13672
+ static colorNameToRGBA(colorName, alpha = 1) {
13673
+ const hex = colorNameToCode(colorName).replace("#", "");
13674
+ const r = parseInt(hex.slice(0, 2), 16);
13675
+ const g = parseInt(hex.slice(2, 4), 16);
13676
+ const b = parseInt(hex.slice(4, 6), 16);
13677
+ const a = Math.round(alpha * 255);
13678
+ return [r, g, b, a];
13679
+ }
13680
+ };
13681
+ __publicField(_Paint, "default", new _Paint());
13682
+ var Paint = _Paint;
13683
+
13684
+ // src/score/pub/music-interface.ts
13685
+ function assertArg3(condition, argName, argValue) {
13686
+ if (!condition) {
13687
+ throw new import_core19.MusicError(import_core19.MusicErrorType.Score, `Invalid arg: ${argName} = ${argValue}`);
13688
+ }
13689
+ }
13690
+ function require_t(t, message) {
13691
+ if (t === void 0 || t === null) {
13692
+ throw new TypeError(message);
13693
+ } else {
13694
+ return t;
13695
+ }
13696
+ }
13697
+ var _MPlayer = class _MPlayer {
13698
+ /**
13699
+ * Create new music player.
13700
+ * @param doc - Music document to play.
13701
+ * @param playStateChangeListener - Play state change listener.
13702
+ */
13703
+ constructor(doc, playStateChangeListener) {
13704
+ __publicField(this, "player");
13705
+ assertArg3(doc instanceof MDocument2, "doc", doc);
13706
+ assertArg3(guard_exports.isFunctionOrUndefined(playStateChangeListener), "playStateChangeListener", playStateChangeListener);
13707
+ this.player = new Player();
13708
+ this.player.setDocument(doc.getMusicObject());
13709
+ this.player.setCursorPositionChangeListener((cursorRect) => {
13710
+ doc.getMusicObject().updateCursorRect(cursorRect);
13711
+ });
13712
+ if (playStateChangeListener) {
13713
+ this.player.setPlayStateChnageListener(playStateChangeListener);
13714
+ }
13715
+ }
13716
+ /**
13717
+ * Stop all playing.
13718
+ */
13719
+ static stopAll() {
13720
+ this.currentlyPlaying.forEach((p) => p.stop());
13721
+ Audio2.stop();
13722
+ }
13723
+ /**
13724
+ * Playe attached document.
13725
+ * @returns - This player instance.
13726
+ */
13727
+ play() {
13728
+ _MPlayer.currentlyPlaying.add(this);
13729
+ this.player.play();
13730
+ return this;
13630
13731
  }
13631
13732
  /**
13632
13733
  * Pause playback of attached document.
@@ -13656,6 +13757,16 @@ var MRenderContext2 = class {
13656
13757
  __publicField(this, "ctx");
13657
13758
  this.ctx = new RenderContext(this);
13658
13759
  }
13760
+ /**
13761
+ * Set Paint for this render context.
13762
+ * @param paint - Paint.
13763
+ * @returns - This render context instance.
13764
+ */
13765
+ setPaint(paint) {
13766
+ assertArg3(guard_exports.isUndefined(paint) || paint instanceof Paint, "paint", paint);
13767
+ this.ctx.setPaint(paint);
13768
+ return this;
13769
+ }
13659
13770
  /**
13660
13771
  * Attach music document to this render context.
13661
13772
  * @param doc - Music document.
@@ -13932,6 +14043,7 @@ var import_core20 = require("web-music-score/core");
13932
14043
  MusicInterface,
13933
14044
  Navigation,
13934
14045
  NoteAnchor,
14046
+ Paint,
13935
14047
  PlayState,
13936
14048
  ScoreEvent,
13937
14049
  ScoreObjectEvent,
@@ -13941,13 +14053,13 @@ var import_core20 = require("web-music-score/core");
13941
14053
  TempoAnnotation,
13942
14054
  TieType,
13943
14055
  VerticalPosition,
14056
+ colorKey,
13944
14057
  getStringNumbers,
13945
14058
  getVerseNumbers,
13946
14059
  getVoiceIds,
13947
14060
  isStringNumber,
13948
14061
  isVerseNumber,
13949
14062
  isVoiceId,
13950
- setColor,
13951
14063
  validateStringNumber,
13952
14064
  validateVerseNumber,
13953
14065
  validateVoiceId
@@ -13956,7 +14068,7 @@ var import_core20 = require("web-music-score/core");
13956
14068
 
13957
14069
  @tspro/ts-utils-lib/dist/index.mjs:
13958
14070
  (*!
13959
- * TsUtilsLib v2.2.1 (esm)
14071
+ * TsUtilsLib v2.3.0 (esm)
13960
14072
  * (c) 2023-2025 PahkaSoft
13961
14073
  * Licensed under the MIT License
13962
14074
  *)