From a1d39a16ab3ed60a9af4ef277fbf5c4a98a84b2d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 1 May 2026 18:37:35 -0300 Subject: content: generateListenLineOrList, generateReleaseInfoBlock --- .../dependencies/generateTrackReleaseInfo.js | 92 ++++++++++------------ 1 file changed, 43 insertions(+), 49 deletions(-) (limited to 'src/content/dependencies/generateTrackReleaseInfo.js') 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', + }), ])), }; -- cgit 1.3.0-6-gf8a5