{"version":3,"file":"calculate-drop-time.mjs","names":[],"sources":["../../../src/utils/calculate-drop-time/calculate-drop-time.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, ScheduleEventData } from '../../types';\nimport { parseTimeString } from '../parse-time-string/parse-time-string';\n\nexport interface CalculateDropTimeInput {\n  /** The event being dragged */\n  draggedEvent: ScheduleEventData;\n\n  /** Target date where event will be dropped */\n  targetDate: AnyDateValue;\n\n  /** Target time slot start time in HH:mm:ss format */\n  targetSlotTime: string;\n\n  /** Mouse Y position relative to the slot */\n  mouseYOffset?: number;\n\n  /** Height of one slot in pixels */\n  slotHeight?: number;\n\n  /** Minutes per slot */\n  intervalMinutes?: number;\n}\n\nexport interface CalculateDropTimeResult {\n  /** New start date/time for the event */\n  start: Date;\n\n  /** New end date/time for the event */\n  end: Date;\n}\n\nexport function calculateDropTime({\n  draggedEvent,\n  targetDate,\n  targetSlotTime,\n  mouseYOffset = 0,\n  slotHeight = 64,\n  intervalMinutes = 15,\n}: CalculateDropTimeInput): CalculateDropTimeResult {\n  const eventDuration = dayjs(draggedEvent.end).diff(dayjs(draggedEvent.start), 'millisecond');\n\n  const parsedTime = parseTimeString(targetSlotTime);\n  const targetDay = dayjs(targetDate).startOf('day');\n\n  const baseTargetTime = targetDay.hour(parsedTime.hours).minute(parsedTime.minutes).second(0);\n\n  let finalTargetTime = baseTargetTime;\n\n  if (mouseYOffset > 0 && slotHeight > 0) {\n    const offsetRatio = mouseYOffset / slotHeight;\n    const offsetMinutes = Math.round(offsetRatio * intervalMinutes);\n    finalTargetTime = baseTargetTime.add(offsetMinutes, 'minute');\n  }\n\n  const newStart = finalTargetTime.toDate();\n  const newEnd = finalTargetTime.add(eventDuration, 'millisecond').toDate();\n\n  return {\n    start: newStart,\n    end: newEnd,\n  };\n}\n"],"mappings":";;;;AAgCA,SAAgB,kBAAkB,EAChC,cACA,YACA,gBACA,eAAe,GACf,aAAa,IACb,kBAAkB,MACgC;CAClD,MAAM,gBAAgB,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,MAAM,aAAa,KAAK,GAAG,aAAa;CAE3F,MAAM,aAAa,gBAAgB,cAAc;CAGjD,MAAM,iBAFY,MAAM,UAAU,CAAC,CAAC,QAAQ,KAEb,CAAC,CAAC,KAAK,WAAW,KAAK,CAAC,CAAC,OAAO,WAAW,OAAO,CAAC,CAAC,OAAO,CAAC;CAE3F,IAAI,kBAAkB;CAEtB,IAAI,eAAe,KAAK,aAAa,GAAG;EACtC,MAAM,cAAc,eAAe;EACnC,MAAM,gBAAgB,KAAK,MAAM,cAAc,eAAe;EAC9D,kBAAkB,eAAe,IAAI,eAAe,QAAQ;CAC9D;CAKA,OAAO;EACL,OAJe,gBAAgB,OAIjB;EACd,KAJa,gBAAgB,IAAI,eAAe,aAAa,CAAC,CAAC,OAIrD;CACZ;AACF"}