« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateAlbumInfoPage.js2
-rw-r--r--src/content/dependencies/generateArtistInfoPage.js2
-rw-r--r--src/content/dependencies/generateCoverArtwork.js82
-rw-r--r--src/content/dependencies/generatePageLayout.js19
-rw-r--r--src/content/dependencies/generateReferencedArtworksPage.js2
-rw-r--r--src/content/dependencies/generateReferencingArtworksPage.js2
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js2
7 files changed, 58 insertions, 53 deletions
diff --git a/src/content/dependencies/generateAlbumInfoPage.js b/src/content/dependencies/generateAlbumInfoPage.js
index 2af461a4..03ac469d 100644
--- a/src/content/dependencies/generateAlbumInfoPage.js
+++ b/src/content/dependencies/generateAlbumInfoPage.js
@@ -112,7 +112,7 @@ export default {
 
         additionalNames: relations.additionalNamesBox,
 
-        cover:
+        coverColumnContent: [
           (relations.cover
             ? relations.cover.slots({
                 showOriginDetails: true,
diff --git a/src/content/dependencies/generateArtistInfoPage.js b/src/content/dependencies/generateArtistInfoPage.js
index 0c4e4189..12eaf462 100644
--- a/src/content/dependencies/generateArtistInfoPage.js
+++ b/src/content/dependencies/generateArtistInfoPage.js
@@ -156,7 +156,7 @@ export default {
         title: data.name,
         headingMode: 'sticky',
 
-        cover:
+        coverColumnContent:
           (relations.cover
             ? relations.cover.slots({
                 image:
diff --git a/src/content/dependencies/generateCoverArtwork.js b/src/content/dependencies/generateCoverArtwork.js
index 06972d6b..58c29830 100644
--- a/src/content/dependencies/generateCoverArtwork.js
+++ b/src/content/dependencies/generateCoverArtwork.js
@@ -38,49 +38,43 @@ export default {
         ? {square: true}
         : {dimensions: slots.dimensions});
 
-    switch (slots.mode) {
-      case 'primary':
-        return html.tags([
-          slots.image.slots({
-            thumb: 'medium',
-            reveal: true,
-            link: true,
-
-            warnings: slots.warnings,
-            ...sizeSlots,
-          }),
-
-          slots.details,
-        ]);
-
-      case 'thumbnail':
-        return (
-          slots.image.slots({
-            thumb: 'small',
-            reveal: false,
-            link: false,
-
-            warnings: slots.warnings,
-            ...sizeSlots,
-          }));
-
-      case 'commentary':
-        return (
-          slots.image.slots({
-            thumb: 'medium',
-            reveal: true,
-            link: true,
-            lazy: true,
-
-            warnings: slots.warnings,
-            ...sizeSlots,
-
-            attributes:
-              {class: 'commentary-art'},
-          }));
-
-      default:
-        return html.blank();
-    }
+    return (
+      html.tag('div', {class: 'cover-artwork'},
+        slots.mode === 'commentary' &&
+          {class: 'commentary-art'},
+
+        (slots.mode === 'primary'
+          ? [
+              slots.image.slots({
+                thumb: 'medium',
+                reveal: true,
+                link: true,
+
+                warnings: slots.warnings,
+                ...sizeSlots,
+              }),
+
+              slots.details,
+            ]
+       : slots.mode === 'thumbnail'
+          ? slots.image.slots({
+              thumb: 'small',
+              reveal: false,
+              link: false,
+
+              warnings: slots.warnings,
+              ...sizeSlots,
+            })
+       : slots.mode === 'commentary'
+          ? slots.image.slots({
+              thumb: 'medium',
+              reveal: true,
+              link: true,
+              lazy: true,
+
+              warnings: slots.warnings,
+              ...sizeSlots,
+            })
+          : html.blank())));
   },
 };
diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js
index 7605c00d..f21aa00d 100644
--- a/src/content/dependencies/generatePageLayout.js
+++ b/src/content/dependencies/generatePageLayout.js
@@ -93,7 +93,7 @@ export default {
       mutable: false,
     },
 
-    cover: {
+    coverColumnContent: {
       type: 'html',
       mutable: false,
     },
@@ -262,6 +262,17 @@ export default {
         ? data.canonicalBase + pagePathStringFromRoot
         : null);
 
+    const firstItemInCoverColumn =
+      html.smooth(slots.coverColumnContent)
+        .content[0];
+
+    const primaryCover =
+      (firstItemInCoverColumn &&
+       html.resolve(firstItemInCoverColumn, {normalize: 'tag'})
+         .attributes.has('class', 'cover-artwork')
+        ? firstItemInCoverColumn
+        : null);
+
     const titleContentsHTML =
       (html.isBlank(slots.title)
         ? null
@@ -279,7 +290,7 @@ export default {
         ? [
             relations.stickyHeadingContainer.slots({
               title: titleContentsHTML,
-              cover: slots.cover,
+              cover: primaryCover,
             }),
 
             relations.stickyHeadingContainer.clone().slots({
@@ -316,9 +327,9 @@ export default {
         [
           titleHTML,
 
-          html.tag('div', {id: 'cover-art-container'},
+          html.tag('div', {id: 'cover-art-column'},
             {[html.onlyIfContent]: true},
-            slots.cover),
+            slots.coverColumnContent),
 
           subtitleHTML,
 
diff --git a/src/content/dependencies/generateReferencedArtworksPage.js b/src/content/dependencies/generateReferencedArtworksPage.js
index 3d21b15d..cdd0a3c7 100644
--- a/src/content/dependencies/generateReferencedArtworksPage.js
+++ b/src/content/dependencies/generateReferencedArtworksPage.js
@@ -76,7 +76,7 @@ export default {
         color: slots.color,
         styleRules: slots.styleRules,
 
-        cover:
+        coverColumnContent:
           slots.cover.slot('details', 'artists'),
 
         mainClasses: ['top-index'],
diff --git a/src/content/dependencies/generateReferencingArtworksPage.js b/src/content/dependencies/generateReferencingArtworksPage.js
index 2fe2e93d..b8722725 100644
--- a/src/content/dependencies/generateReferencingArtworksPage.js
+++ b/src/content/dependencies/generateReferencingArtworksPage.js
@@ -76,7 +76,7 @@ export default {
         color: slots.color,
         styleRules: slots.styleRules,
 
-        cover:
+        coverColumnContent:
           slots.cover.slot('details', 'artists'),
 
         mainClasses: ['top-index'],
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index a2a83d2d..a5e2a476 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -141,7 +141,7 @@ export default {
         color: data.color,
         styleRules: [relations.albumStyleRules],
 
-        cover:
+        coverColumnContent:
           (relations.cover
             ? relations.cover.slots({
                 showOriginDetails: true,