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, }) 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())