diff options
Diffstat (limited to 'src/content/dependencies/generateArtTagSidebar.js')
-rw-r--r-- | src/content/dependencies/generateArtTagSidebar.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/content/dependencies/generateArtTagSidebar.js b/src/content/dependencies/generateArtTagSidebar.js new file mode 100644 index 0000000..51e53d2 --- /dev/null +++ b/src/content/dependencies/generateArtTagSidebar.js @@ -0,0 +1,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}), +}; |