import { ref, computed, watch } from 'vue'
import { useStore } from 'vuex'
export default function useCD () {
const cdWrapper = ref(null)
const cdRef = ref(null)
const reset = ref(false)
const store = useStore()
const playing = computed(() => store.state.playing)
const currentSong = computed(() => store.getters.currentSong)
const cdCls = computed(() => {
return (!reset.value && playing.value) ? 'playing' : ''
})
watch(playing, newPlaying => {
if (!newPlaying) {
synchronizeAnimationAngle(cdWrapper.value, cdRef.value)
}
})
watch(currentSong, () => {
reset.value = true
cdWrapper.value.style.transform = 'none'
setTimeout(() => {
reset.value = false
}, 200)
})
function synchronizeAnimationAngle (wrapper, inner) {
const wrapperTrans = getComputedStyle(wrapper).transform
const innerTrans = getComputedStyle(inner).transform
wrapper.style.transform = wrapperTrans === 'none' ? innerTrans : innerTrans.concat(' ', wrapperTrans)
}
return {
cdWrapper,
cdRef,
cdCls
}
}