import { aI as valuesIdentical, aH as Dictionary, aC as ViewOptions, k as CalendarOptions, o as ContentGenerator, aJ as ViewContext, aK as DateProfileGenerator, aL as DateProfile, aM as DateComponent, aN as ScrollerInterface, aO as EventRangeProps, aP as EventSegUiInteractionState, aQ as DateSpan, aR as CalendarContext, aS as SplittableProps, aT as BaseComponent, aU as ViewOptionsRefined, aV as Splitter, aW as EventDef, l as ClassNameGenerator, I as DidMountHandler, aE as WillUnmountHandler, G as DayHeaderInfo, m as ClassNameInput, aX as Emitter, aY as EventStore, aZ as EventInteractionState, a_ as EventUiHash, a$ as ElRef, Y as EventRenderRange, p as CssDimValue, b0 as DateMeta, b1 as Hit } from './chunks/996d27e3.js'; export { b2 as Action, aT as BaseComponent, aG as CalendarApiImpl, b3 as CalendarContentProps, aR as CalendarContext, b4 as CalendarData, b5 as CalendarDataManager, b6 as CalendarInner, j as CalendarListeners, b7 as CalendarListenersRefined, b8 as CalendarMediaRoot, b9 as Constraint, ba as ContentContainer, o as ContentGenerator, bb as CustomRendering, r as CustomRenderingStore, aM as DateComponent, b0 as DateMeta, aL as DateProfile, aK as DateProfileGenerator, aQ as DateSpan, aH as Dictionary, I as DidMountHandler, bc as ElementDragging, aX as Emitter, aW as EventDef, bd as EventDefHash, be as EventImpl, bf as EventInstanceHash, bg as EventInstanceRange, aZ as EventInteractionState, bh as EventMutation, bi as EventRangeEdge, aO as EventRangeProps, bj as EventRefined, aP as EventSegUiInteractionState, aY as EventStore, bk as EventUi, a_ as EventUiHash, b1 as Hit, bl as Identity, bm as MinimalEventProps, bn as MoreLinkContainer, ag as MountInfo, bo as NowIndicatorHeaderContainer, bp as NowIndicatorLineContainer, bq as OrderSpec, br as PointerDragEvent, bs as ScrollerSyncerInterface, aS as SplittableProps, aV as Splitter, bt as ViewContainer, aJ as ViewContext, aU as ViewOptionsRefined, bu as ViewProps, bv as ViewPropsTransformer, aE as WillUnmountHandler, bw as buildEventRangeKey, bx as buildValidInstanceRange, by as combineEventUis, bz as compareByFieldSpecs, bA as computeMajorUnit, bB as computeRootClassName, bC as computeViewBorderless, bD as createEventUi, bE as createFormatter, bF as flexibleCompare, bG as generateClassName, bH as getDateMeta, bI as getDateSpanInstantEndMs, bJ as getDateSpanInstantStartMs, bK as getEventRangeMeta, bL as getFooterScrollbarSticky, bM as getIsHeightAuto, bN as getRangeInstantEndMs, bO as getRangeInstantStartMs, bP as getRectCenter, bQ as getTableHeaderSticky, bR as guid, bS as identity, bT as isMajorUnit, bU as mergeEventStores, bV as parseBusinessHours, bW as parseFieldSpecs, bX as refineClassName, bY as refineClassNameGenerator, bZ as refineProps, b_ as setRef, b$ as sortEventSegs } from './chunks/996d27e3.js'; import { OpenDateRange, Duration, DateMarker, DateRange, DateEnv, DateFormatter } from '@full-ui/headless-calendar'; export { DateEnv, DateFormatter, DateMarker, DateRange, addDays, addMs, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, createDuration, diffDayAndTime, diffWholeDays, diffWholeWeeks, formatDayString, greatestDurationDenominator, intersectRanges, isInt, isValidDate, multiplyDuration, padStart, parseMarker, rangeContainsMarker, rangesEqual, rangesIntersect, startOfDay, wholeDivideDurations } from '@full-ui/headless-calendar'; import * as preact from 'preact'; import { Component, ReactNode, Ref } from 'preact/compat'; export { r as requestJson } from './chunks/f534ba39.js'; declare function warn(...args: any[]): void; declare function computeVisibleDayRange(timedRange: OpenDateRange, nextDayThreshold?: Duration): OpenDateRange; declare function removeExact(array: any[], exactItem: any): number; declare function isArraysEqual(array0: any[], array1: any[], itemsEqual?: typeof valuesIdentical): boolean; declare function memoize(workerFunc: (...args: Args) => Res, resEquality?: (res0: Res, res1: Res) => boolean, teardownFunc?: (res: Res) => void): (...args: Args) => Res; declare function memoizeObjArg(workerFunc: (arg: Arg) => Res, resEquality?: (res0: Res, res1: Res) => boolean, teardownFunc?: (res: Res) => void): (arg: Arg) => Res; declare function filterHash(hash: any, func: any): {}; declare function mapHash(hash: { [key: string]: InputItem; }, func: (input: InputItem, key: string) => OutputItem): { [key: string]: OutputItem; }; declare function isPropsEqualShallow(props0: any, props1: any): boolean; type FuncishClassNameInput = ((info: any) => ClassNameInput) | ClassNameInput; declare function mergeViewOptionsMap(...hashes: { [view: string]: ViewOptions; }[]): { [view: string]: ViewOptions; }; declare function mergeCalendarOptions(...optionSets: CalendarOptions[]): any; declare function joinFuncishClassNames(input0: FuncishClassNameInput, // added to string first input1: FuncishClassNameInput, optionName: string): FuncishClassNameInput; declare function mergeContentInjectors(contentGenerator0: ContentGenerator, // fallback contentGenerator1: ContentGenerator): ContentGenerator; declare function mergeLifecycleCallbacks(fn0: (...args: any[]) => any, // called first fn1: (...args: any[]) => any): (...args: any[]) => any; declare function computeElIsRtl(el: HTMLElement): boolean; declare function applyStyleProp(el: HTMLElement, name: string, val: any): void; type SizeCallback = (width: number, height: number) => void; type DisconnectSize = () => void; declare function afterSize(callback: () => void): void; declare function watchSize(el: HTMLElement, callback: SizeCallback, watchWidth?: boolean, watchHeight?: boolean): DisconnectSize; declare function watchWidth(el: HTMLElement, callback: (width: number) => void): DisconnectSize; declare function watchHeight(el: HTMLElement, callback: (height: number) => void): DisconnectSize; declare function debounce(fn: () => void, ms: number): [ request: () => void, cancel: () => void ]; declare function buildNavLinkAttrs(context: ViewContext, dateMarker: DateMarker, viewType?: string, dateStr?: string, isTabbable?: boolean): { tabIndex: number; onKeyDown(ev: KeyboardEvent): void; onClick: (ev: UIEvent) => void; role: any; 'aria-label': any; className: string; } | { onClick: (ev: UIEvent) => void; role: any; 'aria-label': any; className: string; }; interface EdgeInfo { borderLeft: number; borderRight: number; borderTop: number; borderBottom: number; scrollbarLeft: number; scrollbarRight: number; scrollbarBottom: number; paddingLeft?: number; paddingRight?: number; paddingTop?: number; paddingBottom?: number; } declare function computeEdges(el: HTMLElement, getPadding?: boolean): EdgeInfo; declare function computeInnerRect(el: any, goWithinPadding?: boolean, doFromWindowViewport?: boolean): { left: any; right: number; top: any; bottom: number; }; declare function unpromisify(func: (successCallback: (res: Res) => void, failureCallback: (error: Error) => void) => Promise | void, normalizedSuccessCallback: (res: Res) => void, normalizedFailureCallback: (error: Error) => void): void; /** * Pure lateral-span geometry shared by the seg-placement engine. * * A span is a half-open interval `[start, end)` on the lateral axis. The axis * can be discrete (DayGrid columns) or continuous (Timeline pixels). Exactly * adjacent spans never intersect. */ interface LateralSpan { start: number; end: number; } /** * Pure event-positioning kernel implementing measured logical repacking. * * Source segs own identity and event order. Slices own only lateral geometry, * while their outer array index is their dimensionless level. Limiting stays * primarily in logical slice-level space; the pixel path admits speculative * slices only through occupied logical territory, then monotonically prunes * the measured result against exact pixel and more-link boundaries. */ /** Shared estimate for an event wrapper that has not reported a thickness. */ declare const DEFAULT_UNMEASURED_EVENT_THICKNESS = 20; /** * What the kernel requires of a seg. Adapters satisfy it with the production * seg itself (DayGrid) or a projected copy of it carrying pixel geometry * (Timeline, TimeGrid) — never a wrapper around one. */ interface SourceSeg extends LateralSpan { /** Stable whole-source key. Partial-slice keys derive from it (getSliceKey). */ key: string; isStart: boolean; isEnd: boolean; orderIndex: number; } interface Slice extends LateralSpan { sourceSeg: S; isStart: boolean; isEnd: boolean; } /** * One independently rendered more link and the hidden slices it represents. * Members are in event order, one entry per hidden source, each spanning the * lateral hull of that source's hidden fragments so components can derive * start/end continuity from its coordinates. */ interface HiddenSliceGroup extends LateralSpan { /** `getSliceKey(hiddenSlices[0])`; changes if the group's first slice changes. */ key: string; hiddenSlices: Slice[]; } /** What every layout entry point returns, level-limited or pixel-limited. */ interface SliceLayout { /** Every slice to mount, including invisible donors; order has no meaning. */ renderSlices: Slice[]; /** Exact hidden membership; order has no meaning. */ hiddenSlices: Slice[]; /** Laterally sorted logical levels used as the coordinate spatial index. */ sliceLevels: Slice[][]; /** A mounted slice is visible exactly when its key has a coordinate here. */ sliceCoords: Map; /** * Whether every render slice has a measurement, making this layout a fixed * point of the current heights: rerunning with the same inputs reproduces * it. Measurements themselves may still be re-reported later. */ isSettled: boolean; } /** * Streams at most `maxLevels` into the initial structure and fires every * rejected slice back at those levels in event order. * * With slicing disabled, a failed slice hides whole. With slicing enabled, * every level independently offers its maximal free runs and the winning plan * balances exposed length against fragmentation. Every hidden slice grows a * coverage accumulator; with a level tax, only newly covered runs reserve the * bottom event level for a more link, evicting any slice already there. */ declare function buildLevelLimitedLayout(segs: readonly S[], eventOrderStrict: boolean, eventSlicing: boolean, maxLevels: number, moreLinkLevelTax: number, sliceHeights: ReadonlyMap): SliceLayout; /** Deepest measured, coordinated bottom among slices touching the span. */ declare function computeLateralSpanBottom(sliceLevels: readonly (readonly Slice[])[], span: LateralSpan, sliceCoords: ReadonlyMap, sliceHeights: ReadonlyMap): number; /** * Merges strict lateral intersections into groups sorted by lateral start. * Each group's hidden slices are event-ordered. */ declare function groupLaterallyIntersecting(hiddenSlices: readonly Slice[]): HiddenSliceGroup[]; /** * Identifies a whole or partial slice derived from a source seg. Partial keys * deliberately omit the lateral end so a fragment re-cut at the same start * keeps its DOM wrapper. The re-cut fragment transiently reuses the previous * cut's measurement, which can mis-prune one pass; the structure still settles * because every fragment cut depends only on logical geometry — the same * wrapper just re-reports at its new width and the next pass corrects the * decision. */ declare function getSliceKey(slice: Slice): string; declare function sortByAxisOrder(items: readonly T[]): T[]; /** * Selects print DOM candidates from the complete source list. * * Print must never inherit the screen candidate frontier: it plans directly * from every event-ordered source with unit thickness. The default 200-level * cap is an internal safety constant, not a public option. */ interface PrintCandidatePlan { sliceLevels: Slice[][]; /** Exact hidden membership, with no ordering guarantee. */ hiddenSlices: Slice[]; } declare function planPrintDomCandidates(eventOrderedSegs: readonly S[], eventOrderStrict: boolean, eventSlicing: boolean): PrintCandidatePlan; /** * One normal-flow print band backed by a single dimensionless event level. * * The band is a relatively positioned canvas. Its slices begin at level * coordinate zero because they never overlap laterally, while its explicit * thickness gives the renderer a page-breakable normal-flow box. */ interface PrintEventBand { levelIndex: number; slices: Slice[]; /** Tallest current or fallback occupied source thickness in this band. */ thickness: number; } /** * Timeline's single final print band for every hidden-slice more link. * * It renders after all event bands and never counts against the 200 event-level * safety cap. Each link starts at `top: 0` within this band canvas: print gives * up screen skyline compaction so links paginate together. DayGrid does not * use this structure because it prints links outside the event bands. */ interface PrintMoreLinkBand { moreLinkGroups: readonly HiddenSliceGroup[]; /** Tallest current or fallback occupied link thickness in this band. */ thickness: number; } /** * Projects dimensionless levels into independently page-breakable bands. * * The level entries may carry unit-thickness planning coordinates, but those * coordinates have no print meaning. Every print slice begins at level * coordinate zero in its own band, whose thickness is the largest current * slice-wrapper measurement. Missing measurements use the supplied fallback. * Empty or sparse levels do not create empty DOM bands. The key resolver lets * adapters retain their wrapper-level measurement identity. */ declare function buildPrintEventBands(levels: readonly (readonly Slice[])[], printEventThicknesses: ReadonlyMap, getPrintEventKey?: (slice: Slice) => string, defaultPrintEventThickness?: number): PrintEventBand[]; /** Builds Timeline's one final print more-link band when hidden groups exist. */ declare function buildPrintMoreLinkBand(hiddenGroups: readonly HiddenSliceGroup[], printMoreLinkHeights: ReadonlyMap): PrintMoreLinkBand | null; declare const config: any; interface CoordSpan { start: number; size: number; } interface CoordRange { start: number; end: number; } interface SlicedCoordRange extends CoordRange { isStart: boolean; isEnd: boolean; } declare class DaySeriesModel { cnt: number; dates: DateMarker[]; private rangeStart; private entries; constructor(range: DateRange, dateProfileGenerator: DateProfileGenerator); sliceRange(range: DateRange): SlicedCoordRange | null; private getDateIndex; } interface DayGridRange extends SlicedCoordRange { row: number; } interface DayTableCell { key: string; date: DateMarker; isMajor: boolean; isDisabled: boolean; renderProps?: Dictionary; attrs?: Dictionary; className?: string; dateSpanProps?: Dictionary; } declare class DayTableModel { daySeries: DaySeriesModel; private dateEnv; private majorUnit; private activeRange?; rowCount: number; colCount: number; cellRows: DayTableCell[][]; headerDates: DateMarker[]; constructor(daySeries: DaySeriesModel, breakOnWeeks: boolean, dateEnv: DateEnv, majorUnit?: string, activeRange?: DateRange | null); buildCells(): any[]; private buildCell; protected cellIsMajor(dateMarker: DateMarker): boolean; private buildHeaderDates; } interface DayCol { key: string; date: DateMarker; range: DateRange; isMajor: boolean; isDisabled: boolean; renderProps?: Dictionary; attrs?: Dictionary; className?: string; dateSpanProps?: Dictionary; } interface DayColSlotRange { slotMinTime: Duration; slotMaxTime: Duration; } interface BuildDayColsConfig { slotRange?: DayColSlotRange; majorUnit?: string; activeRange?: DateRange | null; } declare function buildDayCols(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator, dateEnv: DateEnv, slotRange?: DayColSlotRange, majorUnit?: string): DayCol[]; declare function buildDayColsFromSeries(daySeries: DaySeriesModel, dateEnv: DateEnv, config?: BuildDayColsConfig): DayCol[]; declare class ScrollListener { el: HTMLElement; emitter: Emitter<{ scrollStart: (isDevice: boolean) => void; scroll: (isDevice: boolean) => void; scrollEnd: (isDevice: boolean) => void; }>; private wheelWaiter; private scrollWaiter; private isScroll; private isScrollRecent; private isWheelRecent; private isMouseDown; private isTouchDown; private isMouse; private isTouch; private isWheel; constructor(el: HTMLElement); destroy(): void; private startScroll; endScroll(): void; private getIsDevice; private handleScroll; private handleScrollWait; private handleWheel; private handleWheelWait; private handleMouseDown; private handleMouseUp; private handleTouchStart; private handleTouchEnd; } interface ScrollerProps { vertical?: boolean; horizontal?: boolean; hideScrollbars?: boolean; children?: ReactNode; clientWidthRef?: Ref; clientHeightRef?: Ref; bottomScrollbarWidthRef?: Ref; className?: string; style?: Dictionary; } declare class Scroller extends DateComponent implements ScrollerInterface { private el?; private _isUnmounting; listener: ScrollListener; private disconnectHRuler?; private disconnectVRuler?; private clientWidth?; private clientHeight?; private bottomScrollbarWidth?; render(): preact.JSX.Element; handleEl: (el: HTMLDivElement | null) => void; handleHRuler: (el: HTMLDivElement | null) => void; handleVRuler: (el: HTMLDivElement | null) => void; endScroll(): void; get x(): number; get y(): number; scrollTo({ x, y }: { x?: number; y?: number; }): void; addScrollStartListener(handler: () => void): void; removeScrollStartListener(handler: () => void): void; addScrollEndListener(handler: (isDevice: boolean) => void): void; removeScrollEndListener(handler: (isDevice: boolean) => void): void; } interface SliceableProps { dateSelection: DateSpan; businessHours: EventStore; eventStore: EventStore; eventDrag: EventInteractionState | null; eventResize: EventInteractionState | null; eventSelection: string; eventUiBases: EventUiHash; } interface SlicedProps { fgEventSegs: (R & EventRangeProps)[]; bgEventSegs: (R & EventRangeProps)[]; businessHourSegs: (R & EventRangeProps)[]; dateSelectionSegs: (R & EventRangeProps)[]; eventDrag: EventSegUiInteractionState | null; eventResize: EventSegUiInteractionState | null; eventSelection: string; } declare abstract class Slicer { private sliceBusinessHours; private sliceDateSelection; private sliceEventStore; private sliceEventDrag; private sliceEventResize; abstract sliceRange(dateRange: DateRange, ...extraArgs: ExtraArgs): R[]; protected intersectDateSpan(dateSpan: DateSpan, activeRange: DateRange, ...extraArgs: ExtraArgs): DateSpan | null; protected sliceDateSpan(dateSpan: DateSpan, ...extraArgs: ExtraArgs): R[]; protected forceDayIfListItem: boolean; sliceProps(props: SliceableProps, dateProfile: DateProfile, nextDayThreshold: Duration | null, context: CalendarContext, ...extraArgs: ExtraArgs): SlicedProps; sliceNowDate(// does not memoize date: DateMarker, dateProfile: DateProfile, nextDayThreshold: Duration | null, context: CalendarContext, ...extraArgs: ExtraArgs): R[]; private _sliceBusinessHours; private _sliceEventStore; private _sliceInteraction; private _sliceDateSpan; private sliceEventRanges; private sliceEventRange; } declare function isPropsValid(state: SplittableProps, context: CalendarContext, dateSpanMeta?: {}, filterConfig?: any): boolean; declare class DelayedRunner { private drainedOption?; private isRunning; private isDirty; private pauseDepths; private timeoutId; constructor(drainedOption?: () => void); request(delay?: number): void; pause(scope?: string): void; resume(scope?: string, force?: boolean): void; isPaused(): number; tryDrain(): void; clear(): void; private clearTimeout; protected drained(): void; } interface RulerProps { widthRef: Ref; } declare class Ruler extends BaseComponent { private elRef; private _isUnmounting; private disconnectWidth?; render(): preact.JSX.Element; componentDidMount(): void; componentWillUnmount(): void; } declare class RefMap { masterCallback?: (val: V, key: K, priorVal: V | null) => void; private ignoreDeletes; rev: string; current: Map; private callbacks; constructor(masterCallback?: (val: V, key: K, priorVal: V | null) => void, ignoreDeletes?: boolean); createRef(key: K): (val: V | null) => void; handleValue: (val: V, key: K) => void; } interface NowTimerProps { unit: string; unitValue?: number; children?: (now: DateMarker, todayRange: DateRange, nowMs: number) => ReactNode; } declare class NowTimer extends Component { static contextType: any; context: ViewContext; private runner; constructor(props: NowTimerProps, context: ViewContext); render(): ReactNode; componentWillUnmount(): void; private handleChange; } interface StandardEventProps { elRef?: ElRef; attrs?: any; className?: string; display: 'list-item' | 'row' | 'column'; eventRange: EventRenderRange; slicedStart?: DateMarker; slicedEnd?: DateMarker; isStart: boolean; isEnd: boolean; isFirst?: boolean; isLast?: boolean; isDragging: boolean; isResizing: boolean; isMirror: boolean; isSelected: boolean; isPast: boolean; isFuture: boolean; isToday: boolean; disableDragging?: boolean; disableResizing?: boolean; defaultTimeFormat: DateFormatter; defaultDisplayEventTime?: boolean; defaultDisplayEventEnd?: boolean; isNarrow?: boolean; isShort?: boolean; level?: number; forcedTimeText?: string; disableLiquid?: boolean; disableZindexes?: boolean; } declare class StandardEvent extends BaseComponent { private buildPublicEvent; private el; render(): preact.JSX.Element; handleEl: (el: HTMLElement | null) => void; componentDidUpdate(prevProps: StandardEventProps): void; } interface NowIndicatorDotProps { className?: string; style?: any; } declare const NowIndicatorDot: (props: NowIndicatorDotProps) => preact.JSX.Element; interface BgEventProps { eventRange: EventRenderRange; isStart: boolean; isEnd: boolean; isPast: boolean; isFuture: boolean; isToday: boolean; isNarrow?: boolean; isShort?: boolean; isVertical: boolean; } declare class BgEvent extends BaseComponent { private buildPublicEvent; private el; render(): preact.JSX.Element; handleEl: (el: HTMLElement | null) => void; componentDidUpdate(prevProps: BgEventProps): void; } declare function renderFill(fillType: string, options: ViewOptionsRefined): preact.JSX.Element; interface MeasuredHeightHarnessProps { style: any; className?: string; children?: ReactNode; heightRef?: Ref; } declare class MeasuredHeightHarness extends Component { private rootElRef; private _isUnmounting; private disconnectHeight?; private height?; render(): preact.JSX.Element; componentDidMount(): void; componentDidUpdate(prevProps: MeasuredHeightHarnessProps): void; componentWillUnmount(): void; } declare const RenderId: preact.Context; interface FooterScrollbarProps { isSticky?: boolean; canvasWidth: CssDimValue; scrollerRef?: Ref; scrollbarWidthRef?: Ref; } declare class FooterScrollbar extends BaseComponent { rootElRef: preact.RefObject; private _isUnmounting; disconnectHeight?: () => void; render(): preact.JSX.Element; componentDidMount(): void; componentWillUnmount(): void; } interface TimeGridRange { col: number; startDate: DateMarker; endDate: DateMarker; isStart: boolean; isEnd: boolean; showDot?: boolean; } declare function organizeSegsByCol(segs: S[] | null, colCount: number): S[][]; declare function splitInteractionByCol(ui: EventSegUiInteractionState | null, colCount: number): EventSegUiInteractionState[]; declare class DayTimeColsSlicer extends Slicer { sliceRange(range: DateRange, dayRanges: DateRange[]): TimeGridRange[]; } declare class AllDaySplitter extends Splitter { getKeyInfo(): { allDay: {}; timed: {}; }; getKeysForDateSpan(dateSpan: DateSpan): string[]; getKeysForEventDef(eventDef: EventDef): string[]; } interface CellRenderConfig { generatorName: string; customGenerator: ContentGenerator; innerClassNameGenerator: ClassNameGenerator; classNameGenerator: ClassNameGenerator; didMount: DidMountHandler; willUnmount: WillUnmountHandler; align: 'start' | 'center' | 'end' | ((info: { level: number; inPopover: boolean; isNarrow: boolean; }) => 'start' | 'center' | 'end'); sticky: boolean | number | string; dayHeaderFormat?: DateFormatter; datesRepDistinctDays?: boolean; } interface CellDataConfig { key: string; dateMarker: DateMarker; renderProps: RenderProps; className?: string; attrs?: any; innerAttrs?: any; colSpan?: number; hasNavLink?: boolean; } interface RowConfig { isDateRow: boolean; renderConfig: CellRenderConfig; dataConfigs: CellDataConfig[]; } interface BaseDayHeaderData extends DateMeta { isMajor: DayHeaderInfo['isMajor']; isSticky: DayHeaderInfo['isSticky']; inPopover: DayHeaderInfo['inPopover']; hasNavLink: DayHeaderInfo['hasNavLink']; view: DayHeaderInfo['view']; [otherProp: string]: any; } declare function buildDateRowConfig(dateMarkers: DateMarker[], datesRepDistinctDays: boolean, dateProfile: DateProfile, todayRange: DateRange, dayHeaderFormat: DateFormatter, // TODO: rename to dateHeaderFormat? context: ViewContext, colSpan?: number, isMajorMod?: number, totalDateCnt?: number): RowConfig; declare function buildDateRenderConfig(dayHeaderFormat: DateFormatter, datesRepDistinctDays: boolean, context: ViewContext): CellRenderConfig; declare function buildDateDataConfigs(dateMarkers: DateMarker[], datesRepDistinctDays: boolean, dateProfile: DateProfile, todayRange: DateRange, dayHeaderFormat: DateFormatter, // TODO: rename to dateHeaderFormat? context: ViewContext, colSpan?: number, keyPrefix?: string, extraRenderProps?: Dictionary, // TODO extraAttrs?: Dictionary, // TODO className?: string, isMajorMod?: number, totalDateCnt?: number): CellDataConfig[]; interface TimeGridLayoutProps { labelId: string | undefined; labelStr: string | undefined; dateProfile: DateProfile; nowDate: DateMarker; nowMs?: number; todayRange: DateRange; cells: DayTableCell[]; forPrint: boolean; isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean; className: string; headerTiers: RowConfig[]; fgEventSegs: (SlicedCoordRange & EventRangeProps)[]; bgEventSegs: (SlicedCoordRange & EventRangeProps)[]; businessHourSegs: (SlicedCoordRange & EventRangeProps)[]; dateSelectionSegs: (SlicedCoordRange & EventRangeProps)[]; eventDrag: EventSegUiInteractionState | null; eventResize: EventSegUiInteractionState | null; fgEventSegsByCol: (TimeGridRange & EventRangeProps)[][]; bgEventSegsByCol: (TimeGridRange & EventRangeProps)[][]; businessHourSegsByCol: (TimeGridRange & EventRangeProps)[][]; nowIndicatorSegsByCol: TimeGridRange[][]; dateSelectionSegsByCol: (TimeGridRange & EventRangeProps)[][]; eventDragByCol: EventSegUiInteractionState[]; eventResizeByCol: EventSegUiInteractionState[]; eventSelection: string; } declare class TimeGridLayout extends BaseComponent { private buildSlatMetas; private dayScrollerRef; private timeScrollerRef; private slatHeight?; private _isUnmounting; private currentSlatCnt?; private scrollState; render(): preact.JSX.Element; componentDidMount(): void; componentDidUpdate(prevProps: TimeGridLayoutProps): void; componentWillUnmount(): void; private handleSlatHeight; private resetScroll; private handleTimeScrollRequest; private handleTimeScrollEnd; private applyTimeScroll; } declare class DayTableSlicer extends Slicer { forceDayIfListItem: boolean; sliceRange(dateRange: DateRange, dayTableModel: DayTableModel): DayGridRange[]; } declare class DaySeriesSlicer extends Slicer { forceDayIfListItem: boolean; sliceRange(dateRange: DateRange, daySeries: DaySeriesModel): DayGridRange[]; } declare function buildDayTableModel(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator, dateEnv: DateEnv): DayTableModel; declare function createDayHeaderFormatter(explicitFormat: DateFormatter, datesRepDistinctDays: boolean, dateCnt: number): DateFormatter; interface DayGridLayoutProps { labelId: string | undefined; labelStr: string | undefined; dateProfile: DateProfile; todayRange: DateRange; cellRows: DayTableCell[][]; forPrint: boolean; isHitComboAllowed?: (hit0: Hit, hit1: Hit) => boolean; className: string; headerTiers: RowConfig[]; fgEventSegs: (DayGridRange & EventRangeProps)[]; bgEventSegs: (DayGridRange & EventRangeProps)[]; businessHourSegs: (DayGridRange & EventRangeProps)[]; dateSelectionSegs: (DayGridRange & EventRangeProps)[]; eventDrag: EventSegUiInteractionState | null; eventResize: EventSegUiInteractionState | null; eventSelection: string; } declare class DayGridLayout extends BaseComponent { private scrollerRef; private rowHeightRefMap; private _isUnmounting; private scrollDate; render(): preact.JSX.Element; componentDidMount(): void; componentDidUpdate(prevProps: DayGridLayoutProps): void; componentWillUnmount(): void; resetScroll(): void; updateScrollY: () => void; handleScrollEnd: (isDevice: boolean) => void; } declare const strictModeFactor = 1; export { AllDaySplitter, BgEvent, CellDataConfig, CellRenderConfig, CoordRange, CoordSpan, DEFAULT_UNMEASURED_EVENT_THICKNESS, DayCol, DayColSlotRange, DayGridLayout, DayGridRange, DaySeriesModel, DaySeriesSlicer, DayTableCell, DayTableModel, DayTableSlicer, DayTimeColsSlicer, DelayedRunner, FooterScrollbar, HiddenSliceGroup, MeasuredHeightHarness, NowIndicatorDot, NowTimer, PrintCandidatePlan, PrintEventBand, PrintMoreLinkBand, RefMap, RenderId, RowConfig, Ruler, Scroller, Slice, SlicedCoordRange, SlicedProps, Slicer, SourceSeg, StandardEvent, TimeGridLayout, TimeGridRange, afterSize, applyStyleProp, buildDateDataConfigs, buildDateRenderConfig, buildDateRowConfig, buildDayCols, buildDayColsFromSeries, buildDayTableModel, buildLevelLimitedLayout, buildNavLinkAttrs, buildPrintEventBands, buildPrintMoreLinkBand, computeEdges, computeElIsRtl, computeInnerRect, computeLateralSpanBottom, computeVisibleDayRange, config, createDayHeaderFormatter, debounce, filterHash, getSliceKey, groupLaterallyIntersecting, isArraysEqual, isPropsEqualShallow, isPropsValid, joinFuncishClassNames, mapHash, memoize, memoizeObjArg, mergeCalendarOptions, mergeContentInjectors, mergeLifecycleCallbacks, mergeViewOptionsMap, organizeSegsByCol, planPrintDomCandidates, removeExact, renderFill, sortByAxisOrder, splitInteractionByCol, strictModeFactor, unpromisify, warn, watchHeight, watchSize, watchWidth };