import { EventInput, EventInputTransformer } from './event-parse.js'
import { DateRange } from '../datelib/date-range.js'
import { EventUi } from '../component/event-ui.js'
import { CalendarContext } from '../CalendarContext.js'
import { CalendarImpl } from '../api/CalendarImpl.js'
import { Dictionary } from '../options.js'
/*
TODO: "EventSource" is the same name as a built-in type in TypeScript. Rethink.
*/
export type EventSourceSuccessResponseHandler = (this: CalendarImpl, rawData: any, response: any) => EventInput[] | void
export type EventSourceErrorResponseHandler = (error: Error) => void
export interface EventSource {
_raw: any
sourceId: string
sourceDefId: number // one of the few IDs that's a NUMBER not a string
meta: Meta
publicId: string
isFetching: boolean
latestFetchId: string
fetchRange: DateRange | null
defaultAllDay: boolean | null
eventDataTransform: EventInputTransformer // best to have this here?
ui: EventUi
success: EventSourceSuccessResponseHandler | null
failure: EventSourceErrorResponseHandler | null
extendedProps: Dictionary // undocumented
}
export type EventSourceHash = { [sourceId: string]: EventSource }
export interface EventSourceFetcherRes {
rawEvents: EventInput[]
response?: Response
}
export type EventSourceFetcher = (
arg: {
eventSource: EventSource
range: DateRange
isRefetch: boolean
context: CalendarContext
},
successCallback: (res: EventSourceFetcherRes) => void,
errorCallback: (error: Error) => void,
) => void