« 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/generateAlbumNavAccent.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/generateAlbumNavAccent.js
parent630af0a345f3be6c3e4aa3300ce138e48ed5ae91 (diff)
content: cut html.template boilerplate
Diffstat (limited to 'src/content/dependencies/generateAlbumNavAccent.js')
-rw-r--r--src/content/dependencies/generateAlbumNavAccent.js120
1 files changed, 57 insertions, 63 deletions
diff --git a/src/content/dependencies/generateAlbumNavAccent.js b/src/content/dependencies/generateAlbumNavAccent.js
index 9d1d87c..0237fde 100644
--- a/src/content/dependencies/generateAlbumNavAccent.js
+++ b/src/content/dependencies/generateAlbumNavAccent.js
@@ -53,68 +53,62 @@ export default {
     };
   },
 
-  generate(data, relations, {html, language}) {
-    return html.template({
-      annotation: `generateAlbumNavAccent`,
-
-      slots: {
-        showTrackNavigation: {type: 'boolean', default: false},
-        showExtraLinks: {type: 'boolean', default: false},
-
-        currentExtra: {
-          validate: v => v.is('gallery', 'commentary'),
-        },
-      },
-
-      content(slots) {
-        const {content: extraLinks = []} =
-          slots.showExtraLinks &&
-            {content: [
-              relations.albumGalleryLink?.slots({
-                attributes: {class: slots.currentExtra === 'gallery' && 'current'},
-                content: language.$('albumPage.nav.gallery'),
-              }),
-
-              relations.albumCommentaryLink?.slots({
-                attributes: {class: slots.currentExtra === 'commentary' && 'current'},
-                content: language.$('albumPage.nav.commentary'),
-              }),
-            ]};
-
-        const {content: previousNextLinks = []} =
-          slots.showTrackNavigation &&
-          data.isTrackPage &&
-          data.hasMultipleTracks &&
-            relations.previousNextLinks.slots({
-              previousLink: relations.previousTrackLink,
-              nextLink: relations.nextTrackLink,
-            });
-
-        const randomLink =
-          slots.showTrackNavigation &&
-          data.hasMultipleTracks &&
-            html.tag('a',
-              {
-                href: '#',
-                'data-random': 'track-in-album',
-                id: 'random-button',
-              },
-              (data.isTrackPage
-                ? language.$('trackPage.nav.random')
-                : language.$('albumPage.nav.randomTrack')));
-
-        const allLinks = [
-          ...previousNextLinks,
-          ...extraLinks,
-          randomLink,
-        ].filter(Boolean);
-
-        if (empty(allLinks)) {
-          return html.blank();
-        }
-
-        return `(${language.formatUnitList(allLinks)})`
-      },
-    });
+  slots: {
+    showTrackNavigation: {type: 'boolean', default: false},
+    showExtraLinks: {type: 'boolean', default: false},
+
+    currentExtra: {
+      validate: v => v.is('gallery', 'commentary'),
+    },
+  },
+
+  generate(data, relations, slots, {html, language}) {
+    const {content: extraLinks = []} =
+      slots.showExtraLinks &&
+        {content: [
+          relations.albumGalleryLink?.slots({
+            attributes: {class: slots.currentExtra === 'gallery' && 'current'},
+            content: language.$('albumPage.nav.gallery'),
+          }),
+
+          relations.albumCommentaryLink?.slots({
+            attributes: {class: slots.currentExtra === 'commentary' && 'current'},
+            content: language.$('albumPage.nav.commentary'),
+          }),
+        ]};
+
+    const {content: previousNextLinks = []} =
+      slots.showTrackNavigation &&
+      data.isTrackPage &&
+      data.hasMultipleTracks &&
+        relations.previousNextLinks.slots({
+          previousLink: relations.previousTrackLink,
+          nextLink: relations.nextTrackLink,
+        });
+
+    const randomLink =
+      slots.showTrackNavigation &&
+      data.hasMultipleTracks &&
+        html.tag('a',
+          {
+            href: '#',
+            'data-random': 'track-in-album',
+            id: 'random-button',
+          },
+          (data.isTrackPage
+            ? language.$('trackPage.nav.random')
+            : language.$('albumPage.nav.randomTrack')));
+
+    const allLinks = [
+      ...previousNextLinks,
+      ...extraLinks,
+      randomLink,
+    ].filter(Boolean);
+
+    if (empty(allLinks)) {
+      return html.blank();
+    }
+
+    return `(${language.formatUnitList(allLinks)})`;
   },
 };