diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-05-01 16:51:20 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-05-06 12:29:06 -0300 |
commit | 2616ee8b666b0449131a45beafbbe69d152c563f (patch) | |
tree | 75bf946996d2a4f5b2bcc217baf9499f2e4a028f /src/content/dependencies/generateLyricsEntry.js | |
parent | 928a8247048d3476d46b0e8817f11fc5b068506a (diff) |
content, css: generateLyricsEntry: source & wiki contributors
Diffstat (limited to 'src/content/dependencies/generateLyricsEntry.js')
-rw-r--r-- | src/content/dependencies/generateLyricsEntry.js | 61 |
1 files changed, 53 insertions, 8 deletions
diff --git a/src/content/dependencies/generateLyricsEntry.js b/src/content/dependencies/generateLyricsEntry.js index 4f9c22f1..fb8e71cc 100644 --- a/src/content/dependencies/generateLyricsEntry.js +++ b/src/content/dependencies/generateLyricsEntry.js @@ -1,13 +1,27 @@ export default { - contentDependencies: [ - 'transformContent', - ], - + contentDependencies: ['linkArtist', 'linkExternal', 'transformContent'], extraDependencies: ['html', 'language'], relations: (relation, entry) => ({ content: relation('transformContent', entry.body), + + artistText: + relation('transformContent', entry.artistText), + + artistLinks: + entry.artists + .filter(artist => artist.name !== 'HSMusic Wiki') // smh + .map(artist => relation('linkArtist', artist)), + + sourceLinks: + entry.sourceURLs + .map(url => relation('linkExternal', url)), + }), + + data: (entry) => ({ + isWikiLyrics: + entry.isWikiLyrics, }), slots: { @@ -17,9 +31,40 @@ export default { }, }, - generate: (relations, slots, {html}) => - html.tag('div', {class: 'lyrics-entry'}, - slots.attributes, + generate: (data, relations, slots, {html, language}) => + language.encapsulate('misc.lyrics', capsule => + html.tag('div', {class: 'lyrics-entry'}, + slots.attributes, + + [ + html.tag('p', {class: 'lyrics-details'}, + {[html.onlyIfContent]: true}, + {[html.joinChildren]: html.tag('br')}, + + [ + language.$(capsule, 'source', { + [language.onlyIfOptions]: ['source'], + + source: + language.formatUnitList( + relations.sourceLinks.map(link => + link.slots({ + indicateExternal: true, + tab: 'separate', + }))), + }), + + data.isWikiLyrics && + language.$(capsule, 'contributors', { + [language.onlyIfOptions]: ['contributors'], + + contributors: + (html.isBlank(relations.artistText) + ? language.formatUnitList(relations.artistLinks) + : relations.artistText.slot('mode', 'inline')), + }), + ]), - relations.content.slot('mode', 'lyrics')), + relations.content.slot('mode', 'lyrics'), + ])), }; |