{"version":3,"file":"calculate-event-position-in-week.cjs","names":[],"sources":["../../../../src/components/MonthView/get-month-view-events/calculate-event-position-in-week.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nexport type HangingStatus = 'none' | 'start' | 'end' | 'both';\n\ninterface CalculateEventPositionInput {\n  eventStart: dayjs.Dayjs;\n  eventEnd: dayjs.Dayjs;\n  weekStart: dayjs.Dayjs;\n  weekEnd: dayjs.Dayjs;\n  isMultiday: boolean;\n}\n\ninterface EventPositionInWeek {\n  startDayIndex: number;\n  daysSpanned: number;\n  startOffset: number;\n  width: number;\n  hanging: HangingStatus;\n}\n\nexport function calculateEventPositionInWeek({\n  eventStart,\n  eventEnd,\n  weekStart,\n  weekEnd,\n  isMultiday,\n}: CalculateEventPositionInput): EventPositionInWeek {\n  let displayStart = eventStart;\n  let displayEnd = eventEnd;\n\n  const hangingStart = eventStart.isBefore(weekStart);\n  const hangingEnd = eventEnd.isAfter(weekEnd);\n  const hanging: HangingStatus =\n    hangingStart && hangingEnd ? 'both' : hangingStart ? 'start' : hangingEnd ? 'end' : 'none';\n\n  if (displayStart.isBefore(weekStart)) {\n    displayStart = weekStart;\n  }\n  if (displayEnd.isAfter(weekEnd)) {\n    displayEnd = weekEnd;\n  }\n\n  const startDayIndex = displayStart.diff(weekStart, 'day');\n  const endDayIndex = displayEnd.diff(weekStart, 'day');\n  const daysSpanned = Math.max(1, endDayIndex - startDayIndex + (isMultiday ? 1 : 0));\n\n  const startOffset = (startDayIndex / 7) * 100;\n  const width = (daysSpanned / 7) * 100;\n\n  return {\n    startDayIndex,\n    daysSpanned,\n    startOffset,\n    width,\n    hanging,\n  };\n}\n"],"mappings":";;AAoBA,SAAgB,6BAA6B,EAC3C,YACA,UACA,WACA,SACA,cACmD;CACnD,IAAI,eAAe;CACnB,IAAI,aAAa;CAEjB,MAAM,eAAe,WAAW,SAAS,SAAS;CAClD,MAAM,aAAa,SAAS,QAAQ,OAAO;CAC3C,MAAM,UACJ,gBAAgB,aAAa,SAAS,eAAe,UAAU,aAAa,QAAQ;CAEtF,IAAI,aAAa,SAAS,SAAS,GACjC,eAAe;CAEjB,IAAI,WAAW,QAAQ,OAAO,GAC5B,aAAa;CAGf,MAAM,gBAAgB,aAAa,KAAK,WAAW,KAAK;CACxD,MAAM,cAAc,WAAW,KAAK,WAAW,KAAK;CACpD,MAAM,cAAc,KAAK,IAAI,GAAG,cAAc,iBAAiB,aAAa,IAAI,EAAE;CAKlF,OAAO;EACL;EACA;EACA,aANmB,gBAAgB,IAAK;EAOxC,OANa,cAAc,IAAK;EAOhC;CACF;AACF"}