diff options
Diffstat (limited to 'src/content/dependencies/generateAlbumSidebar.js')
-rw-r--r-- | src/content/dependencies/generateAlbumSidebar.js | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/src/content/dependencies/generateAlbumSidebar.js b/src/content/dependencies/generateAlbumSidebar.js index bf6b091a..4eef62b2 100644 --- a/src/content/dependencies/generateAlbumSidebar.js +++ b/src/content/dependencies/generateAlbumSidebar.js @@ -7,26 +7,44 @@ export default { extraDependencies: ['html'], + contracts: { + relations: { + hook(contract, [relation, album, track]) { + contract.provide({ + relation, album, track, - relations(relation, album, track) { - const relations = {}; + groups: contract.selectProperty(album, 'groups'), + trackSections: contract.selectProperty(album, 'trackSections'), + }); + }, - relations.albumLink = - relation('linkAlbum', album); + compute({relation, album, track, groups, trackSections}) { + const relations = {}; - relations.groupBoxes = - album.groups.map(group => - relation('generateAlbumSidebarGroupBox', album, group)); + relations.albumLink = + relation('linkAlbum', album); - relations.trackSections = - album.trackSections.map(trackSection => - relation('generateAlbumSidebarTrackSection', album, track, trackSection)); + relations.groupBoxes = + groups.map(group => + relation('generateAlbumSidebarGroupBox', album, group)); - return relations; - }, + relations.trackSections = + trackSections.map(trackSection => + relation('generateAlbumSidebarTrackSection', album, track, trackSection)); + + return relations; + }, + }, + + data: { + hook(contract, [album, track]) { + contract.provide({track}); + }, - data(album, track) { - return {isAlbumPage: !track}; + compute({track}) { + return {isAlbumPage: !track}; + }, + }, }, generate(data, relations, {html}) { |