diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-05-01 18:37:35 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-05-01 18:37:35 -0300 |
| commit | a1d39a16ab3ed60a9af4ef277fbf5c4a98a84b2d (patch) | |
| tree | 5533aa908374b3575fbf1091950abde6e710a606 /src/content/dependencies/generateTrackReleaseInfo.js | |
| parent | f6aad9a81fbb1b4e619355cbec316988837fb61a (diff) | |
content: generateListenLineOrList, generateReleaseInfoBlock
Diffstat (limited to 'src/content/dependencies/generateTrackReleaseInfo.js')
| -rw-r--r-- | src/content/dependencies/generateTrackReleaseInfo.js | 92 |
1 files changed, 43 insertions, 49 deletions
diff --git a/src/content/dependencies/generateTrackReleaseInfo.js b/src/content/dependencies/generateTrackReleaseInfo.js index 0207e574..001f5a54 100644 --- a/src/content/dependencies/generateTrackReleaseInfo.js +++ b/src/content/dependencies/generateTrackReleaseInfo.js @@ -1,22 +1,21 @@ import {compareArrays} from '#sugar'; export default { - relations(relation, track) { - const relations = {}; + relations: (relation, track) => ({ + block: + relation('generateReleaseInfoBlock'), - relations.artistContributionsLine = + artistContributionsLine: relation('generateReleaseInfoContributionsLine', track.artistContribs, - track.artistText); + track.artistText), - relations.listenLine = - relation('generateReleaseInfoListenLine', track); + listenLineOrList: + relation('generateListenLineOrList', track), - relations.albumLink = - relation('linkAlbum', track.album); - - return relations; - }, + albumLink: + relation('linkAlbum', track.album), + }), data(track) { const data = {}; @@ -48,43 +47,38 @@ export default { generate: (data, relations, {html, language}) => language.encapsulate('releaseInfo', capsule => html.tags([ - html.tag('p', - {[html.onlyIfContent]: true}, - {[html.joinChildren]: html.tag('br')}, - - [ - language.encapsulate(capsule, 'by', capsule => { - const withAlbum = - (data.showAlbum ? '.withAlbum' : ''); - - const albumOptions = - (data.showAlbum ? {album: relations.albumLink} : {}); - - return relations.artistContributionsLine.slots({ - stringKey: capsule + withAlbum, - featuringStringKey: capsule + '.featuring' + withAlbum, - - additionalStringOptions: albumOptions, - - chronologyKind: 'track', - }); - }), - - language.$(capsule, 'released', { - [language.onlyIfOptions]: ['date'], - date: language.formatDate(data.date), - }), - - language.$(capsule, 'duration', { - [language.onlyIfOptions]: ['duration'], - duration: language.formatDuration(data.duration), - }), - ]), - - html.tag('p', - relations.listenLine.slots({ - visibleWithoutLinks: true, - context: ['track'], - })), + relations.block.slot('items', [ + language.encapsulate(capsule, 'by', capsule => { + const withAlbum = + (data.showAlbum ? '.withAlbum' : ''); + + const albumOptions = + (data.showAlbum ? {album: relations.albumLink} : {}); + + return relations.artistContributionsLine.slots({ + stringKey: capsule + withAlbum, + featuringStringKey: capsule + '.featuring' + withAlbum, + + additionalStringOptions: albumOptions, + + chronologyKind: 'track', + }); + }), + + language.$(capsule, 'released', { + [language.onlyIfOptions]: ['date'], + date: language.formatDate(data.date), + }), + + language.$(capsule, 'duration', { + [language.onlyIfOptions]: ['duration'], + duration: language.formatDuration(data.duration), + }), + ]), + + relations.listenLineOrList.slots({ + visibleWithoutLinks: true, + context: 'track', + }), ])), }; |