diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-01-16 09:14:47 -0400 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-01-16 09:14:47 -0400 |
| commit | 2b66d66d5d89f2a6d914bef1abb997497657b10d (patch) | |
| tree | 9aa939ed6fbcc37b09734f2cc5e759a52e58322f /src/content/dependencies/generateMusicVideo.js | |
| parent | f177fba63f3d42c45b16a0b6246b7c2f7726e6ca (diff) | |
data, content, css: basic music video implementation preview
Diffstat (limited to 'src/content/dependencies/generateMusicVideo.js')
| -rw-r--r-- | src/content/dependencies/generateMusicVideo.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/content/dependencies/generateMusicVideo.js b/src/content/dependencies/generateMusicVideo.js new file mode 100644 index 00000000..a61cd5b7 --- /dev/null +++ b/src/content/dependencies/generateMusicVideo.js @@ -0,0 +1,77 @@ +export default { + relations: (relation, musicVideo) => ({ + image: + relation('image', { + path: musicVideo.path, + artTags: [], + dimensions: musicVideo.coverArtDimensions, + }), + + artistCredit: + relation('generateArtistCredit', musicVideo.artistContribs, []), + + contributorCredit: + relation('generateArtistCredit', musicVideo.contributorContribs, []), + }), + + data: (musicVideo) => ({ + 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', {class: 'music-video-credits'}, + {[html.joinChildren]: html.tag('br')}, + + [ + language.encapsulate(capsule, 'by', workingCapsule => { + const additionalStringOptions = {}; + + if (data.label) { + workingCapsule += '.customLabel'; + additionalStringOptions.label = data.label; + } + + return relations.artistCredit.slots({ + normalStringKey: workingCapsule, + additionalStringOptions, + + showAnnotation: true, + showChronology: true, + + chronologyKind: 'musicVideo', + }); + }), + + relations.contributorCredit.slots({ + normalStringKey: language.encapsulate(capsule, 'contributors'), + + showAnnotation: true, + showChronology: true, + + chronologyKind: 'musicVideoContribution', + }), + ]), + ])), +}; |