« get me outta code hell

content: generateTrackInfoPageOtherReleaseTooltip - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-01-01 16:32:00 -0400
committer(quasar) nebula <qznebula@protonmail.com>2026-01-01 16:32:00 -0400
commit5c3317f02e32291f20d6f1257e290dcec6bbba06 (patch)
tree7ec10b84f8efe194d825d137680795b1752dbe1e /src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
parent38b1357c0870597ee58b3f0f5086ae93ffceb5f5 (diff)
content: generateTrackInfoPageOtherReleaseTooltip preview
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js53
1 files changed, 46 insertions, 7 deletions
diff --git a/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js b/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
index 1793b73f..e2dffea6 100644
--- a/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
+++ b/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
@@ -16,15 +16,30 @@ export default {
     return query;
   },
 
-  relations: (relation, query, _track) => ({
+  relations: (relation, query, track) => ({
+    textWithTooltip:
+      relation('generateTextWithTooltip'),
+
     singleLink:
       (query.singleSingle
         ? relation('linkTrack', query.singleSingle)
         : null),
 
+    singleTooltip:
+      (query.singleSingle
+        ? relation('generateTrackInfoPageOtherReleaseTooltip',
+            query.singleSingle, track)
+        : null),
+
     trackLinks:
       query.regularReleases
         .map(track => relation('linkTrack', track)),
+
+    trackTooltips:
+      query.regularReleases
+        .map(otherTrack =>
+          relation('generateTrackInfoPageOtherReleaseTooltip',
+            otherTrack, track)),
   }),
 
   data: (query, _track) => ({
@@ -48,12 +63,27 @@ export default {
           language.formatConjunctionList(
             stitchArrays({
               trackLink: relations.trackLinks,
+              trackTooltip: relations.trackTooltips,
               albumName: data.albumNames,
               albumColor: data.albumColors,
-            }).map(({trackLink, albumName, albumColor}) =>
-                trackLink.slots({
-                  content: language.sanitize(albumName),
-                  color: albumColor,
+            }).map(({
+                trackLink,
+                trackTooltip,
+                albumName,
+                albumColor,
+              }) =>
+                relations.textWithTooltip.clone().slots({
+                  customInteractionCue: true,
+
+                  text:
+                    trackLink.slots({
+                      attributes: {class: 'text-with-tooltip-interaction-cue'},
+                      content: language.sanitize(albumName),
+                      color: albumColor,
+                    }),
+
+                  tooltip:
+                    trackTooltip,
                 })));
 
         if (!html.isBlank(albumList)) {
@@ -66,8 +96,17 @@ export default {
           any = true;
           workingCapsule += '.asSingle';
           workingOptions.single =
-            relations.singleLink.slots({
-              content: language.$(capsule, 'single'),
+            relations.textWithTooltip.clone().slots({
+              customInteractionCue: true,
+
+              text:
+                relations.singleLink.slots({
+                  attributes: {class: 'text-with-tooltip-interaction-cue'},
+                  content: language.$(capsule, 'single'),
+                }),
+
+              tooltip:
+                relations.singleTooltip,
             });
         }