From 3d6e0377e01a6c8c05ab3725cc0c30d02f318d0f Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 25 Nov 2025 17:01:21 -0400 Subject: data: Track: chop withTrackNumber one """normative""" change: we're checking availability of #index correctly now (in index mode) --- src/data/things/track.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src/data/things') diff --git a/src/data/things/track.js b/src/data/things/track.js index 31eed682..032171d0 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -49,7 +49,9 @@ import { fillMissingListItems, withFilteredList, withFlattenedList, + withIndexInList, withMappedList, + withPropertiesFromObject, withPropertyFromList, withPropertyFromObject, } from '#composite/data'; @@ -90,7 +92,6 @@ import { inheritContributionListFromMainRelease, inheritFromMainRelease, withPropertyFromAlbum, - withTrackNumber, } from '#composite/things/track'; export class Track extends Thing { @@ -657,8 +658,36 @@ export class Track extends Thing { ], trackNumber: [ - withTrackNumber(), - exposeDependency({dependency: '#trackNumber'}), + // Zero is the fallback, not one, but in most albums the first track + // (and its intended output by this composition) will be one. + exitWithoutDependency({ + dependency: 'trackSection', + value: input.value(0), + }), + + withPropertiesFromObject({ + object: 'trackSection', + properties: input.value(['tracks', 'startCountingFrom']), + }), + + withIndexInList({ + list: '#trackSection.tracks', + item: input.myself(), + }), + + exitWithoutDependency({ + dependency: '#index', + value: input.value(0), + mode: input.value('index'), + }), + + { + dependencies: ['#trackSection.startCountingFrom', '#index'], + compute: ({ + ['#trackSection.startCountingFrom']: startCountingFrom, + ['#index']: index, + }) => startCountingFrom + index, + }, ], // Whether or not the track has "unique" cover artwork - a cover which is -- cgit 1.3.0-6-gf8a5