« get me outta code hell

content: cut html.template boilerplate - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateArtistNavLinks.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-06-12 16:35:38 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-06-12 16:35:38 -0300
commit535acb34613b5cf7e22654619f4337b94b70644d (patch)
tree5a713eb4f12eae7e1fe1aa60941709708585db32 /src/content/dependencies/generateArtistNavLinks.js
parent630af0a345f3be6c3e4aa3300ce138e48ed5ae91 (diff)
content: cut html.template boilerplate
Diffstat (limited to 'src/content/dependencies/generateArtistNavLinks.js')
-rw-r--r--src/content/dependencies/generateArtistNavLinks.js111
1 files changed, 53 insertions, 58 deletions
diff --git a/src/content/dependencies/generateArtistNavLinks.js b/src/content/dependencies/generateArtistNavLinks.js
index f283b30..f78b45a 100644
--- a/src/content/dependencies/generateArtistNavLinks.js
+++ b/src/content/dependencies/generateArtistNavLinks.js
@@ -40,66 +40,61 @@ export default {
     };
   },
 
-  generate(data, relations, {html, language}) {
-    return html.template({
-      annotation: `generateArtistNav`,
-      slots: {
-        showExtraLinks: {type: 'boolean', default: false},
-
-        currentExtra: {
-          validate: v => v.is('gallery'),
+  slots: {
+    showExtraLinks: {type: 'boolean', default: false},
+
+    currentExtra: {
+      validate: v => v.is('gallery'),
+    },
+  },
+
+  generate(data, relations, slots, {html, language}) {
+    const infoLink =
+      relations.artistInfoLink?.slots({
+        attributes: {class: slots.currentExtra === null && 'current'},
+        content: language.$('misc.nav.info'),
+      });
+
+    const {content: extraLinks = []} =
+      slots.showExtraLinks &&
+        {content: [
+          relations.artistGalleryLink?.slots({
+            attributes: {class: slots.currentExtra === 'gallery' && 'current'},
+            content: language.$('misc.nav.gallery'),
+          }),
+        ]};
+
+    const mostAccentLinks = [
+      ...extraLinks,
+    ].filter(Boolean);
+
+    // Don't show the info accent link all on its own.
+    const allAccentLinks =
+      (empty(mostAccentLinks)
+        ? []
+        : [infoLink, ...mostAccentLinks]);
+
+    const accent =
+      (empty(allAccentLinks)
+        ? html.blank()
+        : `(${language.formatUnitList(allAccentLinks)})`);
+
+    return [
+      {auto: 'home'},
+
+      data.enableListings &&
+        {
+          path: ['localized.listingIndex'],
+          title: language.$('listingIndex.title'),
         },
-      },
 
-      content(slots) {
-        const infoLink =
-          relations.artistInfoLink?.slots({
-            attributes: {class: slots.currentExtra === null && 'current'},
-            content: language.$('misc.nav.info'),
-          });
-
-        const {content: extraLinks = []} =
-          slots.showExtraLinks &&
-            {content: [
-              relations.artistGalleryLink?.slots({
-                attributes: {class: slots.currentExtra === 'gallery' && 'current'},
-                content: language.$('misc.nav.gallery'),
-              }),
-            ]};
-
-        const mostAccentLinks = [
-          ...extraLinks,
-        ].filter(Boolean);
-
-        // Don't show the info accent link all on its own.
-        const allAccentLinks =
-          (empty(mostAccentLinks)
-            ? []
-            : [infoLink, ...mostAccentLinks]);
-
-        const accent =
-          (empty(allAccentLinks)
-            ? html.blank()
-            : `(${language.formatUnitList(allAccentLinks)})`);
-
-        return [
-          {auto: 'home'},
-
-          data.enableListings &&
-            {
-              path: ['localized.listingIndex'],
-              title: language.$('listingIndex.title'),
-            },
-
-          {
-            accent,
-            html:
-              language.$('artistPage.nav.artist', {
-                artist: relations.artistMainLink,
-              }),
-          },
-        ];
+      {
+        accent,
+        html:
+          language.$('artistPage.nav.artist', {
+            artist: relations.artistMainLink,
+          }),
       },
-    });
+    ];
   },
 };