2025-02-08 19:24:06 +08:00

38 lines
1.1 KiB
TypeScript

import { type DateValue, parseDate } from '@internationalized/date'
function _useOptions() {
const options = reactive({
castBeginDate: '',
castDayNo: -1,
renderMode: 'heatmap' as 'heatmap' | 'image',
isPlaying: false,
mapping: {} as Record<string, string>,
})
function setCastBeginDate(date: DateValue) {
const datestr = date.toString()
options.castBeginDate = datestr.replaceAll('-', '')
}
function setTargetDate(date: DateValue) {
const castBeginDateStr = options.castBeginDate.toString()
if (castBeginDateStr.length !== 8) {
console.error(castBeginDateStr)
throw new Error('castBeginDate is invalid')
}
const newDateStr = `${castBeginDateStr.slice(0, 4)}-${castBeginDateStr.slice(4, 6)}-${castBeginDateStr.slice(6, 8)}`
const castBeginDate = parseDate(newDateStr)
const dayNo = date.compare(castBeginDate)
options.castDayNo = dayNo
return dayNo
}
return {
options,
setCastBeginDate,
setTargetDate,
}
}
export const useOptions = createSharedComposable(() => _useOptions())