UNPKG

e-virt-table

Version:

A powerful data table based on canvas. You can use it as data grid、Microsoft Excel or Google sheets. It supports virtual scroll、cell edit etc.

56 lines (55 loc) 1.99 kB
import type Cell from './Cell'; import type CellHeader from './CellHeader'; export type ViewportRect = { x: number; y: number; left: number; top: number; right: number; bottom: number; width: number; height: number; }; /** 内容缩放:逻辑坐标 ↔ 物理像素,canvas / DOM 共用 */ export default class ZoomScale { value: number; get isDefault(): boolean; clamp(value: number, min: number, max: number): number; /** @returns 是否发生变化 */ set(value: number, min: number, max: number): boolean; /** 逻辑 -> 物理 */ toVisual(logical: number): number; /** 物理 -> 逻辑 */ toLogical(physical: number): number; toPx(logical: number): string; /** DOM 测量高度 -> 逻辑高度 */ domHeightToLogical(physicalHeight: number): number; /** 逻辑内容尺寸 -> 物理尺寸 */ contentToPhysical(logical: number): number; scaleStyle<T extends Record<string, any>>(style: T): T; assignScaledStyle(el: HTMLElement, style: Record<string, any>): void; /** 容器物理宽度 -> 逻辑可视宽度 */ containerWidth(containerPhysicalWidth: number): number; resolveStageWidth(options: { containerPhysicalWidth: number; contentWidth: number; scrollerTrackSize: number; fillContainer: boolean; }): { stageWidth: number; stagePhysicalWidth: number; }; applyStageHeight(stageElement: HTMLDivElement, physicalHeight: number): { stageHeight: number; stagePhysicalHeight: number; }; /** floating-ui 锚点:逻辑单元格 -> 视口物理矩形 */ getViewportRect(logical: { x: number; y: number; width: number; height: number; }, containerRect: DOMRect): ViewportRect; /** overlayer 单元格:外层物理定位 + 内层 zoom 缩放自定义 render */ createOverlayerCellElement(cell: Cell | CellHeader, cssPrefix: string): HTMLDivElement; }