{"version":3,"file":"get-resources-day-view-events.cjs","names":["isEventInTimeRange","validateEvent","getDayPositionedEvents","isAllDayEvent","getDayPosition"],"sources":["../../../../src/components/ResourcesDayView/get-resources-day-view-events/get-resources-day-view-events.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n  AnyDateValue,\n  DayPositionedEventData,\n  ScheduleEventData,\n  ScheduleResourceData,\n} from '../../../types';\nimport { getDayPosition, isAllDayEvent, isEventInTimeRange, validateEvent } from '../../../utils';\nimport { getDayPositionedEvents } from '../../DayView/get-day-view-events/get-day-positioned-events';\n\ninterface GetResourcesDayViewEventsInput {\n  events: ScheduleEventData[] | undefined;\n  resources: ScheduleResourceData[];\n  date: AnyDateValue;\n  startTime?: string;\n  endTime?: string;\n}\n\nexport interface ResourcesDayViewEventsResult {\n  regularEvents: Record<string | number, DayPositionedEventData[]>;\n  allDayEvents: Record<string | number, DayPositionedEventData[]>;\n  backgroundTimedEvents: Record<string | number, DayPositionedEventData[]>;\n  backgroundAllDayEvents: Record<string | number, DayPositionedEventData[]>;\n}\n\nexport function getResourcesDayViewEvents({\n  events,\n  resources,\n  date,\n  startTime,\n  endTime,\n}: GetResourcesDayViewEventsInput): ResourcesDayViewEventsResult {\n  const result: ResourcesDayViewEventsResult = {\n    regularEvents: {},\n    allDayEvents: {},\n    backgroundTimedEvents: {},\n    backgroundAllDayEvents: {},\n  };\n\n  for (const resource of resources) {\n    result.regularEvents[resource.id] = [];\n    result.allDayEvents[resource.id] = [];\n    result.backgroundTimedEvents[resource.id] = [];\n    result.backgroundAllDayEvents[resource.id] = [];\n  }\n\n  if (events === undefined) {\n    return result;\n  }\n\n  const dayStart = dayjs(date).startOf('day');\n  const dayEnd = dayjs(date).endOf('day');\n\n  const eventsByResource: Record<string | number, ScheduleEventData[]> = {};\n  const backgroundByResource: Record<string | number, ScheduleEventData[]> = {};\n\n  for (const resource of resources) {\n    eventsByResource[resource.id] = [];\n    backgroundByResource[resource.id] = [];\n  }\n\n  const ids = new Set<string | number>();\n\n  for (const event of events) {\n    if (event.resourceId === undefined) {\n      continue;\n    }\n\n    if (!(event.resourceId in eventsByResource)) {\n      continue;\n    }\n\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(\n          `[@mantine/schedule] ResourcesDayView: Duplicated event ids found: ${event.id}`\n        );\n      }\n\n      if (event.display === 'background') {\n        backgroundByResource[event.resourceId].push(validated);\n      } else {\n        eventsByResource[event.resourceId].push(validated);\n      }\n    }\n  }\n\n  for (const resource of resources) {\n    const positioned = getDayPositionedEvents({\n      events: eventsByResource[resource.id],\n      startTime,\n      endTime,\n      date,\n    });\n\n    for (const event of positioned) {\n      if (event.position.allDay) {\n        result.allDayEvents[resource.id].push(event);\n      } else {\n        result.regularEvents[resource.id].push(event);\n      }\n    }\n\n    for (const event of backgroundByResource[resource.id]) {\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        result.backgroundAllDayEvents[resource.id].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({ event: clippedEvent, startTime, endTime });\n        if (height <= 0) {\n          continue;\n        }\n        result.backgroundTimedEvents[resource.id].push({\n          ...event,\n          position: { top, height, allDay: false, width: 100, offset: 0, column: 0, overlaps: 1 },\n        });\n      }\n    }\n  }\n\n  return result;\n}\n"],"mappings":"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"}