import {
DateProfileGenerator,
DateProfile,
DayHeader,
DaySeriesModel,
DayTableModel,
memoize,
ChunkContentCallbackArgs,
} from '@fullcalendar/core/internal'
import {
createElement,
} from '@fullcalendar/core/preact'
import { DayTable } from '@fullcalendar/daygrid/internal'
import { TimeColsView } from './TimeColsView.js'
import { DayTimeCols } from './DayTimeCols.js'
import { buildSlatMetas } from './time-slat-meta.js'
export class DayTimeColsView extends TimeColsView {
private buildTimeColsModel = memoize(buildTimeColsModel)
private buildSlatMetas = memoize(buildSlatMetas)
render() {
let { options, dateEnv, dateProfileGenerator } = this.context
let { props } = this
let { dateProfile } = props
let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator)
let splitProps = this.allDaySplitter.splitProps(props)
let slatMetas = this.buildSlatMetas(
dateProfile.slotMinTime,
dateProfile.slotMaxTime,
options.slotLabelInterval,
options.slotDuration,
dateEnv,
)
let { dayMinWidth } = options
let hasAttachedAxis = !dayMinWidth
let hasDetachedAxis = dayMinWidth
let headerContent = options.dayHeaders && (
)
let allDayContent = (options.allDaySlot !== false) && ((contentArg: ChunkContentCallbackArgs) => (
))
let timeGridContent = (contentArg: ChunkContentCallbackArgs) => (
)
return hasDetachedAxis
? this.renderHScrollLayout(
headerContent,
allDayContent,
timeGridContent,
dayTableModel.colCnt,
dayMinWidth,
slatMetas,
this.state.slatCoords,
)
: this.renderSimpleLayout(
headerContent,
allDayContent,
timeGridContent,
)
}
}
export function buildTimeColsModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {
let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator)
return new DayTableModel(daySeries, false)
}