diff options
Diffstat (limited to 'src/content/dependencies/generateMusicVideo.js')
| -rw-r--r-- | src/content/dependencies/generateMusicVideo.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/content/dependencies/generateMusicVideo.js b/src/content/dependencies/generateMusicVideo.js new file mode 100644 index 00000000..035cd353 --- /dev/null +++ b/src/content/dependencies/generateMusicVideo.js @@ -0,0 +1,76 @@ +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), + + contributorCredit: + relation('generateArtistCredit', musicVideo.contributorContribs, []), + }), + + data: (musicVideo, _thing) => ({ + 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'}, + language.encapsulate(capsule, 'label', workingCapsule => { + const workingOptions = {}; + + 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, + ]), + + html.tag('p', + language.encapsulate(capsule, 'contributorsLine', capsule => + language.$(capsule, { + [language.onlyIfOptions]: ['credit'], + + credit: + relations.contributorCredit.slots({ + normalStringKey: language.encapsulate(capsule, 'credit'), + + showAnnotation: true, + showChronology: true, + chunkwrap: false, + + chronologyKind: 'musicVideoContribution', + }), + }))), + ])), +}; |