import Foundation struct AmplitudeSong: Codable { let name: String let artist: String let album: String let track: String let url: String let cover_art_url: String } struct AudioPlayerScript: HtmlProducer { let items: [AmplitudeSong] private let encoder = JSONEncoder() init(items: [AmplitudeSong]) { self.items = items encoder.outputFormatting = [.prettyPrinted, .sortedKeys] } func populate(_ result: inout String) { result += "" } private var animatePlaylist: String { """ const el = document.getElementById('playlist-container') document.getElementsByClassName('show-playlist')[0].addEventListener('click', function(){ el.classList.remove('slide-out-top'); el.classList.add('slide-in-top'); el.style.display = "block"; }); document.getElementsByClassName('close-playlist')[0].addEventListener('click', function(){ el.classList.remove('slide-in-top'); el.classList.add('slide-out-top'); el.style.display = "none"; }); """ } }