From c6e1a0b6fb9314186a46cf1352a8685e8aa5fe8d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 18 Mar 2023 20:15:37 -0300 Subject: data steps: experimental live JS reload infrastructure --- .../dependencies/generateAlbumStylesheet.js | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/content/dependencies/generateAlbumStylesheet.js (limited to 'src/content/dependencies/generateAlbumStylesheet.js') diff --git a/src/content/dependencies/generateAlbumStylesheet.js b/src/content/dependencies/generateAlbumStylesheet.js new file mode 100644 index 00000000..575f7d59 --- /dev/null +++ b/src/content/dependencies/generateAlbumStylesheet.js @@ -0,0 +1,59 @@ +export default { + extraDependencies: [ + 'to', + ], + + data: function(album) { + const data = {}; + + data.hasWallpaper = !empty(album.wallpaperArtistContribs); + data.hasBanner = !empty(album.bannerArtistContribs); + + if (data.hasWallpaper) { + data.hasWallpaperStyle = !!album.wallpaperStyle; + data.wallpaperPath = ['media.albumWallpaper', album.directory, album.wallpaperFileExtension]; + data.wallpaperStyle = album.wallpaperStyle; + } + + if (data.hasBanner) { + data.hasBannerStyle = !!album.bannerStyle; + data.bannerStyle = album.bannerStyle; + } + + return data; + }, + + generate(data, {to}) { + const wallpaperPart = + (data.hasWallpaper + ? [ + `body::before {`, + ` background-image: url("${to(...data.wallpaperPath)}");`, + ...(data.hasWallpaperStyle + ? data.wallpaperStyle + .split('\n') + .map(line => ` ${line}`) + : []), + `}`, + ] + : []); + + const bannerPart = + (data.hasBannerStyle + ? [ + `#banner img {`, + ...data.bannerStyle + .split('\n') + .map(line => ` ${line}`), + `}`, + ] + : []); + + return [ + ...wallpaperPart, + ...bannerPart, + ] + .filter(Boolean) + .join('\n'); + }, +}; -- cgit 1.3.0-6-gf8a5