diff options
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPageOtherReleasesList.js')
-rw-r--r-- | src/content/dependencies/generateTrackInfoPageOtherReleasesList.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js b/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js new file mode 100644 index 00000000..ebd76577 --- /dev/null +++ b/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js @@ -0,0 +1,42 @@ +import {stitchArrays} from '#sugar'; + +export default { + contentDependencies: ['linkTrack'], + extraDependencies: ['html', 'language'], + + relations: (relation, track) => ({ + trackLinks: + track.otherReleases + .map(track => relation('linkTrack', track)), + }), + + data: (track) => ({ + albumNames: + track.otherReleases + .map(track => track.album.name), + + albumColors: + track.otherReleases + .map(track => track.album.color), + }), + + generate: (data, relations, {html, language}) => + html.tag('p', + {[html.onlyIfContent]: true}, + + language.$('releaseInfo.alsoReleasedOn', { + [language.onlyIfOptions]: ['albums'], + + albums: + language.formatConjunctionList( + stitchArrays({ + trackLink: relations.trackLinks, + albumName: data.albumNames, + albumColor: data.albumColors, + }).map(({trackLink, albumName, albumColor}) => + trackLink.slots({ + content: language.sanitize(albumName), + color: albumColor, + }))), + })), +}; |