pepperscore 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +57 -2
- package/dist/{PdfOverlay-BmBGsMkr.js → PdfOverlay-DUgY9mW-.js} +64 -60
- package/dist/PdfOverlay-DUgY9mW-.js.map +1 -0
- package/dist/assets/{engrave.worker-D334KQnx.js → engrave.worker-B0WfvX6e.js} +2 -2
- package/dist/assets/verovio.worker-cxTTfdKx.js +7 -0
- package/dist/{engrave-DpVrifuu.js → engrave-DKNPmehA.js} +2 -2
- package/dist/{engrave-DpVrifuu.js.map → engrave-DKNPmehA.js.map} +1 -1
- package/dist/{export-BFhuMW8H.js → export-Dg2CkokP.js} +138 -66
- package/dist/export-Dg2CkokP.js.map +1 -0
- package/dist/index.js +2173 -2144
- package/dist/index.js.map +1 -1
- package/dist/lib/lazy-import.d.ts +19 -0
- package/dist/lib/pdf/annotations.d.ts +7 -3
- package/dist/lib/pdf/compose.d.ts +4 -1
- package/dist/lib/pdf/cooperative.d.ts +23 -0
- package/dist/lib/pdf/export.d.ts +3 -0
- package/dist/lib/pdf/normalize.d.ts +2 -0
- package/dist/lib/pdf/slices.d.ts +14 -0
- package/dist/lib/tab/strings/phrase.d.ts +2 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/PdfOverlay-BmBGsMkr.js.map +0 -1
- package/dist/assets/verovio.worker-C8LY1lw3.js +0 -7
- package/dist/export-BFhuMW8H.js.map +0 -1
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const e=/<(?:!--[\s\S]*?--|\?[\s\S]*?\?|!\[CDATA\[[\s\S]*?\]\]|!DOCTYPE[^>]*|(\/?)([A-Za-z_][\w.:-]*)((?:\s+[^\s=/>]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?))>/g,t=/* @__PURE__ */ new Map;function n(e){let n=t.get(e);return n||(n=RegExp(`\\s${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`),t.set(e,n)),n}function r(e,t){if(!e.includes(t))return null;let r=n(t).exec(e);return r?r[1]??r[2]??``:null}function i(e,t){return e.replace(n(t),``)}function a(e,t,r){return e.replace(n(t),` ${t}="${r}"`)}const o=e=>e.slice(e.indexOf(`:`)+1),s=e=>r(e,`xml:id`)||``,c=e=>(e||``).split(/\s+/).filter(Boolean),l=e=>e.replace(/^#/,``);function u(t,n){e.lastIndex=0;for(let r=e.exec(t);r;r=e.exec(t))if(r[2]&&n({closing:r[1]===`/`,name:o(r[2]),attributes:r[3]||``,selfClosing:r[4]===`/`,index:r.index,length:r[0].length}))return}function d(e){let t=[],n=[],i=[],a=[],o=[],c=-1,l=!1,d=!1,f=0,p=/* @__PURE__ */ new Set,m=0;return u(e,({closing:e,name:u,attributes:h,selfClosing:g})=>{if(e){a.pop(),u===`staff`&&d?(d=!1,f&&(m=Math.max(m,Math.ceil(f/p.size)))):c>=0&&(u===`staffGrp`&&o.pop(),u===`scoreDef`&&a.length===c&&(c=-1,l=!0));return}if(u===`measure`)t.push(s(h));else if(u===`staff`&&!g)d=!0,f=0,p=/* @__PURE__ */ new Set;else if(u===`verse`&&d)f++,p.add(r(h,`n`)||`1`);else if(u===`scoreDef`&&!l&&c<0)g?l=!0:c=a.length;else if(c>=0){if(u===`staffGrp`)i.push({id:s(h),staves:[]}),g||o.push(i.length-1);else if(u===`staffDef`){let e={n:r(h,`n`)||``,id:s(h)};n.push(e),a.at(-1)===`staffGrp`&&o.length&&i[o.at(-1)].staves.push(e)}}g||a.push(u)}),{measureIds:t,lyricDensity:m,staffDefs:n,groups:i}}const f=/* @__PURE__ */ new Set([`meiHead`,`label`,`labelAbbr`,`sb`,`pb`,`pgHead`,`pgFoot`]);function p(e,t){let n=/* @__PURE__ */ new Set,i=[],a=[],o=0;return u(e,({closing:e,name:l,attributes:u,selfClosing:d})=>{if(e){o?o--:l===`staffGrp`&&a.pop();return}let f=l===`staffGrp`?i.push(0)-1:-1;if(o){let e=s(u);e&&n.add(e),d||o++;return}let p=(l===`staffDef`||l===`staff`)&&t.has(r(u,`n`)||``);if(!p){let e=c(r(u,`staff`));p=e.length>0&&e.every(e=>t.has(e))}if(p){let e=s(u);e&&n.add(e),d||(o=1);return}if(l===`staffDef`)for(let e of a)i[e]++;f>=0&&!d&&a.push(f)}),{removed:n,emptyGroups:new Set(i.flatMap((e,t)=>e?[]:[t]))}}function m(e,t,n=1/0,o=0){let d=t.breakBefore===void 0?void 0:new Set(t.breakBefore),m=new Set(t.hiddenStaves),{removed:h,emptyGroups:g}=m.size?p(e,m):{removed:/* @__PURE__ */ new Set,emptyGroups:/* @__PURE__ */ new Set},_=e=>h.size>0&&c(e).some(e=>h.has(l(e))),v=[],y=[],b=0,x=0,S=0,C=0,w=0,T=-1,E=-1,D=()=>++w>=n,O=t.chordSymbols&&t.harmSize&&t.harmSize!==100?Math.round(t.harmSize):0,k=0;if(u(e,({closing:n,name:u,attributes:p,selfClosing:w,index:A,length:j})=>{x||v.push(e.slice(b,A)),b=A+j;let M=e.slice(A,A+j);if(n){if(x){x--;return}return u===`harm`&&k&&y.at(-1)===`rend`&&(y.pop(),k--,v.push(`</rend>`)),y.pop(),E=-1,v.push(M),u===`measure`&&D()?(T=b,!0):void 0}let N=u===`staffGrp`?S++:-1;if(x){if(m.size){let e=s(p);e&&h.add(e)}w||x++;return}let P=f.has(u)||u===`harm`&&!t.chordSymbols,F=M;if(!P&&m.size){let e=c(r(p,`staff`)),t=e.filter(e=>!m.has(e));P=(u===`staffDef`||u===`staff`)&&m.has(r(p,`n`)||``)||N>=0&&g.has(N)||e.length>0&&!t.length||_(r(p,`startid`))||_(r(p,`endid`)),!P&&t.length!==e.length&&(F=a(F,`staff`,t.join(` `)));let n=r(p,`plist`);if(!P&&n&&_(n)){let e=c(n).filter(e=>!h.has(l(e)));e.length?F=a(F,`plist`,e.join(` `)):P=!0}}if(P){if(m.size){let e=s(p);e&&h.add(e)}w||(x=1);return}if((u===`staffDef`||u===`staffGrp`)&&(F=i(i(F,`label`),`label.abbr`)),u===`measure`){if(C>0&&(d?d.has(C+o):t.breakEvery>0&&(C+o)%t.breakEvery===0)){let e=d?`<sb/>`:`<pb/>`;E>=0?v.splice(E,0,e):v.push(e)}C++}if((u===`ending`||u===`section`)&&!w?E<0&&(E=v.length):E=-1,v.push(F),!w)y.push(/^<([^\s/>]+)/.exec(M)[1]);else if(u===`measure`&&D())return T=b,!0;if(O&&u===`harm`&&!w){let t=e.indexOf(`</harm>`,b);(t>=0?e.slice(b,t).includes(`<fb`):e.includes(`<fb`,b))||(v.push(`<rend fontsize="${O}%">`),y.push(`rend`),k++)}}),T<0)return v.push(e.slice(b)),v.join(``);for(let e=y.length-1;e>=0;e--)v.push(`</${y[e]}>`);return v.join(``)}function h(e){let t=[],n=-1,i=-1,a=0,o=``,s=/* @__PURE__ */ new Set,c=-1,l=-1,d=-1,f=``,p=``;u(e,({name:u,closing:m,selfClosing:h,attributes:g,index:_,length:v})=>{if(m?a--:h||a++,c>=0){m&&u===`g`&&a===c-1&&(t.push({start:l,end:_+v,text:``}),c=-1);return}let y=r(g,`class`)??``;if(!m&&u===`g`&&/(?:^|\s)system(?:\s|$)/.test(y)&&s.clear(),!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(y)){let e=/(?:^|\s)finger-staff-(\d+)(?:\s|$)/.exec(y)?.[1]??`default`;if(y.split(/\s+/).includes(`finger-reassert`)&&s.has(e)){c=a,l=_;return}s.add(e)}if(!m&&u===`g`){let e=/(?:^|\s)finger-tab-([LH]?[0-4])-p[\d-]+(?:\s|$)/.exec(r(g,`class`)??``);e&&(n=a,o=e[1])}if(!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(r(g,`class`)??``)&&(i=a),i>=0&&!m&&u===`text`){let n=e.slice(_,_+v).replace(/\stext-anchor="[^"]*"/,``);t.push({start:_,end:_+v,text:`${n.slice(0,-1)} text-anchor="middle">`})}if(m&&u===`g`&&a===i-1&&(i=-1),!(n<0)){if(!m&&u===`text`&&r(g,`class`)!==`finger-label`&&(d=_,f=e.slice(_,_+v),p=r(g,`font-size`)??``),!m&&u===`tspan`&&(p=r(g,`font-size`)??p),m&&u===`text`&&d>=0){let e=f.replace(/\sfont-size="[^"]*"/,``);t.push({start:d,end:_+v,text:`${e.slice(0,-1)} class="finger-label" font-size="${p}" font-family="Arial" fill="currentColor" stroke="white" stroke-width="45" stroke-linejoin="round" paint-order="stroke fill">${o}</text>`}),d=-1}m&&u===`g`&&a===n-1&&(n=-1)}});for(let n of t.reverse())e=e.slice(0,n.start)+n.text+e.slice(n.end);return e}const g=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],_={C:0,D:2,E:4,F:5,G:7,A:9,B:11},v=[`Cb`,`Gb`,`Db`,`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`],y=[`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`,`G#`,`D#`,`A#`],b=[0,-5,2,-3,4,-1,6,1,-4,3,-2,5],x=[0,7,2,-3,4,-1,6,1,-4,3,-2,5],S=(e,t)=>(e%t+t)%t,C=e=>e>0?`#`.repeat(e):`b`.repeat(-e);function w(e){let t=0;for(let n of e)t+=n===`#`||n===`♯`?1:n===`x`||n===`𝄪`?2:n===`𝄫`?-2:-1;return t}function T(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}function E(e,t=`major`){let n=(t===`minor`?y:v)[e+7];if(!n)throw Error(`No key with ${e} fifths`);return{tonic:n,mode:t,fifths:e,scale:g.map(t=>({step:t,alter:T(t,e)}))}}function D(e){let t=e.fifths>0?e.fifths-12:e.fifths<0?e.fifths+12:null;return t===null||Math.abs(t)>7?null:E(t,e.mode)}function O(e,t=`major`,n={}){let r=S(e+(t===`minor`?3:0),12),i=E((n.family===`sharp`?x:b)[r],t);return n.flip?D(i)??i:i}function k(e,t){return{...t,octave:Math.round((e-_[t.step]-t.alter)/12)-1}}const A=(e,t)=>S(_[t.step]+t.alter,12)===S(e,12),j=e=>g.indexOf(e);function M(e,t){let n=S(j(t.step)-j(e),7);return n===1?1:n===6?-1:0}function N(e,t,n={}){let r=S(e,12),i=n.source&&A(r,n.source)?n.source:void 0;if(i&&Math.abs(i.alter)===2&&!n.transposed)return k(e,i);let a=t.scale.find(e=>A(r,e));if(a)return k(e,a);let o=e=>Math.abs(e.alter)<=1&&![`E1`,`B1`,`F-1`,`C-1`].includes(e.step+e.alter);if(t.mode===`minor`){let n=j(t.tonic.charAt(0));for(let i of[5,6]){let a=t.scale[(n+i)%7],o={step:a.step,alter:a.alter+1};if(A(r,o)&&Math.abs(o.alter)<=1)return k(e,o)}}if(i&&o(i)&&n.next!==void 0&&n.next-e>=1&&n.next-e<=2)return k(e,i);let s=Object.entries(_).find(([,e])=>e===r)?.[0];if(s){let r={step:g[(j(s)+1)%7],alter:-1};if((s===`E`||s===`B`)&&t.fifths<=-6&&n.prev!==void 0&&n.next!==void 0){let i=N(n.prev,t),a=N(n.next,t),o=[M(r.step,i),M(r.step,a)];if(o.includes(1)&&o.includes(-1))return k(e,r)}return k(e,{step:s,alter:0})}let c={step:g.find(e=>_[e]===r-1),alter:1},l={step:g.find(e=>_[e]===r+1),alter:-1};return t.fifths>0?k(e,c):t.fifths<0?k(e,l):k(e,r===6?c:l)}function P(e,t){let n=/^([A-G])([#♯b♭x𝄪𝄫]*)(.*)$/s.exec(e);if(!n)return e;let r=/[♯♭]/.test(e),i=(e,n)=>{let i=N(60+_[e]+w(n),t),a=C(i.alter);return i.step+(r?a.replace(/#/g,`♯`).replace(/b/g,`♭`):a)},a=n[3].replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,n)=>`/${i(t,n)}`);return i(n[1],n[2])+a}const F=[40,45,50,55,59,64],I=.08,L=1e-9;function R(e,t={}){let n=t.tuning&&t.tuning.length?t.tuning:F,r=Math.max(0,Math.floor(t.capo??0)),i=Math.floor(t.maxFret??22),a=t.octaveFold??!0,o=Math.min(n.length,31),s=Math.max(0,i-r),c=new Int32Array(o);for(let e=0;e<o;e++)c[e]=n[n.length-1-e]+r;let l=c.some((e,t)=>t>0&&e>c[t-1]),u=Math.max(1,s),d=u+1,f=e=>{for(let t=0;t<o;t++)if(e>=c[t]&&e<=c[t]+s)return!0;return!1},p=e=>{if(Number.isFinite(e)){if(f(e))return 0;if(a)for(let t=1;t<=10;t++){if(f(e+12*t))return 12*t;if(f(e-12*t))return-12*t}}};function m(e,t,n,r){let i=e.length,a=[];if(i===0||i>o)return a;let u=new Int8Array(i),d=new Int8Array(i),f=()=>{let e=99,t=-1,n=0,r=0;for(let a=0;a<i;a++){let i=d[a];r+=u[a],i===0?n++:(i<e&&(e=i),i>t&&(t=i))}let o=t<0,s=1,c=1,f=0;o||(f=t-e,s=Math.max(1,t-3),c=Math.max(1,e),s>c&&(s=c=Math.max(1,e)));let p=i>1?(l?Math.max(...u)-Math.min(...u):u[i-1]-u[0])+1-i:0,m=-.3*n+.3*Math.max(0,t-12)**2+1*f**1.5+.5*p+.05*r,h=m+I*s;if(a.length===24&&h>=a[23].rank)return;let g={str:u.slice(),fret:d.slice(),open:o,posLo:s,posHi:c,cost:m,rank:h},_=a.length;for(;_>0&&a[_-1].rank>h;)_--;a.splice(_,0,g),a.length>24&&a.pop()},p=(a,m,h,g,_=r)=>{if(a===i){f();return}let v=e[a],y=l?o-1:o-(i-a);for(let e=l?0:m;e<=y;e++){if(t[a]>=0&&e!==t[a]||_&1<<e)continue;let r=v-c[e];if(r<0||r>s||n[a]>=0&&r!==n[a])continue;let i=h,o=g;r>0&&(r<i&&(i=r),r>o&&(o=r),o-i>(i>=7?5:4))||(u[a]=e,d[a]=r,p(a+1,e+1,i,o,_|1<<e))}};return p(0,0,99,-1),a}let h=/* @__PURE__ */ new Map;function g(e,t){let n=String(t);for(let t of e)n+=`,${t.pitch}:${t.fixedT}:${t.fixedFret}`;let r=h.get(n);if(r)return r;let i=e.map((e,t)=>t),a={shapes:[],kept:[]};for(;i.length;){if(i.length<=o){let n=i.map(t=>e[t].pitch),r=i.map(t=>e[t].fixedT),o=i.map(t=>e[t].fixedFret),s=r.some(e=>e>=0),c=i.map(()=>-1),l=[];s&&(l.push([r,o,t]),t&&l.push([r,o,0])),l.push([c,c,t]),t&&l.push([c,c,0]);let u=[];for(let[e,t,r]of l)if(u=m(n,e,t,r),u.length)break;if(u.length){a={shapes:u,kept:i};break}}i=_(e,i)}return h.set(n,a),a}function _(e,t){let n=t.length,r=e=>t.filter((t,n)=>n!==e),i=t=>{let i=t[0],a=1/0;if(t.length>1&&n-1<=o){let o=Array(n-1).fill(-1);for(let n of t){let t=m(r(n).map(t=>e[t].pitch),o,o,0),s=t.length?t[0].rank:1/0;s<a&&(a=s,i=n)}}return r(i)},a=[];for(let r=1;r<n;r++)e[t[r]].pitch===e[t[r-1]].pitch&&a.push(r);if(a.length)return i(a);if(n>2){let r=t.map(t=>(e[t].pitch%12+12)%12),a=[],o=[];for(let e=1;e<n-1;e++)a.push(e),r.some((t,n)=>n!==e&&t===r[e])&&o.push(e);return i(o.length?o:a)}return r(n-1)}let v=e.map(e=>(e.pitches??[]).map(()=>({unplayable:!0}))),y=e.map(e=>{let t=[];return(e.pitches??[]).forEach((n,r)=>{let i=p(n);if(i===void 0)return;let a=n+i,l=-1,u=-1,d=e.fixed?.[r];if(d){let e=Math.floor(d.string)-1,t=d.fret!==void 0&&d.fret!==null&&Number.isFinite(d.fret),n=t?Math.floor(d.fret):a-(c[e]??NaN);e>=0&&e<o&&n>=0&&n<=s&&c[e]+n===a&&(l=e,u=t?n:-1)}t.push({pitch:a,orig:r,shifted:i,fixedT:l,fixedFret:u})}),t.sort((e,t)=>t.pitch-e.pitch||e.orig-t.orig),t.length?t:void 0}),b=new Float64Array(e.length*d),x=new Int32Array(e.length*d),S=new Int32Array(e.length*d),C=new Float64Array(d),w=new Int32Array(d),T=[],E=-1/0,D=0,O=e=>{let t=-1,n=1/0;for(let r=1,i=e*d+1;r<d;r++,i++)b[i]<n&&(n=b[i],t=r);return t},k=t=>{let n=0,r=T.length?O(T.length-1):-1;for(let i=T.length-1;i>=0&&r>=0;i--){let a=T[i];if(a.reach<=t+L)break;if(a.end<=t+L){r=S[i*d+r];continue}let o=a.plan.shapes[x[i*d+r]],s=e[a.event].durations??[];for(let e=0;e<a.plan.kept.length;e++)a.onset+(s[a.notes[a.plan.kept[e]].orig]??0)>t+L&&(n|=1<<o.str[e]);r=S[i*d+r]}return n},A=()=>{if(!T.length)return;let e=O(T.length-1);for(let t=T.length-1;t>=0&&e>=0;t--){let n=T[t],r=n.plan.shapes[x[t*d+e]],i=v[n.event];for(let e=0;e<n.plan.kept.length;e++){let t=n.notes[n.plan.kept[e]],a={string:r.str[e]+1,fret:r.fret[e]};t.shifted&&(a.shifted=t.shifted),i[t.orig]=a}e=S[t*d+e]}T=[]};for(let t=0;t<e.length;t++){let n=y[t];if(!n)continue;let r=e[t],i=Number.isFinite(r.onset)?r.onset:D,a=Math.max(0,i-E);a>=2&&A();let o=g(n,k(i));if(!o.shapes.length)continue;let s=T.length,c=s*d,l=c-d;if(s>0){let e=1+.5*a,t=1.5/e,n=2/e,r=1/0,i=-1;for(let e=1;e<d;e++){C[e]=r,w[e]=i;let t=b[l+e];r+=n,t+n<r&&(r=t+n,i=e)}r=1/0,i=-1;for(let e=d-1;e>=1;e--){let a=C[e],o=w[e];r<a&&(a=r,o=i);let s=b[l+e];r+=n,s+n<r&&(r=s+n,i=e),a+=t,s<=a?(C[e]=s,w[e]=s<1/0?e:-1):(C[e]=a,w[e]=o)}}b.fill(1/0,c,c+d),x.fill(-1,c,c+d),S.fill(-1,c,c+d);let f=o.shapes;for(let e=0;e<f.length;e++){let t=f[e],n=t.open?1:t.posLo,r=t.open?u:t.posHi;for(let i=n;i<=r;i++){let n=t.cost+I*i,r=-1;s>0&&(t.open?(n+=b[l+i],r=i):(n+=C[i],r=w[i])),n<b[c+i]&&(b[c+i]=n,x[c+i]=e,S[c+i]=r)}}let p=r.durations??[],m=0;for(let e of n)m=Math.max(m,p[e.orig]??0);T.push({event:t,plan:o,notes:n,onset:i,end:i+m,reach:Math.max(i+m,T.at(-1)?.reach??-1/0)}),D=i,E=i+m}return A(),v}function ee(e,t={}){let n=e.map(()=>({continuation:!1})),r=e.map((e,t)=>t).filter(t=>{let n=e[t];return n.pitch!==null&&Number.isFinite(n.pitch)&&Number.isFinite(n.onset)}).sort((t,n)=>e[t].onset-e[n].onset||t-n),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=[],s=[],c=e=>e.onset+(Number.isFinite(e.duration)?Math.max(0,e.duration):0);for(let t=0;t<r.length;){let l=e[r[t]].onset,u=t;for(;u<r.length&&Math.abs(e[r[u]].onset-l)<1e-6;)u++;let d=r.slice(t,u);t=u;let f=[];for(let t of d){let r=e[t],o=r.tieStop?a.get(r.pitch):void 0;o&&(i.set(t,o),n[t].continuation=!0,f.push(t),s[o[0]][o[1]]=Math.max(s[o[0]][o[1]],c(r)))}for(let t of f)e[t].tieStart||a.delete(e[t].pitch);for(let t of f)e[t].tieStart&&a.set(e[t].pitch,i.get(t));let p,m=/* @__PURE__ */ new Map;for(let t of d){if(n[t].continuation)continue;let r=e[t],u=r.pitch;p||(p={onset:l,durations:[],pitches:[],fixed:[]},o.push(p),s.push([]));let d=o.length-1,f=m.get(u);f===void 0?(f=p.pitches.length,m.set(u,f),p.pitches.push(u),p.fixed.push(r.fixed),s[d].push(c(r))):(s[d][f]=Math.max(s[d][f],c(r)),p.fixed[f]||(p.fixed[f]=r.fixed)),i.set(t,[d,f]),r.tieStart&&a.set(u,[d,f])}}o.forEach((e,t)=>{e.durations=s[t].map(t=>t-e.onset)});let l=R(o,t);for(let[e,[t,r]]of i)n[e].result=l[t][r];return n}new TextEncoder,new TextDecoder;const te=e=>{if(!e.startsWith(`n_`))return null;let t=e.replace(/(?:_c\d+)?(?:_s\d+)?$/,``);return t===e?null:t},z=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],ne=[0,2,4,5,7,9,11],B=(e,t)=>(e%t+t)%t;function re(e){let t=/^([+-]?)(dd|d|m|M|P|A|AA)(\d+)$/.exec(e.trim());if(!t)return{diatonic:0,chromatic:0};let n=Number(t[3])-1,r=n%7,i=ne[r]+12*Math.floor(n/7),a=(r===0||r===3||r===4?{dd:-2,d:-1,P:0,A:1,AA:2}:{dd:-3,d:-2,m:-1,M:0,A:1,AA:2})[t[2]]??0,o=t[1]===`-`?-1:1;return{diatonic:o*n,chromatic:o*(i+a)}}const ie=({diatonic:e,chromatic:t})=>7*t-12*e;function ae(e,t){if(!t.diatonic&&!t.chromatic)return e;let n=z.indexOf(e.step)+t.diatonic,r=z[B(n,7)],i=e.octave+Math.floor(n/7);return{step:r,octave:i,alter:V(e)+t.chromatic-V({step:r,octave:i,alter:0})}}const V=e=>(e.octave+1)*12+ne[z.indexOf(e.step)]+e.alter;function oe(e){if(e==null)return null;let t=/^\s*(\d+)\s*([sf]?)\s*$/.exec(e);if(!t)return null;let n=Number(t[1]);return t[2]===`f`?-n:n}const se=e=>e>0?`${e}s`:e<0?`${-e}f`:`0`,ce=e=>{let t=e;for(;t>7;)t-=12;for(;t<-7;)t+=12;return t};function le(e,t,n,r,i){if(t===0){let t=E(ce(e),n);return i?D(t)??t:t}let a=B(7*(e+7*t),12);return O(B(a-(n===`minor`?3:0),12),n,{family:r.profile,flip:i})}function ue(e){let t=[];return e.forEach((n,r)=>{if(n.tiedFrom!==void 0&&t[n.tiedFrom]&&V(t[n.tiedFrom])===n.midi){t.push(t[n.tiedFrom]);return}let i=e=>e&&!e.chord&&!n.chord?e.midi:void 0;t.push(N(n.midi,n.key,{source:n.source,prev:i(e[r-1]),next:i(e[r+1]),transposed:!0}))}),t}const de=(e,t)=>e.scale[z.indexOf(t)]?.alter??0;function fe(e){let t=Array(e.length).fill(!1),n=e.map((e,t)=>t).sort((t,n)=>e[t].onset-e[n].onset||t-n),r=/* @__PURE__ */ new Map;for(let i=0;i<n.length;){let a=i;for(;a<n.length&&Math.abs(e[n[a]].onset-e[n[i]].onset)<1e-6;)a++;let o=[];for(let s of n.slice(i,a)){let{pitch:n,key:i,tieEnd:a,cautionary:c}=e[s],l=`${n.step}${n.octave}`,u=r.get(l)??de(i,n.step);a||(n.alter!==u||c)&&(t[s]=!0,o.push([l,n.alter]))}for(let[e,t]of o)r.set(e,t);i=a}return t}const H=/^([A-G])([#♯b♭x𝄪𝄫]*)/,pe=e=>[...e].reduce((e,t)=>e+(t===`#`||t===`♯`?1:t===`x`||t===`𝄪`?2:t===`𝄫`?-2:-1),0);function me(e,t){let n=(e,n)=>{let r=t.reduce((e,t)=>ae(e,t),{step:e,alter:pe(n),octave:4});return r.step+(r.alter>0?`#`.repeat(r.alter):`b`.repeat(-r.alter))},r=H.exec(e);if(!r)return e;let i=e.slice(r[0].length).replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,r)=>`/${n(t,r)}`);return n(r[1],r[2])+i}const he={treble:[`G`,`2`],bass:[`F`,`4`],alto:[`C`,`3`],tenor:[`C`,`4`],treble8vb:[`G`,`2`,`8`]},U=[`clef.shape`,`clef.line`,`clef.dis`,`clef.dis.place`];function ge(e,t){let[n,r,i]=he[e];return`<clef${t?` xml:id="${t}"`:``} shape="${n}" line="${r}"${i?` dis="${i}" dis.place="below"`:``}/>`}function _e(e,t){if(!/\sclef\.shape\s*=/.test(e))return e;let n=U.reduce(Te,e);if(!t||!he[t])return n;let[r,i,a]=he[t];return n=G(G(n,`clef.shape`,r),`clef.line`,i),a?G(G(n,`clef.dis`,a),`clef.dis.place`,`below`):n}const ve=`CDEFGAB`,ye=[0,2,4,5,7,9,11],W={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},be=e=>({1:`s`,[-1]:`f`,0:`n`,2:`x`,[-2]:`ff`})[e]??`n`,xe=e=>({1:`s`,[-1]:`f`,0:`n`,2:`ss`,[-2]:`ff`})[e]??`n`;function Se(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}const Ce={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625};function we(e){return r(e,`grace`)===null?(Ce[r(e,`dur`)||``]??0)*(2-1/2**(Number(r(e,`dots`))||0)):0}function G(e,t,n){let r=RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,` ${t}="${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)}function Te(e,t){return e.replace(RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`),``)}const Ee=[`keysig`,`key.sig`,`key.mode`,`key.pname`,`key.accid`,`key.sig.mixed`],De=e=>Ee.reduce(Te,e),Oe=e=>e.replace(/\s*\/>$/,`>`),ke=e=>`<keySig sig="${se(e.fifths)}"${e.mode===`minor`?` mode="minor"`:``}/>`,Ae=e=>e===`minor`?`minor`:e===`major`?`major`:null,je=/^(?:\s+(?:n|xml:id|keysig|key\.[\w.]+)\s*=\s*(?:"[^"]*"|'[^']*'))*\s*$/;function Me(e,t){return t?!!t.interval||t.concert||t.flip||t.semitones!==0||/\b(?:clef\.)?shape="perc"/.test(e)||Object.values(t.staves).some(e=>e.percussion||(e.keys?.length??0)>1||!!e.clef||!!e.shift?.[1]||!!e.shift?.[0]||Object.keys(e.octaves??{}).length>0):!1}async function K(e,t,n,r=0){return!t||!Me(e,t)?e:Ne(t.interval?await n(e,{transpose:t.interval,transposeToSoundingPitch:!1}):e,t,r)}function Ne(e,t,n=0){if(!Me(e,t))return e;let i=ie(re(t.interval)),a=/* @__PURE__ */ new Map;u(e,({closing:e,name:t,attributes:n})=>{if(e||t!==`tie`)return;let i=r(n,`startid`)?.replace(/^#/,``),o=r(n,`endid`)?.replace(/^#/,``);i&&o&&a.set(o,i)});let o=[],s=[],c=[],l=[],d=[],f=[],p=new Set(Object.entries(t.staves).filter(([,e])=>e.percussion).map(([e])=>e)),m=e=>t.staves[e]??{profile:`neutral`,moved:t.semitones!==0},h=e=>{let t=m(e).shift;return t&&(t[0]||t[1])?{diatonic:t[0],chromatic:t[1]}:void 0},g=e=>!p.has(e)&&(m(e).moved||t.semitones!==0||t.flip||!!t.interval||!!h(e)),_=(e,t)=>{let n=p.has(e)?void 0:m(e).octaves;if(!n)return 0;let r=n[t]===void 0?te(t):null;return(n[t]??(r?n[r]:void 0)??0)/12},v=e=>!p.has(e)&&Object.keys(m(e).octaves??{}).length>0,y=e=>{let t=p.has(e)?void 0:m(e).clef;return t&&he[t]?t:void 0},b=[],x=[],S=[],C,w,T,D=0,O=-1,k=``,A=``,j=0,M=[],N=-1,F=0,I=0,L,R,ee=()=>M.reduce((e,t)=>e*t,1),z=(e,t,n)=>{let i=oe(r(e,t))??(t===`key.sig`?oe(r(e,`keysig`)):null);return i===null?null:{fifths:i,mode:Ae(r(e,n))??`major`}};u(e,({closing:t,name:n,attributes:i,selfClosing:u,index:m,length:h})=>{let _=e.slice(m,m+h);if(t){if(S.pop(),T){--D===0&&(T.end=m+h,T=void 0);return}n===`staffDef`&&w?(w.end=m+h,w=void 0):n===`scoreDef`&&C?(C.end=m+h,C=void 0):n===`note`&&L?(L.end=m+h,L=void 0):n===`chord`?(F--,j+=I*ee()):n===`tuplet`?M.pop():n===`harm`&&R?(R.textEnd=m,R=void 0):n===`layer`?A=``:n===`staff`&&(k=``);return}if(u||S.push(n),T){u||D++;return}if(R&&(R.nested=!0),n===`scoreDef`){let e={start:m,end:m+h,initial:!o.length,measure:O+1,content:!1,keyRanges:[],tagEdits:[],keys:/* @__PURE__ */ new Map},t=z(i,`key.sig`,`key.mode`);t&&e.keys.set(`*`,t);let n=De(_);n!==_&&e.tagEdits.push({start:m,end:m+h,text:n}),/\s(?!xml:id)[\w.:-]+\s*=/.test(n.replace(/^<[\w:]+/,``).replace(/\sxml:id\s*=\s*"[^"]*"/,``))&&(e.content=!0),o.push(e),u||(C=e);return}if(C&&n===`staffGrp`){if(C.initial)return;je.test(i)||(C.content=!0);return}if(n===`staffDef`){let e=r(i,`n`)||``,t={start:m,end:m+h,n:e,tag:_,selfClosing:u};if(r(i,`clef.shape`)===`perc`&&p.add(e),C){let n=z(i,`key.sig`,`key.mode`);n&&C.keys.set(e,n);let r=y(e)?_e(De(_),C.initial?y(e):void 0):De(_);r!==_&&C.tagEdits.push({start:m,end:m+h,text:r}),je.test(i)||(C.content=!0),C.initial&&(s.push(t),e&&!x.includes(e)&&x.push(e))}u||(w=t);return}if(n===`clef`&&w){r(i,`shape`)===`perc`&&p.add(w.n),u&&(w.clefEnd=m+h,w.clef={start:m,end:m+h,id:r(i,`xml:id`)}),C&&(C.content=!0),u&&C&&!C.initial&&y(w.n)&&b.push({start:m,end:m+h,text:``});return}if(n===`keySig`){let e={start:m,end:m+h};u||(T=e,D=1);let t=z(i,`sig`,`mode`);C?(C.keyRanges.push(e),t&&C.keys.set(w?w.n:`*`,t)):k&&f.push(Object.assign(e,{staff:k,measure:O,onset:j,key:t}));return}if(C){C.content=!0;return}if(n===`measure`){O++,c.push(m);return}if(n===`staff`){k=r(i,`n`)||``;return}if(n===`layer`){A=r(i,`n`)||`1`,j=0,M.length=0,F=0;return}if(!k||!A){n===`harm`&&!u&&(R={textStart:m+h,textEnd:m+h,staff:(r(i,`staff`)||``).split(/\s+/)[0],measure:O,nested:!1},d.push(R));return}if(n===`clef`){y(k)&&u&&b.push({start:m,end:m+h,text:``});return}if(n===`tuplet`){let e=Number(r(i,`num`))||1,t=Number(r(i,`numbase`))||1;u||M.push(t/e);return}if(n===`chord`){N=j,I=we(i),u?j+=I*ee():F++;return}if(n===`note`){let e=F>0,t=e?N:j;e||(j+=we(i)*ee());let n=(r(i,`pname`)||``).toUpperCase(),o=Number(r(i,`oct`));if(!n||!ve.includes(n)||!Number.isFinite(o)||!(g(k)||v(k)))return;let s=r(i,`xml:id`)||``,c=r(i,`tie`),d=r(i,`accid`),f=r(i,`accid.ges`);L={start:m,end:m+h,tag:_,selfClosing:u,id:s,staff:k,layer:A,measure:O,onset:t,chord:e,pname:n,oct:o,written:d===null?null:W[d]??null,gestural:f===null?null:W[f]??null,accids:[],tieEnd:a.has(s)||c===`t`||c===`m`,cautionary:!1},l.push(L),u&&(L=void 0);return}if(n===`accid`&&L){let e=r(i,`accid`),t=r(i,`accid.ges`);e!==null&&W[e]!==void 0&&(L.written=W[e]),t!==null&&W[t]!==void 0&&(L.gestural=W[t]),(r(i,`func`)!==null||r(i,`enclose`)!==null)&&(L.cautionary=e!==null),L.accids.push({start:m,end:m+h,attributes:i});return}[`rest`,`space`,`mRest`,`mSpace`,`multiRest`].includes(n)&&F===0&&(j+=(n.startsWith(`m`)?1e3:we(i))*ee())});for(let e of p)x.includes(e)||x.push(e);let ne=c.length,B=/* @__PURE__ */ new Map;for(let e of x){if(p.has(e))continue;let t=Array(Math.max(1,ne)).fill(void 0),r=m(e).keys;if(r?.length)for(let e=0;e<t.length;e++){let i=[...r].reverse().find(([t])=>t<=e+n)??r[0];t[e]={fifths:i[1],mode:i[2]}}else{let n={fifths:0,mode:`major`},r=/* @__PURE__ */ new Map;for(let n of o){let a=n.keys.get(e)??n.keys.get(`*`);a&&r.set(Math.min(n.measure,t.length-1),{fifths:a.fifths-i,mode:a.mode})}for(let n of f)n.staff===e&&n.key&&(n.onset===0||n.measure+1<t.length)&&r.set(Math.min(n.measure+1,t.length-1),{fifths:n.key.fifths-i,mode:n.key.mode});for(let e=0;e<t.length;e++)n=r.get(e)??n,t[e]=n}B.set(e,t)}let V=/* @__PURE__ */ new Map;for(let e of f)if(e.onset>0&&e.key){let t=`${e.staff}|${e.measure}`;(V.get(t)??V.set(t,[]).get(t)).push(e)}let se=(e,t,n)=>V.get(`${e}|${t}`)?.findLast(e=>e.onset<=n+1e-6),ce=(e,t,n=0)=>{let r=se(e,t,n)?.key,a=h(e);return r?{fifths:r.fifths-i+(a?ie(a):0),mode:r.mode}:B.get(e)?.[Math.max(0,Math.min(t,ne-1))]??{fifths:0,mode:`major`}},de=/* @__PURE__ */ new Map,H=(e,n,r=0)=>{let i=ce(e,n,r),a=`${e}|${i.fifths}|${i.mode}`,o=de.get(a);return o||(o=le(i.fifths,t.semitones,i.mode,m(e),t.flip),de.set(a,o)),o},pe=(e,t,n=0)=>{let r=h(e);return ce(e,t,n).fifths+i-(r?ie(r):0)},U=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.measure}|${se(e.staff,e.measure,e.onset)?.start??0}`;(U.get(t)??U.set(t,[]).get(t)).push(e)}let Ce=/* @__PURE__ */ new Map;for(let e of U.values()){let t=/* @__PURE__ */ new Map;for(let n of[...e].sort((e,t)=>e.onset-t.onset)){let e=`${n.pname}${n.oct}`;Ce.set(n,n.written??n.gestural??t.get(e)??Se(n.pname,pe(n.staff,n.measure,n.onset))),n.written!==null&&t.set(e,n.written)}}let Ee=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.layer}`;(Ee.get(t)??Ee.set(t,[]).get(t)).push(e)}let K=/* @__PURE__ */ new Map,Ne=e=>(e.octave+1)*12+ye[ve.indexOf(e.step)]+e.alter;for(let e of Ee.values()){let t=new Map(e.map((e,t)=>[e.id,t])),n=e.map(e=>{let n=h(e.staff),r={step:e.pname,octave:e.oct,alter:Ce.get(e)??0},i=n?ae(r,n):r,o={...i,octave:i.octave+_(e.staff,e.id)},s=a.get(e.id);return{midi:Ne(o),source:o,key:H(e.staff,e.measure,e.onset),chord:e.chord,tiedFrom:s===void 0?void 0:t.get(s)}});if(!g(e[0].staff)){n.forEach((t,n)=>K.set(e[n],t.source));continue}ue(n).forEach((t,n)=>K.set(e[n],t))}let Pe=new Map(l.map(e=>[e.id,e]));for(let e of l){let t=Pe.get(a.get(e.id)||``);t&&K.has(t)&&Ne(K.get(t))===Ne(K.get(e))&&K.set(e,K.get(t))}let Fe=/* @__PURE__ */ new Set,Ie=(e,t,n)=>({...E(0),scale:ve.split(``).map(r=>({step:r,alter:Se(r,pe(e,t,n))}))});for(let e of U.values()){let t=e[0].staff;if(!y(t)&&!v(t))continue;let n=fe(e.map(e=>({pitch:{step:e.pname,octave:e.oct,alter:Ce.get(e)??0},onset:e.onset,key:Ie(e.staff,e.measure,e.onset),tieEnd:e.tieEnd})));e.forEach((e,t)=>{e.written!==null&&!e.tieEnd&&!n[t]&&Fe.add(e)})}let Le=/* @__PURE__ */ new Map;for(let e of U.values()){let t=fe(e.map(e=>({pitch:K.get(e),onset:e.onset,key:H(e.staff,e.measure,e.onset),tieEnd:e.tieEnd,cautionary:e.cautionary||Fe.has(e)})));e.forEach((e,n)=>Le.set(e,t[n]))}let q=[];for(let e of l){let t=K.get(e),n=Le.get(e),i=Te(Te(e.tag,`accid`),`accid.ges`);i=G(G(i,`pname`,t.step.toLowerCase()),`oct`,String(t.octave));let a=Number(r(e.tag,`oct.ges`)??NaN);Number.isFinite(a)&&t.octave!==e.oct&&(i=G(i,`oct.ges`,String(a+t.octave-e.oct))),n||(i=G(i,`accid.ges`,xe(t.alter)));let o=e.accids.find(e=>r(e.attributes,`accid`)!==null)??e.accids[0],s=o?r(o.attributes,`xml:id`):null,c=o&&n?[`func`,`enclose`,`place`].map(e=>[e,r(o.attributes,e)]).filter(([,e])=>e!==null).map(([e,t])=>` ${e}="${t}"`).join(``):``,l=n?`<accid${s?` xml:id="${s}"`:``} accid="${be(t.alter)}"${c}/>`:``;if(e.selfClosing)q.push({start:e.start,end:e.end,text:l?`${Oe(i)}${l}</note>`:i});else{q.push({start:e.start,end:e.start+e.tag.length,text:i+l});for(let t of e.accids)q.push({start:t.start,end:t.end,text:``})}}for(let t of d){if(!g(t.staff)||t.nested||t.textEnd<=t.textStart)continue;let n=e.slice(t.textStart,t.textEnd),[,r,i,a]=/^(\s*)([\s\S]*?)(\s*)$/.exec(n),o=h(t.staff),s=P(o?me(i,[o]):i,H(t.staff,Math.max(0,t.measure)));s!==i&&q.push({start:t.textStart,end:t.textEnd,text:r+s+a})}for(let t of f){let n=t.onset>0&&t.key&&!p.has(t.staff)?ke(H(t.staff,t.measure,t.onset)):``,i=r(e.slice(t.start,t.end),`xml:id`);n&&i&&(n=G(n,`xml:id`,i)),q.push({start:t.start,end:t.end,text:n})}for(let e of o){if(!e.initial&&!e.content){q.push({start:e.start,end:e.end,text:``});continue}q.push(...e.tagEdits);for(let t of e.keyRanges)q.push({start:t.start,end:t.end,text:``})}let Re=x.filter(e=>!p.has(e));q.push(...b);for(let e of s){if(p.has(e.n)||!Re.includes(e.n))continue;let t=ke(H(e.n,0)),n=y(e.n),r=n?_e(De(e.tag),n):De(e.tag),i=n&&!e.clef&&!/\sclef\.shape\s*=/.test(e.tag)?ge(n,null):``;if(n&&e.clef&&q.push({start:e.clef.start,end:e.clef.end,text:ge(n,e.clef.id)}),e.selfClosing){let n=q.findIndex(t=>t.start===e.start&&t.end===e.end);n>=0&&q.splice(n,1),q.push({start:e.start,end:e.end,text:`${Oe(r)}${i}${t}</staffDef>`})}else{let n=e.clefEnd??e.start+e.tag.length;q.push({start:n,end:n,text:i+t})}}for(let e=1;e<ne;e++){let t=Re.filter(t=>{let n=H(t,e-1,1/0),r=H(t,e);return n.fifths!==r.fifths||n.mode!==r.mode});if(!t.length)continue;let n=c[e];q.push({start:n,end:n,text:`<scoreDef><staffGrp>${t.map(t=>`<staffDef n="${t}">${ke(H(t,e))}</staffDef>`).join(``)}</staffGrp></scoreDef>`})}if(!q.length)return e;q.sort((e,t)=>e.start-t.start||e.end-t.end);let ze=[],Be=0;for(let t of q)t.start<Be||(ze.push(e.slice(Be,t.start),t.text),Be=t.end);return ze.push(e.slice(Be)),ze.join(``)}const Pe={id:`violin`,provenance:`ported`,source:`violintab instruments.ts: VIOLIN_FINGER_MIDI`,strings:[`E`,`A`,`D`,`G`],openMidi:[76,69,62,55],fingers:[{1:[78,80,81,83],2:[79,81,83,85],3:[81,83,85,86],4:[83,85,86,88]},{1:[71,73,74,76],2:[72,74,76,77],3:[74,76,77,79],4:[76,77,79,81]},{1:[64,66,67,69],2:[65,67,69,71],3:[67,69,71,72],4:[69,71,72,74]},{1:[57,59,60,62],2:[58,60,62,64],3:[60,62,64,65],4:[62,64,66,67]}]},Fe=[.5,1,1.5,2,3,3.5,4,4.5];function Ie(e){return Object.fromEntries(Fe.map((t,n)=>{let r=e+n+1;return[t,[r,r+1,r+2,r+3]]}))}const Le={id:`cello`,provenance:`ported`,source:`violintab CELLO_FINGER_MIDI; Davidoff key correction`,strings:[`A`,`D`,`G`,`C`],openMidi:[57,50,43,36],fingers:[57,50,43,36].map(Ie)},q={violin:Pe,viola:{id:`viola`,provenance:`derived`,source:`violin transposed -7 semitones`,strings:[`A`,`D`,`G`,`C`],openMidi:[69,62,55,48],fingers:Pe.fingers.map(e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[t[0]-7,t[1]-7,t[2]-7,t[3]-7]])))},cello:Le,"double-bass":{id:`double-bass`,provenance:`derived`,source:`cello offsets on bass tuning; provisional four-finger analogy`,strings:[`G`,`D`,`A`,`E`],openMidi:[43,38,33,28],fingers:[43,38,33,28].map(Ie)}},Re={C:0,D:2,E:4,F:5,G:7,A:9,B:11};function ze(e,t,n){if(!Number.isInteger(t)||t<0||t>127)return[];let r=[];e.openMidi.forEach((n,i)=>{let a=i+1;t===n&&r.push({string:a,position:0,finger:0,modifier:``});for(let[o,s]of Object.entries(e.fingers[i]??{}))s.forEach((e,i)=>{let s=t-e;t>n&&Math.abs(s)<=1&&r.push({string:a,position:Number(o),finger:i+1,modifier:s===-1?`L`:s===1?`H`:``})})});let i=e.id===`cello`||e.id===`double-bass`,a=(n&&(Re[n.step]+n.alter+12)%12==t%12?n.alter>0:[1,3,8].includes(t%12))?`H`:`L`,o=e=>Number(e.modifier!==``),s=e=>i&&e.position===.5?1.25:e.position;return r.sort((e,t)=>Number(t.finger===0)-Number(e.finger===0)||(i?o(e)-o(t):0)||s(e)-s(t)||o(e)-o(t)||e.string-t.string||Number(e.modifier!==a)-Number(t.modifier!==a)||e.finger-t.finger)}function Be(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;for(let e of t)r.set(e.onset,[...r.get(e.onset)??[],e]);let i=[];for(let[t,a]of[...r].sort(([e],[t])=>e-t)){let r=a.map(e=>e.tieStop?i.find(n=>n.midi===e.midi&&n.until>=t):void 0);i=i.filter(e=>e.until>t);let o=a.map((t,n)=>t.fixed?[t.fixed]:r[n]?[r[n].fingering]:t.midi===null?[]:ze(e,t.midi,t.spelling)),s,c=1/0,l=(e,t,n)=>{if(!(n>=c)){if(e===a.length){s=[...t],c=n;return}o[e].forEach((r,o)=>{[...i.map(e=>({midi:e.midi,fingering:e.fingering})),...t.map((e,t)=>({midi:a[t].midi,fingering:e}))].some(t=>t.fingering.string===r.string&&t.midi!==a[e].midi||r.position&&t.fingering.position&&r.position!==t.fingering.position)||l(e+1,[...t,r],n+o)})}};new Set(a.map(e=>e.midi)).size<=4&&l(0,[],0),s&&s.forEach((e,r)=>{n.set(a[r].id,e),a[r].midi!==null&&i.push({midi:a[r].midi,until:t+a[r].duration,fingering:e})})}return n}const Ve={c:0,d:2,e:4,f:5,g:7,a:9,b:11},He={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},Ue={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625},We=/* @__PURE__ */ new Set([`rest`,`space`,`mRest`,`mSpace`,`multiRest`]),Ge=/* @__PURE__ */ new Set([`beam`,`tuplet`]),Ke=/* @__PURE__ */ new Set([`bTrem`,`fTrem`,`ligature`,`choice`,`orig`,`reg`,`sic`,`corr`,`supplied`,`add`,`subst`]),qe=/* @__PURE__ */ new Set([`harm`,`tempo`,`dir`,`repeatMark`,`fermata`]),Je=/* @__PURE__ */ new Set([`mRpt`,`mRpt2`,`multiRpt`]),Ye=/* @__PURE__ */ new Set([...Je,`beatRpt`,`halfmRpt`]),Xe=[[`c`],[`c`,`s`],[`d`],[`e`,`f`],[`e`],[`f`],[`f`,`s`],[`g`],[`a`,`f`],[`a`],[`b`,`f`],[`b`]],Ze=e=>e.replace(/[&<>"]/g,``),J=(e,t)=>e?` xml:id="${Ze(e)}${t}"`:``;function Qe(e,t,n){let i=Number(r(e,`dur.ppq`));if(t&&Number.isFinite(i)&&r(e,`dur.ppq`)!==null)return i/t;let a=Ue[r(e,`dur`)||``];return a===void 0?0:a*(2-1/2**(Number(r(e,`dots`))||0))*n.reduce((e,t)=>e*t,1)}const $e=(e,t,n)=>{let i=(r(e,`pname`)||``).toLowerCase(),a=Number(r(e,`oct`));if(!(i in Ve)||!Number.isFinite(a)||r(e,`oct`)===null)return null;let o=r(e,`accid.ges`)??t.gestural??r(e,`accid`)??t.written??``;return 12*(a+1)+Ve[i]+(He[o]??0)+n},et=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(0,Math.min(24,Math.round(e))):0,tt=e=>Array.isArray(e)&&e.length>=1&&e.length<=31&&e.every(e=>Number.isInteger(e)&&e>=0&&e<=127)?e:F,nt=e=>{if(!e.size)return null;let t=Math.max(...e.keys()),n=Array.from({length:t},(n,r)=>e.get(t-r));return n.every(e=>e!==void 0)?n:null};function rt(e,t){return`<tuning>${[...e].reverse().map((e,n)=>{let r=e+t,[i,a]=Xe[(r%12+12)%12];return`<course n="${n+1}" pname="${i}" oct="${Math.floor(r/12)-1}"${a?` accid="${a}"`:``}/>`}).join(``)}</tuning>`}function it(e,t){let n=new Set(t.generate),i=t.refret??{},a=new Set(t.sounding??[]),o=t.switched??{},s=/* @__PURE__ */ new Set([...n,...Object.keys(i)]),c=new Map([...s].map(e=>[e,[]])),l=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set,p=/* @__PURE__ */ new Set,m=4,h=4,g=4,_=(e,t)=>{let n=Number(r(e,`${t}count`)),i=Number(r(e,`${t}unit`));n>0&&(h=n),i>0&&(g=i),m=h*4/g},v=0,y=0,b=!1,x=!1,S=null,C=0,w=null,T=0,E=[],D=null,O=!1,k=null,A=0,j=[{onset:0,sig:`0`}],M=[],N=(e,t)=>{e!==null&&j.push({staff:t,onset:v+(x?T:0),sig:e})},P=(e,t)=>{let n=Number.parseInt(t)||0;return(t.endsWith(`f`)?`beadgcf`:`fcgdaeb`).slice(0,n).includes(e)?t.endsWith(`f`)?`f`:`s`:`n`},F=()=>{if(!k)return;let e=l.get(S);if(t.fingers?.[S]&&M.push({rec:k.rec,staff:S,onset:k.event.onset,measure:v,semi:e?.semi??0,attributes:k.attributes,written:k.written,gestural:k.gestural}),S in i){let t=Number(r(k.attributes,`tab.course`)),n=Number(r(k.attributes,`tab.fret`)),a=e?.courses?.get(t);k.rec.midi=a!==void 0&&Number.isInteger(n)&&n>=0&&r(k.attributes,`tab.fret`)!==null?a+n+i[S]:null}else{k.rec.midi=$e(k.attributes,k,e?.semi??0);let t=(r(k.attributes,`pname`)??``).toUpperCase(),n=He[r(k.attributes,`accid.ges`)??k.gestural??r(k.attributes,`accid`)??k.written??`n`]??0;t.toLowerCase()in Ve&&Math.abs(n)<=2&&(k.rec.spelling={step:t,alter:n})}k=null};u(e,({closing:e,name:i,attributes:u,selfClosing:h})=>{if(e){if(i===`staffDef`){w?.courses.size&&(w.entry.courses=w.courses),w=null;return}if(i===`measure`){x=!1,v+=y>0&&!b?y:Math.max(y,m);return}if(!S)return;if(A){A--;return}i===`note`?F():i===`chord`||i===`tabGrp`?(D&&!O&&(T+=D.dur),D=null):i===`tuplet`?E.pop():i===`layer`?y=Math.max(y,T):i===`staff`&&--C===0&&(S=null);return}if(i===`scoreDef`){N(r(u,`keysig`)??r(u,`key.sig`)),_(u,`meter.`);return}if(i===`keySig`){N(r(u,`sig`),S??w?.n);return}if(i===`meterSig`){_(u,``);return}if(i===`staffDef`){_(u,`meter.`);let e=r(u,`n`)||``;if(s.has(e)){N(r(u,`keysig`)??r(u,`key.sig`),e);let t=l.get(e),n=Number(r(u,`ppq`)),i=r(u,`trans.semi`),s={ppq:n>0?n:t?.ppq,semi:e in o?o[e]:a.has(e)?0:i===null?t?.semi??0:Number(i)||0,courses:t?.courses};l.set(e,s),h||(w={n:e,entry:s,courses:/* @__PURE__ */ new Map})}return}if(i===`course`&&w){let e=Number(r(u,`n`)),t=$e(u,{},0);e>=1&&t!==null&&w.courses.set(e,t);return}if(i===`measure`){x=!0,y=0,b=!1;return}if(i===`tie`&&x){let e=(r(u,`startid`)||``).replace(/^#/,``),t=(r(u,`endid`)||``).replace(/^#/,``);e&&t&&(d.add(e),f.add(t));return}if(i===`staff`&&!S){let e=r(u,`n`)||``;s.has(e)&&!h&&(S=e,C=1);return}if(!S)return;if(A){h||A++;return}if(!h&&i===`staff`){C++;return}let j=c.get(S),M=l.get(S)?.ppq;if(i===`layer`){T=0;return}if(i===`graceGrp`){h||(A=1);return}if(i===`tuplet`){let e=Number(r(u,`num`))||1,t=Number(r(u,`numbase`))||1;h||E.push(t/e);return}if(i===`chord`||i===`tabGrp`){if(O=r(u,`grace`)!==null,O){h||(A=1);return}D={onset:v+T,dur:Qe(u,M,E),notes:[]},j.push(D);let e=r(u,`xml:id`);e&&n.has(S)&&p.add(e),h&&(T+=D.dur,D=null);return}if(i===`note`){if(!D&&r(u,`grace`)!==null){h||(A=1);return}let e=D;e||(e={onset:v+T,dur:Qe(u,M,E),notes:[]},j.push(e),T+=e.dur);let i=r(u,`xml:id`)||``;i&&n.has(S)&&p.add(i);let a=r(u,`tie`)||``,o=Number(r(u,`tab.course`)),s=Number(r(u,`tab.fret`)),c=Number.isInteger(s)&&r(u,`tab.fret`)!==null,l={id:i,midi:null,fixed:t.fixed&&n.has(S)&&!t.unfixed?.includes(S)&&Number.isInteger(o)&&o>=1?c?{string:o,fret:s}:{string:o}:void 0,continuation:/[mt]/.test(a),tieStart:/[im]/.test(a),dur:e.dur};e.notes.push(l),k={rec:l,attributes:u,event:e,inChord:!!D},h&&F();return}if(i===`accid`&&k){let e=r(u,`accid`),t=r(u,`accid.ges`);e!==null&&(k.written=e),t!==null&&(k.gestural=t);return}(We.has(i)||Ye.has(i))&&(i===`mRest`||i===`mSpace`||i===`multiRest`||Je.has(i)?b=!0:T+=i===`halfmRpt`?m/2:i===`beatRpt`?4/g:Qe(u,M,E))});let I=/* @__PURE__ */ new Map;for(let e of M.sort((e,t)=>e.onset-t.onset)){let t=0;j.forEach((n,r)=>{(!n.staff||n.staff===e.staff)&&n.onset<=e.onset&&(n.onset>j[t].onset||n.onset===j[t].onset&&(Number(!!n.staff)>Number(!!j[t].staff)||!!n.staff==!!j[t].staff&&r>t))&&(t=r)});let n=r(e.attributes,`pname`)??``,i=`${e.staff}:${n}:${r(e.attributes,`oct`)}`,a=r(e.attributes,`accid.ges`)??e.gestural??r(e.attributes,`accid`)??e.written,o=I.get(i),s=a??(o?.measure===e.measure&&o.key===t?o.value:P(n,j[t].sig));a!=null&&I.set(i,{value:a,measure:e.measure,key:t}),e.rec.midi=$e(e.attributes,{...e,gestural:s},e.semi);let c=He[s]??0;n in Ve&&Math.abs(c)<=2&&(e.rec.spelling={step:n.toUpperCase(),alter:c})}return{staves:c,tieStarts:d,tieEnds:f,info:l,ids:p}}function at(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=et(i.capo);for(let[c,l]of e){if(i.fingers?.[c])continue;let e=tt(i.tunings?.[c]??i.tuning),u=[],d=[];for(let e of l)for(let r of e.notes)u.push(r),d.push({onset:e.onset,duration:r.dur,pitch:r.midi,tieStart:r.tieStart||t.has(r.id),tieStop:r.continuation||n.has(r.id),fixed:a?.get(r.id)??r.fixed});let f=c in(i.refret??{})&&r.get(c)?.courses?nt(r.get(c).courses):null;ee(d,f?{tuning:f,capo:0}:{tuning:e,capo:s}).forEach(({result:e,continuation:t},n)=>{let r=u[n];if(r.continuation=t,e){if(t){r.held=e;return}o.set(r.id,e),a&&r.id&&`string`in e&&!a.has(r.id)&&a.set(r.id,{string:e.string,fret:e.fret})}})}return o}const ot=e=>[`dur`,`dots`,`dur.ppq`].map(t=>{let n=r(e,t);return n===null?``:` ${t}="${n}"`}).join(``),st=(e,t)=>t&&`string`in t?`<note${J(e,``)} tab.course="${t.string}" tab.fret="${t.fret}"/>`:``,ct=e=>e&&`string`in e?`<note tab.course="${e.string}" tab.fret="${e.fret}" visible="false"/>`:``,lt=(e,t,n)=>{let r=RegExp(`(\\s${t.replace(`.`,`\\.`)}\\s*=\\s*)(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,`$1"${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)};function ut(e,t,n){let i=new Set(t.generate),a=t.refret??{},o=t.retarget,s=Object.keys(o).length>0;if(!i.size&&!s&&!Object.keys(a).length)return e;let c=i.size||Object.keys(a).length,{staves:l,tieStarts:d,tieEnds:f,info:p,ids:m}=c?it(e,t):{staves:/* @__PURE__ */ new Map,tieStarts:/* @__PURE__ */ new Set,tieEnds:/* @__PURE__ */ new Set,info:/* @__PURE__ */ new Map,ids:/* @__PURE__ */ new Set},h=c?at(l,d,f,p,t,n):/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map;for(let[e,n]of l)for(let r of n)for(let n of r.notes)(n.continuation||t.fingers?.[e]&&f.has(n.id))&&g.set(n.id,n.held);let _=/* @__PURE__ */ new Map;for(let[e,r]of l){let i=t.fingers?.[e];if(!i)continue;let a=Be(q[i],r.flatMap(e=>e.notes.map(t=>({id:t.id,onset:e.onset,duration:t.dur,midi:t.midi,spelling:t.spelling,tieStop:t.continuation||f.has(t.id),fixed:n?.get(t.id)?.finger}))));for(let[e,t]of a){_.set(e,t),n?.set(e,{string:t.string,fret:t.finger,finger:t});let r={string:t.string,fret:t.modifier?44:t.finger};h.set(e,r),g.has(e)&&g.set(e,r)}}let v=(e,t)=>{let n=_.get(e),r=st(e?`${e}${t}`:``,h.get(e));return n?r.replace(`/>`,` type="finger-tab-${n.modifier}${n.finger}-p${String(n.position).replace(`.`,`-`)}"/>`):r},y=et(t.capo),b=new Set([...i].map(e=>String(100+Number(e)))),x=[],S=0,C=-1,w=!1,T=0,E=null,D=null,O=``,k=[],A=0,j=/* @__PURE__ */ new Map,M=e=>e===.5?`pos. ½`:`${[``,`I`,`II`,`III`,`IV`][Math.floor(e)]??``}${e%1?`½`:``} pos.`,N=0,P=0,F=null,I=-1,L=(e,n,r)=>{let i=t.fingers?.[e],a=i?[...q[i].openMidi].reverse():tt(t.tunings?.[e]??t.tuning),o=rt(a,t.fingers?.[e]?0:y),s=p.get(e)?.ppq;return`<staffDef${J(n,`-tab`)} n="${100+Number(e)}" lines="${a.length}" notationtype="tab.guitar" keysig="0"${s?` ppq="${s}"`:``}><clef shape="TAB" line="${a.length-1}"/>${o}${r}</staffDef>`};return u(e,({closing:n,name:c,attributes:l,selfClosing:u,index:d,length:f})=>{x.push(e.slice(S,d)),S=d+f;let p=e.slice(d,d+f);if(n?T--:u||T++,!n&&qe.has(c)&&s){let e=r(l,`staff`);if(e!==null){let t=e.split(/\s+/).filter(Boolean).map(e=>o[e]??e).join(` `);if(t!==e){p=lt(p,`staff`,t);let e=r(l,`startid`)?.replace(/^#/,``)??``;e&&m.has(e)&&t.split(` `).every(e=>b.has(e))&&(p=lt(p,`startid`,`#${e}-tab`))}}}if(I<0&&c===`staff`&&!n&&!u&&(r(l,`n`)||``)in a)I=T;else if(I>=0&&n&&c===`staff`&&T===I-1)I=-1;else if(I>=0&&c===`note`&&!n){let e=r(l,`xml:id`)||``,t=g.has(e)?g.get(e):h.get(e);t&&`string`in t?p=lt(lt(p,`tab.course`,String(t.string)),`tab.fret`,String(t.fret)):t&&(p=lt(p,`visible`,`false`))}if(x.push(p),c===`scoreDef`&&!n&&!w&&C<0){u?w=!0:C=T;return}if(c===`scoreDef`&&n&&C>=0&&T===C-1){C=-1,w=!0;return}if(C>=0){if(c===`staffDef`&&!n){let e=r(l,`n`)||``;if(!i.has(e))return;let t=r(l,`xml:id`)||``;if(u){x.push(L(e,t,``));return}E={n:e,id:t,meterSig:``,depth:T};return}if(E&&c===`meterSig`&&!n){E.meterSig=p.replace(/\sxml:id\s*=\s*"[^"]*"/,``).replace(/\s*\/?>$/,`/>`);return}E&&c===`staffDef`&&n&&T===E.depth-1&&(x.push(L(E.n,E.id,E.meterSig)),E=null);return}if(!D){if(c===`staff`&&!n&&!u&&i.has(r(l,`n`)||``)){let e=r(l,`n`);O=e,k=[],A=0,D=[`<staff${J(r(l,`xml:id`)||``,`-tab`)} n="${100+Number(e)}">`],N=T,P=0,F=null}return}if(n&&c===`staff`&&T===N-1){D.push(`</staff>`),x.push(D.join(``),...k),D=null;return}if(P){n?P--:u||P++;return}let y=r(l,`xml:id`)||``;if(!n&&c===`note`&&t.fingers?.[O]&&r(l,`grace`)===null&&_.has(y)&&!g.has(y)){let e=_.get(y)?.position||j.get(O)||0;if(e&&e!==A){let t=!A&&j.get(O)===e,n=` startid="#${Ze(y)}-tab"`;n&&k.push(`<dir staff="${100+Number(O)}"${n} place="above" type="finger-position finger-staff-${100+Number(O)}${t?` finger-reassert`:``}"><rend fontsize="30%">${M(e)}</rend></dir>`),A=e,j.set(O,e)}}if(n){c===`layer`||Ge.has(c)?D.push(`</${c}>`):c===`chord`&&F&&(F.frets||D.push(ct(F.held)),D.push(`</tabGrp>`),F=null);return}if(c===`layer`||Ge.has(c)){let e=[`n`,`num`,`numbase`,`num.visible`,`bracket.visible`,`num.format`,`bracket.place`,`num.place`].map(e=>{let t=r(l,e);return t===null?``:` ${e}="${t}"`}).join(``);D.push(`<${c}${J(y,`-tab`)}${e}${u?`/>`:`>`}`);return}if(!Ke.has(c)){if(c===`chord`){if(r(l,`grace`)!==null){u||(P=1);return}D.push(`<tabGrp${J(y,`-tab`)}${ot(l)}><tabDurSym/>`),u?D.push(`</tabGrp>`):F={frets:0};return}if(c===`note`){if(u||(P=1),F){if(g.has(y)){F.held||(F.held=g.get(y));return}let e=v(y,`-tab`);e&&F.frets++,D.push(e);return}if(r(l,`grace`)!==null)return;D.push(`<tabGrp${J(y,`-tab`)}${ot(l)}><tabDurSym/>${g.has(y)?ct(g.get(y)):v(y,`-tabn`)}</tabGrp>`);return}if(We.has(c)||Ye.has(c)){u||(P=1);let e=Ye.has(c)?l.replace(/\s+xml:id\s*=\s*(?:"[^"]*"|'[^']*')/,``).trimEnd():ot(l);D.push(`<${c}${J(y,`-tab`)}${e}/>`);return}u||(P=1)}}),x.push(e.slice(S)),x.join(``)}const dt=e=>`reader-m${e+1}`,ft=`(?:[^>"']|"[^"]*"|'[^']*')*`,Y=RegExp(`<!--[\\s\\S]*?-->|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|<\\?[\\s\\S]*?\\?>|<(/?)(part|measure|attributes|lyric|slur|wedge|octave-shift|pedal|bracket|dashes|tuplet|glissando|slide|ending|beam)(?=[\\s/>])(${ft})>`,`g`),pt=/* @__PURE__ */ new Map;function mt(e,t){if(!e.includes(t))return;let n=pt.get(t);n||pt.set(t,n=RegExp(`\\s${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`));let r=n.exec(e);return r?r[1]??r[2]:void 0}const ht=/* @__PURE__ */ new Set([`start`,`up`,`down`,`crescendo`,`diminuendo`]);function gt(e){let t=/<score-partwise[\s>]/.exec(e),n=e.indexOf(`</part-list>`);if(!t||n<0)return;let r=[],i=[],a=/* @__PURE__ */ new Map,o=``,s,c=-1,l=-1,u=0,d=/* @__PURE__ */ new Set,f=0,p=-1;Y.lastIndex=n;for(let t=Y.exec(e);t;t=Y.exec(e)){let n=t[2];if(!n)continue;let m=t[1]===`/`,h=t[3]||``,g=h.endsWith(`/`);if(n===`part`){if(m){if(!s||c>=0)return;s=void 0,p=t.index+t[0].length}else{if(s||g)return;r.length||(o=e.slice(0,t.index)),s={open:t[0],measures:[],attributes:[]},r.push(s),l=-1}continue}if(!s)continue;if(n===`measure`){if(m){if(c<0)return;s.measures.push(c,t.index+t[0].length),c=-1,u&&(f=Math.max(f,Math.ceil(u/Math.max(1,d.size))))}else{if(c>=0)return;l++,u=0,d=/* @__PURE__ */ new Set,g?s.measures.push(t.index,t.index+t[0].length):c=t.index}continue}if(c<0||m)continue;if(n===`attributes`){if(g)continue;let n=e.indexOf(`</attributes>`,t.index);if(n<0)return;let r=n+13;s.attributes.push({measure:l,block:e.slice(t.index,r),leading:!/<note(?=[\s/>])/.test(e.slice(c,t.index))}),Y.lastIndex=r;continue}if(n===`lyric`){u++,d.add(mt(h,`number`)||`1`);continue}let _;if(n===`beam`){let t=/^\s*(begin|end)\b/.exec(e.slice(Y.lastIndex,Y.lastIndex+16))?.[1];_=t===`begin`?`open`:t===`end`?`close`:void 0}else{let e=mt(h,`type`)||``;_=ht.has(e)?`open`:e===`stop`||n===`ending`&&e===`discontinue`?`close`:void 0}if(!_)continue;let v=`${r.length}:${n}:${n===`ending`?``:mt(h,`number`)||`1`}`;if(_===`open`)a.set(v,l);else{let e=a.get(v);e!==void 0&&(a.delete(v),l>e&&i.push({start:e,end:l}))}}if(!r.length||s||c>=0)return;let m=r[0].measures.length/2;if(m)return i.sort((e,t)=>e.start-t.start),{text:e,head:o,tail:e.slice(p),parts:r,measureCount:m,lyricDensity:f,spans:i}}const _t=[`divisions`,`key`,`time`,`staves`,`part-symbol`,`instruments`,`clef`,`staff-details`,`transpose`,`for-part`],vt=RegExp(`<(${_t.join(`|`)})(?=[\\s/>])(${ft})>`,`g`);function yt(e,t){let n=/* @__PURE__ */ new Map;for(let{measure:r,block:i}of e.attributes){if(r>=t)break;vt.lastIndex=0;for(let e=vt.exec(i);e;e=vt.exec(i)){let[t,r,a]=e,o=t;if(!a.endsWith(`/`)){let t=i.indexOf(`</${r}>`,vt.lastIndex);if(t<0)continue;o=i.slice(e.index,t+r.length+3),vt.lastIndex=t+r.length+3}let s=mt(a,`number`)??(r===`clef`?`1`:void 0);if(s===void 0)for(let e of[...n.keys()])e.startsWith(`${r}#`)&&n.delete(e);n.set(`${r}#${s??``}`,o)}}for(let{measure:r,block:i,leading:a}of e.attributes)if(r===t&&a)for(let[,e]of i.matchAll(/<key(?=[\s/>])((?:[^>"']|"[^"]*"|'[^']*')*)>/g)){let t=mt(e,`number`);for(let e of[...n.keys()])e.startsWith(`key#`)&&(t===void 0||e===`key#${t}`||e===`key#`)&&n.delete(e)}if(!n.size)return``;let r=[];for(let e of _t)for(let[t,i]of n)t.startsWith(`${e}#`)&&r.push(e===`time`?i.replace(/^<time\b((?:[^>"']|"[^"]*"|'[^']*')*)/,(e,t)=>`<time print-object="no"${t.replace(/\sprint-object\s*=\s*(?:"[^"]*"|'[^']*')/,``)}`):i);return`<attributes>${r.join(``)}</attributes>`}function bt(e,t,n,r){let i=t.measures[n*2],a=t.measures[n*2+1],o=e.text.slice(i,a),s=/^<measure\b(?:[^>"']|"[^"]*"|'[^']*')*>/.exec(o)[0].length,c=o.slice(0,s),l=` id="${dt(n)}"`;return c=/\sid\s*=\s*(?:"[^"]*"|'[^']*')/.test(c)?c.replace(/\sid\s*=\s*(?:"[^"]*"|'[^']*')/,l):c.replace(/\s*(\/?)>$/,`${l}$1>`),c.endsWith(`/>`)?r?`${c.slice(0,-2)}>${r}</measure>`:c:c+r+o.slice(s)}function xt(e,t,n){let r=[t>0?e.head.replace(/<credit\b[\s\S]*?<\/credit>/g,``):e.head];for(let i of e.parts){r.push(i.open);let a=Math.min(n,i.measures.length/2);for(let n=t;n<a;n++)r.push(bt(e,i,n,n===t&&t>0?yt(i,t):``));r.push(`</part>`)}return r.push(e.tail),r.join(``)}function St(e,t){let n=t-1;for(let r of e.spans){if(r.start>=t)break;r.end>=t&&(n=Math.min(n,r.start))}return Math.max(0,Math.min(t,16,t-n))}function Ct(e,t){let n=t;for(let r of e.spans){if(r.start>=t)break;r.end>=t&&(n=Math.max(n,r.end))}return Math.max(0,Math.min(e.measureCount-t,16,n-t+1))}function wt(e,t,n,r,i){let a=e.measureCount;if(n<=0)return{from:0,to:a,firstSystem:0,endSystem:1,firstPage:1};let o=Math.ceil(a/n),s=Math.max(1,Math.floor(i/Math.max(1,r*n))),c=Math.floor(Math.max(0,Math.min(o-1,t))/s)*s,l=Math.min(o,c+s),u=c*n,d=Math.min(a,l*n),f=St(e,u),p=d<a?Ct(e,d):0,m=u-f,h=f?Math.ceil(u/n)-Math.floor(m/n)+1:1;return{from:m,to:d+p,firstSystem:c,endSystem:l,firstPage:h}}const Tt=[`breaks`,`transpose`,`transposeToSoundingPitch`,`xmlIdChecksum`];let Et,Dt,Ot;function kt(){return Dt??=(async()=>{if(!Et)throw Error(`The notation renderer was not told where to load Verovio from.`);let{module:e,toolkit:t}=Et;try{let[n,r]=await Promise.all([import(
|
|
2
|
-
/* @vite-ignore */
|
|
3
|
-
e),import(
|
|
4
|
-
/* @vite-ignore */
|
|
5
|
-
t)]);if(typeof n.default!=`function`||typeof r.VerovioToolkit!=`function`||typeof r.enableLogToBuffer!=`function`)throw Error(`not a compatible Verovio build`);return Ot={createModule:n.default,Toolkit:r.VerovioToolkit,enableLogToBuffer:r.enableLogToBuffer}}catch(n){throw Dt=void 0,new It(`Could not load Verovio from ${e} and ${t}: ${n instanceof Error?n.message:String(n)}`,void 0)}})()}let X,At;function jt(){if(X)return X;let e=kt().then(e=>e.createModule()).then(e=>(Ot.enableLogToBuffer(1,e),At=e,e)).catch(t=>{throw X===e&&(X=void 0),t});return X=e}const Mt=async()=>{let e=await jt();return new Ot.Toolkit(e)};let Nt,Pt,Z;const Q=/* @__PURE__ */ new Map,Ft=[];var It=class extends Error{code;constructor(e,t){super(e),this.code=t}};function Lt(e){for(let e of[Nt,Pt])try{e?.destroy()}catch{}Nt=Pt=void 0,Z=void 0,e&&(X=void 0,At=void 0)}async function Rt(e){return e===`main`?Nt??=await Mt():Pt??=await Mt()}function zt(){let e=At;return e?.HEAPU8?.length??e?.wasmMemory?.buffer.byteLength}function Bt(e){let t=Q.get(e);if(!t)throw new It(`The score is no longer loaded in the renderer.`,`missing`);return Q.delete(e),Q.set(e,t),t}function $(e,t,n){if(e.resetOptions(),e.setOptions(n),!e.loadData(t))throw Error(`Verovio could not import this score.`)}const Vt={breaks:`none`,inputFrom:`auto`,xmlIdChecksum:!0};async function Ht(e){let t=await Mt();try{return $(t,e,Vt),t.getMEI()}finally{try{Ft.push(t.getLog()||``)}catch{}try{t.destroy()}catch{}}}async function Ut(e,t,n){let r=`${t}-${n}`,i=e.meis.get(r);if(i!==void 0)return e.meis.delete(r),e.meis.set(r,i),i;for(i=await Ht(xt(e.index,t,n)),e.meis.set(r,i);e.meis.size>8;)e.meis.delete(e.meis.keys().next().value);return i}async function Wt(e,t){let n=await Mt();try{return $(n,e,{breaks:`none`,xmlIdChecksum:!0,...t}),n.getMEI()}finally{try{Ft.push(n.getLog()||``)}catch{}try{n.destroy()}catch{}}}const Gt=(e,t,n=0)=>K(e,t,Wt,n);async function Kt(e,t){if(!t)return e.mei;let n=JSON.stringify(t);return e.spelled?.key!==n&&(e.spelled={key:n,mei:await Gt(e.mei,t)}),e.spelled.mei}async function qt(e,t){let n=await Kt(e,t.spelling);if(!t.tab)return n;let r=JSON.stringify([t.spelling??null,t.tab]);return e.tabbed?.key!==r&&(e.tabbed={key:r,mei:ut(n,t.tab)}),e.tabbed.mei}async function Jt(e,t,n,r){let i=await Yt(e,t,n,r.spelling);if(!r.tab)return i;let a=JSON.stringify([r.spelling??null,r.tab]),o=e.frets.get(a);if(!o)for(o=/* @__PURE__ */ new Map,e.frets.set(a,o);e.frets.size>4;)e.frets.delete(e.frets.keys().next().value);return ut(i,r.tab,o)}async function Yt(e,t,n,r){let i=await Ut(e,t,n);if(!r||!Me(i,r))return i;let a=`${t}-${n}|${JSON.stringify(r)}`,o=e.spelled.get(a);if(o!==void 0)return e.spelled.delete(a),e.spelled.set(a,o),o;for(o=await Gt(i,r,t),e.spelled.set(a,o);e.spelled.size>8;)e.spelled.delete(e.spelled.keys().next().value);return o}const Xt=(e,t)=>Object.fromEntries(t.map(t=>[t,e[t]??null]));async function Zt(e,t,n,r){let i=JSON.stringify([...e,t,Xt(n,Tt)]),a=JSON.stringify(n),o=await Rt(`main`);return Z?.loadKey===i?Z.optionsKey!==a&&(Z=void 0,o.resetOptions(),o.setOptions(n),o.redoLayout(),Z={loadKey:i,optionsKey:a}):(Z=void 0,$(o,await r(),n),Z={loadKey:i,optionsKey:a}),o}function Qt(e,t,n){return Math.min(n,Math.max(t*2,nn(e,t,t*4)+1))}const $t=/\s(?:endid|tstamp2)\s*=\s*"([^"]*)"/g,en=/\sxml:id\s*=\s*"([^"]*)"/,tn=/<measure\b/g;function nn(e,t,n){let r=[];tn.lastIndex=0;for(let t=tn.exec(e);t&&r.length<=n;t=tn.exec(e))r.push(t.index);let i=/* @__PURE__ */ new Set,a=0;for(let n=0;n+1<r.length;n++){let o=e.slice(r[n],r[n+1]);if(n<t)for(let[,e]of o.matchAll($t)){let t=/^(\d+)m\+/.exec(e);t?a=Math.max(a,n+Number(t[1])):i.add(e.replace(/^#/,``))}else if(i.size)for(let e of o.match(/<[^>]*\sxml:id\s*=\s*"[^"]*"[^>]*>/g)||[]){let t=en.exec(e)?.[1];t&&i.delete(t)&&(a=Math.max(a,n))}if(n>=t&&!i.size)break}return Math.min(n-1,a)}async function rn(e,t,n){let r=new TextDecoder().decode(t),i=gt(r),a;if(i&&(n||i.parts.length*i.measureCount>=2400)){let{staffDefs:e,groups:t}=d(await Ht(xt(i,0,1)));a={kind:`chunked`,index:i,info:{measureIds:Array.from({length:i.measureCount},(e,t)=>dt(t)),lyricDensity:i.lyricDensity,staffDefs:e,groups:t,chunked:!0},meis:/* @__PURE__ */ new Map,spelled:/* @__PURE__ */ new Map,frets:/* @__PURE__ */ new Map}}else{let e=await Rt(`main`);Z=void 0,$(e,r,Vt);let t=e.getMEI();a={kind:`whole`,mei:t,info:d(t)}}for(Q.delete(e),Q.set(e,a);Q.size>12;)Q.delete(Q.keys().next().value);return a.info}function an(e,t,n){let r=h(e.renderToSVG(t)),i=/<svg\b[^>]*?\sid="([^"]+)"/.exec(r)?.[1];return!i||!/^[\w-]+$/.test(i)?r:r.replace(RegExp(`(?<=[#"-])${i}(?![\\w-])`,`g`),`${i}-c${n}`)}const on=(e,t)=>{let n=new Set(t.hiddenStaves);return Math.max(1,e.staffDefs.filter(e=>!n.has(e.n)).length+(t.tab?.generate.length??0))};async function sn(e){if(e.kind===`import`)return rn(e.revision,e.bytes,!!e.chunking?.force);if(e.kind===`release`)return Q.delete(e.revision),null;if(e.simulateOom)throw await new Promise(e=>setTimeout(e,300)),RangeError(`Cannot enlarge memory arrays (simulated).`);let t=Bt(e.revision);if(e.kind===`probe`){let n=await Rt(`probe`);if(t.kind===`chunked`){let r=t.index.measureCount,i=Math.min(r,e.measures*2),a=e.measures>=r?r:i+Ct(t.index,i);return $(n,m(await Jt(t,0,a,e.view),e.view),e.options),{svg:an(n,1,e.channel),pageCount:n.getPageCount(),measures:a}}let{info:r}=t,i=await qt(t,e.view),a=e.measures>=r.measureIds.length?r.measureIds.length:Qt(i,e.measures,r.measureIds.length);return $(n,m(i,e.view,a),e.options),{svg:an(n,1,e.channel),pageCount:n.getPageCount(),measures:a}}if(t.kind===`whole`){let n=await Zt([e.revision],e.view,e.options,async()=>m(await qt(t,e.view),e.view)),r=n.getPageCount();return{pageCount:r,pages:e.pages.filter(e=>e>=1&&e<=r).map(t=>({page:t,svg:an(n,t,e.channel)}))}}let n=e.view.breakEvery,r=n>0?Math.ceil(t.index.measureCount/n):1,i=/* @__PURE__ */ new Map;for(let a of e.pages){if(a<1||a>r)continue;let o=wt(t.index,a-1,n,on(t.info,e.view),e.chunkBudget),s=`${o.from}-${o.to}`;(i.get(s)??i.set(s,{plan:o,pages:[]}).get(s)).pages.push(a)}let a=[];for(let{plan:n,pages:r}of i.values()){let i=await Zt([e.revision,n.from,n.to],e.view,e.options,async()=>m(await Jt(t,n.from,n.to,e.view),e.view,1/0,n.from)),o=i.getPageCount();for(let t of r){let r=n.firstPage+(t-1-n.firstSystem);if(r>o)throw Error(`A score chunk laid out ${o} pages where ${r} were expected.`);a.push({page:t,svg:an(i,r,e.channel)})}}return{pageCount:r,pages:a}}function cn(e){if(e instanceof It)return{message:e.message,code:e.code};let t=e instanceof Error?`${e.name}: ${e.message}`:String(e),n=globalThis.WebAssembly?.Exception;return n&&e instanceof n||/out of memory|OOM|Cannot enlarge memory|allocation failed|RangeError/i.test(t)?{message:`This score is too large for the notation renderer on this device (it ran out of memory).`,code:`oom`}:{message:e instanceof Error?e.message:String(e)}}function ln(e){let t=Ft.splice(0).join(``);try{t+=(Nt??Pt)?.getLog()||``}catch{}if(!t)return;let n=t.split(`
|
|
6
|
-
`).filter(Boolean),r=n.filter(e=>e.startsWith(`[Error]`)).length;console.warn(`Verovio ${e}: ${n.length} log message${n.length===1?``:`s`} (${r} error${r===1?``:`s`})${n.length>12?`, first 12`:``}:\n${n.slice(0,12).join(`
|
|
7
|
-
`)}`)}const un=[],dn=/* @__PURE__ */ new Map;let fn=!1;const pn=e=>self.postMessage(e);async function mn(){let e=un.shift();if(!e){fn=!1;return}if(e.kind!==`import`&&e.kind!==`release`&&e.ticket<(dn.get(e.channel)??0))pn({id:e.id,error:`Superseded score render.`,code:`superseded`});else try{let t=await sn(e);ln(e.kind),pn({id:e.id,value:t,heap:zt()})}catch(t){ln(e.kind);let{message:n,code:r}=cn(t);r!==`missing`&&Lt(r===`oom`||!(t instanceof Error&&t.message===`Verovio could not import this score.`)),pn({id:e.id,error:n,code:r,heap:zt()})}setTimeout(()=>void mn(),0)}self.onmessage=e=>{let t=e.data;if(t.kind===`configure`){Et=t.files,jt().catch(()=>{});return}(t.kind===`probe`||t.kind===`render`)&&dn.set(t.channel,Math.max(dn.get(t.channel)??0,t.ticket)),un.push(t),fn||(fn=!0,setTimeout(()=>void mn(),0))};
|