« get me outta code hell

generateArtistInfoPageArtworksChunkItem.js « dependencies « content « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
blob: 089cfb8dc23ae82c905677ffbe01b611ffb25656 (plain)
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
export default {
  contentDependencies: [
    'generateArtistInfoPageChunkItem',
    'generateArtistInfoPageOtherArtistLinks',
    'linkTrack',
  ],

  extraDependencies: ['html', 'language'],

  query: (contrib) => ({
    kind:
      (contrib.isBannerArtistContribution
        ? 'banner'
     : contrib.isWallpaperArtistContribution
        ? 'wallpaper'
     : contrib.isForAlbum
        ? 'album-cover'
        : 'track-cover'),
  }),

  relations: (relation, query, contrib) => ({
    template:
      relation('generateArtistInfoPageChunkItem'),

    trackLink:
      (query.kind === 'track-cover'
        ? relation('linkTrack', contrib.thing)
        : null),

    otherArtistLinks:
      relation('generateArtistInfoPageOtherArtistLinks', [contrib]),
  }),

  data: (query, contrib) => ({
    kind:
      query.kind,

    annotation:
      contrib.annotation,
  }),

  slots: {
    filterEditsForWiki: {
      type: 'boolean',
      default: false,
    },
  },

  generate: (data, relations, slots, {html, language}) =>
    relations.template.slots({
      otherArtistLinks: relations.otherArtistLinks,

      annotation:
        (slots.filterEditsForWiki
          ? data.annotation?.replace(/^edits for wiki(: )?/, '')
          : data.annotation),

      content:
        language.encapsulate('artistPage.creditList.entry', capsule =>
          (data.kind === 'track-cover'
            ? language.$(capsule, 'track', {
                track: relations.trackLink,
              })
            : html.tag('i',
                language.encapsulate(capsule, 'album', capsule =>
                  (data.kind === 'wallpaper'
                    ? language.$(capsule, 'wallpaperArt')
                 : data.kind === 'banner'
                    ? language.$(capsule, 'bannerArt')
                    : language.$(capsule, 'coverArt')))))),
    }),
};