chordsheetjs 13.2.2 → 14.1.0

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.
package/lib/bundle.js CHANGED
@@ -14251,7 +14251,7 @@ var ChordSheetJS = (() => {
14251
14251
  function createDOMPurify() {
14252
14252
  let window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
14253
14253
  const DOMPurify = (root) => createDOMPurify(root);
14254
- DOMPurify.version = "3.3.1";
14254
+ DOMPurify.version = "3.3.2";
14255
14255
  DOMPurify.removed = [];
14256
14256
  if (!window2 || !window2.document || window2.document.nodeType !== NODE_TYPE.document || !window2.Element) {
14257
14257
  DOMPurify.isSupported = false;
@@ -14452,7 +14452,7 @@ var ChordSheetJS = (() => {
14452
14452
  }
14453
14453
  if (USE_PROFILES) {
14454
14454
  ALLOWED_TAGS = addToSet({}, text);
14455
- ALLOWED_ATTR = [];
14455
+ ALLOWED_ATTR = create(null);
14456
14456
  if (USE_PROFILES.html === true) {
14457
14457
  addToSet(ALLOWED_TAGS, html$1);
14458
14458
  addToSet(ALLOWED_ATTR, html);
@@ -14473,6 +14473,12 @@ var ChordSheetJS = (() => {
14473
14473
  addToSet(ALLOWED_ATTR, xml);
14474
14474
  }
14475
14475
  }
14476
+ if (!objectHasOwnProperty(cfg, "ADD_TAGS")) {
14477
+ EXTRA_ELEMENT_HANDLING.tagCheck = null;
14478
+ }
14479
+ if (!objectHasOwnProperty(cfg, "ADD_ATTR")) {
14480
+ EXTRA_ELEMENT_HANDLING.attributeCheck = null;
14481
+ }
14476
14482
  if (cfg.ADD_TAGS) {
14477
14483
  if (typeof cfg.ADD_TAGS === "function") {
14478
14484
  EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
@@ -14751,6 +14757,9 @@ var ChordSheetJS = (() => {
14751
14757
  return false;
14752
14758
  };
14753
14759
  const _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
14760
+ if (FORBID_ATTR[lcName]) {
14761
+ return false;
14762
+ }
14754
14763
  if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
14755
14764
  return false;
14756
14765
  }
@@ -14817,7 +14826,7 @@ var ChordSheetJS = (() => {
14817
14826
  _removeAttribute(name, currentNode);
14818
14827
  value = SANITIZE_NAMED_PROPS_PREFIX + value;
14819
14828
  }
14820
- if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
14829
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
14821
14830
  _removeAttribute(name, currentNode);
14822
14831
  continue;
14823
14832
  }
@@ -17725,7 +17734,7 @@ var ChordSheetJS = (() => {
17725
17734
  }
17726
17735
  });
17727
17736
 
17728
- // node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
17737
+ // node_modules/canvg/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
17729
17738
  function asyncGeneratorStep(n2, t3, e2, r2, o3, a3, c4) {
17730
17739
  try {
17731
17740
  var i3 = n2[a3](c4), u3 = i3.value;
@@ -17750,7 +17759,7 @@ var ChordSheetJS = (() => {
17750
17759
  };
17751
17760
  }
17752
17761
  var init_asyncToGenerator = __esm({
17753
- "node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"() {
17762
+ "node_modules/canvg/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"() {
17754
17763
  }
17755
17764
  });
17756
17765
 
@@ -18926,36 +18935,50 @@ var ChordSheetJS = (() => {
18926
18935
  }
18927
18936
  });
18928
18937
 
18929
- // node_modules/@babel/runtime/helpers/esm/toPrimitive.js
18938
+ // node_modules/canvg/node_modules/@babel/runtime/helpers/esm/typeof.js
18939
+ function _typeof2(o3) {
18940
+ "@babel/helpers - typeof";
18941
+ return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o4) {
18942
+ return typeof o4;
18943
+ } : function(o4) {
18944
+ return o4 && "function" == typeof Symbol && o4.constructor === Symbol && o4 !== Symbol.prototype ? "symbol" : typeof o4;
18945
+ }, _typeof2(o3);
18946
+ }
18947
+ var init_typeof2 = __esm({
18948
+ "node_modules/canvg/node_modules/@babel/runtime/helpers/esm/typeof.js"() {
18949
+ }
18950
+ });
18951
+
18952
+ // node_modules/canvg/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
18930
18953
  function toPrimitive(t3, r2) {
18931
- if ("object" != _typeof(t3) || !t3) return t3;
18954
+ if ("object" != _typeof2(t3) || !t3) return t3;
18932
18955
  var e2 = t3[Symbol.toPrimitive];
18933
18956
  if (void 0 !== e2) {
18934
18957
  var i3 = e2.call(t3, r2 || "default");
18935
- if ("object" != _typeof(i3)) return i3;
18958
+ if ("object" != _typeof2(i3)) return i3;
18936
18959
  throw new TypeError("@@toPrimitive must return a primitive value.");
18937
18960
  }
18938
18961
  return ("string" === r2 ? String : Number)(t3);
18939
18962
  }
18940
18963
  var init_toPrimitive = __esm({
18941
- "node_modules/@babel/runtime/helpers/esm/toPrimitive.js"() {
18942
- init_typeof();
18964
+ "node_modules/canvg/node_modules/@babel/runtime/helpers/esm/toPrimitive.js"() {
18965
+ init_typeof2();
18943
18966
  }
18944
18967
  });
18945
18968
 
18946
- // node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
18969
+ // node_modules/canvg/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
18947
18970
  function toPropertyKey(t3) {
18948
18971
  var i3 = toPrimitive(t3, "string");
18949
- return "symbol" == _typeof(i3) ? i3 : i3 + "";
18972
+ return "symbol" == _typeof2(i3) ? i3 : i3 + "";
18950
18973
  }
18951
18974
  var init_toPropertyKey = __esm({
18952
- "node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"() {
18953
- init_typeof();
18975
+ "node_modules/canvg/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"() {
18976
+ init_typeof2();
18954
18977
  init_toPrimitive();
18955
18978
  }
18956
18979
  });
18957
18980
 
18958
- // node_modules/@babel/runtime/helpers/esm/defineProperty.js
18981
+ // node_modules/canvg/node_modules/@babel/runtime/helpers/esm/defineProperty.js
18959
18982
  function _defineProperty(e2, r2, t3) {
18960
18983
  return (r2 = toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, {
18961
18984
  value: t3,
@@ -18965,7 +18988,7 @@ var ChordSheetJS = (() => {
18965
18988
  }) : e2[r2] = t3, e2;
18966
18989
  }
18967
18990
  var init_defineProperty = __esm({
18968
- "node_modules/@babel/runtime/helpers/esm/defineProperty.js"() {
18991
+ "node_modules/canvg/node_modules/@babel/runtime/helpers/esm/defineProperty.js"() {
18969
18992
  init_toPropertyKey();
18970
18993
  }
18971
18994
  });
@@ -20118,18 +20141,18 @@ var ChordSheetJS = (() => {
20118
20141
  });
20119
20142
 
20120
20143
  // node_modules/stackblur-canvas/dist/stackblur-es.js
20121
- function _typeof2(obj) {
20144
+ function _typeof3(obj) {
20122
20145
  "@babel/helpers - typeof";
20123
20146
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
20124
- _typeof2 = function(obj2) {
20147
+ _typeof3 = function(obj2) {
20125
20148
  return typeof obj2;
20126
20149
  };
20127
20150
  } else {
20128
- _typeof2 = function(obj2) {
20151
+ _typeof3 = function(obj2) {
20129
20152
  return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
20130
20153
  };
20131
20154
  }
20132
- return _typeof2(obj);
20155
+ return _typeof3(obj);
20133
20156
  }
20134
20157
  function _classCallCheck(instance, Constructor) {
20135
20158
  if (!(instance instanceof Constructor)) {
@@ -20140,7 +20163,7 @@ var ChordSheetJS = (() => {
20140
20163
  if (typeof canvas === "string") {
20141
20164
  canvas = document.getElementById(canvas);
20142
20165
  }
20143
- if (!canvas || _typeof2(canvas) !== "object" || !("getContext" in canvas)) {
20166
+ if (!canvas || _typeof3(canvas) !== "object" || !("getContext" in canvas)) {
20144
20167
  throw new TypeError("Expecting canvas with `getContext` method in processCanvasRGB(A) calls!");
20145
20168
  }
20146
20169
  var context = canvas.getContext("2d");
@@ -27284,7 +27307,9 @@ var ChordSheetJS = (() => {
27284
27307
  if (t4 < 0 || t4 >= l3.length) throw new Error("Frame index out of range.");
27285
27308
  return l3[t4];
27286
27309
  }, this.decodeAndBlitFrameBGRA = function(e3, n3) {
27287
- var i4 = this.frameInfo(e3), a4 = i4.width * i4.height, o4 = new Uint8Array(a4);
27310
+ var i4 = this.frameInfo(e3), a4 = i4.width * i4.height;
27311
+ if (a4 > 536870912) throw new Error("Image dimensions exceed 512MB, which is too large.");
27312
+ var o4 = new Uint8Array(a4);
27288
27313
  ae(t3, i4.data_offset, o4, a4);
27289
27314
  var s4 = i4.palette_offset, u4 = i4.transparent_index;
27290
27315
  null === u4 && (u4 = 256);
@@ -27300,7 +27325,9 @@ var ChordSheetJS = (() => {
27300
27325
  --h4;
27301
27326
  }
27302
27327
  }, this.decodeAndBlitFrameRGBA = function(e3, n3) {
27303
- var i4 = this.frameInfo(e3), a4 = i4.width * i4.height, o4 = new Uint8Array(a4);
27328
+ var i4 = this.frameInfo(e3), a4 = i4.width * i4.height;
27329
+ if (a4 > 536870912) throw new Error("Image dimensions exceed 512MB, which is too large.");
27330
+ var o4 = new Uint8Array(a4);
27304
27331
  ae(t3, i4.data_offset, o4, a4);
27305
27332
  var s4 = i4.palette_offset, u4 = i4.transparent_index;
27306
27333
  null === u4 && (u4 = 256);
@@ -29405,7 +29432,7 @@ var ChordSheetJS = (() => {
29405
29432
  }
29406
29433
  for (r2 in e2) e2.hasOwnProperty(r2) && n2.indexOf(r2) < 0 && i3--;
29407
29434
  return 0 === i3;
29408
- }, E.API = { events: [] }, E.version = "4.1.0";
29435
+ }, E.API = { events: [] }, E.version = "4.2.0";
29409
29436
  R = E.API;
29410
29437
  D = 1;
29411
29438
  T2 = function(t3) {
@@ -30005,7 +30032,8 @@ var ChordSheetJS = (() => {
30005
30032
  } }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
30006
30033
  return e2;
30007
30034
  }, set: function(t3) {
30008
- e2 = t3;
30035
+ var r3 = null == t3 ? "" : t3.toString();
30036
+ "/" === r3.substr(0, 1) && (r3 = r3.substr(1)), e2 = "/" + U(r3);
30009
30037
  } }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
30010
30038
  return e2.substr(1, e2.length - 1);
30011
30039
  }, set: function(t3) {
@@ -30056,11 +30084,13 @@ var ChordSheetJS = (() => {
30056
30084
  } }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
30057
30085
  return n2;
30058
30086
  }, set: function(t3) {
30059
- n2 = t3;
30087
+ var e3 = null == t3 ? "" : t3.toString();
30088
+ "/" === e3.substr(0, 1) && (e3 = e3.substr(1)), n2 = "/" + U(e3);
30060
30089
  } }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
30061
30090
  return n2.substr(1, n2.length - 1);
30062
30091
  }, set: function(t3) {
30063
- n2 = "/" + t3;
30092
+ var e3 = null == t3 ? "" : t3.toString();
30093
+ "/" === e3.substr(0, 1) && (e3 = e3.substr(1)), n2 = "/" + U(e3);
30064
30094
  } }), this.caption = "l", this.appearanceState = "Off", this._AppearanceType = At.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(this.optionName);
30065
30095
  };
30066
30096
  V(wt, ft), yt.prototype.setAppearance = function(t3) {
@@ -31789,7 +31819,16 @@ var ChordSheetJS = (() => {
31789
31819
  return e3.worker ? r3 : r3.from(t3).doCallback();
31790
31820
  };
31791
31821
  })(E.API), E.API.addJS = function(t3) {
31792
- var e2, r2, n2 = t3;
31822
+ var e2, r2, n2 = (function(t4) {
31823
+ for (var e3 = "", r3 = 0; r3 < t4.length; r3++) {
31824
+ var n3 = t4[r3];
31825
+ if ("(" === n3 || ")" === n3) {
31826
+ for (var i3 = 0, a3 = r3 - 1; a3 >= 0 && "\\" === t4[a3]; a3--) i3++;
31827
+ e3 += i3 % 2 == 0 ? "\\" + n3 : n3;
31828
+ } else e3 += n3;
31829
+ }
31830
+ return e3;
31831
+ })(t3);
31793
31832
  return this.internal.events.subscribe("postPutResources", function() {
31794
31833
  e2 = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) " + (e2 + 1) + " 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), r2 = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS (" + n2 + ")"), this.internal.out(">>"), this.internal.out("endobj");
31795
31834
  }), this.internal.events.subscribe("putCatalog", function() {
@@ -32994,6 +33033,7 @@ var ChordSheetJS = (() => {
32994
33033
  $parcel$export(module.exports, "SOLFEGE", () => $dce48cb70c4120bb$export$539a6499f4711c57);
32995
33034
  $parcel$export(module.exports, "SYMBOL", () => $dce48cb70c4120bb$export$27c95a7104c1f7aa);
32996
33035
  $parcel$export(module.exports, "TAB", () => $dce48cb70c4120bb$export$f1c9dd0f5207dd5e);
33036
+ $parcel$export(module.exports, "TEXTBLOCK", () => $dce48cb70c4120bb$export$5a2cf64ea612936a);
32997
33037
  $parcel$export(module.exports, "VERSE", () => $dce48cb70c4120bb$export$4b194284baed1659);
32998
33038
  $parcel$export(module.exports, "PART", () => $dce48cb70c4120bb$export$609cc0ea1637d6a0);
32999
33039
  $parcel$export(module.exports, "NUMERAL", () => $dce48cb70c4120bb$export$1321df9b16c30c6a);
@@ -33289,6 +33329,7 @@ var ChordSheetJS = (() => {
33289
33329
  var $dce48cb70c4120bb$export$609cc0ea1637d6a0 = "part";
33290
33330
  var $dce48cb70c4120bb$export$6a5a2eab72b6e3d = "ly";
33291
33331
  var $dce48cb70c4120bb$export$92249c36c213e508 = "abc";
33332
+ var $dce48cb70c4120bb$export$5a2cf64ea612936a = "textblock";
33292
33333
  var $dce48cb70c4120bb$export$27c95a7104c1f7aa = "symbol";
33293
33334
  var $dce48cb70c4120bb$export$4d318981b5a83836 = "numeric";
33294
33335
  var $dce48cb70c4120bb$export$1321df9b16c30c6a = "numeral";
@@ -38039,6 +38080,8 @@ ${error.stack}`);
38039
38080
  var $d21c5c7a462f3c34$export$b7e6dcd848b88f43 = "start_of_grid";
38040
38081
  var $d21c5c7a462f3c34$export$634ff7795b596e62 = "start_of_ly";
38041
38082
  var $d21c5c7a462f3c34$export$8dd1111100e0e88d = "start_of_tab";
38083
+ var $d21c5c7a462f3c34$export$4252eb8e075f7d7a = "start_of_textblock";
38084
+ var $d21c5c7a462f3c34$export$f1e557abc415d751 = "end_of_textblock";
38042
38085
  var $d21c5c7a462f3c34$export$deca399f8cd9b7dc = "start_of_verse";
38043
38086
  var $d21c5c7a462f3c34$export$2b9510a208875fc9 = "start_of_part";
38044
38087
  var $d21c5c7a462f3c34$export$5895c693c74b9cf4 = "subtitle";
@@ -38063,6 +38106,7 @@ ${error.stack}`);
38063
38106
  [(0, $d21c5c7a462f3c34$export$b7e6dcd848b88f43)]: (0, $dce48cb70c4120bb$export$e2b0b9a5e613f348),
38064
38107
  [(0, $d21c5c7a462f3c34$export$634ff7795b596e62)]: (0, $dce48cb70c4120bb$export$6a5a2eab72b6e3d),
38065
38108
  [(0, $d21c5c7a462f3c34$export$8dd1111100e0e88d)]: (0, $dce48cb70c4120bb$export$f1c9dd0f5207dd5e),
38109
+ [(0, $d21c5c7a462f3c34$export$4252eb8e075f7d7a)]: (0, $dce48cb70c4120bb$export$5a2cf64ea612936a),
38066
38110
  [(0, $d21c5c7a462f3c34$export$deca399f8cd9b7dc)]: (0, $dce48cb70c4120bb$export$4b194284baed1659)
38067
38111
  };
38068
38112
  var $35ced0783ee29c4f$var$END_TAG_TO_SECTION_TYPE = {
@@ -38072,6 +38116,7 @@ ${error.stack}`);
38072
38116
  [(0, $d21c5c7a462f3c34$export$4b28ac1ae75aff60)]: (0, $dce48cb70c4120bb$export$e2b0b9a5e613f348),
38073
38117
  [(0, $d21c5c7a462f3c34$export$e3f6cdbd95b1f8f)]: (0, $dce48cb70c4120bb$export$6a5a2eab72b6e3d),
38074
38118
  [(0, $d21c5c7a462f3c34$export$66a0ef3ffeab32b7)]: (0, $dce48cb70c4120bb$export$f1c9dd0f5207dd5e),
38119
+ [(0, $d21c5c7a462f3c34$export$f1e557abc415d751)]: (0, $dce48cb70c4120bb$export$5a2cf64ea612936a),
38075
38120
  [(0, $d21c5c7a462f3c34$export$640d294ab83f9040)]: (0, $dce48cb70c4120bb$export$4b194284baed1659)
38076
38121
  };
38077
38122
  var $35ced0783ee29c4f$var$SECTION_START_REGEX = /^start_of_(.+)$/;
@@ -38198,6 +38243,7 @@ ${error.stack}`);
38198
38243
  (0, $d21c5c7a462f3c34$export$b7e6dcd848b88f43),
38199
38244
  (0, $d21c5c7a462f3c34$export$634ff7795b596e62),
38200
38245
  (0, $d21c5c7a462f3c34$export$8dd1111100e0e88d),
38246
+ (0, $d21c5c7a462f3c34$export$4252eb8e075f7d7a),
38201
38247
  (0, $d21c5c7a462f3c34$export$deca399f8cd9b7dc),
38202
38248
  (0, $d21c5c7a462f3c34$export$2b9510a208875fc9)
38203
38249
  ];
@@ -39112,7 +39158,8 @@ ${error.stack}`);
39112
39158
  * @returns {string} The ChordPro string
39113
39159
  */
39114
39160
  format(song) {
39115
- const { lines, metadata } = song;
39161
+ const { lines } = song;
39162
+ const metadata = song.getMetadata(this.configuration);
39116
39163
  const { metadataLines, contentLines } = this.separateMetadataFromContent(lines);
39117
39164
  const formattedMetadataLines = this.formatMetadataSection(metadataLines);
39118
39165
  const formattedContentLines = this.formatContentSection(contentLines, metadata);
@@ -39338,6 +39385,7 @@ ${formattedContentLines}`;
39338
39385
  this.transposeKey = null;
39339
39386
  this.lineNumber = null;
39340
39387
  this.selector = null;
39388
+ this.selectorIsNegated = false;
39341
39389
  this.textFont = new (0, $3b7d86e1e1307736$export$2e2bcd8739ae039)();
39342
39390
  this.chordFont = new (0, $3b7d86e1e1307736$export$2e2bcd8739ae039)();
39343
39391
  this.type = type;
@@ -39566,7 +39614,7 @@ ${formattedContentLines}`;
39566
39614
  }
39567
39615
  var $5c7afec93ec943b9$var$Metadata = class _$5c7afec93ec943b9$var$Metadata extends (0, $9047ab737bb447ce$export$2e2bcd8739ae039) {
39568
39616
  constructor(metadata = {}) {
39569
- super(), this.metadata = {};
39617
+ super(), this.metadata = {}, this.providers = /* @__PURE__ */ new Map();
39570
39618
  if (metadata instanceof _$5c7afec93ec943b9$var$Metadata) this.assign(metadata.metadata);
39571
39619
  else this.assign(metadata);
39572
39620
  }
@@ -39599,6 +39647,9 @@ ${formattedContentLines}`;
39599
39647
  value
39600
39648
  ];
39601
39649
  }
39650
+ setProvider(key, provider) {
39651
+ this.providers.set(key, provider);
39652
+ }
39602
39653
  set(key, value) {
39603
39654
  if (value) this.metadata[key] = value;
39604
39655
  else delete this.metadata[key];
@@ -39634,13 +39685,26 @@ ${formattedContentLines}`;
39634
39685
  get(prop) {
39635
39686
  if (prop === (0, $d21c5c7a462f3c34$export$430b1920f5feeae)) return this.calculateKeyFromCapo();
39636
39687
  if (prop in this.metadata) return this.metadata[prop];
39688
+ const provider = this.providers.get(prop);
39689
+ if (provider) return provider();
39637
39690
  return this.getArrayItem(prop);
39638
39691
  }
39639
39692
  /**
39640
- * Returns all metadata values, including generated values like `_key`.
39693
+ * Returns all metadata values, including provider values and generated values like `_key`.
39641
39694
  * @returns {Object.<string, string|string[]>} the metadata values
39642
39695
  */
39643
39696
  all() {
39697
+ const all = {};
39698
+ this.providers.forEach((provider, providerKey) => {
39699
+ const value = provider();
39700
+ if (value !== null) all[providerKey] = value;
39701
+ });
39702
+ Object.assign(all, this.metadata);
39703
+ const key = this.calculateKeyFromCapo();
39704
+ if (key) all[0, $d21c5c7a462f3c34$export$430b1920f5feeae] = key;
39705
+ return all;
39706
+ }
39707
+ ownMetadata() {
39644
39708
  const all = {
39645
39709
  ...this.metadata
39646
39710
  };
@@ -39649,7 +39713,7 @@ ${formattedContentLines}`;
39649
39713
  return all;
39650
39714
  }
39651
39715
  [Symbol.iterator]() {
39652
- return Object.entries(this.all())[Symbol.iterator]();
39716
+ return Object.entries(this.ownMetadata())[Symbol.iterator]();
39653
39717
  }
39654
39718
  /**
39655
39719
  * Returns a single metadata value. If the actual value is an array, it returns the first value. Else, it returns
@@ -39688,7 +39752,9 @@ ${formattedContentLines}`;
39688
39752
  * @returns {Metadata} the cloned Metadata object
39689
39753
  */
39690
39754
  clone() {
39691
- return new _$5c7afec93ec943b9$var$Metadata(this.metadata);
39755
+ const cloned = new _$5c7afec93ec943b9$var$Metadata(this.metadata);
39756
+ this.providers.forEach((provider, key) => cloned.setProvider(key, provider));
39757
+ return cloned;
39692
39758
  }
39693
39759
  calculateKeyFromCapo() {
39694
39760
  const capoString = this.getSingle((0, $d21c5c7a462f3c34$export$866f445d49bad88e));
@@ -39772,6 +39838,9 @@ ${formattedContentLines}`;
39772
39838
  const selectors = this.lines.map((line) => line.selector).filter((selector) => selector !== null);
39773
39839
  return $8906e348466806fd$var$getCommonValue(selectors, null);
39774
39840
  }
39841
+ get selectorIsNegated() {
39842
+ return this.lines.some((line) => line.selectorIsNegated);
39843
+ }
39775
39844
  /**
39776
39845
  * Indicates whether the paragraph contains lines with renderable items.
39777
39846
  * @see {@link Line.hasRenderableItems}
@@ -39921,6 +39990,7 @@ ${formattedContentLines}`;
39921
39990
  this.metadata = new (0, $5c7afec93ec943b9$export$2e2bcd8739ae039)();
39922
39991
  this.sectionType = (0, $dce48cb70c4120bb$export$c53d0f541b41b88e);
39923
39992
  this.selector = null;
39993
+ this.selectorIsNegated = false;
39924
39994
  this.transposeKey = null;
39925
39995
  this.warnings = [];
39926
39996
  this.song = song;
@@ -39938,16 +40008,17 @@ ${formattedContentLines}`;
39938
40008
  this.currentLine = new (0, $76b2b227aa06e8bf$export$2e2bcd8739ae039)();
39939
40009
  this.lines.push(this.currentLine);
39940
40010
  }
39941
- this.setCurrentProperties(this.sectionType, this.selector);
40011
+ this.setCurrentProperties(this.sectionType, this.selector, this.selectorIsNegated);
39942
40012
  this.currentLine.transposeKey = this.transposeKey ?? this.currentKey;
39943
40013
  this.currentLine.key = this.currentKey || this.song.getMetadata().getSingle((0, $d21c5c7a462f3c34$export$7167c830cefcb6b5));
39944
40014
  this.currentLine.lineNumber = this.lines.length - 1;
39945
40015
  return this.currentLine;
39946
40016
  }
39947
- setCurrentProperties(sectionType, selector = null) {
40017
+ setCurrentProperties(sectionType, selector = null, isNegated = false) {
39948
40018
  if (!this.currentLine) throw new Error("Expected this.currentLine to be present");
39949
40019
  this.currentLine.type = sectionType;
39950
40020
  this.currentLine.selector = selector;
40021
+ this.currentLine.selectorIsNegated = isNegated;
39951
40022
  this.currentLine.textFont = this.fontStack.textFont.clone();
39952
40023
  this.currentLine.chordFont = this.fontStack.chordFont.clone();
39953
40024
  }
@@ -39997,14 +40068,16 @@ ${formattedContentLines}`;
39997
40068
  startSection(sectionType, tag) {
39998
40069
  this.checkCurrentSectionType((0, $dce48cb70c4120bb$export$c53d0f541b41b88e), tag);
39999
40070
  this.selector = tag.selector;
40071
+ this.selectorIsNegated = tag.isNegated;
40000
40072
  if (sectionType === (0, $dce48cb70c4120bb$export$609cc0ea1637d6a0) && tag.value) this.sectionType = tag.value.split(" ")[0].toLowerCase();
40001
40073
  else this.sectionType = sectionType;
40002
- this.setCurrentProperties(sectionType, tag.selector);
40074
+ this.setCurrentProperties(sectionType, tag.selector, tag.isNegated);
40003
40075
  }
40004
40076
  endSection(sectionType, tag) {
40005
40077
  this.checkCurrentSectionType(sectionType, tag);
40006
40078
  this.sectionType = (0, $dce48cb70c4120bb$export$c53d0f541b41b88e);
40007
40079
  this.selector = null;
40080
+ this.selectorIsNegated = false;
40008
40081
  }
40009
40082
  checkCurrentSectionType(sectionType, tag) {
40010
40083
  if (this.sectionType !== sectionType && !(sectionType === "part" && tag.name === "end_of_part")) this.addWarning(`Unexpected tag {${tag.originalName}}, current section is: ${this.sectionType}`, tag);
@@ -40435,6 +40508,31 @@ ${formattedContentLines}`;
40435
40508
  const metadataValueTruthy = metadataValue && metadataValue !== "";
40436
40509
  return isNegated ? !metadataValueTruthy : !!metadataValueTruthy;
40437
40510
  }
40511
+ function $4903bcb4483a26e6$var$formatDate(date) {
40512
+ const year = date.getFullYear();
40513
+ const month = String(date.getMonth() + 1).padStart(2, "0");
40514
+ const day = String(date.getDate()).padStart(2, "0");
40515
+ return `${year}-${month}-${day}`;
40516
+ }
40517
+ function $4903bcb4483a26e6$export$12c349605689fe7a() {
40518
+ const providers = /* @__PURE__ */ new Map();
40519
+ providers.set("chordpro", () => "ChordPro");
40520
+ providers.set("chordpro.version", () => "14.0.0");
40521
+ providers.set("today", () => $4903bcb4483a26e6$var$formatDate(/* @__PURE__ */ new Date()));
40522
+ return providers;
40523
+ }
40524
+ function $4903bcb4483a26e6$export$9b09a67f52000acf(configuration) {
40525
+ const providers = $4903bcb4483a26e6$export$12c349605689fe7a();
40526
+ const { instrument, user } = configuration;
40527
+ providers.set("instrument", () => instrument?.type ?? null);
40528
+ providers.set("instrument.type", () => instrument?.type ?? null);
40529
+ providers.set("instrument.description", () => instrument?.description ?? null);
40530
+ providers.set("tuning", () => instrument?.tuning ?? null);
40531
+ providers.set("user", () => user?.name ?? null);
40532
+ providers.set("user.name", () => user?.name ?? null);
40533
+ providers.set("user.fullname", () => user?.fullname ?? null);
40534
+ return providers;
40535
+ }
40438
40536
  var $c53141c05fae8382$var$Song = class _$c53141c05fae8382$var$Song extends (0, $9047ab737bb447ce$export$2e2bcd8739ae039) {
40439
40537
  /**
40440
40538
  * Creates a new {Song} instance
@@ -40480,6 +40578,20 @@ ${formattedContentLines}`;
40480
40578
  const expandedLines = this.lines.flatMap((line) => (0, $cbaaf2a368d4190f$export$2e2bcd8739ae039).expand(line, this));
40481
40579
  return this.selectRenderableItems(this.linesToParagraphs(expandedLines));
40482
40580
  }
40581
+ filterParagraphs(paragraphs, configuration) {
40582
+ const context = {
40583
+ configuration,
40584
+ metadata: this.metadata
40585
+ };
40586
+ return paragraphs.filter((paragraph) => {
40587
+ const { selector, selectorIsNegated } = paragraph;
40588
+ if (!selector) return true;
40589
+ return (0, $2ce1086ce25c9ac0$export$efb38dd75b8e2957)({
40590
+ selector,
40591
+ isNegated: selectorIsNegated
40592
+ }, context);
40593
+ });
40594
+ }
40483
40595
  linesToParagraphs(lines) {
40484
40596
  let currentParagraph = new (0, $8906e348466806fd$export$2e2bcd8739ae039)();
40485
40597
  const paragraphs = [
@@ -40853,6 +40965,16 @@ Or set the song key before changing key:
40853
40965
  }
40854
40966
  getMetadata(configuration) {
40855
40967
  const metadata = new (0, $5c7afec93ec943b9$export$2e2bcd8739ae039)();
40968
+ const providers = configuration ? (0, $4903bcb4483a26e6$export$9b09a67f52000acf)(configuration) : (0, $4903bcb4483a26e6$export$12c349605689fe7a)();
40969
+ providers.forEach((provider, key) => metadata.setProvider(key, provider));
40970
+ const chords = () => this.getChords();
40971
+ metadata.setProvider("chords", () => {
40972
+ const c4 = chords();
40973
+ return c4.length ? c4.join(", ") : null;
40974
+ });
40975
+ metadata.setProvider("numchords", () => chords().length.toString());
40976
+ metadata.setProvider("key_actual", () => metadata.getSingle("_key") ?? metadata.getSingle("key"));
40977
+ metadata.setProvider("key_from", () => metadata.getSingle("key"));
40856
40978
  this.foreachItem((item) => {
40857
40979
  if (!(item instanceof (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039))) return;
40858
40980
  const tag = item;
@@ -41803,31 +41925,35 @@ Or set the song key before changing key:
41803
41925
  const peg$c151 = peg$literalExpectation("end_of_tab", false);
41804
41926
  const peg$c152 = "eot";
41805
41927
  const peg$c153 = peg$literalExpectation("eot", false);
41806
- const peg$c154 = peg$anyExpectation();
41807
- const peg$c155 = peg$otherExpectation("whitespace");
41808
- const peg$c156 = peg$otherExpectation("optional whitespace");
41809
- const peg$c157 = /^[ \t\n\r]/;
41810
- const peg$c158 = peg$classExpectation([
41928
+ const peg$c154 = "start_of_textblock";
41929
+ const peg$c155 = peg$literalExpectation("start_of_textblock", false);
41930
+ const peg$c156 = "end_of_textblock";
41931
+ const peg$c157 = peg$literalExpectation("end_of_textblock", false);
41932
+ const peg$c158 = peg$anyExpectation();
41933
+ const peg$c159 = peg$otherExpectation("whitespace");
41934
+ const peg$c160 = peg$otherExpectation("optional whitespace");
41935
+ const peg$c161 = /^[ \t\n\r]/;
41936
+ const peg$c162 = peg$classExpectation([
41811
41937
  " ",
41812
41938
  " ",
41813
41939
  "\n",
41814
41940
  "\r"
41815
41941
  ], false, false);
41816
- const peg$c159 = peg$otherExpectation("space");
41817
- const peg$c160 = /^[ \t]/;
41818
- const peg$c161 = peg$classExpectation([
41942
+ const peg$c163 = peg$otherExpectation("space");
41943
+ const peg$c164 = /^[ \t]/;
41944
+ const peg$c165 = peg$classExpectation([
41819
41945
  " ",
41820
41946
  " "
41821
41947
  ], false, false);
41822
- const peg$c162 = /^[\n\r]/;
41823
- const peg$c163 = peg$classExpectation([
41948
+ const peg$c166 = /^[\n\r]/;
41949
+ const peg$c167 = peg$classExpectation([
41824
41950
  "\n",
41825
41951
  "\r"
41826
41952
  ], false, false);
41827
- const peg$c164 = "\n";
41828
- const peg$c165 = peg$literalExpectation("\n", false);
41829
- const peg$c166 = "\r";
41830
- const peg$c167 = peg$literalExpectation("\r", false);
41953
+ const peg$c168 = "\n";
41954
+ const peg$c169 = peg$literalExpectation("\n", false);
41955
+ const peg$c170 = "\r";
41956
+ const peg$c171 = peg$literalExpectation("\r", false);
41831
41957
  let peg$currPos = 0;
41832
41958
  let peg$savedPos = 0;
41833
41959
  const peg$posDetailsCache = [
@@ -44015,7 +44141,10 @@ Or set the song key before changing key:
44015
44141
  s0 = peg$parseGridSection();
44016
44142
  if (s0 === peg$FAILED) {
44017
44143
  s0 = peg$parseLySection();
44018
- if (s0 === peg$FAILED) s0 = peg$parseTabSection();
44144
+ if (s0 === peg$FAILED) {
44145
+ s0 = peg$parseTabSection();
44146
+ if (s0 === peg$FAILED) s0 = peg$parseTextblockSection();
44147
+ }
44019
44148
  }
44020
44149
  }
44021
44150
  return s0;
@@ -44944,6 +45073,228 @@ Or set the song key before changing key:
44944
45073
  }
44945
45074
  return s0;
44946
45075
  }
45076
+ function peg$parseTextblockSection() {
45077
+ let s0, s1, s22, s3, s4, s5, s6, s7;
45078
+ s0 = peg$currPos;
45079
+ s1 = peg$parseTextblockStartTag();
45080
+ if (s1 !== peg$FAILED) {
45081
+ s22 = peg$parseNewLine();
45082
+ if (s22 !== peg$FAILED) {
45083
+ s3 = peg$currPos;
45084
+ s4 = [];
45085
+ s5 = peg$currPos;
45086
+ s6 = peg$currPos;
45087
+ peg$silentFails++;
45088
+ s7 = peg$parseTextblockEndTag();
45089
+ peg$silentFails--;
45090
+ if (s7 === peg$FAILED) s6 = void 0;
45091
+ else {
45092
+ peg$currPos = s6;
45093
+ s6 = peg$FAILED;
45094
+ }
45095
+ if (s6 !== peg$FAILED) {
45096
+ s7 = peg$parseSectionCharacter();
45097
+ if (s7 !== peg$FAILED) {
45098
+ s6 = [
45099
+ s6,
45100
+ s7
45101
+ ];
45102
+ s5 = s6;
45103
+ } else {
45104
+ peg$currPos = s5;
45105
+ s5 = peg$FAILED;
45106
+ }
45107
+ } else {
45108
+ peg$currPos = s5;
45109
+ s5 = peg$FAILED;
45110
+ }
45111
+ while (s5 !== peg$FAILED) {
45112
+ s4.push(s5);
45113
+ s5 = peg$currPos;
45114
+ s6 = peg$currPos;
45115
+ peg$silentFails++;
45116
+ s7 = peg$parseTextblockEndTag();
45117
+ peg$silentFails--;
45118
+ if (s7 === peg$FAILED) s6 = void 0;
45119
+ else {
45120
+ peg$currPos = s6;
45121
+ s6 = peg$FAILED;
45122
+ }
45123
+ if (s6 !== peg$FAILED) {
45124
+ s7 = peg$parseSectionCharacter();
45125
+ if (s7 !== peg$FAILED) {
45126
+ s6 = [
45127
+ s6,
45128
+ s7
45129
+ ];
45130
+ s5 = s6;
45131
+ } else {
45132
+ peg$currPos = s5;
45133
+ s5 = peg$FAILED;
45134
+ }
45135
+ } else {
45136
+ peg$currPos = s5;
45137
+ s5 = peg$FAILED;
45138
+ }
45139
+ }
45140
+ if (s4 !== peg$FAILED) s3 = input.substring(s3, peg$currPos);
45141
+ else s3 = s4;
45142
+ if (s3 !== peg$FAILED) {
45143
+ s4 = peg$parseTextblockEndTag();
45144
+ if (s4 !== peg$FAILED) {
45145
+ peg$savedPos = s0;
45146
+ s1 = peg$c128(s1, s3, s4);
45147
+ s0 = s1;
45148
+ } else {
45149
+ peg$currPos = s0;
45150
+ s0 = peg$FAILED;
45151
+ }
45152
+ } else {
45153
+ peg$currPos = s0;
45154
+ s0 = peg$FAILED;
45155
+ }
45156
+ } else {
45157
+ peg$currPos = s0;
45158
+ s0 = peg$FAILED;
45159
+ }
45160
+ } else {
45161
+ peg$currPos = s0;
45162
+ s0 = peg$FAILED;
45163
+ }
45164
+ return s0;
45165
+ }
45166
+ function peg$parseTextblockStartTag() {
45167
+ let s0, s1, s22, s3, s4, s5, s6, s7, s8;
45168
+ s0 = peg$currPos;
45169
+ if (input.charCodeAt(peg$currPos) === 123) {
45170
+ s1 = peg$c43;
45171
+ peg$currPos++;
45172
+ } else {
45173
+ s1 = peg$FAILED;
45174
+ if (peg$silentFails === 0) peg$fail(peg$c44);
45175
+ }
45176
+ if (s1 !== peg$FAILED) {
45177
+ s22 = peg$parse_();
45178
+ if (s22 !== peg$FAILED) {
45179
+ if (input.substr(peg$currPos, 18) === peg$c154) {
45180
+ s3 = peg$c154;
45181
+ peg$currPos += 18;
45182
+ } else {
45183
+ s3 = peg$FAILED;
45184
+ if (peg$silentFails === 0) peg$fail(peg$c155);
45185
+ }
45186
+ if (s3 !== peg$FAILED) {
45187
+ s4 = peg$parseTagSelector();
45188
+ if (s4 === peg$FAILED) s4 = null;
45189
+ if (s4 !== peg$FAILED) {
45190
+ s5 = peg$parse_();
45191
+ if (s5 !== peg$FAILED) {
45192
+ s6 = peg$parseTagColonWithValue();
45193
+ if (s6 === peg$FAILED) s6 = null;
45194
+ if (s6 !== peg$FAILED) {
45195
+ s7 = peg$parse_();
45196
+ if (s7 !== peg$FAILED) {
45197
+ if (input.charCodeAt(peg$currPos) === 125) {
45198
+ s8 = peg$c29;
45199
+ peg$currPos++;
45200
+ } else {
45201
+ s8 = peg$FAILED;
45202
+ if (peg$silentFails === 0) peg$fail(peg$c30);
45203
+ }
45204
+ if (s8 !== peg$FAILED) {
45205
+ peg$savedPos = s0;
45206
+ s1 = peg$c65(s3, s4, s6);
45207
+ s0 = s1;
45208
+ } else {
45209
+ peg$currPos = s0;
45210
+ s0 = peg$FAILED;
45211
+ }
45212
+ } else {
45213
+ peg$currPos = s0;
45214
+ s0 = peg$FAILED;
45215
+ }
45216
+ } else {
45217
+ peg$currPos = s0;
45218
+ s0 = peg$FAILED;
45219
+ }
45220
+ } else {
45221
+ peg$currPos = s0;
45222
+ s0 = peg$FAILED;
45223
+ }
45224
+ } else {
45225
+ peg$currPos = s0;
45226
+ s0 = peg$FAILED;
45227
+ }
45228
+ } else {
45229
+ peg$currPos = s0;
45230
+ s0 = peg$FAILED;
45231
+ }
45232
+ } else {
45233
+ peg$currPos = s0;
45234
+ s0 = peg$FAILED;
45235
+ }
45236
+ } else {
45237
+ peg$currPos = s0;
45238
+ s0 = peg$FAILED;
45239
+ }
45240
+ return s0;
45241
+ }
45242
+ function peg$parseTextblockEndTag() {
45243
+ let s0, s1, s22, s3, s4, s5;
45244
+ s0 = peg$currPos;
45245
+ if (input.charCodeAt(peg$currPos) === 123) {
45246
+ s1 = peg$c43;
45247
+ peg$currPos++;
45248
+ } else {
45249
+ s1 = peg$FAILED;
45250
+ if (peg$silentFails === 0) peg$fail(peg$c44);
45251
+ }
45252
+ if (s1 !== peg$FAILED) {
45253
+ s22 = peg$parse_();
45254
+ if (s22 !== peg$FAILED) {
45255
+ if (input.substr(peg$currPos, 16) === peg$c156) {
45256
+ s3 = peg$c156;
45257
+ peg$currPos += 16;
45258
+ } else {
45259
+ s3 = peg$FAILED;
45260
+ if (peg$silentFails === 0) peg$fail(peg$c157);
45261
+ }
45262
+ if (s3 !== peg$FAILED) {
45263
+ s4 = peg$parse_();
45264
+ if (s4 !== peg$FAILED) {
45265
+ if (input.charCodeAt(peg$currPos) === 125) {
45266
+ s5 = peg$c29;
45267
+ peg$currPos++;
45268
+ } else {
45269
+ s5 = peg$FAILED;
45270
+ if (peg$silentFails === 0) peg$fail(peg$c30);
45271
+ }
45272
+ if (s5 !== peg$FAILED) {
45273
+ peg$savedPos = s0;
45274
+ s1 = peg$c133(s3);
45275
+ s0 = s1;
45276
+ } else {
45277
+ peg$currPos = s0;
45278
+ s0 = peg$FAILED;
45279
+ }
45280
+ } else {
45281
+ peg$currPos = s0;
45282
+ s0 = peg$FAILED;
45283
+ }
45284
+ } else {
45285
+ peg$currPos = s0;
45286
+ s0 = peg$FAILED;
45287
+ }
45288
+ } else {
45289
+ peg$currPos = s0;
45290
+ s0 = peg$FAILED;
45291
+ }
45292
+ } else {
45293
+ peg$currPos = s0;
45294
+ s0 = peg$FAILED;
45295
+ }
45296
+ return s0;
45297
+ }
44947
45298
  function peg$parseSectionCharacter() {
44948
45299
  let s0;
44949
45300
  if (input.length > peg$currPos) {
@@ -44951,7 +45302,7 @@ Or set the song key before changing key:
44951
45302
  peg$currPos++;
44952
45303
  } else {
44953
45304
  s0 = peg$FAILED;
44954
- if (peg$silentFails === 0) peg$fail(peg$c154);
45305
+ if (peg$silentFails === 0) peg$fail(peg$c158);
44955
45306
  }
44956
45307
  return s0;
44957
45308
  }
@@ -44968,7 +45319,7 @@ Or set the song key before changing key:
44968
45319
  peg$silentFails--;
44969
45320
  if (s0 === peg$FAILED) {
44970
45321
  s1 = peg$FAILED;
44971
- if (peg$silentFails === 0) peg$fail(peg$c155);
45322
+ if (peg$silentFails === 0) peg$fail(peg$c159);
44972
45323
  }
44973
45324
  return s0;
44974
45325
  }
@@ -44984,18 +45335,18 @@ Or set the song key before changing key:
44984
45335
  peg$silentFails--;
44985
45336
  if (s0 === peg$FAILED) {
44986
45337
  s1 = peg$FAILED;
44987
- if (peg$silentFails === 0) peg$fail(peg$c156);
45338
+ if (peg$silentFails === 0) peg$fail(peg$c160);
44988
45339
  }
44989
45340
  return s0;
44990
45341
  }
44991
45342
  function peg$parseWhitespaceCharacter() {
44992
45343
  let s0;
44993
- if (peg$c157.test(input.charAt(peg$currPos))) {
45344
+ if (peg$c161.test(input.charAt(peg$currPos))) {
44994
45345
  s0 = input.charAt(peg$currPos);
44995
45346
  peg$currPos++;
44996
45347
  } else {
44997
45348
  s0 = peg$FAILED;
44998
- if (peg$silentFails === 0) peg$fail(peg$c158);
45349
+ if (peg$silentFails === 0) peg$fail(peg$c162);
44999
45350
  }
45000
45351
  return s0;
45001
45352
  }
@@ -45004,21 +45355,21 @@ Or set the song key before changing key:
45004
45355
  peg$silentFails++;
45005
45356
  s0 = peg$currPos;
45006
45357
  s1 = [];
45007
- if (peg$c160.test(input.charAt(peg$currPos))) {
45358
+ if (peg$c164.test(input.charAt(peg$currPos))) {
45008
45359
  s22 = input.charAt(peg$currPos);
45009
45360
  peg$currPos++;
45010
45361
  } else {
45011
45362
  s22 = peg$FAILED;
45012
- if (peg$silentFails === 0) peg$fail(peg$c161);
45363
+ if (peg$silentFails === 0) peg$fail(peg$c165);
45013
45364
  }
45014
45365
  if (s22 !== peg$FAILED) while (s22 !== peg$FAILED) {
45015
45366
  s1.push(s22);
45016
- if (peg$c160.test(input.charAt(peg$currPos))) {
45367
+ if (peg$c164.test(input.charAt(peg$currPos))) {
45017
45368
  s22 = input.charAt(peg$currPos);
45018
45369
  peg$currPos++;
45019
45370
  } else {
45020
45371
  s22 = peg$FAILED;
45021
- if (peg$silentFails === 0) peg$fail(peg$c161);
45372
+ if (peg$silentFails === 0) peg$fail(peg$c165);
45022
45373
  }
45023
45374
  }
45024
45375
  else s1 = peg$FAILED;
@@ -45027,18 +45378,18 @@ Or set the song key before changing key:
45027
45378
  peg$silentFails--;
45028
45379
  if (s0 === peg$FAILED) {
45029
45380
  s1 = peg$FAILED;
45030
- if (peg$silentFails === 0) peg$fail(peg$c159);
45381
+ if (peg$silentFails === 0) peg$fail(peg$c163);
45031
45382
  }
45032
45383
  return s0;
45033
45384
  }
45034
45385
  function peg$parseNewLine() {
45035
45386
  let s0;
45036
- if (peg$c162.test(input.charAt(peg$currPos))) {
45387
+ if (peg$c166.test(input.charAt(peg$currPos))) {
45037
45388
  s0 = input.charAt(peg$currPos);
45038
45389
  peg$currPos++;
45039
45390
  } else {
45040
45391
  s0 = peg$FAILED;
45041
- if (peg$silentFails === 0) peg$fail(peg$c163);
45392
+ if (peg$silentFails === 0) peg$fail(peg$c167);
45042
45393
  }
45043
45394
  if (s0 === peg$FAILED) s0 = peg$parseCarriageReturnLineFeed();
45044
45395
  return s0;
@@ -45068,22 +45419,22 @@ Or set the song key before changing key:
45068
45419
  function peg$parseLineFeed() {
45069
45420
  let s0;
45070
45421
  if (input.charCodeAt(peg$currPos) === 10) {
45071
- s0 = peg$c164;
45422
+ s0 = peg$c168;
45072
45423
  peg$currPos++;
45073
45424
  } else {
45074
45425
  s0 = peg$FAILED;
45075
- if (peg$silentFails === 0) peg$fail(peg$c165);
45426
+ if (peg$silentFails === 0) peg$fail(peg$c169);
45076
45427
  }
45077
45428
  return s0;
45078
45429
  }
45079
45430
  function peg$parseCarriageReturn() {
45080
45431
  let s0;
45081
45432
  if (input.charCodeAt(peg$currPos) === 13) {
45082
- s0 = peg$c166;
45433
+ s0 = peg$c170;
45083
45434
  peg$currPos++;
45084
45435
  } else {
45085
45436
  s0 = peg$FAILED;
45086
- if (peg$silentFails === 0) peg$fail(peg$c167);
45437
+ if (peg$silentFails === 0) peg$fail(peg$c171);
45087
45438
  }
45088
45439
  return s0;
45089
45440
  }
@@ -45478,7 +45829,8 @@ Or set the song key before changing key:
45478
45829
  return header + paragraphs;
45479
45830
  }
45480
45831
  formatHeader() {
45481
- const orderedMetadata = (0, $f9c5006b26957916$export$5c964b66c4a8abfb)(this.song.metadata.all(), this.configuration.metadata);
45832
+ const songMetadata = this.song.getMetadata(this.configuration);
45833
+ const orderedMetadata = (0, $f9c5006b26957916$export$5c964b66c4a8abfb)(songMetadata.ownMetadata(), this.configuration.metadata);
45482
45834
  const metadata = orderedMetadata.map(([key, value]) => {
45483
45835
  if (Array.isArray(value)) return `${key}: ${value.join(",")}`;
45484
45836
  if (typeof value === "undefined" || value === null || value === "") return `${key}:`;
@@ -45489,8 +45841,10 @@ Or set the song key before changing key:
45489
45841
  ` : "";
45490
45842
  }
45491
45843
  formatParagraphs() {
45492
- const { bodyParagraphs, bodyParagraphs: { length: count }, metadata } = this.song;
45493
- const formattedParagraphs = bodyParagraphs.map((paragraph) => this.formatParagraph(paragraph, metadata));
45844
+ const metadata = this.song.getMetadata(this.configuration);
45845
+ const paragraphs = this.song.filterParagraphs(this.song.bodyParagraphs, this.configuration);
45846
+ const count = paragraphs.length;
45847
+ const formattedParagraphs = paragraphs.map((paragraph) => this.formatParagraph(paragraph, metadata));
45494
45848
  const combined = formattedParagraphs.join("\n\n");
45495
45849
  if (formattedParagraphs[count - 1].length === 0) return combined.substring(0, combined.length - 1);
45496
45850
  return combined;
@@ -57847,7 +58201,7 @@ Or set the song key before changing key:
57847
58201
  }
57848
58202
  };
57849
58203
  var $df9247d334a0483e$export$2e2bcd8739ae039 = $df9247d334a0483e$var$ChordsOverWordsParser;
57850
- var $1408adfd7317f0b6$export$2e2bcd8739ae039 = ({ configuration, configuration: { key, cssClasses: c4 }, song, renderBlankLines = false, song: { title, subtitle, metadata }, bodyParagraphs }) => (0, $f9c5006b26957916$export$6ea1b0eb82ead3f)(`
58204
+ var $1408adfd7317f0b6$export$2e2bcd8739ae039 = ({ configuration, configuration: { key, cssClasses: c4 }, song, metadata, renderBlankLines = false, song: { title, subtitle }, bodyParagraphs }) => (0, $f9c5006b26957916$export$6ea1b0eb82ead3f)(`
57851
58205
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(title, () => `<h1 class="${c4.title}">${title}</h1>`)}
57852
58206
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(subtitle, () => `<h2 class="${c4.subtitle}">${subtitle}</h2>`)}
57853
58207
 
@@ -57925,10 +58279,12 @@ Or set the song key before changing key:
57925
58279
  */
57926
58280
  format(song) {
57927
58281
  const { bodyParagraphs, expandedBodyParagraphs } = song;
58282
+ const paragraphs = this.configuration.expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs;
57928
58283
  return this.template({
57929
58284
  song,
58285
+ metadata: song.getMetadata(this.configuration),
57930
58286
  configuration: this.configuration,
57931
- bodyParagraphs: this.configuration.expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs
58287
+ bodyParagraphs: song.filterParagraphs(paragraphs, this.configuration)
57932
58288
  });
57933
58289
  }
57934
58290
  /**
@@ -57992,7 +58348,7 @@ Or set the song key before changing key:
57992
58348
  }
57993
58349
  };
57994
58350
  var $d9bea8c73e9a5034$export$2e2bcd8739ae039 = $d9bea8c73e9a5034$var$HtmlDivFormatter;
57995
- var $396f7048979e89c9$export$2e2bcd8739ae039 = ({ configuration, configuration: { key, cssClasses: c4 }, song, renderBlankLines = false, song: { title, subtitle, bodyLines, metadata }, bodyParagraphs }) => (0, $f9c5006b26957916$export$6ea1b0eb82ead3f)(`
58351
+ var $396f7048979e89c9$export$2e2bcd8739ae039 = ({ configuration, configuration: { key, cssClasses: c4 }, song, metadata, renderBlankLines = false, song: { title, subtitle, bodyLines }, bodyParagraphs }) => (0, $f9c5006b26957916$export$6ea1b0eb82ead3f)(`
57996
58352
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(title, () => `<h1 class="${c4.title}">${title}</h1>`)}
57997
58353
  ${(0, $f9c5006b26957916$export$a55877ca9db47377)(subtitle, () => `<h2 class="${c4.subtitle}">${subtitle}</h2>`)}
57998
58354
 
@@ -58813,7 +59169,7 @@ Or set the song key before changing key:
58813
59169
  */
58814
59170
  format(song, metadata) {
58815
59171
  this.song = song;
58816
- this.metadata = metadata || song.metadata;
59172
+ this.metadata = metadata || song.getMetadata(this.configuration);
58817
59173
  return [
58818
59174
  this.formatHeader(),
58819
59175
  this.formatParagraphs()
@@ -58831,7 +59187,8 @@ Or set the song key before changing key:
58831
59187
  formatParagraphs() {
58832
59188
  const { bodyParagraphs, expandedBodyParagraphs } = this.song;
58833
59189
  const { expandChorusDirective } = this.configuration;
58834
- return (expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs).map((paragraph) => this.formatParagraph(paragraph, this.metadata)).join("\n\n");
59190
+ const paragraphs = expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs;
59191
+ return this.song.filterParagraphs(paragraphs, this.configuration).map((paragraph) => this.formatParagraph(paragraph, this.metadata)).join("\n\n");
58835
59192
  }
58836
59193
  formatParagraph(paragraph, metadata) {
58837
59194
  if (paragraph.isLiteral()) return [
@@ -58930,10 +59287,10 @@ Or set the song key before changing key:
58930
59287
  */
58931
59288
  shouldRenderContent(contentItem) {
58932
59289
  if (!contentItem.condition) return true;
58933
- const metadata = {
58934
- ...this.context.metadata.all(),
58935
- ...this.context.extraMetadata
58936
- };
59290
+ const { metadata: songMetadata, extraMetadata } = this.context;
59291
+ const metadata = new Proxy({}, {
59292
+ get: (_3, prop) => extraMetadata?.[prop] ?? songMetadata.get(prop)
59293
+ });
58937
59294
  return new (0, $bdd8c6196670168a$export$2e2bcd8739ae039)(contentItem.condition, metadata).evaluate();
58938
59295
  }
58939
59296
  /**
@@ -59022,7 +59379,9 @@ Or set the song key before changing key:
59022
59379
 
59023
59380
  ${template}
59024
59381
 
59025
- : ${e2.message}`);
59382
+ : ${e2.message}`, {
59383
+ cause: e2
59384
+ });
59026
59385
  }
59027
59386
  }
59028
59387
  /**
@@ -60089,8 +60448,7 @@ ${template}
60089
60448
  * Removes hyphens from lyrics for lyrics-only mode
60090
60449
  */
60091
60450
  removeHyphens(lyrics) {
60092
- let cleanedLyrics = lyrics;
60093
- cleanedLyrics = lyrics.replace(/\b(\w+)\s*-\s*(\w+)\b/g, "$1$2");
60451
+ let cleanedLyrics = lyrics.replace(/\b(\w+)\s*-\s*(\w+)\b/g, "$1$2");
60094
60452
  cleanedLyrics = cleanedLyrics.replace(/(?:\b(\w+)\s*-\s*$)|(?:-\s*$)|(?:\s+-\s+$)/g, "$1");
60095
60453
  if (/^\s*-\s*$/.test(cleanedLyrics)) return "";
60096
60454
  return cleanedLyrics;
@@ -68762,15 +69120,24 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68762
69120
  };
68763
69121
  var $f6d6d454eefadbec$export$2e2bcd8739ae039 = $f6d6d454eefadbec$var$PdfFormatter;
68764
69122
  var $a5a21ced491ea51f$var$VERSE_LINE_REGEX = /^\[(Verse.*)]/i;
68765
- var $a5a21ced491ea51f$var$CHORUS_LINE_REGEX = /^\[(Chorus)]/i;
69123
+ var $a5a21ced491ea51f$var$CHORUS_LINE_REGEX = /^\[(Chorus.*)]/i;
69124
+ var $a5a21ced491ea51f$var$BRIDGE_LINE_REGEX = /^\[(Bridge.*)]/i;
69125
+ var $a5a21ced491ea51f$var$PART_LINE_REGEX = /^\[(Intro|Outro|Instrumental|Interlude|Solo|Pre-Chorus)( \d+)?]/i;
69126
+ var $a5a21ced491ea51f$var$UG_METADATA_REGEX = /^(\w+):\s*(.+)$/;
68766
69127
  var $a5a21ced491ea51f$var$OTHER_METADATA_LINE_REGEX = /^\[([^\]]+)]/;
69128
+ var $a5a21ced491ea51f$var$REPEAT_NOTATION_REGEX = /\s+(x\d+)\s*$/i;
69129
+ var $a5a21ced491ea51f$var$CHORD_LINE_REGEX = /^\s*((([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?([^/\s]*)(\/([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?)?)(\s|$)+)+(\s|$)+/;
68767
69130
  var $a5a21ced491ea51f$var$startSectionTags = {
68768
69131
  [(0, $dce48cb70c4120bb$export$4b194284baed1659)]: (0, $d21c5c7a462f3c34$export$deca399f8cd9b7dc),
68769
- [(0, $dce48cb70c4120bb$export$8db6c706fc9142b2)]: (0, $d21c5c7a462f3c34$export$4f5168acae064e01)
69132
+ [(0, $dce48cb70c4120bb$export$8db6c706fc9142b2)]: (0, $d21c5c7a462f3c34$export$4f5168acae064e01),
69133
+ [(0, $dce48cb70c4120bb$export$78d8c50e853acd10)]: (0, $d21c5c7a462f3c34$export$3550cc87694d54e0),
69134
+ [(0, $dce48cb70c4120bb$export$609cc0ea1637d6a0)]: (0, $d21c5c7a462f3c34$export$2b9510a208875fc9)
68770
69135
  };
68771
69136
  var $a5a21ced491ea51f$var$endSectionTags = {
68772
69137
  [(0, $dce48cb70c4120bb$export$4b194284baed1659)]: (0, $d21c5c7a462f3c34$export$640d294ab83f9040),
68773
- [(0, $dce48cb70c4120bb$export$8db6c706fc9142b2)]: (0, $d21c5c7a462f3c34$export$473c1a4819e5180b)
69138
+ [(0, $dce48cb70c4120bb$export$8db6c706fc9142b2)]: (0, $d21c5c7a462f3c34$export$473c1a4819e5180b),
69139
+ [(0, $dce48cb70c4120bb$export$78d8c50e853acd10)]: (0, $d21c5c7a462f3c34$export$1c874e9780385ecd),
69140
+ [(0, $dce48cb70c4120bb$export$609cc0ea1637d6a0)]: (0, $d21c5c7a462f3c34$export$189f12065cceb96a)
68774
69141
  };
68775
69142
  var $a5a21ced491ea51f$var$UltimateGuitarParser = class extends (0, $e136d63bbe28a4e0$export$2e2bcd8739ae039) {
68776
69143
  /**
@@ -68781,11 +69148,111 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68781
69148
  constructor({ preserveWhitespace = true } = {}) {
68782
69149
  super({
68783
69150
  preserveWhitespace
68784
- }, false), this.currentSectionType = null;
69151
+ }, false), this.currentSectionType = null, this.pendingRepeatNotation = null;
68785
69152
  }
68786
69153
  parseLine(line) {
68787
69154
  if (this.isSectionEnd()) this.endSection();
68788
- if (!(this.parseVerseDirective(line) || this.parseChorusDirective(line) || this.parseMetadata(line))) super.parseLine(line);
69155
+ const { cleanLine, repeatNotation } = this.extractRepeatNotation(line);
69156
+ this.pendingRepeatNotation = repeatNotation;
69157
+ if (!(this.parseVerseDirective(cleanLine) || this.parseChorusDirective(cleanLine) || this.parseBridgeDirective(cleanLine) || this.parsePartDirective(cleanLine) || this.parseUGMetadata(cleanLine) || this.parseMetadata(cleanLine))) this.parseRegularLine(cleanLine);
69158
+ }
69159
+ parseRegularLine(line) {
69160
+ this.songLine = this.songBuilder.addLine();
69161
+ if (line.trim().length === 0) this.chordLyricsPair = null;
69162
+ else this.parseNonEmptyLine(line);
69163
+ }
69164
+ parseNonEmptyLine(line) {
69165
+ if (!this.songLine) throw new Error("Expected this.songLine to be present");
69166
+ this.chordLyricsPair = this.songLine.addChordLyricsPair();
69167
+ const isChordLine = $a5a21ced491ea51f$var$CHORD_LINE_REGEX.test(line);
69168
+ if (isChordLine && this.hasNextLine()) this.parseChordLineWithNextLine(line);
69169
+ else if (isChordLine) this.parseChordsOnly(line);
69170
+ else this.chordLyricsPair.lyrics = `${line}`;
69171
+ }
69172
+ parseChordLineWithNextLine(chordsLine) {
69173
+ const nextLine = this.readLine();
69174
+ if (this.isNonLyricsLine(nextLine)) {
69175
+ this.parseChordsOnly(chordsLine);
69176
+ this.unreadLine();
69177
+ } else this.parseLyricsWithChords(chordsLine, nextLine);
69178
+ }
69179
+ unreadLine() {
69180
+ this.currentLine -= 1;
69181
+ }
69182
+ isNonLyricsLine(line) {
69183
+ return $a5a21ced491ea51f$var$VERSE_LINE_REGEX.test(line) || $a5a21ced491ea51f$var$CHORUS_LINE_REGEX.test(line) || $a5a21ced491ea51f$var$BRIDGE_LINE_REGEX.test(line) || $a5a21ced491ea51f$var$PART_LINE_REGEX.test(line) || $a5a21ced491ea51f$var$OTHER_METADATA_LINE_REGEX.test(line) || $a5a21ced491ea51f$var$CHORD_LINE_REGEX.test(line) || line.trim().length === 0;
69184
+ }
69185
+ parseChordsOnly(chordsLine) {
69186
+ this.parseLyricsWithChords(chordsLine, "");
69187
+ this.applyRepeatNotation();
69188
+ }
69189
+ parseLyricsWithChords(chordsLine, lyricsLine) {
69190
+ this.processCharacters(chordsLine, lyricsLine);
69191
+ if (!this.chordLyricsPair) throw new Error("Expected this.chordLyricsPair to be present");
69192
+ this.chordLyricsPair.lyrics += lyricsLine.substring(chordsLine.length);
69193
+ this.chordLyricsPair.chords = this.chordLyricsPair.chords.trim();
69194
+ if (this.chordLyricsPair.lyrics) this.chordLyricsPair.lyrics = this.chordLyricsPair.lyrics.trim();
69195
+ this.applyRepeatNotation();
69196
+ }
69197
+ processCharacters(chordsLine, lyricsLine) {
69198
+ for (let c4 = 0, charCount = chordsLine.length; c4 < charCount; c4 += 1) {
69199
+ const chr = chordsLine[c4];
69200
+ const nextChar = chordsLine[c4 + 1];
69201
+ const isWhiteSpace = /\s/.test(chr);
69202
+ this.addCharacter(chr, nextChar);
69203
+ if (!this.chordLyricsPair) throw new Error("Expected this.chordLyricsPair to be present");
69204
+ this.chordLyricsPair.lyrics += lyricsLine[c4] || "";
69205
+ this.processingText = !isWhiteSpace;
69206
+ }
69207
+ }
69208
+ addCharacter(chr, nextChar) {
69209
+ const isWhiteSpace = /\s/.test(chr);
69210
+ if (!isWhiteSpace) this.ensureChordLyricsPairInitialized();
69211
+ if (!isWhiteSpace || this.shouldAddCharacterToChords(nextChar)) {
69212
+ if (!this.chordLyricsPair) throw new Error("Expected this.chordLyricsPair to be present");
69213
+ this.chordLyricsPair.chords += chr;
69214
+ }
69215
+ }
69216
+ shouldAddCharacterToChords(nextChar) {
69217
+ return !!(nextChar && /\s/.test(nextChar) && this.preserveWhitespace);
69218
+ }
69219
+ ensureChordLyricsPairInitialized() {
69220
+ if (!this.processingText) {
69221
+ if (!this.songLine) throw new Error("Expected this.songLine to be present");
69222
+ this.chordLyricsPair = this.songLine.addChordLyricsPair();
69223
+ this.processingText = true;
69224
+ }
69225
+ }
69226
+ extractRepeatNotation(line) {
69227
+ const match = line.match($a5a21ced491ea51f$var$REPEAT_NOTATION_REGEX);
69228
+ if (match) return {
69229
+ cleanLine: line.replace($a5a21ced491ea51f$var$REPEAT_NOTATION_REGEX, ""),
69230
+ repeatNotation: match[1]
69231
+ };
69232
+ return {
69233
+ cleanLine: line,
69234
+ repeatNotation: null
69235
+ };
69236
+ }
69237
+ applyRepeatNotation() {
69238
+ if (!this.pendingRepeatNotation || !this.songLine) return;
69239
+ const lastItem = this.songLine.items[this.songLine.items.length - 1];
69240
+ if (lastItem && "lyrics" in lastItem) lastItem.lyrics = (lastItem.lyrics || "") + this.pendingRepeatNotation;
69241
+ this.pendingRepeatNotation = null;
69242
+ }
69243
+ parseUGMetadata(line) {
69244
+ const match = line.match($a5a21ced491ea51f$var$UG_METADATA_REGEX);
69245
+ if (!match) return false;
69246
+ const tagName = match[1].toLowerCase();
69247
+ if (!(0, $7251dad5f4a4c35f$export$57ecf0dc09effb3).includes(tagName)) return false;
69248
+ const value = tagName === (0, $d21c5c7a462f3c34$export$866f445d49bad88e) ? this.extractCapoValue(match[2]) : match[2].trim();
69249
+ this.startNewLine();
69250
+ this.songBuilder.addTag(new (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039)(tagName, value));
69251
+ return true;
69252
+ }
69253
+ extractCapoValue(rawValue) {
69254
+ const [, capoNumber] = rawValue.match(/^(\d+)/) || [];
69255
+ return capoNumber || rawValue.trim();
68789
69256
  }
68790
69257
  parseVerseDirective(line) {
68791
69258
  const match = line.match($a5a21ced491ea51f$var$VERSE_LINE_REGEX);
@@ -68803,6 +69270,22 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68803
69270
  this.startSection((0, $dce48cb70c4120bb$export$8db6c706fc9142b2), label);
68804
69271
  return true;
68805
69272
  }
69273
+ parseBridgeDirective(line) {
69274
+ const match = line.match($a5a21ced491ea51f$var$BRIDGE_LINE_REGEX);
69275
+ if (!match) return false;
69276
+ this.startNewLine();
69277
+ const label = match[1];
69278
+ this.startSection((0, $dce48cb70c4120bb$export$78d8c50e853acd10), label);
69279
+ return true;
69280
+ }
69281
+ parsePartDirective(line) {
69282
+ const match = line.match($a5a21ced491ea51f$var$PART_LINE_REGEX);
69283
+ if (!match) return false;
69284
+ this.startNewLine();
69285
+ const label = match[1] + (match[2] || "");
69286
+ this.startSection((0, $dce48cb70c4120bb$export$609cc0ea1637d6a0), label);
69287
+ return true;
69288
+ }
68806
69289
  parseMetadata(line) {
68807
69290
  const match = line.match($a5a21ced491ea51f$var$OTHER_METADATA_LINE_REGEX);
68808
69291
  if (!match) return false;
@@ -68830,7 +69313,11 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68830
69313
  }
68831
69314
  endSection({ addNewLine = true } = {}) {
68832
69315
  if (this.currentSectionType !== null && this.currentSectionType in $a5a21ced491ea51f$var$endSectionTags) {
68833
- this.songBuilder.addTag(new (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039)($a5a21ced491ea51f$var$endSectionTags[this.currentSectionType]));
69316
+ if (this.songLine && this.songLine.isEmpty()) this.songLine.addTag(new (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039)($a5a21ced491ea51f$var$endSectionTags[this.currentSectionType]));
69317
+ else {
69318
+ const endTagLine = this.songBuilder.addLine();
69319
+ endTagLine.addTag(new (0, $7251dad5f4a4c35f$export$2e2bcd8739ae039)($a5a21ced491ea51f$var$endSectionTags[this.currentSectionType]));
69320
+ }
68834
69321
  if (addNewLine) this.startNewLine();
68835
69322
  }
68836
69323
  this.songBuilder.setCurrentProperties((0, $dce48cb70c4120bb$export$c53d0f541b41b88e));
@@ -68841,7 +69328,7 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68841
69328
  }
68842
69329
  };
68843
69330
  var $a5a21ced491ea51f$export$2e2bcd8739ae039 = $a5a21ced491ea51f$var$UltimateGuitarParser;
68844
- var $ae92e002ce14f11a$export$2e2bcd8739ae039 = "13.2.2";
69331
+ var $ae92e002ce14f11a$export$2e2bcd8739ae039 = "14.1.0";
68845
69332
  var $a3816b486f741c00$exports = {};
68846
69333
  var $892913528e7f60f9$export$2e2bcd8739ae039 = {
68847
69334
  CHORUS: $dce48cb70c4120bb$export$8db6c706fc9142b2,
@@ -68870,6 +69357,7 @@ AjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG
68870
69357
  SoftLineBreak: $4b6dd3e4b817bd81$export$2e2bcd8739ae039,
68871
69358
  Song: $c53141c05fae8382$export$2e2bcd8739ae039,
68872
69359
  TAB: $dce48cb70c4120bb$export$f1c9dd0f5207dd5e,
69360
+ TEXTBLOCK: $dce48cb70c4120bb$export$5a2cf64ea612936a,
68873
69361
  Tag: $7251dad5f4a4c35f$export$2e2bcd8739ae039,
68874
69362
  Ternary: $15f1d40e3d1ed3a0$export$2e2bcd8739ae039,
68875
69363
  TextFormatter: $992b73e4d56a0aef$export$2e2bcd8739ae039,
@@ -68931,7 +69419,7 @@ html2canvas/dist/html2canvas.js:
68931
69419
  ***************************************************************************** *)
68932
69420
 
68933
69421
  dompurify/dist/purify.es.mjs:
68934
- (*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE *)
69422
+ (*! @license DOMPurify 3.3.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.2/LICENSE *)
68935
69423
 
68936
69424
  svg-pathdata/lib/SVGPathData.module.js:
68937
69425
  (*! *****************************************************************************
@@ -68953,7 +69441,7 @@ jspdf/dist/jspdf.es.min.js:
68953
69441
  (** @license
68954
69442
  *
68955
69443
  * jsPDF - PDF Document creation from JavaScript
68956
- * Version 4.1.0 Built on 2026-02-02T10:38:25.210Z
69444
+ * Version 4.2.0 Built on 2026-02-19T09:43:09.013Z
68957
69445
  * CommitID 00000000
68958
69446
  *
68959
69447
  * Copyright (c) 2010-2025 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF