« get me outta code hell

generateArtTagSidebar.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/generateArtTagSidebar.js
blob: 51e53d20c3841c6bc9df69f9b693a0a8a4505edf (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
import {collectTreeLeaves} from '#wiki-data';

export default {
  contentDependencies: ['generateArtTagAncestorSidebarBox'],
  extraDependencies: ['wikiData'],

  sprawl: ({artTagData}) =>
    ({artTagData}),

  query(sprawl, artTag) {
    const baobab = artTag.ancestorArtTagBaobabTree;
    const uniqueLeaves = new Set(collectTreeLeaves(baobab));

    // Just match the order in tag data.
    const furthestAncestorArtTags =
      sprawl.artTagData
        .filter(artTag => uniqueLeaves.has(artTag));

    return {furthestAncestorArtTags};
  },

  relations: (relation, query, sprawl, artTag) => ({
    ancestorBoxes:
      query.furthestAncestorArtTags
        .map(ancestorArtTag =>
          relation('generateArtTagAncestorSidebarBox', ancestorArtTag, artTag)),
  }),

  generate: (relations) =>
    ({leftSidebarMultiple: relations.ancestorBoxes}),
};