import { computed , ref } from 'vue'; import { Ref } from 'vue'; import { addMinutes, startOfDay } from "date-fns"; import { multiply, divide, unit } from "mathjs"; const pixelMinuteUnit = 0.9; export function minutesToPixelsFunc(minutes: number, defaultUnit = pixelMinuteUnit): number { return multiply(minutes, defaultUnit); } export function pixelsToMinutesFunc(pixels: number, day: Date, defaultUnit = pixelMinuteUnit) { const minutes = divide(pixels, defaultUnit); const firstHour = startOfDay(day); return addMinutes(firstHour, minutes); } export const useTimeGrid = (minutes: Ref, day: Ref, defaultMinuteUnit = ref(pixelMinuteUnit)) => { const pixelMinutes = computed(() => { return multiply(minutes.value || 0, defaultMinuteUnit.value).toFixed(2); }); const minutesPixels = computed(() => { const minutes = divide(unit(pixelMinutes.value), defaultMinuteUnit.value); const firstHour = startOfDay(day.value); return addMinutes(firstHour, minutes.toNumber()); }); return { pixelMinutes, minutesPixels, offset: minutes } }