« get me outta code hell

content: general multiple artworks integration - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateCoverArtwork.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-04-10 15:05:56 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-04-10 16:02:44 -0300
commitb9d1e8d935f7e3e833ccac1fa07bcdf196d7bdc8 (patch)
tree8ce9b830fa3c21865dd74e396ef9717a4297e821 /src/content/dependencies/generateCoverArtwork.js
parent8424a3d380284f2e26b6057a500a69e53dc0b757 (diff)
content: general multiple artworks integration
Diffstat (limited to 'src/content/dependencies/generateCoverArtwork.js')
-rw-r--r--src/content/dependencies/generateCoverArtwork.js37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/content/dependencies/generateCoverArtwork.js b/src/content/dependencies/generateCoverArtwork.js
index 8b5f9b8e..71c0747d 100644
--- a/src/content/dependencies/generateCoverArtwork.js
+++ b/src/content/dependencies/generateCoverArtwork.js
@@ -3,6 +3,7 @@ export default {
     'generateCoverArtworkArtTagDetails',
     'generateCoverArtworkArtistDetails',
     'generateCoverArtworkOriginDetails',
+    'generateCoverArtworkReferenceDetails',
     'image',
   ],
 
@@ -20,11 +21,25 @@ export default {
 
     artistDetails:
       relation('generateCoverArtworkArtistDetails', artwork),
+
+    referenceDetails:
+      relation('generateCoverArtworkReferenceDetails', artwork),
   }),
 
   data: (artwork) => ({
+    color:
+      artwork.thing.color,
+
     path:
       artwork.path,
+
+    dimensions:
+      artwork.dimensions,
+
+    warnings:
+      artwork.artTags
+        .filter(tag => tag.isContentWarning)
+        .map(tag => tag.name),
   }),
 
   slots: {
@@ -39,17 +54,10 @@ export default {
       default: 'primary',
     },
 
-    dimensions: {
-      validate: v => v.isDimensions,
-    },
-
-    warnings: {
-      validate: v => v.looseArrayOf(v.isString),
-    },
-
     showOriginDetails: {type: 'boolean', default: false},
     showArtTagDetails: {type: 'boolean', default: false},
     showArtistDetails: {type: 'boolean', default: false},
+    showReferenceDetails: {type: 'boolean', default: false},
 
     details: {
       type: 'html',
@@ -62,21 +70,21 @@ export default {
 
     image.setSlots({
       path: data.path,
+      warnings: data.warnings,
 
-      color: slots.color,
+      color: slots.color ?? data.color,
       alt: slots.alt,
-      warnings: slots.warnings,
     });
 
     const square =
-      (slots.dimensions
-        ? slots.dimensions[0] === slots.dimensions[1]
+      (data.dimensions
+        ? data.dimensions[0] === data.dimensions[1]
         : true);
 
     if (square) {
       image.setSlot('square', true);
     } else {
-      image.setSlot('dimensions', slots.dimensions);
+      image.setSlot('dimensions', data.dimensions);
     }
 
     return (
@@ -101,6 +109,9 @@ export default {
               slots.showArtistDetails &&
                 relations.artistDetails,
 
+              slots.showReferenceDetails &&
+                relations.referenceDetails,
+
               slots.details,
             ]
        : slots.mode === 'thumbnail'