@ovnonvo/abc-editor 0.3.4 → 0.3.5

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.
@@ -1,303 +1,307 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode('@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-blue-600:oklch(54.6% .245 262.881);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-950:oklch(12.9% .042 264.695);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-full{height:100%}.h-screen{height:100vh}.w-full{width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.bg-blue-600{background-color:var(--color-blue-600)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-950{background-color:var(--color-slate-950)}.p-3{padding:calc(var(--spacing)*3)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.font-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.text-slate-200{color:var(--color-slate-200)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}.\\[foo\\:bar\\]{foo:bar}@media(hover:hover){.hover\\:bg-slate-700:hover{background-color:var(--color-slate-700)}}}*{box-sizing:border-box}body{margin:0;padding:0}:root{--abc-ink:#1a1a1a;--abc-key:#06c;--abc-value:#996300;--abc-lyrics-key:#c06;--abc-lyrics-value:#b30059;--abc-note:#000;--abc-octave-high:#00994d;--abc-octave-low:#60c;--abc-rest:#666;--abc-rest-muted:#999;--abc-accidental:#b35900;--abc-duration-long:#cc5200;--abc-duration-short:#09c;--abc-duration-fraction:#c90;--abc-broken:#00b359;--abc-bar:#0080cc;--abc-bar-double:#06c;--abc-chord:#c09;--abc-slur-0:#cc004d;--abc-slur-1:#cc8000;--abc-slur-2:#0080cc;--abc-slur-3:#00b359;--abc-slur-4:#70c;--abc-tuplet:#00b359;--abc-tie:#c06;--abc-tie-dotted:#cc0080;--abc-ornament:#56c;--abc-chord-symbol:#00997a;--abc-annotation:#c80;--abc-decoration:#86c;--abc-grace:#66b300;--abc-volta:#c60;--abc-inline-bracket:#666;--abc-inline-key:#06c;--abc-inline-value:#960;--abc-comment:#999}[data-theme=dark]{--abc-ink:#e8f1ff;--abc-key:#7ad7ff;--abc-value:#ffd48a;--abc-lyrics-key:#ff7ba1;--abc-lyrics-value:#ffc8d8;--abc-note:#f8fbff;--abc-octave-high:#73f8c4;--abc-octave-low:#c7b3ff;--abc-rest:#8ca3b8;--abc-rest-muted:#596779;--abc-accidental:#f2c079;--abc-duration-long:#ffa25f;--abc-duration-short:#6edff6;--abc-duration-fraction:#ffe38f;--abc-broken:#7be495;--abc-bar:#79cfff;--abc-bar-double:#4aafff;--abc-chord:#ff8ccf;--abc-slur-0:#ff92b2;--abc-slur-1:#ffd77a;--abc-slur-2:#7ed4ff;--abc-slur-3:#92f3c6;--abc-slur-4:#c6a9ff;--abc-tuplet:#82f0a2;--abc-tie:#f07fb3;--abc-tie-dotted:#ff9ecf;--abc-ornament:#9fb0ff;--abc-chord-symbol:#63f5d3;--abc-annotation:#ffd88a;--abc-decoration:#d1a6ff;--abc-grace:#a4f28f;--abc-volta:#f9a15a;--abc-inline-bracket:#8ca7c0;--abc-inline-key:#7ad7ff;--abc-inline-value:#ffdcb2;--abc-comment:#7b8797}.abc-preview svg text{fill:#000!important}.abc-preview[data-theme=dark] svg text{fill:#fff!important}textarea::placeholder{color:#999;opacity:1}[data-theme=dark] textarea::placeholder{color:#64748b}.abc-meta-key{color:var(--abc-key);font-weight:600}.abc-meta-value{color:var(--abc-value)}.abc-lyrics-key{color:var(--abc-lyrics-key);font-weight:600}.abc-lyrics-value{color:var(--abc-lyrics-value)}.abc-note{color:var(--abc-note)}.abc-octave-high{color:var(--abc-octave-high);font-weight:600}.abc-octave-low{color:var(--abc-octave-low);font-weight:600}.abc-rest{color:var(--abc-rest)}.abc-rest-invisible{color:var(--abc-rest-muted);opacity:.5}.abc-accidental{color:var(--abc-accidental)}.abc-duration{font-weight:600}.abc-duration-long{color:var(--abc-duration-long)}.abc-duration-short{color:var(--abc-duration-short)}.abc-duration-fraction{color:var(--abc-duration-fraction)}.abc-broken-rhythm{color:var(--abc-broken);font-weight:700}.abc-bar{color:var(--abc-bar);font-weight:600}.abc-bar-double{color:var(--abc-bar-double);font-weight:900}.abc-chord{color:var(--abc-chord)}.abc-slur{font-weight:700}.abc-slur-level-0{color:var(--abc-slur-0)}.abc-slur-level-1{color:var(--abc-slur-1)}.abc-slur-level-2{color:var(--abc-slur-2)}.abc-slur-level-3{color:var(--abc-slur-3)}.abc-slur-level-4{color:var(--abc-slur-4)}.abc-tuplet{color:var(--abc-tuplet);font-weight:700}.abc-tie{color:var(--abc-tie);font-weight:600}.abc-tie-dotted{color:var(--abc-tie-dotted)}.abc-ornament{color:var(--abc-ornament);font-weight:700}.abc-chord-symbol{color:var(--abc-chord-symbol);font-weight:700}.abc-annotation{color:var(--abc-annotation);font-style:italic;font-weight:600}.abc-decoration{color:var(--abc-decoration);font-weight:700}.abc-grace-note{color:var(--abc-grace);font-weight:600}.abc-volta-bracket{color:var(--abc-volta);font-weight:700}.abc-inline-field-bracket{color:var(--abc-inline-bracket)}.abc-inline-field-key{color:var(--abc-inline-key);font-weight:600}.abc-inline-field-value{color:var(--abc-inline-value)}.abc-comment{color:var(--abc-comment);font-style:italic}.abc-text{color:var(--abc-ink)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}')),document.head.appendChild(a)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- import { jsx as p, jsxs as v } from "react/jsx-runtime";
3
- import { useState as R, useCallback as C, useEffect as P, useRef as w, useMemo as V } from "react";
2
+ import { jsx as h, jsxs as x } from "react/jsx-runtime";
3
+ import { useState as R, useCallback as I, useEffect as P, useRef as w, useMemo as V } from "react";
4
4
  const G = (e) => e.split(`
5
- `).map((r, n) => n + 1).join(`
6
- `), k = /^([ABCDFGHIKLMmNOPQRrSsTUVWwXZ]:)(.*)$/, E = /[A-Ga-g]/, z = /[\^_=]/, Q = /[',]/, X = /\|[:|\]]?|:?\|/, Y = /[\\[\]]/, J = /[()]/, Z = /^\(\d+$/, O = /^\/?\d+(\/\d+)?$/, D = /[zZx]/, M = /^\.?-$/, q = /[.~HLMOPSTuv]/, ee = /^"[^"]*"$/, W = /^"[\^_<>@][^"]*"$/, te = /^![^!]+!$/, ne = /^\{[^}]+\}$/, re = /^\[\d+$/, se = /^\[([ABCDFGHIKLMmNOPQRrSsTUVWwXZ]):([^\]]*)\]$/, oe = /^[<>]+$/, le = /^%.*$/, d = (e) => e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"), ae = (e, t) => {
7
- const r = e[t];
8
- if (r !== "|" && r !== ":")
5
+ `).map((t, r) => r + 1).join(`
6
+ `), S = /^([ABCDFGHIKLMmNOPQRrSsTUVWwXZ]:)(.*)$/, E = /[A-Ga-g]/, z = /[\^_=]/, Q = /[',]/, q = /\|[:|\]]?|:?\|/, X = /[\\[\]]/, Y = /[()]/, J = /^\(\d+$/, O = /^(\/+|\d+(\/\d+)?|\/?\d+(\/\d+)?)$/, D = /[zZx]/, M = /^\.?-$/, Z = /[.~HLMOPSTuv]/, ee = /^"[^"]*"$/, W = /^"[\^_<>@][^"]*"$/, te = /^![^!]+!$/, ne = /^\{[^}]+\}$/, re = /^\[\d+$/, se = /^\[([ABCDFGHIKLMmNOPQRrSsTUVWwXZ]):([^\]]*)\]$/, le = /^[<>]+$/, oe = /^%.*$/, p = (e) => e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"), ae = (e, n) => {
7
+ const t = e[n];
8
+ if (t !== "|" && t !== ":")
9
9
  return null;
10
- let n = r, o = t + 1;
11
- for (; o < e.length && (e[o] === "|" || e[o] === ":" || e[o] === "]"); )
12
- n += e[o], o++;
13
- return X.test(n) ? {
14
- html: `<span class="${n === "||" ? "abc-bar-double" : "abc-bar"}">${d(n)}</span>`,
15
- nextIndex: o
10
+ let r = t, s = n + 1;
11
+ for (; s < e.length && (e[s] === "|" || e[s] === ":" || e[s] === "]"); )
12
+ r += e[s], s++;
13
+ return q.test(r) ? {
14
+ html: `<span class="${r === "||" ? "abc-bar-double" : "abc-bar"}">${p(r)}</span>`,
15
+ nextIndex: s
16
16
  } : null;
17
- }, ie = (e, t) => {
18
- const r = e[t];
19
- return z.test(r) ? {
20
- html: `<span class="abc-accidental">${d(r)}</span>`,
21
- nextIndex: t + 1
17
+ }, ie = (e, n) => {
18
+ const t = e[n];
19
+ return z.test(t) ? {
20
+ html: `<span class="abc-accidental">${p(t)}</span>`,
21
+ nextIndex: n + 1
22
22
  } : null;
23
- }, ce = (e, t, r) => {
24
- const n = e[t];
25
- if (!J.test(n))
23
+ }, ce = (e, n, t) => {
24
+ const r = e[n];
25
+ if (!Y.test(r))
26
26
  return null;
27
- if (n === "(") {
28
- if (t + 1 < e.length && /\d/.test(e[t + 1])) {
29
- let o = n, s = t + 1;
30
- for (; s < e.length && /\d/.test(e[s]); )
31
- o += e[s], s++;
32
- if (Z.test(o))
27
+ if (r === "(") {
28
+ if (n + 1 < e.length && /\d/.test(e[n + 1])) {
29
+ let s = r, o = n + 1;
30
+ for (; o < e.length && /\d/.test(e[o]); )
31
+ s += e[o], o++;
32
+ if (J.test(s))
33
33
  return {
34
- html: `<span class="abc-tuplet">${d(o)}</span>`,
35
- nextIndex: s,
34
+ html: `<span class="abc-tuplet">${p(s)}</span>`,
35
+ nextIndex: o,
36
36
  slurLevelDelta: 0
37
37
  };
38
38
  }
39
39
  return {
40
- html: `<span class="abc-slur abc-slur-level-${r % 5}">${d(n)}</span>`,
41
- nextIndex: t + 1,
40
+ html: `<span class="abc-slur abc-slur-level-${t % 5}">${p(r)}</span>`,
41
+ nextIndex: n + 1,
42
42
  slurLevelDelta: 1
43
43
  };
44
- } else if (n === ")")
44
+ } else if (r === ")")
45
45
  return {
46
- html: `<span class="abc-slur abc-slur-level-${Math.max(0, r - 1) % 5}">${d(n)}</span>`,
47
- nextIndex: t + 1,
46
+ html: `<span class="abc-slur abc-slur-level-${Math.max(0, t - 1) % 5}">${p(r)}</span>`,
47
+ nextIndex: n + 1,
48
48
  slurLevelDelta: -1
49
49
  };
50
50
  return null;
51
- }, ue = (e, t) => {
52
- const r = e[t];
53
- if (!E.test(r))
51
+ }, ue = (e, n) => {
52
+ const t = e[n];
53
+ if (!E.test(t))
54
54
  return null;
55
- let n = `<span class="abc-note">${d(r)}</span>`, o = t + 1, s = "";
56
- for (; o < e.length && Q.test(e[o]); )
57
- s += e[o], o++;
58
- if (s) {
59
- const i = s[0] === "'" ? "abc-octave-high" : "abc-octave-low";
60
- n += `<span class="${i}">${d(s)}</span>`;
55
+ let r = `<span class="abc-note">${p(t)}</span>`, s = n + 1, o = "";
56
+ for (; s < e.length && Q.test(e[s]); )
57
+ o += e[s], s++;
58
+ if (o) {
59
+ const u = o[0] === "'" ? "abc-octave-high" : "abc-octave-low";
60
+ r += `<span class="${u}">${p(o)}</span>`;
61
61
  }
62
- let a = "";
63
- if (o < e.length && (e[o] === "/" || /\d/.test(e[o]))) {
64
- for (e[o] === "/" && (a += e[o], o++); o < e.length && /\d/.test(e[o]); )
65
- a += e[o], o++;
66
- if (o < e.length && e[o] === "/")
67
- for (a += e[o], o++; o < e.length && /\d/.test(e[o]); )
68
- a += e[o], o++;
69
- if (a && O.test(a)) {
70
- let i = "abc-duration";
71
- a.startsWith("/") ? i += " abc-duration-short" : a.includes("/") ? i += " abc-duration-fraction" : i += " abc-duration-long", n += `<span class="${i}">${d(a)}</span>`;
72
- }
62
+ let l = "";
63
+ const c = s;
64
+ if (s < e.length && (e[s] === "/" || /\d/.test(e[s]))) {
65
+ for (e[s] === "/" && (l += e[s], s++); s < e.length && /\d/.test(e[s]); )
66
+ l += e[s], s++;
67
+ if (s < e.length && e[s] === "/")
68
+ for (l += e[s], s++; s < e.length && /\d/.test(e[s]); )
69
+ l += e[s], s++;
70
+ if (l && O.test(l)) {
71
+ let u = "abc-duration";
72
+ l.startsWith("/") ? u += " abc-duration-short" : l.includes("/") ? u += " abc-duration-fraction" : u += " abc-duration-long", r += `<span class="${u}">${p(l)}</span>`;
73
+ } else
74
+ s = c;
73
75
  }
74
76
  return {
75
- html: n,
76
- nextIndex: o
77
+ html: r,
78
+ nextIndex: s
77
79
  };
78
- }, de = (e, t) => {
79
- const r = e[t];
80
- return Y.test(r) ? {
81
- html: `<span class="abc-chord">${d(r)}</span>`,
82
- nextIndex: t + 1
80
+ }, de = (e, n) => {
81
+ const t = e[n];
82
+ return X.test(t) ? {
83
+ html: `<span class="abc-chord">${p(t)}</span>`,
84
+ nextIndex: n + 1
83
85
  } : null;
84
- }, pe = (e, t) => {
85
- const r = e[t];
86
- if (!D.test(r))
86
+ }, pe = (e, n) => {
87
+ const t = e[n];
88
+ if (!D.test(t))
87
89
  return null;
88
- let o = `<span class="${r === "x" ? "abc-rest-invisible" : "abc-rest"}">${d(r)}</span>`, s = t + 1, a = "";
89
- if (s < e.length && (e[s] === "/" || /\d/.test(e[s]))) {
90
- for (e[s] === "/" && (a += e[s], s++); s < e.length && /\d/.test(e[s]); )
91
- a += e[s], s++;
92
- if (s < e.length && e[s] === "/")
93
- for (a += e[s], s++; s < e.length && /\d/.test(e[s]); )
94
- a += e[s], s++;
95
- if (a && O.test(a)) {
96
- let i = "abc-duration";
97
- a.startsWith("/") ? i += " abc-duration-short" : a.includes("/") ? i += " abc-duration-fraction" : i += " abc-duration-long", o += `<span class="${i}">${d(a)}</span>`;
98
- }
90
+ let s = `<span class="${t === "x" ? "abc-rest-invisible" : "abc-rest"}">${p(t)}</span>`, o = n + 1, l = "";
91
+ const c = o;
92
+ if (o < e.length && (e[o] === "/" || /\d/.test(e[o]))) {
93
+ for (e[o] === "/" && (l += e[o], o++); o < e.length && /\d/.test(e[o]); )
94
+ l += e[o], o++;
95
+ if (o < e.length && e[o] === "/")
96
+ for (l += e[o], o++; o < e.length && /\d/.test(e[o]); )
97
+ l += e[o], o++;
98
+ if (l && O.test(l)) {
99
+ let u = "abc-duration";
100
+ l.startsWith("/") ? u += " abc-duration-short" : l.includes("/") ? u += " abc-duration-fraction" : u += " abc-duration-long", s += `<span class="${u}">${p(l)}</span>`;
101
+ } else
102
+ o = c;
99
103
  }
100
104
  return {
101
- html: o,
102
- nextIndex: s
105
+ html: s,
106
+ nextIndex: o
103
107
  };
104
- }, he = (e, t) => {
105
- const r = e[t];
106
- return r === "." && t + 1 < e.length && e[t + 1] === "-" && M.test(".-") ? {
107
- html: `<span class="abc-tie abc-tie-dotted">${d(".-")}</span>`,
108
- nextIndex: t + 2
109
- } : r === "-" && M.test(r) ? {
110
- html: `<span class="abc-tie">${d(r)}</span>`,
111
- nextIndex: t + 1
108
+ }, he = (e, n) => {
109
+ const t = e[n];
110
+ return t === "." && n + 1 < e.length && e[n + 1] === "-" && M.test(".-") ? {
111
+ html: `<span class="abc-tie abc-tie-dotted">${p(".-")}</span>`,
112
+ nextIndex: n + 2
113
+ } : t === "-" && M.test(t) ? {
114
+ html: `<span class="abc-tie">${p(t)}</span>`,
115
+ nextIndex: n + 1
112
116
  } : null;
113
- }, fe = (e, t) => {
114
- const r = e[t];
115
- return !q.test(r) || r === "." && t + 1 < e.length && e[t + 1] === "-" ? null : {
116
- html: `<span class="abc-ornament">${d(r)}</span>`,
117
- nextIndex: t + 1
117
+ }, fe = (e, n) => {
118
+ const t = e[n];
119
+ return !Z.test(t) || t === "." && n + 1 < e.length && e[n + 1] === "-" ? null : {
120
+ html: `<span class="abc-ornament">${p(t)}</span>`,
121
+ nextIndex: n + 1
118
122
  };
119
- }, ge = (e, t) => {
120
- if (e[t] !== '"')
123
+ }, ge = (e, n) => {
124
+ if (e[n] !== '"')
121
125
  return null;
122
- let n = t + 1;
123
- for (; n < e.length && e[n] !== '"'; )
124
- n++;
125
- if (n >= e.length)
126
+ let r = n + 1;
127
+ for (; r < e.length && e[r] !== '"'; )
128
+ r++;
129
+ if (r >= e.length)
126
130
  return null;
127
- const o = e.substring(t, n + 1);
128
- return W.test(o) ? {
129
- html: `<span class="abc-annotation">${d(o)}</span>`,
130
- nextIndex: n + 1
131
+ const s = e.substring(n, r + 1);
132
+ return W.test(s) ? {
133
+ html: `<span class="abc-annotation">${p(s)}</span>`,
134
+ nextIndex: r + 1
131
135
  } : null;
132
- }, me = (e, t) => {
133
- if (e[t] !== '"')
136
+ }, me = (e, n) => {
137
+ if (e[n] !== '"')
134
138
  return null;
135
- let n = t + 1;
136
- for (; n < e.length && e[n] !== '"'; )
137
- n++;
138
- if (n >= e.length)
139
+ let r = n + 1;
140
+ for (; r < e.length && e[r] !== '"'; )
141
+ r++;
142
+ if (r >= e.length)
139
143
  return null;
140
- const o = e.substring(t, n + 1);
141
- return W.test(o) || !ee.test(o) ? null : {
142
- html: `<span class="abc-chord-symbol">${d(o)}</span>`,
143
- nextIndex: n + 1
144
+ const s = e.substring(n, r + 1);
145
+ return W.test(s) || !ee.test(s) ? null : {
146
+ html: `<span class="abc-chord-symbol">${p(s)}</span>`,
147
+ nextIndex: r + 1
144
148
  };
145
- }, be = (e, t) => {
146
- if (e[t] !== "!")
149
+ }, be = (e, n) => {
150
+ if (e[n] !== "!")
147
151
  return null;
148
- let n = t + 1;
149
- for (; n < e.length && e[n] !== "!"; )
150
- n++;
151
- if (n >= e.length)
152
+ let r = n + 1;
153
+ for (; r < e.length && e[r] !== "!"; )
154
+ r++;
155
+ if (r >= e.length)
152
156
  return null;
153
- const o = e.substring(t, n + 1);
154
- return te.test(o) ? {
155
- html: `<span class="abc-decoration">${d(o)}</span>`,
156
- nextIndex: n + 1
157
+ const s = e.substring(n, r + 1);
158
+ return te.test(s) ? {
159
+ html: `<span class="abc-decoration">${p(s)}</span>`,
160
+ nextIndex: r + 1
157
161
  } : null;
158
- }, ve = (e, t) => {
159
- if (e[t] !== "{")
162
+ }, ve = (e, n) => {
163
+ if (e[n] !== "{")
160
164
  return null;
161
- let n = t + 1;
162
- for (; n < e.length && e[n] !== "}"; )
163
- n++;
164
- if (n >= e.length)
165
+ let r = n + 1;
166
+ for (; r < e.length && e[r] !== "}"; )
167
+ r++;
168
+ if (r >= e.length)
165
169
  return null;
166
- const o = e.substring(t, n + 1);
167
- return ne.test(o) ? {
168
- html: `<span class="abc-grace-note">${d(o)}</span>`,
169
- nextIndex: n + 1
170
+ const s = e.substring(n, r + 1);
171
+ return ne.test(s) ? {
172
+ html: `<span class="abc-grace-note">${p(s)}</span>`,
173
+ nextIndex: r + 1
170
174
  } : null;
171
- }, xe = (e, t) => {
172
- if (e[t] !== "[")
175
+ }, xe = (e, n) => {
176
+ if (e[n] !== "[")
173
177
  return null;
174
- let n = t + 1;
175
- for (; n < e.length && e[n] !== "]"; )
176
- n++;
177
- if (n >= e.length)
178
+ let r = n + 1;
179
+ for (; r < e.length && e[r] !== "]"; )
180
+ r++;
181
+ if (r >= e.length)
178
182
  return null;
179
- const s = e.substring(t, n + 1).match(se);
180
- if (!s)
183
+ const o = e.substring(n, r + 1).match(se);
184
+ if (!o)
181
185
  return null;
182
- const [, a, i] = s;
186
+ const [, l, c] = o;
183
187
  return {
184
- html: `<span class="abc-inline-field-bracket">[</span><span class="abc-inline-field-key">${d(a)}:</span><span class="abc-inline-field-value">${d(i)}</span><span class="abc-inline-field-bracket">]</span>`,
185
- nextIndex: n + 1
188
+ html: `<span class="abc-inline-field-bracket">[</span><span class="abc-inline-field-key">${p(l)}:</span><span class="abc-inline-field-value">${p(c)}</span><span class="abc-inline-field-bracket">]</span>`,
189
+ nextIndex: r + 1
186
190
  };
187
- }, ye = (e, t) => {
188
- if (e[t] !== "[" || t + 1 >= e.length || !/\d/.test(e[t + 1]))
191
+ }, ye = (e, n) => {
192
+ if (e[n] !== "[" || n + 1 >= e.length || !/\d/.test(e[n + 1]))
189
193
  return null;
190
- let n = t + 1;
191
- for (; n < e.length && /\d/.test(e[n]); )
192
- n++;
193
- const o = e.substring(t, n);
194
- return re.test(o) ? {
195
- html: `<span class="abc-volta-bracket">${d(o)}</span>`,
196
- nextIndex: n
194
+ let r = n + 1;
195
+ for (; r < e.length && /\d/.test(e[r]); )
196
+ r++;
197
+ const s = e.substring(n, r);
198
+ return re.test(s) ? {
199
+ html: `<span class="abc-volta-bracket">${p(s)}</span>`,
200
+ nextIndex: r
197
201
  } : null;
198
- }, Be = (e, t) => {
199
- const r = e[t];
200
- if (r !== ">" && r !== "<")
202
+ }, Be = (e, n) => {
203
+ const t = e[n];
204
+ if (t !== ">" && t !== "<")
201
205
  return null;
202
- let n = t + 1;
203
- for (; n < e.length && e[n] === r; )
204
- n++;
205
- const o = e.substring(t, n);
206
- return oe.test(o) ? {
207
- html: `<span class="abc-broken-rhythm">${d(o)}</span>`,
208
- nextIndex: n
206
+ let r = n + 1;
207
+ for (; r < e.length && e[r] === t; )
208
+ r++;
209
+ const s = e.substring(n, r);
210
+ return le.test(s) ? {
211
+ html: `<span class="abc-broken-rhythm">${p(s)}</span>`,
212
+ nextIndex: r
209
213
  } : null;
210
214
  }, Te = (e) => {
211
- let t = "", r = 0, n = 0;
212
- for (; r < e.length; ) {
213
- const o = ae(e, r);
214
- if (o) {
215
- t += o.html, r = o.nextIndex;
215
+ let n = "", t = 0, r = 0;
216
+ for (; t < e.length; ) {
217
+ const s = ae(e, t);
218
+ if (s) {
219
+ n += s.html, t = s.nextIndex;
216
220
  continue;
217
221
  }
218
- const s = be(e, r);
219
- if (s) {
220
- t += s.html, r = s.nextIndex;
222
+ const o = be(e, t);
223
+ if (o) {
224
+ n += o.html, t = o.nextIndex;
221
225
  continue;
222
226
  }
223
- const a = ve(e, r);
224
- if (a) {
225
- t += a.html, r = a.nextIndex;
227
+ const l = ve(e, t);
228
+ if (l) {
229
+ n += l.html, t = l.nextIndex;
226
230
  continue;
227
231
  }
228
- const i = ie(e, r);
229
- if (i) {
230
- t += i.html, r = i.nextIndex;
232
+ const c = ie(e, t);
233
+ if (c) {
234
+ n += c.html, t = c.nextIndex;
231
235
  continue;
232
236
  }
233
- const x = fe(e, r);
234
- if (x) {
235
- t += x.html, r = x.nextIndex;
237
+ const u = fe(e, t);
238
+ if (u) {
239
+ n += u.html, t = u.nextIndex;
236
240
  continue;
237
241
  }
238
- const g = ge(e, r);
239
- if (g) {
240
- t += g.html, r = g.nextIndex;
242
+ const f = ge(e, t);
243
+ if (f) {
244
+ n += f.html, t = f.nextIndex;
241
245
  continue;
242
246
  }
243
- const c = me(e, r);
244
- if (c) {
245
- t += c.html, r = c.nextIndex;
247
+ const i = me(e, t);
248
+ if (i) {
249
+ n += i.html, t = i.nextIndex;
246
250
  continue;
247
251
  }
248
- const l = ce(e, r, n);
249
- if (l) {
250
- t += l.html, r = l.nextIndex, l.slurLevelDelta && (n += l.slurLevelDelta);
252
+ const a = ce(e, t, r);
253
+ if (a) {
254
+ n += a.html, t = a.nextIndex, a.slurLevelDelta && (r += a.slurLevelDelta);
251
255
  continue;
252
256
  }
253
- const u = pe(e, r);
254
- if (u) {
255
- t += u.html, r = u.nextIndex;
257
+ const d = pe(e, t);
258
+ if (d) {
259
+ n += d.html, t = d.nextIndex;
256
260
  continue;
257
261
  }
258
- const f = ue(e, r);
259
- if (f) {
260
- t += f.html, r = f.nextIndex;
262
+ const m = ue(e, t);
263
+ if (m) {
264
+ n += m.html, t = m.nextIndex;
261
265
  continue;
262
266
  }
263
- const y = Be(e, r);
267
+ const y = Be(e, t);
264
268
  if (y) {
265
- t += y.html, r = y.nextIndex;
269
+ n += y.html, t = y.nextIndex;
266
270
  continue;
267
271
  }
268
- const m = xe(e, r);
269
- if (m) {
270
- t += m.html, r = m.nextIndex;
272
+ const b = xe(e, t);
273
+ if (b) {
274
+ n += b.html, t = b.nextIndex;
271
275
  continue;
272
276
  }
273
- const b = ye(e, r);
274
- if (b) {
275
- t += b.html, r = b.nextIndex;
277
+ const v = ye(e, t);
278
+ if (v) {
279
+ n += v.html, t = v.nextIndex;
276
280
  continue;
277
281
  }
278
- const B = de(e, r);
282
+ const B = de(e, t);
279
283
  if (B) {
280
- t += B.html, r = B.nextIndex;
284
+ n += B.html, t = B.nextIndex;
281
285
  continue;
282
286
  }
283
- const T = he(e, r);
287
+ const T = he(e, t);
284
288
  if (T) {
285
- t += T.html, r = T.nextIndex;
289
+ n += T.html, t = T.nextIndex;
286
290
  continue;
287
291
  }
288
- t += `<span class="abc-text">${d(e[r])}</span>`, r++;
292
+ n += `<span class="abc-text">${p(e[t])}</span>`, t++;
289
293
  }
290
- return t;
294
+ return n;
291
295
  }, $ = (e) => e.split(`
292
- `).map((r) => {
293
- if (le.test(r))
294
- return `<span class="abc-comment">${d(r)}</span>`;
295
- const n = r.match(k);
296
- if (n) {
297
- const [, o, s] = n;
298
- return o === "w:" || o === "W:" ? `<span class="abc-lyrics-key">${d(o)}</span><span class="abc-lyrics-value">${d(s)}</span>` : `<span class="abc-meta-key">${d(o)}</span><span class="abc-meta-value">${d(s)}</span>`;
296
+ `).map((t) => {
297
+ if (oe.test(t))
298
+ return `<span class="abc-comment">${p(t)}</span>`;
299
+ const r = t.match(S);
300
+ if (r) {
301
+ const [, s, o] = r;
302
+ return s === "w:" || s === "W:" ? `<span class="abc-lyrics-key">${p(s)}</span><span class="abc-lyrics-value">${p(o)}</span>` : `<span class="abc-meta-key">${p(s)}</span><span class="abc-meta-value">${p(o)}</span>`;
299
303
  }
300
- return Te(r);
304
+ return Te(t);
301
305
  }).join(`
302
306
  `), Ae = {
303
307
  "X:": [
@@ -445,7 +449,7 @@ const G = (e) => e.split(`
445
449
  { value: "Your Name", description: "Transcriber name" },
446
450
  { value: "ABC transcription", description: "Transcription note" }
447
451
  ]
448
- }, Ce = (e) => Ae[e] || [], Ne = [
452
+ }, Ie = (e) => Ae[e] || [], Ne = [
449
453
  {
450
454
  value: "/header",
451
455
  description: "Insert basic ABC header template",
@@ -456,14 +460,14 @@ L:1/4
456
460
  K:C
457
461
  `
458
462
  }
459
- ], Ie = (e) => e.startsWith("/") ? Ne.filter(
460
- (t) => t.value.toLowerCase().startsWith(e.toLowerCase())
463
+ ], Ce = (e) => e.startsWith("/") ? Ne.filter(
464
+ (n) => n.value.toLowerCase().startsWith(e.toLowerCase())
461
465
  ) : [], we = ({
462
466
  value: e,
463
- textareaRef: t,
464
- onChange: r
467
+ textareaRef: n,
468
+ onChange: t
465
469
  }) => {
466
- const [n, o] = R({
470
+ const [r, s] = R({
467
471
  isOpen: !1,
468
472
  suggestions: [],
469
473
  selectedIndex: 0,
@@ -471,281 +475,334 @@ K:C
471
475
  fieldKey: null,
472
476
  inputValue: "",
473
477
  isCommand: !1
474
- }), s = C(() => {
475
- if (!t.current)
478
+ }), o = I(() => {
479
+ if (!n.current)
476
480
  return null;
477
- const c = t.current.selectionStart, l = e.substring(0, c).split(`
478
- `), u = l[l.length - 1];
479
- if (u.startsWith("/"))
481
+ const i = n.current.selectionStart, a = e.substring(0, i).split(`
482
+ `), d = a[a.length - 1];
483
+ if (d.startsWith("/"))
480
484
  return {
481
485
  fieldKey: null,
482
- inputValue: u,
483
- line: u,
484
- lineStartPos: c - u.length,
486
+ inputValue: d,
487
+ line: d,
488
+ lineStartPos: i - d.length,
485
489
  isCommand: !0
486
490
  };
487
- const f = u.match(k);
488
- if (f) {
489
- const [, y, m] = f;
491
+ const m = d.match(S);
492
+ if (m) {
493
+ const [, y, b] = m;
490
494
  return {
491
495
  fieldKey: y,
492
- inputValue: m,
493
- line: u,
494
- lineStartPos: c - u.length,
496
+ inputValue: b,
497
+ line: d,
498
+ lineStartPos: i - d.length,
495
499
  isCommand: !1
496
500
  };
497
501
  }
498
502
  return null;
499
- }, [e, t]), a = C(() => {
500
- if (!t.current)
503
+ }, [e, n]), l = I(() => {
504
+ if (!n.current)
501
505
  return { top: 0, left: 0 };
502
- const c = t.current, l = c.selectionStart, f = e.substring(0, l).split(`
503
- `).length - 1, y = parseFloat(getComputedStyle(c).lineHeight) || 24;
504
- return { top: (parseFloat(getComputedStyle(c).paddingTop) || 16) + (f + 1) * y - c.scrollTop, left: 60 };
505
- }, [e, t]);
506
+ const i = n.current, a = i.selectionStart, m = e.substring(0, a).split(`
507
+ `).length - 1, y = parseFloat(getComputedStyle(i).lineHeight) || 24;
508
+ return { top: (parseFloat(getComputedStyle(i).paddingTop) || 16) + (m + 1) * y - i.scrollTop, left: 60 };
509
+ }, [e, n]);
506
510
  P(() => {
507
- const c = s();
508
- if (!c) {
509
- o((u) => ({ ...u, isOpen: !1 }));
511
+ const i = o();
512
+ if (!i) {
513
+ s((d) => ({ ...d, isOpen: !1 }));
510
514
  return;
511
515
  }
512
- let l = [];
513
- if (c.isCommand ? l = Ie(c.inputValue) : c.fieldKey && (l = Ce(c.fieldKey).filter(
514
- (f) => f.value.toLowerCase().startsWith(c.inputValue.toLowerCase())
515
- )), l.length > 0) {
516
- const u = a();
517
- o({
516
+ let a = [];
517
+ if (i.isCommand ? a = Ce(i.inputValue) : i.fieldKey && (a = Ie(i.fieldKey).filter(
518
+ (m) => m.value.toLowerCase().startsWith(i.inputValue.toLowerCase())
519
+ )), a.length > 0) {
520
+ const d = l();
521
+ s({
518
522
  isOpen: !0,
519
- suggestions: l,
523
+ suggestions: a,
520
524
  selectedIndex: 0,
521
- position: u,
522
- fieldKey: c.fieldKey,
523
- inputValue: c.inputValue,
524
- isCommand: c.isCommand
525
+ position: d,
526
+ fieldKey: i.fieldKey,
527
+ inputValue: i.inputValue,
528
+ isCommand: i.isCommand
525
529
  });
526
530
  } else
527
- o((u) => ({ ...u, isOpen: !1 }));
528
- }, [e, s, a]);
529
- const i = C(
530
- (c) => {
531
- if (!t.current)
531
+ s((d) => ({ ...d, isOpen: !1 }));
532
+ }, [e, o, l]);
533
+ const c = I(
534
+ (i) => {
535
+ if (!n.current)
532
536
  return;
533
- const l = t.current.selectionStart, u = e.substring(0, l).split(`
534
- `), f = u[u.length - 1];
535
- let y, m;
536
- if (n.isCommand && c.template) {
537
- const b = e.substring(0, l - f.length), B = e.substring(l);
538
- y = b + c.template + B, m = b.length + c.template.length;
539
- } else if (n.fieldKey) {
540
- const b = n.fieldKey + c.value, B = e.substring(0, l - f.length), T = e.substring(l);
541
- y = B + b + T, m = B.length + b.length;
537
+ const a = n.current.selectionStart, d = e.substring(0, a).split(`
538
+ `), m = d[d.length - 1];
539
+ let y, b;
540
+ if (r.isCommand && i.template) {
541
+ const v = e.substring(0, a - m.length), B = e.substring(a);
542
+ y = v + i.template + B, b = v.length + i.template.length;
543
+ } else if (r.fieldKey) {
544
+ const v = r.fieldKey + i.value, B = e.substring(0, a - m.length), T = e.substring(a);
545
+ y = B + v + T, b = B.length + v.length;
542
546
  } else
543
547
  return;
544
- r(y), setTimeout(() => {
545
- t.current && (t.current.selectionStart = m, t.current.selectionEnd = m, t.current.focus());
546
- }, 0), o((b) => ({ ...b, isOpen: !1 }));
548
+ t(y), setTimeout(() => {
549
+ n.current && (n.current.selectionStart = b, n.current.selectionEnd = b, n.current.focus());
550
+ }, 0), s((v) => ({ ...v, isOpen: !1 }));
547
551
  },
548
- [t, n.fieldKey, n.isCommand, e, r]
549
- ), x = C(
550
- (c) => {
551
- if (n.isOpen)
552
- switch (c.key) {
552
+ [n, r.fieldKey, r.isCommand, e, t]
553
+ ), u = I(
554
+ (i) => {
555
+ if (r.isOpen)
556
+ switch (i.key) {
553
557
  case "ArrowDown":
554
- c.preventDefault(), o((l) => ({
555
- ...l,
556
- selectedIndex: Math.min(l.selectedIndex + 1, l.suggestions.length - 1)
558
+ i.preventDefault(), s((a) => ({
559
+ ...a,
560
+ selectedIndex: Math.min(a.selectedIndex + 1, a.suggestions.length - 1)
557
561
  }));
558
562
  break;
559
563
  case "ArrowUp":
560
- c.preventDefault(), o((l) => ({
561
- ...l,
562
- selectedIndex: Math.max(l.selectedIndex - 1, 0)
564
+ i.preventDefault(), s((a) => ({
565
+ ...a,
566
+ selectedIndex: Math.max(a.selectedIndex - 1, 0)
563
567
  }));
564
568
  break;
565
569
  case "Enter":
566
- n.suggestions.length > 0 && (c.preventDefault(), i(n.suggestions[n.selectedIndex]));
570
+ r.suggestions.length > 0 && (i.preventDefault(), c(r.suggestions[r.selectedIndex]));
567
571
  break;
568
572
  case "Escape":
569
- c.preventDefault(), o((l) => ({ ...l, isOpen: !1 }));
573
+ i.preventDefault(), s((a) => ({ ...a, isOpen: !1 }));
570
574
  break;
571
575
  }
572
576
  },
573
- [n.isOpen, n.suggestions, n.selectedIndex, i]
574
- ), g = C((c) => {
575
- o((l) => ({ ...l, selectedIndex: c }));
577
+ [r.isOpen, r.suggestions, r.selectedIndex, c]
578
+ ), f = I((i) => {
579
+ s((a) => ({ ...a, selectedIndex: i }));
576
580
  }, []);
577
581
  return {
578
- isOpen: n.isOpen,
579
- suggestions: n.suggestions,
580
- selectedIndex: n.selectedIndex,
581
- position: n.position,
582
- handleKeyDown: x,
583
- selectSuggestion: i,
584
- handleMouseEnter: g
582
+ isOpen: r.isOpen,
583
+ suggestions: r.suggestions,
584
+ selectedIndex: r.selectedIndex,
585
+ position: r.position,
586
+ handleKeyDown: u,
587
+ selectSuggestion: c,
588
+ handleMouseEnter: f
585
589
  };
586
- }, ke = ({
590
+ }, Se = ({
587
591
  suggestions: e,
588
- selectedIndex: t,
589
- position: r,
590
- onSelect: n,
591
- onMouseEnter: o
592
+ selectedIndex: n,
593
+ position: t,
594
+ onSelect: r,
595
+ onMouseEnter: s
592
596
  }) => {
593
- const s = w(null);
597
+ const o = w(null);
594
598
  return P(() => {
595
- s.current?.scrollIntoView({
599
+ o.current?.scrollIntoView({
596
600
  block: "nearest",
597
601
  behavior: "smooth"
598
602
  });
599
- }, [t]), e.length === 0 ? null : /* @__PURE__ */ p(
603
+ }, [n]), e.length === 0 ? null : /* @__PURE__ */ h(
600
604
  "div",
601
605
  {
602
606
  className: "absolute z-50 bg-slate-800 rounded-md shadow-xl overflow-hidden",
603
607
  style: {
604
- top: `${r.top}px`,
605
- left: `${r.left}px`,
608
+ top: `${t.top}px`,
609
+ left: `${t.left}px`,
606
610
  minWidth: "200px",
607
611
  maxWidth: "400px",
608
612
  maxHeight: "300px",
609
613
  overflowY: "auto"
610
614
  },
611
- children: e.map((a, i) => /* @__PURE__ */ v(
615
+ children: e.map((l, c) => /* @__PURE__ */ x(
612
616
  "div",
613
617
  {
614
- ref: i === t ? s : null,
615
- className: `px-3 py-2 cursor-pointer ${i === t ? "bg-blue-600 text-white" : "text-slate-200 hover:bg-slate-700"}`,
616
- onClick: () => n(a),
617
- onMouseEnter: () => o(i),
618
+ ref: c === n ? o : null,
619
+ className: `px-3 py-2 cursor-pointer ${c === n ? "bg-blue-600 text-white" : "text-slate-200 hover:bg-slate-700"}`,
620
+ onClick: () => r(l),
621
+ onMouseEnter: () => s(c),
618
622
  children: [
619
- /* @__PURE__ */ p("div", { className: "font-mono text-sm", children: a.value }),
620
- a.description && /* @__PURE__ */ p("div", { className: "text-xs opacity-75 mt-1", children: a.description })
623
+ /* @__PURE__ */ h("div", { className: "font-mono text-sm", children: l.value }),
624
+ l.description && /* @__PURE__ */ h("div", { className: "text-xs opacity-75 mt-1", children: l.description })
621
625
  ]
622
626
  },
623
- `${a.value}-${i}`
627
+ `${l.value}-${c}`
624
628
  ))
625
629
  }
626
630
  );
627
- }, Se = (e) => {
628
- const t = e.trim();
629
- if (t === "C")
631
+ }, ke = (e) => {
632
+ const n = e.trim();
633
+ if (n === "C")
630
634
  return { beatsPerMeasure: 4, beatUnit: 4 };
631
- if (t === "C|")
635
+ if (n === "C|")
632
636
  return { beatsPerMeasure: 2, beatUnit: 2 };
633
- const r = t.match(/^(\d+)\/(\d+)$/);
634
- return r ? {
635
- beatsPerMeasure: parseInt(r[1], 10),
636
- beatUnit: parseInt(r[2], 10)
637
+ const t = n.match(/^(\d+)\/(\d+)$/);
638
+ return t ? {
639
+ beatsPerMeasure: parseInt(t[1], 10),
640
+ beatUnit: parseInt(t[2], 10)
637
641
  } : { beatsPerMeasure: 4, beatUnit: 4 };
638
642
  }, Le = (e) => {
639
- const r = e.trim().match(/^(\d+)\/(\d+)$/);
640
- return r ? parseInt(r[1], 10) / parseInt(r[2], 10) : 1 / 8;
643
+ const t = e.trim().match(/^(\d+)\/(\d+)$/);
644
+ return t ? parseInt(t[1], 10) / parseInt(t[2], 10) : 1 / 8;
641
645
  }, Ee = (e) => {
642
- const t = e.split(`
646
+ const n = e.split(`
643
647
  `);
644
- let r = { beatsPerMeasure: 4, beatUnit: 4 }, n = 1 / 8;
645
- for (const o of t) {
646
- const s = o.match(k);
647
- if (s) {
648
- const [, a, i] = s;
649
- a === "M:" ? r = Se(i) : a === "L:" && (n = Le(i));
648
+ let t = { beatsPerMeasure: 4, beatUnit: 4 }, r = 1 / 8;
649
+ for (const s of n) {
650
+ const o = s.match(S);
651
+ if (o) {
652
+ const [, l, c] = o;
653
+ l === "M:" ? t = ke(c) : l === "L:" && (r = Le(c));
650
654
  }
651
655
  }
652
- return { meter: r, unitNoteLength: n };
656
+ return { meter: t, unitNoteLength: r };
653
657
  }, _ = (e) => {
654
658
  if (!e)
655
659
  return 1;
660
+ if (/^\/+$/.test(e))
661
+ return 1 / Math.pow(2, e.length);
656
662
  if (e.startsWith("/"))
657
663
  return 1 / parseInt(e.substring(1), 10);
658
664
  if (e.includes("/")) {
659
- const [t, r] = e.split("/");
660
- return parseInt(t, 10) / parseInt(r, 10);
665
+ const [n, t] = e.split("/");
666
+ return parseInt(n, 10) / parseInt(t, 10);
661
667
  }
662
668
  return parseInt(e, 10);
663
- }, Me = (e, t) => {
664
- let r = 0, n = 0;
665
- for (; n < e.length; ) {
666
- const o = e[n];
669
+ }, Me = (e, n) => {
670
+ if (e[n] !== "(") return null;
671
+ let t = n + 1;
672
+ if (t >= e.length || !/\d/.test(e[t])) return null;
673
+ let r = "";
674
+ for (; t < e.length && /\d/.test(e[t]); )
675
+ r += e[t], t++;
676
+ const s = parseInt(r, 10);
677
+ let o;
678
+ s === 2 || s === 4 || s === 8 ? o = 3 : o = 2;
679
+ let l = s;
680
+ if (t < e.length && e[t] === ":") {
681
+ t++;
682
+ let c = "";
683
+ for (; t < e.length && /\d/.test(e[t]); )
684
+ c += e[t], t++;
685
+ if (c && (o = parseInt(c, 10)), t < e.length && e[t] === ":") {
686
+ t++;
687
+ let u = "";
688
+ for (; t < e.length && /\d/.test(e[t]); )
689
+ u += e[t], t++;
690
+ u && (l = parseInt(u, 10));
691
+ }
692
+ }
693
+ return {
694
+ info: { p: s, q: o, remaining: l },
695
+ nextIndex: t
696
+ };
697
+ }, $e = (e, n) => {
698
+ let t = 0, r = 0, s = null;
699
+ for (; r < e.length; ) {
700
+ const o = e[r];
701
+ if (o === "\\") {
702
+ r++;
703
+ continue;
704
+ }
705
+ if (o === "(") {
706
+ const l = Me(e, r);
707
+ if (l) {
708
+ s = l.info, r = l.nextIndex;
709
+ continue;
710
+ }
711
+ r++;
712
+ continue;
713
+ }
667
714
  if (E.test(o) || D.test(o)) {
668
- let s = n + 1;
669
- for (; s < e.length && (e[s] === "'" || e[s] === ","); )
670
- s++;
671
- let a = "";
672
- if (s < e.length && (e[s] === "/" || /\d/.test(e[s]))) {
673
- const l = s;
674
- for (e[s] === "/" && s++; s < e.length && /\d/.test(e[s]); )
675
- s++;
676
- if (s < e.length && e[s] === "/")
677
- for (s++; s < e.length && /\d/.test(e[s]); )
678
- s++;
679
- a = e.substring(l, s);
715
+ let l = r + 1;
716
+ for (; l < e.length && (e[l] === "'" || e[l] === ","); )
717
+ l++;
718
+ let c = "";
719
+ if (l < e.length && (e[l] === "/" || /\d/.test(e[l]))) {
720
+ const d = l;
721
+ for (; l < e.length && e[l] === "/"; )
722
+ l++;
723
+ for (; l < e.length && /\d/.test(e[l]); )
724
+ l++;
725
+ if (l < e.length && e[l] === "/")
726
+ for (l++; l < e.length && /\d/.test(e[l]); )
727
+ l++;
728
+ c = e.substring(d, l);
680
729
  }
681
- const i = _(a), x = t.unitNoteLength * i, g = 1 / t.meter.beatUnit, c = x / g;
682
- r += c, n = s;
730
+ const u = _(c);
731
+ let f = n.unitNoteLength * u;
732
+ s && (f = f * s.q / s.p, s.remaining--, s.remaining <= 0 && (s = null));
733
+ const i = 1 / n.meter.beatUnit, a = f / i;
734
+ t += a, r = l;
683
735
  } else if (o === "[") {
684
- let s = n + 1;
685
- for (; s < e.length && e[s] !== "]"; ) {
686
- const a = e[s];
687
- if (E.test(a)) {
688
- let i = s + 1;
689
- for (; i < e.length && (e[i] === "'" || e[i] === ","); )
690
- i++;
691
- s = i;
736
+ let l = r + 1;
737
+ for (; l < e.length && e[l] !== "]"; ) {
738
+ const c = e[l];
739
+ if (E.test(c)) {
740
+ let u = l + 1;
741
+ for (; u < e.length && (e[u] === "'" || e[u] === ","); )
742
+ u++;
743
+ l = u;
692
744
  } else
693
- s++;
745
+ l++;
694
746
  }
695
- if (s < e.length && e[s] === "]") {
696
- s++;
697
- let a = "";
698
- if (s < e.length && (e[s] === "/" || /\d/.test(e[s]))) {
699
- const l = s;
700
- for (e[s] === "/" && s++; s < e.length && /\d/.test(e[s]); )
701
- s++;
702
- if (s < e.length && e[s] === "/")
703
- for (s++; s < e.length && /\d/.test(e[s]); )
704
- s++;
705
- a = e.substring(l, s);
747
+ if (l < e.length && e[l] === "]") {
748
+ l++;
749
+ let c = "";
750
+ if (l < e.length && (e[l] === "/" || /\d/.test(e[l]))) {
751
+ const d = l;
752
+ for (; l < e.length && e[l] === "/"; )
753
+ l++;
754
+ for (; l < e.length && /\d/.test(e[l]); )
755
+ l++;
756
+ if (l < e.length && e[l] === "/")
757
+ for (l++; l < e.length && /\d/.test(e[l]); )
758
+ l++;
759
+ c = e.substring(d, l);
706
760
  }
707
- const i = _(a), x = t.unitNoteLength * i, g = 1 / t.meter.beatUnit, c = x / g;
708
- r += c;
761
+ const u = _(c);
762
+ let f = n.unitNoteLength * u;
763
+ s && (f = f * s.q / s.p, s.remaining--, s.remaining <= 0 && (s = null));
764
+ const i = 1 / n.meter.beatUnit, a = f / i;
765
+ t += a;
709
766
  }
710
- n = s;
767
+ r = l;
711
768
  } else
712
- n++;
769
+ r++;
713
770
  }
714
- return r;
715
- }, $e = (e) => {
716
- const t = [], r = e.split(`
717
- `), n = Ee(e);
718
- return r.forEach((o, s) => {
719
- if (!(o.trim().startsWith("%") || k.test(o)) && o.includes("|")) {
720
- let a = 0;
721
- const i = o.split("|");
722
- let x = 0;
723
- i.forEach((g, c) => {
724
- if (c === i.length - 1 && g.trim() === "")
771
+ return t;
772
+ }, _e = (e) => {
773
+ const n = [], t = e.split(`
774
+ `), r = Ee(e);
775
+ return t.forEach((s, o) => {
776
+ if (!(s.trim().startsWith("%") || S.test(s)) && s.includes("|")) {
777
+ let l = 0;
778
+ const c = s.split("|");
779
+ let u = 0;
780
+ c.forEach((f, i) => {
781
+ if (i === c.length - 1 && f.trim() === "")
725
782
  return;
726
- const l = g.trim();
727
- if (l.startsWith(":") || l.startsWith("[") || l === "") {
728
- a += g.length + 1;
783
+ const a = f.trim();
784
+ if (a.startsWith(":") || a.startsWith("[") || a === "") {
785
+ l += f.length + 1;
729
786
  return;
730
787
  }
731
- const u = Me(l, n), f = n.meter.beatsPerMeasure;
732
- if (Math.abs(u - f) > 0.01) {
733
- const m = o.indexOf(l, a), b = m + l.length;
734
- t.push({
735
- line: s,
736
- measureIndex: x,
737
- startCol: m,
738
- endCol: b,
739
- expected: f,
740
- actual: u,
741
- message: `Expected ${f} beats, got ${u.toFixed(2)}`
788
+ const d = $e(a, r), m = r.meter.beatsPerMeasure;
789
+ if (Math.abs(d - m) > 0.01) {
790
+ const b = s.indexOf(a, l), v = b + a.length;
791
+ n.push({
792
+ line: o,
793
+ measureIndex: u,
794
+ startCol: b,
795
+ endCol: v,
796
+ expected: m,
797
+ actual: d,
798
+ message: `Expected ${m} beats, got ${d.toFixed(2)}`
742
799
  });
743
800
  }
744
- x++, a += g.length + 1;
801
+ u++, l += f.length + 1;
745
802
  });
746
803
  }
747
- }), t;
748
- }, I = {
804
+ }), n;
805
+ }, C = {
749
806
  margin: 0,
750
807
  padding: "16px",
751
808
  border: "none",
@@ -770,8 +827,8 @@ K:C
770
827
  boxSizing: "border-box",
771
828
  WebkitFontSmoothing: "antialiased",
772
829
  MozOsxFontSmoothing: "grayscale"
773
- }, Pe = ({ value: e, onChange: t, theme: r = "light" }) => {
774
- const n = w(null), o = w(null), s = w(null), [a, i] = R(null), x = G(e), g = $(e), c = V(() => $e(e), [e]), l = r === "dark" ? {
830
+ }, Oe = ({ value: e, onChange: n, theme: t = "light" }) => {
831
+ const r = w(null), s = w(null), o = w(null), [l, c] = R(null), u = G(e), f = $(e), i = V(() => _e(e), [e]), a = t === "dark" ? {
775
832
  editorBg: "#262626",
776
833
  lineNumBg: "#0f0f0f",
777
834
  lineNumBorder: "#2d2d2d",
@@ -804,112 +861,112 @@ K:C
804
861
  errorHoverBg: "rgba(254, 202, 202, 0.4)",
805
862
  errorItemBorder: "rgba(220, 38, 38, 0.1)"
806
863
  }, {
807
- isOpen: u,
808
- suggestions: f,
864
+ isOpen: d,
865
+ suggestions: m,
809
866
  selectedIndex: y,
810
- position: m,
811
- handleKeyDown: b,
867
+ position: b,
868
+ handleKeyDown: v,
812
869
  selectSuggestion: B,
813
870
  handleMouseEnter: T
814
- } = we({ value: e, textareaRef: n, onChange: t }), H = () => {
815
- n.current && o.current && s.current && (o.current.scrollTop = n.current.scrollTop, s.current.scrollTop = n.current.scrollTop);
816
- }, U = (h) => {
817
- if (n.current) {
871
+ } = we({ value: e, textareaRef: r, onChange: n }), H = () => {
872
+ r.current && s.current && o.current && (s.current.scrollTop = r.current.scrollTop, o.current.scrollTop = r.current.scrollTop);
873
+ }, U = (g) => {
874
+ if (r.current) {
818
875
  const A = e.split(`
819
- `), N = A.slice(0, h.line).join(`
820
- `).length + (h.line > 0 ? 1 : 0);
821
- n.current.focus(), n.current.setSelectionRange(N, N), n.current.scrollTop = n.current.scrollHeight * (h.line / A.length);
876
+ `), N = A.slice(0, g.line).join(`
877
+ `).length + (g.line > 0 ? 1 : 0);
878
+ r.current.focus(), r.current.setSelectionRange(N, N), r.current.scrollTop = r.current.scrollHeight * (g.line / A.length);
822
879
  }
823
880
  };
824
- return /* @__PURE__ */ v("div", { className: "w-full h-full flex flex-col rounded-lg overflow-hidden shadow-lg", "data-theme": r, style: { backgroundColor: l.editorBg }, children: [
825
- /* @__PURE__ */ v("div", { className: "flex-1 flex overflow-hidden", children: [
826
- /* @__PURE__ */ p(
881
+ return /* @__PURE__ */ x("div", { className: "w-full h-full flex flex-col rounded-lg overflow-hidden shadow-lg", "data-theme": t, style: { backgroundColor: a.editorBg }, children: [
882
+ /* @__PURE__ */ x("div", { className: "flex-1 flex overflow-hidden", children: [
883
+ /* @__PURE__ */ h(
827
884
  "div",
828
885
  {
829
- ref: o,
886
+ ref: s,
830
887
  className: "overflow-hidden select-none",
831
888
  style: {
832
- ...I,
833
- backgroundColor: l.lineNumBg,
889
+ ...C,
890
+ backgroundColor: a.lineNumBg,
834
891
  minWidth: "3rem",
835
892
  padding: "16px 8px 16px 8px",
836
893
  color: "#6b7280",
837
- borderRightColor: l.lineNumBorder,
894
+ borderRightColor: a.lineNumBorder,
838
895
  borderRightStyle: "solid",
839
896
  borderRightWidth: "1px"
840
897
  },
841
- children: x.split(`
842
- `).map((h, A) => /* @__PURE__ */ p("div", { style: { textAlign: "center" }, children: h }, A))
898
+ children: u.split(`
899
+ `).map((g, A) => /* @__PURE__ */ h("div", { style: { textAlign: "center" }, children: g }, A))
843
900
  }
844
901
  ),
845
- /* @__PURE__ */ v("div", { className: "flex-1 relative", children: [
846
- /* @__PURE__ */ p(
902
+ /* @__PURE__ */ x("div", { className: "flex-1 relative", children: [
903
+ /* @__PURE__ */ h(
847
904
  "div",
848
905
  {
849
- ref: s,
906
+ ref: o,
850
907
  className: "absolute inset-0 overflow-hidden pointer-events-none",
851
908
  style: {
852
- ...I,
853
- backgroundColor: l.editorBg,
854
- opacity: a ? 0.3 : 1,
909
+ ...C,
910
+ backgroundColor: a.editorBg,
911
+ opacity: l ? 0.3 : 1,
855
912
  transition: "opacity 0.2s"
856
913
  },
857
- dangerouslySetInnerHTML: { __html: g }
914
+ dangerouslySetInnerHTML: { __html: f }
858
915
  }
859
916
  ),
860
- a && (() => {
861
- const h = e.split(`
862
- `), N = (h[a.line] || "").substring(a.startCol, a.endCol), F = $(N);
863
- return /* @__PURE__ */ p(
917
+ l && (() => {
918
+ const g = e.split(`
919
+ `), N = (g[l.line] || "").substring(l.startCol, l.endCol), F = $(N);
920
+ return /* @__PURE__ */ h(
864
921
  "div",
865
922
  {
866
923
  className: "absolute inset-0 overflow-hidden pointer-events-none",
867
924
  style: {
868
- ...I,
925
+ ...C,
869
926
  backgroundColor: "transparent"
870
927
  },
871
- children: h.map((S, L) => {
872
- if (L === a.line) {
873
- const j = S.substring(0, a.startCol), K = S.substring(a.endCol);
874
- return /* @__PURE__ */ v("div", { children: [
875
- /* @__PURE__ */ p("span", { style: { visibility: "hidden" }, children: j }),
876
- /* @__PURE__ */ p(
928
+ children: g.map((k, L) => {
929
+ if (L === l.line) {
930
+ const j = k.substring(0, l.startCol), K = k.substring(l.endCol);
931
+ return /* @__PURE__ */ x("div", { children: [
932
+ /* @__PURE__ */ h("span", { style: { visibility: "hidden" }, children: j }),
933
+ /* @__PURE__ */ h(
877
934
  "span",
878
935
  {
879
936
  style: {
880
- backgroundColor: l.errorHighlight,
937
+ backgroundColor: a.errorHighlight,
881
938
  borderRadius: "2px",
882
939
  padding: "1px 2px"
883
940
  },
884
941
  dangerouslySetInnerHTML: { __html: F }
885
942
  }
886
943
  ),
887
- /* @__PURE__ */ p("span", { style: { visibility: "hidden" }, children: K })
944
+ /* @__PURE__ */ h("span", { style: { visibility: "hidden" }, children: K })
888
945
  ] }, L);
889
946
  }
890
- return /* @__PURE__ */ p("div", { style: { visibility: "hidden" }, children: S || "​" }, L);
947
+ return /* @__PURE__ */ h("div", { style: { visibility: "hidden" }, children: k || "​" }, L);
891
948
  })
892
949
  }
893
950
  );
894
951
  })(),
895
- /* @__PURE__ */ p(
952
+ /* @__PURE__ */ h(
896
953
  "textarea",
897
954
  {
898
- ref: n,
955
+ ref: r,
899
956
  className: "absolute inset-0 w-full h-full resize-none",
900
957
  style: {
901
- ...I,
958
+ ...C,
902
959
  backgroundColor: "transparent",
903
960
  color: "transparent",
904
- caretColor: l.caretColor,
961
+ caretColor: a.caretColor,
905
962
  // ブラウザ固有のスタイルをリセット
906
963
  WebkitAppearance: "none",
907
964
  appearance: "none"
908
965
  },
909
966
  value: e,
910
- onChange: (h) => t(h.target.value),
967
+ onChange: (g) => n(g.target.value),
911
968
  onScroll: H,
912
- onKeyDown: b,
969
+ onKeyDown: v,
913
970
  spellCheck: !1,
914
971
  autoCapitalize: "off",
915
972
  autoComplete: "off",
@@ -917,46 +974,46 @@ K:C
917
974
  placeholder: "Type /header to insert template..."
918
975
  }
919
976
  ),
920
- u && /* @__PURE__ */ p(
921
- ke,
977
+ d && /* @__PURE__ */ h(
978
+ Se,
922
979
  {
923
- suggestions: f,
980
+ suggestions: m,
924
981
  selectedIndex: y,
925
- position: m,
982
+ position: b,
926
983
  onSelect: B,
927
984
  onMouseEnter: T
928
985
  }
929
986
  )
930
987
  ] })
931
988
  ] }),
932
- c.length > 0 && /* @__PURE__ */ v("div", { className: "flex", children: [
933
- /* @__PURE__ */ p(
989
+ i.length > 0 && /* @__PURE__ */ x("div", { className: "flex", children: [
990
+ /* @__PURE__ */ h(
934
991
  "div",
935
992
  {
936
993
  style: {
937
- backgroundColor: l.lineNumBg,
994
+ backgroundColor: a.lineNumBg,
938
995
  minWidth: "3rem",
939
- borderRightColor: l.lineNumBorder,
996
+ borderRightColor: a.lineNumBorder,
940
997
  borderRightStyle: "solid",
941
998
  borderRightWidth: "1px"
942
999
  }
943
1000
  }
944
1001
  ),
945
- /* @__PURE__ */ v(
1002
+ /* @__PURE__ */ x(
946
1003
  "div",
947
1004
  {
948
1005
  className: "flex-1 px-4 py-3 text-xs font-mono overflow-auto border-t",
949
1006
  style: {
950
- backgroundColor: l.errorBg,
951
- borderColor: l.errorBorder,
1007
+ backgroundColor: a.errorBg,
1008
+ borderColor: a.errorBorder,
952
1009
  maxHeight: "12rem",
953
1010
  scrollbarWidth: "thin",
954
- scrollbarColor: `${l.errorIcon} transparent`
1011
+ scrollbarColor: `${a.errorIcon} transparent`
955
1012
  },
956
1013
  children: [
957
- /* @__PURE__ */ v("div", { className: "flex items-center gap-2 mb-3", children: [
958
- /* @__PURE__ */ v("div", { className: "flex items-center gap-2", children: [
959
- /* @__PURE__ */ v(
1014
+ /* @__PURE__ */ x("div", { className: "flex items-center gap-2 mb-3", children: [
1015
+ /* @__PURE__ */ x("div", { className: "flex items-center gap-2", children: [
1016
+ /* @__PURE__ */ x(
960
1017
  "svg",
961
1018
  {
962
1019
  width: "14",
@@ -967,43 +1024,43 @@ K:C
967
1024
  strokeWidth: "2",
968
1025
  strokeLinecap: "round",
969
1026
  strokeLinejoin: "round",
970
- style: { color: l.errorIcon },
1027
+ style: { color: a.errorIcon },
971
1028
  children: [
972
- /* @__PURE__ */ p("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
973
- /* @__PURE__ */ p("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
974
- /* @__PURE__ */ p("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
1029
+ /* @__PURE__ */ h("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
1030
+ /* @__PURE__ */ h("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
1031
+ /* @__PURE__ */ h("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
975
1032
  ]
976
1033
  }
977
1034
  ),
978
- /* @__PURE__ */ p("span", { className: "text-[11px] font-semibold uppercase tracking-wide", style: { color: l.errorHeader }, children: "Validation Issues" })
1035
+ /* @__PURE__ */ h("span", { className: "text-[11px] font-semibold uppercase tracking-wide", style: { color: a.errorHeader }, children: "Validation Issues" })
979
1036
  ] }),
980
- /* @__PURE__ */ p(
1037
+ /* @__PURE__ */ h(
981
1038
  "div",
982
1039
  {
983
1040
  className: "px-2 py-0.5 rounded-full text-[10px] font-bold",
984
1041
  style: {
985
- backgroundColor: l.errorBadgeBg,
986
- color: l.errorBadgeText
1042
+ backgroundColor: a.errorBadgeBg,
1043
+ color: a.errorBadgeText
987
1044
  },
988
- children: c.length
1045
+ children: i.length
989
1046
  }
990
1047
  )
991
1048
  ] }),
992
- /* @__PURE__ */ p("div", { className: "space-y-1", children: c.map((h, A) => /* @__PURE__ */ v(
1049
+ /* @__PURE__ */ h("div", { className: "space-y-1", children: i.map((g, A) => /* @__PURE__ */ x(
993
1050
  "div",
994
1051
  {
995
1052
  className: "flex items-start gap-3 px-3 py-2 rounded-md border cursor-pointer",
996
1053
  style: {
997
- backgroundColor: a === h ? l.errorHoverBg : "transparent",
998
- borderColor: a === h ? l.errorIcon : l.errorItemBorder,
1054
+ backgroundColor: l === g ? a.errorHoverBg : "transparent",
1055
+ borderColor: l === g ? a.errorIcon : a.errorItemBorder,
999
1056
  transition: "all 0.15s ease-in-out",
1000
- transform: a === h ? "translateX(2px)" : "translateX(0)"
1057
+ transform: l === g ? "translateX(2px)" : "translateX(0)"
1001
1058
  },
1002
- onMouseEnter: () => i(h),
1003
- onMouseLeave: () => i(null),
1004
- onClick: () => U(h),
1059
+ onMouseEnter: () => c(g),
1060
+ onMouseLeave: () => c(null),
1061
+ onClick: () => U(g),
1005
1062
  children: [
1006
- /* @__PURE__ */ v(
1063
+ /* @__PURE__ */ x(
1007
1064
  "svg",
1008
1065
  {
1009
1066
  width: "16",
@@ -1015,34 +1072,34 @@ K:C
1015
1072
  strokeLinecap: "round",
1016
1073
  strokeLinejoin: "round",
1017
1074
  className: "shrink-0 mt-0.5",
1018
- style: { color: l.errorIcon },
1075
+ style: { color: a.errorIcon },
1019
1076
  children: [
1020
- /* @__PURE__ */ p("circle", { cx: "12", cy: "12", r: "10" }),
1021
- /* @__PURE__ */ p("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
1022
- /* @__PURE__ */ p("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
1077
+ /* @__PURE__ */ h("circle", { cx: "12", cy: "12", r: "10" }),
1078
+ /* @__PURE__ */ h("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
1079
+ /* @__PURE__ */ h("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
1023
1080
  ]
1024
1081
  }
1025
1082
  ),
1026
- /* @__PURE__ */ v("div", { className: "flex-1 flex flex-col gap-1", children: [
1027
- /* @__PURE__ */ p("div", { className: "flex items-baseline gap-2 flex-wrap", children: /* @__PURE__ */ v(
1083
+ /* @__PURE__ */ x("div", { className: "flex-1 flex flex-col gap-1", children: [
1084
+ /* @__PURE__ */ h("div", { className: "flex items-baseline gap-2 flex-wrap", children: /* @__PURE__ */ x(
1028
1085
  "span",
1029
1086
  {
1030
1087
  className: "font-semibold text-[11px] px-1.5 py-0.5 rounded",
1031
1088
  style: {
1032
- color: l.errorLocation,
1033
- backgroundColor: r === "dark" ? "rgba(34, 211, 238, 0.1)" : "rgba(8, 145, 178, 0.1)"
1089
+ color: a.errorLocation,
1090
+ backgroundColor: t === "dark" ? "rgba(34, 211, 238, 0.1)" : "rgba(8, 145, 178, 0.1)"
1034
1091
  },
1035
1092
  children: [
1036
1093
  "Line ",
1037
- h.line + 1,
1094
+ g.line + 1,
1038
1095
  ", Measure ",
1039
- h.measureIndex + 1
1096
+ g.measureIndex + 1
1040
1097
  ]
1041
1098
  }
1042
1099
  ) }),
1043
- /* @__PURE__ */ p("span", { className: "text-[11px] leading-relaxed", style: { color: l.errorMessage }, children: h.message })
1100
+ /* @__PURE__ */ h("span", { className: "text-[11px] leading-relaxed", style: { color: a.errorMessage }, children: g.message })
1044
1101
  ] }),
1045
- /* @__PURE__ */ v(
1102
+ /* @__PURE__ */ x(
1046
1103
  "svg",
1047
1104
  {
1048
1105
  width: "14",
@@ -1055,13 +1112,13 @@ K:C
1055
1112
  strokeLinejoin: "round",
1056
1113
  className: "shrink-0 mt-1 opacity-50",
1057
1114
  style: {
1058
- color: l.errorIcon,
1059
- opacity: a === h ? 1 : 0.3,
1115
+ color: a.errorIcon,
1116
+ opacity: l === g ? 1 : 0.3,
1060
1117
  transition: "opacity 0.15s ease-in-out"
1061
1118
  },
1062
1119
  children: [
1063
- /* @__PURE__ */ p("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
1064
- /* @__PURE__ */ p("polyline", { points: "12 5 19 12 12 19" })
1120
+ /* @__PURE__ */ h("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
1121
+ /* @__PURE__ */ h("polyline", { points: "12 5 19 12 12 19" })
1065
1122
  ]
1066
1123
  }
1067
1124
  )
@@ -1078,30 +1135,30 @@ K:C
1078
1135
  export {
1079
1136
  z as ABC_ACCIDENTAL_PATTERN,
1080
1137
  W as ABC_ANNOTATION_PATTERN,
1081
- X as ABC_BAR_PATTERN,
1082
- oe as ABC_BROKEN_RHYTHM_PATTERN,
1083
- Y as ABC_CHORD_BRACKET_PATTERN,
1138
+ q as ABC_BAR_PATTERN,
1139
+ le as ABC_BROKEN_RHYTHM_PATTERN,
1140
+ X as ABC_CHORD_BRACKET_PATTERN,
1084
1141
  ee as ABC_CHORD_SYMBOL_PATTERN,
1085
1142
  Ne as ABC_COMMANDS,
1086
- le as ABC_COMMENT_PATTERN,
1143
+ oe as ABC_COMMENT_PATTERN,
1087
1144
  te as ABC_DECORATION_PATTERN,
1088
1145
  O as ABC_DURATION_PATTERN,
1089
- k as ABC_FIELD_PATTERN,
1146
+ S as ABC_FIELD_PATTERN,
1090
1147
  ne as ABC_GRACE_NOTE_PATTERN,
1091
1148
  se as ABC_INLINE_FIELD_PATTERN,
1092
1149
  E as ABC_NOTE_PATTERN,
1093
1150
  Q as ABC_OCTAVE_PATTERN,
1094
- q as ABC_ORNAMENT_PATTERN,
1151
+ Z as ABC_ORNAMENT_PATTERN,
1095
1152
  D as ABC_REST_PATTERN,
1096
- J as ABC_SLUR_PATTERN,
1153
+ Y as ABC_SLUR_PATTERN,
1097
1154
  Ae as ABC_SUGGESTIONS,
1098
1155
  M as ABC_TIE_PATTERN,
1099
- Z as ABC_TUPLET_PATTERN,
1156
+ J as ABC_TUPLET_PATTERN,
1100
1157
  re as ABC_VOLTA_BRACKET_PATTERN,
1101
- Pe as AbcEditor,
1102
- ke as SuggestionList,
1158
+ Oe as AbcEditor,
1159
+ Se as SuggestionList,
1103
1160
  $ as highlightAbc,
1104
1161
  we as useAbcAutoComplete,
1105
1162
  G as useLineNumbers,
1106
- $e as validateAbc
1163
+ _e as validateAbc
1107
1164
  };