{"version":3,"file":"get-agenda-view-events.cjs","names":["isMultidayEvent","validateEvent"],"sources":["../../../src/components/AgendaView/get-agenda-view-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DateStringValue, ScheduleEventData } from '../../types';\nimport { isMultidayEvent, validateEvent } from '../../utils';\n\nfunction getEffectiveEndDate(event: ScheduleEventData) {\n  const endDate = dayjs(event.end).startOf('day');\n  if (dayjs(event.end).hour() === 0 && dayjs(event.end).minute() === 0) {\n    return endDate.subtract(1, 'day');\n  }\n  return endDate;\n}\n\nexport type AgendaGroupedEvents = Record<DateStringValue, ScheduleEventData[]>;\n\nfunction groupEventByDate(\n  event: ScheduleEventData,\n  groupedEvents: AgendaGroupedEvents,\n  rangeStart: dayjs.Dayjs,\n  rangeEnd: dayjs.Dayjs\n) {\n  if (isMultidayEvent(event)) {\n    const startDate = dayjs(event.start).startOf('day');\n    const endDate = getEffectiveEndDate(event);\n\n    for (\n      let date = startDate;\n      date.isBefore(endDate) || date.isSame(endDate);\n      date = date.add(1, 'day')\n    ) {\n      if (date.isBefore(rangeStart) || date.isAfter(rangeEnd)) {\n        continue;\n      }\n      const dateKey = date.format('YYYY-MM-DD');\n      if (!groupedEvents[dateKey]) {\n        groupedEvents[dateKey] = [];\n      }\n      groupedEvents[dateKey].push(event);\n    }\n\n    return;\n  }\n\n  const eventDate = dayjs(event.start).format('YYYY-MM-DD');\n  if (!groupedEvents[eventDate]) {\n    groupedEvents[eventDate] = [];\n  }\n  groupedEvents[eventDate].push(event);\n}\n\ninterface GetAgendaViewEventsInput {\n  rangeStart: AnyDateValue;\n  rangeEnd: AnyDateValue;\n  events: ScheduleEventData[] | undefined;\n}\n\nexport function getAgendaViewEvents({ rangeStart, rangeEnd, events }: GetAgendaViewEventsInput) {\n  const groupedEvents: AgendaGroupedEvents = {};\n\n  if (events === undefined) {\n    return groupedEvents;\n  }\n\n  const start = dayjs(rangeStart).startOf('day');\n  const end = dayjs(rangeEnd).startOf('day');\n  const ids = new Set<string | number>();\n\n  for (const event of events) {\n    if (event.display === 'background') {\n      continue;\n    }\n\n    const eventStart = dayjs(event.start).startOf('day');\n    const eventEnd = dayjs(event.end).startOf('day');\n\n    if (eventEnd.isBefore(start) || eventStart.isAfter(end)) {\n      continue;\n    }\n\n    if (!ids.has(event.id)) {\n      ids.add(event.id);\n    } else {\n      throw new Error(`[@mantine/schedule] AgendaView: Duplicated event ids found: ${event.id}`);\n    }\n\n    groupEventByDate(validateEvent(event), groupedEvents, start, end);\n  }\n\n  return groupedEvents;\n}\n"],"mappings":";;;;;;;AAIA,SAAS,oBAAoB,OAA0B;CACrD,MAAM,WAAA,GAAA,MAAA,QAAA,CAAgB,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK;CAC9C,KAAA,GAAA,MAAA,QAAA,CAAU,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,MAAA,GAAA,MAAA,QAAA,CAAW,MAAM,GAAG,CAAC,CAAC,OAAO,MAAM,GACjE,OAAO,QAAQ,SAAS,GAAG,KAAK;CAElC,OAAO;AACT;AAIA,SAAS,iBACP,OACA,eACA,YACA,UACA;CACA,IAAIA,0BAAAA,gBAAgB,KAAK,GAAG;EAC1B,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAClD,MAAM,UAAU,oBAAoB,KAAK;EAEzC,KACE,IAAI,OAAO,WACX,KAAK,SAAS,OAAO,KAAK,KAAK,OAAO,OAAO,GAC7C,OAAO,KAAK,IAAI,GAAG,KAAK,GACxB;GACA,IAAI,KAAK,SAAS,UAAU,KAAK,KAAK,QAAQ,QAAQ,GACpD;GAEF,MAAM,UAAU,KAAK,OAAO,YAAY;GACxC,IAAI,CAAC,cAAc,UACjB,cAAc,WAAW,CAAC;GAE5B,cAAc,QAAQ,CAAC,KAAK,KAAK;EACnC;EAEA;CACF;CAEA,MAAM,aAAA,GAAA,MAAA,QAAA,CAAkB,MAAM,KAAK,CAAC,CAAC,OAAO,YAAY;CACxD,IAAI,CAAC,cAAc,YACjB,cAAc,aAAa,CAAC;CAE9B,cAAc,UAAU,CAAC,KAAK,KAAK;AACrC;AAQA,SAAgB,oBAAoB,EAAE,YAAY,UAAU,UAAoC;CAC9F,MAAM,gBAAqC,CAAC;CAE5C,IAAI,WAAW,KAAA,GACb,OAAO;CAGT,MAAM,SAAA,GAAA,MAAA,QAAA,CAAc,UAAU,CAAC,CAAC,QAAQ,KAAK;CAC7C,MAAM,OAAA,GAAA,MAAA,QAAA,CAAY,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACzC,MAAM,sBAAM,IAAI,IAAqB;CAErC,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,MAAM,YAAY,cACpB;EAGF,MAAM,cAAA,GAAA,MAAA,QAAA,CAAmB,MAAM,KAAK,CAAC,CAAC,QAAQ,KAAK;EAGnD,KAAA,GAAA,MAAA,QAAA,CAFuB,MAAM,GAAG,CAAC,CAAC,QAAQ,KAE/B,CAAC,CAAC,SAAS,KAAK,KAAK,WAAW,QAAQ,GAAG,GACpD;EAGF,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,GACnB,IAAI,IAAI,MAAM,EAAE;OAEhB,MAAM,IAAI,MAAM,+DAA+D,MAAM,IAAI;EAG3F,iBAAiBC,uBAAAA,cAAc,KAAK,GAAG,eAAe,OAAO,GAAG;CAClE;CAEA,OAAO;AACT"}