diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2025-10-23 18:17:33 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2025-10-23 18:19:17 -0300 |
| commit | 2d8622f8b31df0367ded52a45d7362abfe6d9a7c (patch) | |
| tree | 0c66e60a8b86729d32daf025e5ac13a4be235a2f /src/content/dependencies/generateNearbyTrackList.js | |
| parent | e100804966122cd730a0ec4bf55ad10e10b6be60 (diff) | |
content: generateNearbyTrackList
makes generateTrackList more general
Diffstat (limited to 'src/content/dependencies/generateNearbyTrackList.js')
| -rw-r--r-- | src/content/dependencies/generateNearbyTrackList.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/content/dependencies/generateNearbyTrackList.js b/src/content/dependencies/generateNearbyTrackList.js new file mode 100644 index 00000000..6771285a --- /dev/null +++ b/src/content/dependencies/generateNearbyTrackList.js @@ -0,0 +1,34 @@ +export default { + query: (tracks, contextTrack) => ({ + presentedTracks: + (contextTrack + ? tracks.map(track => + track.otherReleases.find(({album}) => album === contextTrack.album) ?? + track) + : tracks), + }), + + relations: (relation, query, _tracks, _contextTrack) => ({ + items: + query.presentedTracks + .map(track => relation('generateTrackListItem', track, [])), + }), + + slots: { + colorMode: { + validate: v => v.is('none', 'track', 'line'), + default: 'track', + }, + }, + + generate: (relations, slots, {html}) => + html.tag('ul', + {[html.onlyIfContent]: true}, + + relations.items.map(item => + item.slots({ + showArtists: 'auto', + showDuration: false, + colorMode: slots.colorMode, + }))), +}; |