From 178397c9af193b2cebd3f8552b1e725a7b432b48 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 10 Aug 2023 11:01:25 -0300 Subject: content: generateFlashInfoPage ...Except the sidebar, which will be some shenanigans. --- src/content/dependencies/generateFlashNavAccent.js | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/content/dependencies/generateFlashNavAccent.js (limited to 'src/content/dependencies/generateFlashNavAccent.js') diff --git a/src/content/dependencies/generateFlashNavAccent.js b/src/content/dependencies/generateFlashNavAccent.js new file mode 100644 index 00000000..1e2d1852 --- /dev/null +++ b/src/content/dependencies/generateFlashNavAccent.js @@ -0,0 +1,79 @@ +import {empty} from '../../util/sugar.js'; +import {sortFlashesChronologically} from '../../util/wiki-data.js'; + +export default { + contentDependencies: [ + 'generatePreviousNextLinks', + 'linkFlash', + ], + + extraDependencies: ['html', 'language', 'wikiData'], + + sprawl({flashData}) { + return {flashData}; + }, + + query(sprawl, flash) { + const flashes = + sortFlashesChronologically(sprawl.flashData.slice()); + + const index = flashes.indexOf(flash); + + const previousFlash = + (index > 0 + ? flashes[index - 1] + : null); + + const nextFlash = + (index < flashes.length - 1 + ? flashes[index + 1] + : null); + + return {previousFlash, nextFlash}; + }, + + relations(relation, query) { + const relations = {}; + + if (query.previousFlash || query.nextFlash) { + relations.previousNextLinks = + relation('generatePreviousNextLinks'); + + relations.previousFlashLink = + (query.previousFlash + ? relation('linkFlash', query.previousFlash) + : null); + + relations.nextFlashLink = + (query.nextFlash + ? relation('linkFlash', query.nextFlash) + : null); + } + + return relations; + }, + + slots: { + showFlashNavigation: {type: 'boolean', default: false}, + }, + + generate(relations, slots, {html, language}) { + const {content: previousNextLinks = []} = + slots.showFlashNavigation && + relations.previousNextLinks && + relations.previousNextLinks.slots({ + previousLink: relations.previousFlashLink, + nextLink: relations.nextFlashLink, + }); + + const allLinks = [ + ...previousNextLinks, + ].filter(Boolean); + + if (empty(allLinks)) { + return html.blank(); + } + + return `(${language.formatUnitList(allLinks)})`; + }, +}; -- cgit 1.3.0-6-gf8a5