// split line into parts on chords
const parts = [];
- line.split(/(\[[^\]]+\])/).forEach(part => parts.push(
- part[0] == '[' ? html`<span class="chord">${part.slice(1, -1)}</span>` : part
+ line.split(/(\[[^\]]+\])/).forEach(part => parts.push(part[0] == '['
+ ? html`<span class="chord">${part.slice(1, -1)}</span>`
+ : (part ? html`<span class="text">${part}</span>` : null)
));
verseHasChords ||= parts.length > 1;
parts.push('\n')
render(song, el_song);
}
-document.getElementById('open').addEventListener('change', async ev => renderChordpro(await ev.target.files[0].text()));
+async function main() {
+ document.getElementById('open').addEventListener('change', async ev => renderChordpro(await ev.target.files[0].text()));
+
+ const params = new URLSearchParams(document.location.search);
+ const loadURL = params.get('l');
+ if (loadURL) {
+ try {
+ const response = await fetch(loadURL);
+ if (response.ok) {
+ renderChordpro(await response.text());
+ } else {
+ console.warn('Failed to fetch', loadURL, ':', response.status, response.statusText);
+ }
+ } catch (error) {
+ console.warn('Failed to fetch', loadURL, ':', error);
+ }
+ }
+}
+
+main();