diff options
Diffstat (limited to 'src/content/dependencies/generateMusicVideo.js')
| -rw-r--r-- | src/content/dependencies/generateMusicVideo.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/content/dependencies/generateMusicVideo.js b/src/content/dependencies/generateMusicVideo.js new file mode 100644 index 00000000..1eb33e0b --- /dev/null +++ b/src/content/dependencies/generateMusicVideo.js @@ -0,0 +1,73 @@ +export default { + relations: (relation, musicVideo, thing) => ({ + image: + relation('image', { + path: musicVideo.path, + artTags: [], + dimensions: musicVideo.coverArtDimensions, + }), + + artistsLine: + relation('generateMusicVideoArtistsLine', musicVideo), + + dateLine: + relation('generateMusicVideoDateLine', musicVideo, thing), + + musicVideoContributors: + relation('generateMusicVideoContributors', musicVideo), + + contributorCredit: + relation('generateArtistCredit', musicVideo.contributorContribs, []), + }), + + data: (musicVideo, _thing) => ({ + title: + musicVideo.title, + + label: + musicVideo.label, + + url: + musicVideo.url, + }), + + generate: (data, relations, {language, html}) => + language.encapsulate('misc.musicVideo', capsule => + html.tag('div', {class: 'music-video'}, [ + html.tag('p', {class: 'music-video-label'}, + data.title && + {class: 'title-style'}, + + language.encapsulate(capsule, 'label', workingCapsule => { + const workingOptions = {}; + + if (data.title) { + workingCapsule += '.customLabel.title'; + workingOptions.title = data.title; + } else if (data.label) { + workingCapsule += '.customLabel'; + workingOptions.label = data.label; + } + + return language.$(workingCapsule, workingOptions); + })), + + relations.image.slots({ + link: data.url, + }), + + html.tag('p', + {[html.joinChildren]: html.tag('br')}, + + [ + html.tag('span', {class: 'artists-line'}, + {[html.onlyIfContent]: true}, + + relations.artistsLine), + + relations.dateLine, + ]), + + relations.musicVideoContributors, + ])), +}; |