« get me outta code hell

content: decompose generateCoverArtwork - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateCoverArtworkArtistDetails.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-11-19 13:25:22 -0400
committer(quasar) nebula <qznebula@protonmail.com>2024-11-19 13:25:22 -0400
commit7cb88275fd3c813114271c0a136b12c72c5a172a (patch)
treeb3b007e73c4681e206162362f5d9a8b99b6762d7 /src/content/dependencies/generateCoverArtworkArtistDetails.js
parent943cb8d05f5ef8572edfa081fb9912107769241a (diff)
content: decompose generateCoverArtwork
No visual/site changes yet.

This involves introducing an unfortunate mega-hack in
generateStickyHeadingContainer, which sets slots on cover
artworks. Very scary. Oooooo

Otherwise, all cover artwork code is much more compositional.
Pass-through slots (`image`) are removed in generateCoverArtwork
and a partially-formed `image` slot is accepted instead.
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkArtistDetails.js')
-rw-r--r--src/content/dependencies/generateCoverArtworkArtistDetails.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/content/dependencies/generateCoverArtworkArtistDetails.js b/src/content/dependencies/generateCoverArtworkArtistDetails.js
new file mode 100644
index 00000000..5b235353
--- /dev/null
+++ b/src/content/dependencies/generateCoverArtworkArtistDetails.js
@@ -0,0 +1,23 @@
+export default {
+  contentDependencies: ['linkArtistGallery'],
+  extraDependencies: ['html', 'language'],
+
+  relations: (relation, contributions) => ({
+    artistLinks:
+      contributions
+        .map(contrib => contrib.artist)
+        .map(artist =>
+          relation('linkArtistGallery', artist)),
+  }),
+
+  generate: (relations, {html, language}) =>
+    html.tag('p', {class: 'image-details'},
+      {[html.onlyIfContent]: true},
+
+      {class: 'illustrator-details'},
+
+      language.$('misc.coverGrid.details.coverArtists', {
+        artists:
+          language.formatConjunctionList(relations.artistLinks),
+      })),
+};