« 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/generateCoverArtwork.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateCoverArtwork.js')
-rw-r--r--src/content/dependencies/generateCoverArtwork.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/content/dependencies/generateCoverArtwork.js b/src/content/dependencies/generateCoverArtwork.js
new file mode 100644
index 0000000..62fc356
--- /dev/null
+++ b/src/content/dependencies/generateCoverArtwork.js
@@ -0,0 +1,43 @@
+import {empty} from '../../util/sugar.js';
+
+export default {
+  contentDependencies: ['image', 'linkArtTag'],
+  extraDependencies: ['html', 'language'],
+
+  relations(relation, artTags) {
+    const relations = {};
+
+    relations.image =
+      relation('image', artTags);
+
+    if (artTags) {
+      relations.tagLinks =
+        artTags
+          .filter(tag => !tag.isContentWarning)
+          .map(tag => relation('linkArtTag', tag));
+    } else {
+      relations.tagLinks = null;
+    }
+
+    return relations;
+  },
+
+  generate(relations, {html, language}) {
+    return html.template(slot =>
+      html.tag('div', {id: 'cover-art-container'}, [
+        relations.image
+          .slot('path', slot('path'))
+          .slot('alt', slot('alt'))
+          .slot('thumb', 'medium')
+          .slot('id', 'cover-art')
+          .slot('link', true)
+          .slot('square', true),
+
+        !empty(relations.tagLinks) &&
+          html.tag('p',
+            language.$('releaseInfo.artTags.inline', {
+              tags: language.formatUnitList(relations.tagLinks),
+            })),
+      ]));
+  },
+};