« get me outta code hell

generateGroupNavLinks.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/generateGroupNavLinks.js
blob: bdc3ee4cae80eedeefab804cb4ec08a9c1a697a1 (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
export default {
  contentDependencies: ['generateGroupNavAccent', 'linkGroup'],
  extraDependencies: ['html', 'language', 'wikiData'],

  sprawl: ({groupCategoryData, wikiInfo}) => ({
    groupCategoryData,
    enableGroupUI: wikiInfo.enableGroupUI,
    enableListings: wikiInfo.enableListings,
  }),

  relations: (relation, _sprawl, group) => ({
    mainLink:
      relation('linkGroup', group),

    accent:
      relation('generateGroupNavAccent', group),
  }),

  data: (sprawl, _group) => ({
    enableGroupUI: sprawl.enableGroupUI,
    enableListings: sprawl.enableListings,
  }),

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

    currentExtra: {
      validate: v => v.is('gallery'),
    },
  },

  generate: (data, relations, slots, {language}) =>
    (data.enableGroupUI
      ? [
          {auto: 'home'},

          data.enableListings &&
            {
              path: ['localized.listingIndex'],
              title: language.$('listingIndex.title'),
            },

          {
            html:
              language.$('groupPage.nav.group', {
                group: relations.mainLink,
              }),

            accent:
              relations.accent
                .slot('currentExtra', slots.currentExtra),
          },
        ].filter(Boolean)

      : [
          {auto: 'home'},
          {auto: 'current'},
        ]),
};