1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
import {empty} from '../../util/sugar.js';
export default {
contentDependencies: [
'linkArtist',
'linkExternalAsIcon',
],
extraDependencies: [
'html',
'language',
],
relations(relation, artist) {
const relations = {};
relations.artistLink = relation('linkArtist', artist);
relations.artistIcons =
(artist.urls ?? []).map(url =>
relation('linkExternalAsIcon', url));
return relations;
},
data(artist, contribution) {
return {contribution};
},
slots: {
showContribution: {type: 'boolean', default: false},
showIcons: {type: 'boolean', default: false},
},
generate(data, relations, slots, {html, language}) {
const hasContributionPart = !!(slots.showContribution && data.contribution);
const hasExternalPart = !!(slots.showIcons && !empty(relations.artistIcons));
const externalLinks = hasExternalPart &&
html.tag('span',
{[html.noEdgeWhitespace]: true, class: 'icons'},
language.formatUnitList(relations.artistIcons));
return (
(hasContributionPart
? (hasExternalPart
? language.$('misc.artistLink.withContribution.withExternalLinks', {
artist: relations.artistLink,
contrib: data.contribution,
links: externalLinks,
})
: language.$('misc.artistLink.withContribution', {
artist: relations.artistLink,
contrib: data.contribution,
}))
: (hasExternalPart
? language.$('misc.artistLink.withExternalLinks', {
artist: relations.artistLink,
links: externalLinks,
})
: language.$('misc.artistLink', {
artist: relations.artistLink,
}))));
},
};
|