Files
Paradise/tgui/packages/tgui-panel/audio/NowPlayingWidget.js
ArthriGitHubArthri/tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>
f8ff6bd1ec Bump tgui-core to 5.1.0 (#30329)
* Bump tgui-core to 5.1.0 from 4.3.4

* Replace onDrag with onChange + tickWhileDragging

* Fix map ranking

* Build /tg/ui

* Unstuck CI

---------

Co-authored-by: Arthri <41360489+a@users.noreply.github.com>
Co-authored-by: /tg/ui Builder <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-02 16:38:12 +00:00

75 lines
1.8 KiB
JavaScript

/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/
import { useDispatch, useSelector } from 'tgui/backend';
import { Button, Flex, Knob } from 'tgui-core/components';
import { toFixed } from 'tgui-core/math';
import { useSettings } from '../settings';
import { selectAudio } from './selectors';
export const NowPlayingWidget = (props) => {
const audio = useSelector(selectAudio);
const dispatch = useDispatch();
const settings = useSettings();
const title = audio.meta?.title;
return (
<Flex align="center">
{(audio.playing && (
<>
<Flex.Item shrink={0} mx={0.5} color="label">
Now playing:
</Flex.Item>
<Flex.Item
mx={0.5}
grow={1}
style={{
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
}}
>
{title || 'Unknown Track'}
</Flex.Item>
</>
)) || (
<Flex.Item grow={1} color="label">
Nothing to play.
</Flex.Item>
)}
{audio.playing && (
<Flex.Item mx={0.5} fontSize="0.9em">
<Button
tooltip="Stop"
icon="stop"
onClick={() =>
dispatch({
type: 'audio/stopMusic',
})
}
/>
</Flex.Item>
)}
<Flex.Item mx={0.5} fontSize="0.9em">
<Knob
minValue={0}
maxValue={1}
value={settings.adminMusicVolume}
step={0.0025}
stepPixelSize={1}
format={(value) => toFixed(value * 100) + '%'}
tickWhileDragging
onChange={(e, value) =>
settings.update({
adminMusicVolume: value,
})
}
/>
</Flex.Item>
</Flex>
);
};