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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import {empty} from '#sugar';
export default {
contentDependencies: [
'generateArtistCreditWikiEditsPart',
'linkContribution',
],
extraDependencies: ['html', 'language'],
query: (contributions) => ({
normalContributions:
contributions
.filter(contrib => !contrib.annotation?.startsWith(`edits for wiki`)),
wikiEditContributions:
contributions
.filter(contrib => contrib.annotation?.startsWith(`edits for wiki`)),
}),
relations: (relation, query, _contributions) => ({
contributionLinks:
query.normalContributions
.map(contrib => relation('linkContribution', contrib)),
wikiEditsPart:
relation('generateArtistCreditWikiEditsPart',
query.wikiEditContributions),
}),
data: (query, _contributions) => ({
hasWikiEdits:
!empty(query.wikiEditContributions),
}),
slots: {
showAnnotation: {type: 'boolean', default: true},
showExternalLinks: {type: 'boolean', default: true},
showChronology: {type: 'boolean', default: true},
trimAnnotation: {type: 'boolean', default: false},
chronologyKind: {type: 'string'},
stringKey: {type: 'string'},
},
generate(data, relations, slots, {language}) {
const contributionsList =
language.formatConjunctionList(
relations.contributionLinks.map(link =>
link.slots({
showAnnotation: slots.showAnnotation,
showExternalLinks: slots.showExternalLinks,
showChronology: slots.showChronology,
trimAnnotation: slots.trimAnnotation,
chronologyKind: slots.chronologyKind,
})));
return language.$(slots.stringKey, {
[language.onlyIfOptions]: ['artists'],
artists:
(data.hasWikiEdits
? language.encapsulate('misc.artistLink.withEditsForWiki', capsule =>
language.$(capsule, {
// It's nonsense to display "+ edits" without
// having any regular contributions, also.
[language.onlyIfOptions]: ['artists'],
artists: contributionsList,
edits:
relations.wikiEditsPart.slots({
showAnnotation: slots.showAnnotation,
}),
}))
: contributionsList),
});
},
};
|