« 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/generateAlbumArtworkColumn.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/generateAlbumArtworkColumn.js
parent8424a3d380284f2e26b6057a500a69e53dc0b757 (diff)
content: general multiple artworks integration
Diffstat (limited to 'src/content/dependencies/generateAlbumArtworkColumn.js')
-rw-r--r--src/content/dependencies/generateAlbumArtworkColumn.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAlbumArtworkColumn.js b/src/content/dependencies/generateAlbumArtworkColumn.js
new file mode 100644
index 00000000..e6762463
--- /dev/null
+++ b/src/content/dependencies/generateAlbumArtworkColumn.js
@@ -0,0 +1,38 @@
+export default {
+  contentDependencies: ['generateAlbumArtInfoBox', 'generateCoverArtwork'],
+  extraDependencies: ['html'],
+
+  relations: (relation, album) => ({
+    firstCover:
+      (album.hasCoverArt
+        ? relation('generateCoverArtwork', album.coverArtworks[0])
+        : null),
+
+    restCovers:
+      (album.hasCoverArt
+        ? album.coverArtworks.slice(1).map(artwork =>
+            relation('generateCoverArtwork', artwork))
+        : []),
+
+    albumArtInfoBox:
+      relation('generateAlbumArtInfoBox', album),
+  }),
+
+  generate: (relations, {html}) =>
+    html.tags([
+      relations.firstCover?.slots({
+        showOriginDetails: true,
+        showArtTagDetails: true,
+        showReferenceDetails: true,
+      }),
+
+      relations.albumArtInfoBox,
+
+      relations.restCovers.map(cover =>
+        cover.slots({
+          showOriginDetails: true,
+          showArtTagDetails: true,
+          showReferenceDetails: true,
+        })),
+    ]),
+};