{"version":3,"file":"get-day-view-events.mjs","names":[],"sources":["../../../../src/components/DayView/get-day-view-events/get-day-view-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { AnyDateValue, DayPositionedEventData, ScheduleEventData } from '../../../types';\nimport { getDayPosition, isAllDayEvent, isEventInTimeRange, validateEvent } from '../../../utils';\nimport { getDayPositionedEvents } from './get-day-positioned-events';\n\ninterface GetDayViewEventsInput {\n  events: ScheduleEventData[] | undefined;\n  date: AnyDateValue;\n  startTime?: string;\n  endTime?: string;\n  intervalMinutes?: number;\n}\n\nexport function getDayViewEvents({\n  events,\n  date,\n  startTime,\n  endTime,\n  intervalMinutes,\n}: GetDayViewEventsInput) {\n  if (events === undefined) {\n    return {\n      allDayEvents: [],\n      regularEvents: [],\n      backgroundTimedEvents: [],\n      backgroundAllDayEvents: [],\n    };\n  }\n\n  const ids = new Set<string | number>();\n  const filteredEvents: ScheduleEventData[] = [];\n  const backgroundFiltered: ScheduleEventData[] = [];\n  const dayStart = dayjs(date).startOf('day');\n  const dayEnd = dayjs(date).endOf('day');\n\n  for (const event of events) {\n    const eventStart = dayjs(event.start);\n    const eventEnd = dayjs(event.end);\n    const isOnDay = eventStart.isSame(dayStart, 'day');\n    const spansIntoDay =\n      !isOnDay &&\n      event.display === 'background' &&\n      eventStart.isBefore(dayEnd) &&\n      eventEnd.isAfter(dayStart);\n\n    if (isOnDay || spansIntoDay) {\n      if (isOnDay && !isEventInTimeRange({ event, startTime, endTime })) {\n        continue;\n      }\n\n      const validated = validateEvent(event);\n\n      if (!ids.has(event.id)) {\n        ids.add(event.id);\n      } else {\n        throw new Error(`[@mantine/schedule] DayView: Duplicated event ids found: ${event.id}`);\n      }\n\n      if (event.display === 'background') {\n        backgroundFiltered.push(validated);\n      } else {\n        filteredEvents.push(validated);\n      }\n    }\n  }\n\n  const positionedEvents = getDayPositionedEvents({\n    events: filteredEvents,\n    startTime,\n    endTime,\n    intervalMinutes,\n    date,\n  });\n\n  const allDayEvents: DayPositionedEventData[] = [];\n  const regularEvents: DayPositionedEventData[] = [];\n\n  for (const event of positionedEvents) {\n    if (event.position.allDay) {\n      allDayEvents.push(event);\n    } else {\n      regularEvents.push(event);\n    }\n  }\n\n  const backgroundTimedEvents: DayPositionedEventData[] = [];\n  const backgroundAllDayEvents: DayPositionedEventData[] = [];\n  for (const event of backgroundFiltered) {\n    const eventStart = dayjs(event.start);\n    const eventEnd = dayjs(event.end);\n    const clippedStart = eventStart.isBefore(dayStart) ? dayStart : eventStart;\n    const clippedEnd = eventEnd.isAfter(dayEnd) ? dayEnd : eventEnd;\n\n    const clippedEvent = {\n      ...event,\n      start: clippedStart.format('YYYY-MM-DD HH:mm:ss'),\n      end: clippedEnd.format('YYYY-MM-DD HH:mm:ss'),\n    };\n\n    const allDay = isAllDayEvent({ event: clippedEvent, date });\n\n    if (allDay) {\n      backgroundAllDayEvents.push({\n        ...event,\n        position: {\n          top: 0,\n          height: 100,\n          allDay: true,\n          width: 100,\n          offset: 0,\n          column: 0,\n          overlaps: 1,\n        },\n      });\n    } else {\n      const { top, height } = getDayPosition({\n        event: clippedEvent,\n        startTime,\n        endTime,\n        intervalMinutes,\n      });\n      if (height <= 0) {\n        continue;\n      }\n      backgroundTimedEvents.push({\n        ...event,\n        position: { top, height, allDay: false, width: 100, offset: 0, column: 0, overlaps: 1 },\n      });\n    }\n  }\n\n  return { allDayEvents, regularEvents, backgroundTimedEvents, backgroundAllDayEvents };\n}\n"],"mappings":";;;;;;;;AAaA,SAAgB,iBAAiB,EAC/B,QACA,MACA,WACA,SACA,mBACwB;CACxB,IAAI,WAAW,KAAA,GACb,OAAO;EACL,cAAc,CAAC;EACf,eAAe,CAAC;EAChB,uBAAuB,CAAC;EACxB,wBAAwB,CAAC;CAC3B;CAGF,MAAM,sBAAM,IAAI,IAAqB;CACrC,MAAM,iBAAsC,CAAC;CAC7C,MAAM,qBAA0C,CAAC;CACjD,MAAM,WAAW,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK;CAC1C,MAAM,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK;CAEtC,KAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,aAAa,MAAM,MAAM,KAAK;EACpC,MAAM,WAAW,MAAM,MAAM,GAAG;EAChC,MAAM,UAAU,WAAW,OAAO,UAAU,KAAK;EACjD,MAAM,eACJ,CAAC,WACD,MAAM,YAAY,gBAClB,WAAW,SAAS,MAAM,KAC1B,SAAS,QAAQ,QAAQ;EAE3B,IAAI,WAAW,cAAc;GAC3B,IAAI,WAAW,CAAC,mBAAmB;IAAE;IAAO;IAAW;GAAQ,CAAC,GAC9D;GAGF,MAAM,YAAY,cAAc,KAAK;GAErC,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,GACnB,IAAI,IAAI,MAAM,EAAE;QAEhB,MAAM,IAAI,MAAM,4DAA4D,MAAM,IAAI;GAGxF,IAAI,MAAM,YAAY,cACpB,mBAAmB,KAAK,SAAS;QAEjC,eAAe,KAAK,SAAS;EAEjC;CACF;CAEA,MAAM,mBAAmB,uBAAuB;EAC9C,QAAQ;EACR;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,eAAyC,CAAC;CAChD,MAAM,gBAA0C,CAAC;CAEjD,KAAK,MAAM,SAAS,kBAClB,IAAI,MAAM,SAAS,QACjB,aAAa,KAAK,KAAK;MAEvB,cAAc,KAAK,KAAK;CAI5B,MAAM,wBAAkD,CAAC;CACzD,MAAM,yBAAmD,CAAC;CAC1D,KAAK,MAAM,SAAS,oBAAoB;EACtC,MAAM,aAAa,MAAM,MAAM,KAAK;EACpC,MAAM,WAAW,MAAM,MAAM,GAAG;EAChC,MAAM,eAAe,WAAW,SAAS,QAAQ,IAAI,WAAW;EAChE,MAAM,aAAa,SAAS,QAAQ,MAAM,IAAI,SAAS;EAEvD,MAAM,eAAe;GACnB,GAAG;GACH,OAAO,aAAa,OAAO,qBAAqB;GAChD,KAAK,WAAW,OAAO,qBAAqB;EAC9C;EAIA,IAFe,cAAc;GAAE,OAAO;GAAc;EAAK,CAEhD,GACP,uBAAuB,KAAK;GAC1B,GAAG;GACH,UAAU;IACR,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;GACZ;EACF,CAAC;OACI;GACL,MAAM,EAAE,KAAK,WAAW,eAAe;IACrC,OAAO;IACP;IACA;IACA;GACF,CAAC;GACD,IAAI,UAAU,GACZ;GAEF,sBAAsB,KAAK;IACzB,GAAG;IACH,UAAU;KAAE;KAAK;KAAQ,QAAQ;KAAO,OAAO;KAAK,QAAQ;KAAG,QAAQ;KAAG,UAAU;IAAE;GACxF,CAAC;EACH;CACF;CAEA,OAAO;EAAE;EAAc;EAAe;EAAuB;CAAuB;AACtF"}