/** * 日历主轴映射纯函数:把一条 booking 在主轴方向的连续区间 [startUnit, endUnit) * 按「精确比例 proportional」或「补全到刻度结束 snap」映射成 { offset, size }。 * 单位无关:scalePerUnit 既可是 px(固定列宽视图)也可是 %(弹性列视图)。 */ export declare type TickFillMode = 'proportional' | 'snap'; export declare type CalendarViewKind = 'day' | 'week' | 'resource' | 'month'; export interface TickAxis { /** 主轴起点对应的"绝对单位坐标"(日视图=firstTimelineHour;天维度=0) */ originUnit: number; /** 每 1 单位的输出量(日视图=每小时 px;天维度=每列 px 或 %) */ scalePerUnit: number; /** snap 的对齐粒度(单位)(日视图=slotStepHours;天维度=1) */ tickUnit: number; /** 输出尺寸下限(与 scalePerUnit 同量纲),比例模式兜底可点击宽度 */ minSize: number; } export interface AxisSpan { offset: number; size: number; } export declare function mapAxisSpan(axis: TickAxis, startUnit: number, endUnit: number, mode: TickFillMode): AxisSpan; /** * 天维度:把(列下标, 当天浮点小时)折算成连续「天单位」坐标。 * frac 限制在 [0,1],使跨日首尾按当天营业小时占比收口。 * * 营业窗口起点 `dayGridMin` 可能不是 0 点、甚至接近午夜(跨午夜营业,如 23:59 起)。 * 此时 `hour - dayGridMin` 对白天小时会变负而被 clamp 成 0,导致所有预约挤到格子开头。 * 因此先对 24h 做环绕,得到「距营业起点的正向偏移」,再按 span 归一化。 */ export declare function dayGridUnit(colIndex: number, hour: number, dayGridMin: number, dayGridSpan: number): number; export declare function resolveTickFillMode(view: CalendarViewKind, override: TickFillMode | undefined): TickFillMode;