import { ref, computed, watch } from 'vue' import type { Track } from '../types' import { usePlayerStore } from '../store/player' import { TrackList } from '../components/TrackList.vine' import { type ConfirmDialogExpose, ConfirmDialog } from '../components/ConfirmDialog.vine' export const PlayerQueueView = () => { const playerStore = usePlayerStore(), confirmDialog = ref(null), tracks = computed(() => playerStore.queue), queueIndex = computed(() => playerStore.queueIndex), remove = (index: number) => playerStore.removeFromQueue(index), shuffle = () => playerStore.shuffleQueue(), play = (index: number) => { playerStore.setShuffle(false) if (index === queueIndex.value) return playerStore.playPause() return playerStore.playTrackListIndex(index) }, clear = async () => { if (!confirmDialog.value) return const userConfirmed = await confirmDialog.value.open( 'Clear queue', 'Do you really want to clear the queue?' ) if (!userConfirmed) return playerStore.clearQueue() } return vine`
Player Queue
`; }