1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
// Gets the track section containing this track from its album's track list.
import {input, templateCompositeFrom} from '#composite';
import {is} from '#validators';
import {raiseOutputWithoutDependency} from '#composite/control-flow';
import withPropertyFromAlbum from './withPropertyFromAlbum.js';
export default templateCompositeFrom({
annotation: `withContainingTrackSection`,
outputs: ['#trackSection'],
steps: () => [
withPropertyFromAlbum({
property: input.value('trackSections'),
}),
raiseOutputWithoutDependency({
dependency: '#album.trackSections',
output: input.value({'#trackSection': null}),
}),
{
dependencies: [
input.myself(),
'#album.trackSections',
],
compute: (continuation, {
[input.myself()]: track,
['#album.trackSections']: trackSections,
}) => continuation({
['#trackSection']:
trackSections.find(({tracks}) => tracks.includes(track))
?? null,
}),
},
],
});
|