import React from "react" import * as antd from "antd" import classnames from "classnames" import { Icons } from "components/Icons" import Marquee from "react-fast-marquee" import "./index.less" function RGBStringToValues(rgbString) { if (!rgbString) { return [0, 0, 0] } const rgb = rgbString.replace("rgb(", "").replace(")", "").split(",").map((v) => parseInt(v)) return [rgb[0], rgb[1], rgb[2]] } export default class BackgroundMediaPlayer extends React.Component { state = { thumbnailAnalysis: app.cores.player.getState("coverColorAnalysis"), currentPlaying: app.cores.player.getState("currentAudioManifest"), plabackState: app.cores.player.getState("playbackStatus") ?? "stopped", expanded: false, } events = { "player.coverColorAnalysis.update": (data) => { this.setState({ thumbnailAnalysis: data }) }, "player.current.update": (data) => { this.setState({ currentPlaying: data }) }, "player.status.update": (data) => { this.setState({ plabackState: data }) }, "sidebar.expanded": (to) => { if (!to) { this.toogleExpand(false) } } } onClickMinimize = () => { app.cores.player.minimize() } toogleExpand = (to) => { if (typeof to !== "boolean") { to = !this.state.expanded } this.setState({ expanded: to }) } componentDidMount = async () => { for (const [event, handler] of Object.entries(this.events)) { app.eventBus.on(event, handler) } } componentWillUnmount() { for (const [event, handler] of Object.entries(this.events)) { app.eventBus.off(event, handler) } } render() { return