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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
// Miscellaneous utility functions which are useful across page specifications.
// These are made available right on a page spec's ({wikiData, language, ...})
// args object!
import T from './data/things/index.js';
import {
empty,
repeat,
unique,
} from './util/sugar.js';
import {thumb} from './util/urls.js';
import {
getTotalDuration,
sortAlbumsTracksChronologically,
sortChronologically,
} from './util/wiki-data.js';
// Grids
function unbound_getGridHTML({
img,
html,
language,
getRevealStringFromArtTags,
entries,
srcFn,
linkFn,
noSrcTextFn = () => '',
altFn = () => '',
detailsFn = null,
lazy = true,
}) {
return entries
.map(({large, item}, i) =>
linkFn(item, {
class: ['grid-item', 'box', large && 'large-grid-item'],
text: html.fragment([
img({
src: srcFn(item),
alt: altFn(item),
thumb: 'medium',
lazy: typeof lazy === 'number' ? i >= lazy : lazy,
square: true,
reveal: getRevealStringFromArtTags(item.artTags, {language}),
noSrcText: noSrcTextFn(item),
}),
html.tag('span', item.name),
detailsFn &&
html.tag('span', detailsFn(item)),
]),
}))
.join('\n');
}
function unbound_getAlbumGridHTML({
getAlbumCover,
getGridHTML,
link,
language,
details = false,
...props
}) {
return getGridHTML({
srcFn: getAlbumCover,
linkFn: link.album,
detailsFn:
details &&
((album) =>
language.$('misc.albumGrid.details', {
tracks: language.countTracks(album.tracks.length, {unit: true}),
time: language.formatDuration(getTotalDuration(album.tracks)),
})),
noSrcTextFn: (album) =>
language.$('misc.albumGrid.noCoverArt', {
album: album.name,
}),
...props,
});
}
function unbound_getFlashGridHTML({
link,
getFlashCover,
getGridHTML,
...props
}) {
return getGridHTML({
srcFn: getFlashCover,
linkFn: link.flash,
...props,
});
}
// Carousel reels
function unbound_getCarouselHTML({
html,
img,
items,
lazy = false,
altFn = () => '',
linkFn = (x, {text}) => text,
srcFn,
}) {
}
// Exports
export {
unbound_getGridHTML as getGridHTML,
unbound_getAlbumGridHTML as getAlbumGridHTML,
unbound_getFlashGridHTML as getFlashGridHTML,
unbound_getCarouselHTML as getCarouselHTML,
}
|