UNPKG

cheetah-grid

Version:

Cheetah Grid is a high performance grid engine that works on canvas

1,156 lines (1,136 loc) 180 kB
// Generated by dts-bundle v0.7.3 declare module 'cheetah-grid' { import type * as TYPES from "cheetah-grid/ts-types"; import * as columns from "cheetah-grid/columns"; import * as core from "cheetah-grid/core"; import * as data from "cheetah-grid/data"; import * as headers from "cheetah-grid/headers"; import * as register from "cheetah-grid/register"; import * as themes from "cheetah-grid/themes"; import * as tools from "cheetah-grid/tools"; import { ColumnDefine, GroupHeaderDefine, HeaderDefine, HeadersDefine, ListGrid, ListGridConstructorOptions } from "cheetah-grid/ListGrid"; import { GridCanvasHelper } from "cheetah-grid/GridCanvasHelper"; export { getInternal as _getInternal } from "cheetah-grid/get-internal"; /** * Cheetah Grid * @namespace cheetahGrid */ export { core, tools, ListGrid, ListGridConstructorOptions, HeadersDefine, ColumnDefine, HeaderDefine, GroupHeaderDefine, columns, headers, themes, data, GridCanvasHelper, getIcons, register, }; export type { /** * Types * @namespace cheetahGrid.TYPES */ TYPES, }; /** @private */ function getIcons(): { [key: string]: TYPES.IconDefine; }; const _default: { core: typeof core; tools: typeof tools; ListGrid: typeof ListGrid; columns: typeof columns; headers: typeof headers; themes: typeof themes; data: typeof data; GridCanvasHelper: typeof GridCanvasHelper; register: typeof register; readonly icons: { [key: string]: TYPES.IconDefine; }; }; export default _default; } declare module 'cheetah-grid/ts-types' { export * from "cheetah-grid/ts-types/base"; export * from "cheetah-grid/ts-types/grid"; export * from "cheetah-grid/ts-types/column"; export * from "cheetah-grid/ts-types/events"; export * from "cheetah-grid/ts-types/plugin"; export * from "cheetah-grid/ts-types/define"; export * from "cheetah-grid/ts-types/data"; export * from "cheetah-grid/ts-types/grid-engine"; export type { ColumnDefine, HeadersDefine } from "cheetah-grid/list-grid/layout-map/api"; } declare module 'cheetah-grid/columns' { import * as action from "cheetah-grid/columns/action"; import * as style from "cheetah-grid/columns/style"; import * as type from "cheetah-grid/columns/type"; /** * columns * @namespace cheetahGrid.columns * @memberof cheetahGrid */ export { action, type, style }; } declare module 'cheetah-grid/core' { import { DrawGrid } from "cheetah-grid/core/DrawGrid"; import { DG_EVENT_TYPE as EVENT_TYPE } from "cheetah-grid/core/DG_EVENT_TYPE"; export { DrawGrid, EVENT_TYPE }; } declare module 'cheetah-grid/data' { import { DataSource, DataSourceParam } from "cheetah-grid/data/DataSource"; import { CachedDataSource } from "cheetah-grid/data/CachedDataSource"; import { FilterDataSource } from "cheetah-grid/data/FilterDataSource"; /** * data modules * @namespace cheetahGrid.data * @memberof cheetahGrid */ export { DataSource, CachedDataSource, FilterDataSource, DataSourceParam, }; } declare module 'cheetah-grid/headers' { import * as action from "cheetah-grid/header/action"; import * as style from "cheetah-grid/header/style"; import * as type from "cheetah-grid/header/type"; /** * header classes * @namespace cheetahGrid.headers * @memberof cheetahGrid */ export { action, type, style }; } declare module 'cheetah-grid/register' { import type { IconDefine } from "cheetah-grid/ts-types"; import type { Theme } from "cheetah-grid/themes/theme"; export function theme(name: string, theme?: Theme): Theme; export function icon(name: string, icon?: IconDefine): IconDefine; export function icons(icons: { [key: string]: IconDefine; }): void; } declare module 'cheetah-grid/themes' { import { Theme } from "cheetah-grid/themes/theme"; import type { ThemeDefine } from "cheetah-grid/ts-types"; export const BASIC: Theme; export const MATERIAL_DESIGN: Theme; export type { Theme }; export const theme: { Theme: typeof Theme; }; export function of(value: ThemeDefine | string | undefined | null): Theme | null; export function getDefault(): Theme; export function setDefault(defaultTheme: Theme): void; export function getChoices(): { [key: string]: Theme; }; } declare module 'cheetah-grid/tools' { import * as canvashelper from "cheetah-grid/tools/canvashelper"; /** * tools * @namespace cheetahGrid.tools * @memberof cheetahGrid */ export { canvashelper }; } declare module 'cheetah-grid/ListGrid' { import { DataSource } from "cheetah-grid/data"; import type { CellAddress, CellContext, CellRange, ColumnActionAPI, ColumnTypeAPI, EventListenerId, FieldDef, HeaderValues, LayoutObjectId, ListGridAPI, ListGridEventHandlersEventMap, ListGridEventHandlersReturnMap, MaybePromise, MaybePromiseOrUndef, SetPasteValueTestData, SortState, ThemeDefine } from "cheetah-grid/ts-types"; import { ColumnDefine, GroupHeaderDefine, HeaderDefine, HeadersDefine } from "cheetah-grid/list-grid/layout-map"; import type { DrawGridConstructorOptions, DrawGridProtected } from "cheetah-grid/core/DrawGrid"; import type { LayoutDefine, LayoutMapAPI } from "cheetah-grid/list-grid/layout-map"; import { MessageHandler } from "cheetah-grid/columns/message/MessageHandler"; import { DrawGrid } from "cheetah-grid/core/DrawGrid"; import { GridCanvasHelper } from "cheetah-grid/GridCanvasHelper"; import { LG_EVENT_TYPE } from "cheetah-grid/list-grid/LG_EVENT_TYPE"; import type { Theme } from "cheetah-grid/themes/theme"; import { TooltipHandler } from "cheetah-grid/tooltip/TooltipHandler"; /** @private */ const _: "$$$$protected symbol$$$$"; /** @protected */ interface ListGridProtected<T> extends DrawGridProtected { dataSourceEventIds?: EventListenerId[]; headerEvents?: EventListenerId[]; layoutMap: LayoutMapAPI<T>; headerValues?: HeaderValues; tooltipHandler: TooltipHandler<T>; messageHandler: MessageHandler<T>; theme: Theme | null; headerRowHeight: number[] | number; header: HeadersDefine<T>; layout: LayoutDefine<T>; gridCanvasHelper: GridCanvasHelper<T>; sortState: SortState; dataSource: DataSource<T>; records?: T[] | null; allowRangePaste: boolean; } export { ListGridProtected }; export interface ListGridConstructorOptions<T> extends DrawGridConstructorOptions { /** * Simple header property */ header?: HeadersDefine<T>; /** * Layout property */ layout?: LayoutDefine<T>; /** * Header row height(s) */ headerRowHeight?: number[] | number; /** * Records data source */ dataSource?: DataSource<T>; /** * Simple records data */ records?: T[]; /** * Theme */ theme?: ThemeDefine | string; /** * If set to true to allow pasting of ranges. default false */ allowRangePaste?: boolean; /** * @deprecated Cannot be used with ListGrid. * @override */ rowCount?: undefined; /** * @deprecated Cannot be used with ListGrid. * @override */ colCount?: undefined; /** * @deprecated Cannot be used with ListGrid. * @override */ frozenRowCount?: undefined; } export { HeadersDefine, ColumnDefine, HeaderDefine, GroupHeaderDefine }; /** * ListGrid * @classdesc cheetahGrid.ListGrid * @memberof cheetahGrid */ export class ListGrid<T> extends DrawGrid implements ListGridAPI<T> { protected [_]: ListGridProtected<T>; disabled: boolean; readOnly: boolean; static get EVENT_TYPE(): typeof LG_EVENT_TYPE; /** * constructor * * @constructor * @param options Constructor options */ constructor(options?: ListGridConstructorOptions<T>); /** * Dispose the grid instance. * @returns {void} */ dispose(): void; /** * Gets the define of the header. */ get header(): HeadersDefine<T>; /** * Sets the define of the header with the given data. * <pre> * column options * ----- * caption: header caption * field: field name * width: column width * minWidth: column min width * maxWidth: column max width * icon: icon definition * message: message key name * columnType: column type * action: column action * style: column style * headerType: header type * headerStyle: header style * headerAction: header action * headerField: header field name * headerIcon: header icon definition * sort: define sort setting * ----- * * multiline header * ----- * caption: header caption * columns: columns define * ----- * </pre> */ set header(header: HeadersDefine<T>); /** * Gets the define of the layout. */ get layout(): LayoutDefine<T>; /** * Sets the define of the layout with the given data. */ set layout(layout: LayoutDefine<T>); /** * Gets the define of the headerRowHeight. */ get headerRowHeight(): number | number[]; /** * Sets the define of the headerRowHeight with the given data. */ set headerRowHeight(headerRowHeight: number | number[]); /** * Get the row count per record */ get recordRowCount(): number; /** * Get the records. */ get records(): T[] | null; /** * Set the records from given */ set records(records: T[] | null); /** * Get the data source. */ get dataSource(): DataSource<T>; /** * Set the data source from given */ set dataSource(dataSource: DataSource<T>); /** * Get the theme. */ get theme(): Theme | null; /** * Set the theme from given */ set theme(theme: Theme | null); /** * If set to true to allow pasting of ranges. */ get allowRangePaste(): boolean; set allowRangePaste(allowRangePaste: boolean); /** * Get the font definition as a string. * @override */ get font(): string; /** * Set the font definition with the given string. * @override */ set font(font: string); /** * Get the background color of the underlay. * @override */ get underlayBackgroundColor(): string; /** * Set the background color of the underlay. * @override */ set underlayBackgroundColor(underlayBackgroundColor: string); /** * Get the sort state. */ get sortState(): SortState; /** * Sets the sort state. * If `null` to set, the sort state is initialized. */ set sortState(sortState: SortState | null); /** * Get the header values. */ get headerValues(): HeaderValues; /** * Sets the header values. */ set headerValues(headerValues: HeaderValues); /** * Get the field of the given column index. * @param {number} col The column index. * @param {number} row The row index. * @return {*} The field object. */ getField(col: number, row: number): FieldDef<T> | undefined; /** * Get the column define of the given column index. * @param {number} col The column index. * @param {number} row The row index. * @return {*} The column define object. */ getColumnDefine(col: number, row: number): ColumnDefine<T>; getColumnType(col: number, row: number): ColumnTypeAPI; getColumnAction(col: number, row: number): ColumnActionAPI | undefined; /** * Get the header field of the given header cell. * @param {number} col The column index. * @param {number} row The header row index. * @return {*} The field object. */ getHeaderField(col: number, row: number): any | undefined; /** * Get the header define of the given header cell. * @param {number} col The column index. * @param {number} row The header row index. * @return {*} The header define object. */ getHeaderDefine(col: number, row: number): HeaderDefine<T>; /** * Get the record of the given row index. * @param {number} row The row index. * @return {object} The record. */ getRowRecord(row: number): MaybePromiseOrUndef<T>; /** * Get the record index of the given row index. * @param {number} row The row index. */ getRecordIndexByRow(row: number): number; /** * Gets the row index starting at the given record index. * @param {number} index The record index. */ getRecordStartRowByRecordIndex(index: number): number; /** * Get the column index of the given field. * @param {*} field The field. * @return {number} The column index. * @deprecated use `getCellRangeByField` instead */ getColumnIndexByField(field: FieldDef<T>): number | null; /** * Get the column index of the given field. * @param {*} field The field. * @param {number} index The record index * @return {number} The column index. */ getCellRangeByField(field: FieldDef<T>, index: number): CellRange | null; /** * Focus the cell. * @param {*} field The field. * @param {number} index The record index * @return {void} */ focusGridCell(field: FieldDef<T>, index: number): void; /** * Scroll to where cell is visible. * @param {*} field The field. * @param {number} index The record index * @return {void} */ makeVisibleGridCell(field: FieldDef<T>, index: number): void; getGridCanvasHelper(): GridCanvasHelper<T>; /** * Get cell range information for a given cell. * @param {number} col column index of the cell * @param {number} row row index of the cell * @returns {object} cell range info */ getCellRange(col: number, row: number): CellRange; /** * Get header range information for a given cell. * @param {number} col column index of the cell * @param {number} row row index of the cell * @returns {object} cell range info * @deprecated use `getCellRange` instead */ getHeaderCellRange(col: number, row: number): CellRange; protected getCopyCellValue(col: number, row: number, range?: CellRange): unknown; protected onDrawCell(col: number, row: number, context: CellContext): MaybePromise<void>; doGetCellValue(col: number, row: number, valueCallback: (value: any) => void): boolean; doChangeValue(col: number, row: number, changeValueCallback: (before: any) => any): MaybePromise<boolean>; doSetPasteValue(text: string, test?: (data: SetPasteValueTestData<T>) => boolean): void; getHeaderValue(col: number, row: number): any | undefined; setHeaderValue(col: number, row: number, newValue: any): void; getLayoutCellId(col: number, row: number): LayoutObjectId; protected bindEventsInternal(): void; protected getMoveLeftColByKeyDownInternal({ col, row }: CellAddress): number; protected getMoveRightColByKeyDownInternal({ col, row, }: CellAddress): number; protected getMoveUpRowByKeyDownInternal({ col, row }: CellAddress): number; protected getMoveDownRowByKeyDownInternal({ col, row }: CellAddress): number; protected getOffsetInvalidateCells(): number; protected getCopyRangeInternal(range: CellRange): CellRange; fireListeners<TYPE extends keyof ListGridEventHandlersEventMap<T>>(type: TYPE, ...event: ListGridEventHandlersEventMap<T>[TYPE]): ListGridEventHandlersReturnMap[TYPE][]; } } declare module 'cheetah-grid/GridCanvasHelper' { import type { CellContext, ColorDef, ColorPropertyDefine, ColorsPropertyDefine, FontPropertyDefine, GridCanvasHelperAPI, LineClamp, ListGridAPI, RectProps, RequiredThemeDefine, StylePropertyFunctionArg, TextOverflow } from "cheetah-grid/ts-types"; import type { Inline } from "cheetah-grid/element/Inline"; import { InlineDrawer } from "cheetah-grid/element/InlineDrawer"; import type { SimpleColumnIconOption } from "cheetah-grid/ts-types-internal"; type ColorsDef = ColorDef | (ColorDef | null)[]; export class GridCanvasHelper<T> implements GridCanvasHelperAPI { constructor(grid: ListGridAPI<T>); createCalculator(context: CellContext, font: string | undefined): { calcWidth(width: number | string): number; calcHeight(height: number | string): number; }; getColor(color: ColorPropertyDefine, col: number, row: number, ctx: CanvasRenderingContext2D): ColorDef; getColor(color: ColorsPropertyDefine, col: number, row: number, ctx: CanvasRenderingContext2D): ColorsDef; getStyleProperty<T>(style: T | ((args: StylePropertyFunctionArg) => T), col: number, row: number, ctx: CanvasRenderingContext2D): T; toBoxArray(obj: ColorsDef): [ColorDef | null, ColorDef | null, ColorDef | null, ColorDef | null]; toBoxPixelArray(value: number | string | (number | string)[], context: CellContext, font: string | undefined): [number, number, number, number]; get theme(): RequiredThemeDefine; drawWithClip(context: CellContext, draw: (ctx: CanvasRenderingContext2D) => void): void; drawBorderWithClip(context: CellContext, draw: (ctx: CanvasRenderingContext2D) => void): void; text(text: string | (Inline | string)[], context: CellContext, { padding, offset, color, textAlign, textBaseline, font, textOverflow, icons, trailingIcon, }?: { padding?: number | string | (number | string)[]; offset?: number; color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; font?: FontPropertyDefine; textOverflow?: TextOverflow; icons?: SimpleColumnIconOption[]; trailingIcon?: SimpleColumnIconOption; }): void; multilineText(lines: string[], context: CellContext, { padding, offset, color, textAlign, textBaseline, font, lineHeight, autoWrapText, lineClamp, textOverflow, icons, trailingIcon, }?: { padding?: number | string | (number | string)[]; offset?: number; color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; font?: FontPropertyDefine; lineHeight?: string | number; autoWrapText?: boolean; lineClamp?: LineClamp; textOverflow?: TextOverflow; icons?: SimpleColumnIconOption[]; trailingIcon?: SimpleColumnIconOption; }): void; fillText(text: string, x: number, y: number, context: CellContext, { color, textAlign, textBaseline, font, }?: { color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; font?: FontPropertyDefine; }): void; fillCell(context: CellContext, { fillColor, }?: { fillColor?: ColorPropertyDefine; }): void; fillCellWithState(context: CellContext, option?: { fillColor?: ColorPropertyDefine; }): void; fillRect(rect: RectProps, context: CellContext, { fillColor, }?: { fillColor?: ColorPropertyDefine; }): void; fillRectWithState(rect: RectProps, context: CellContext, option?: { fillColor?: ColorPropertyDefine; }): void; getFillColorState(context: CellContext, option?: { fillColor?: ColorPropertyDefine; }): ColorPropertyDefine; border(context: CellContext, { borderColor, lineWidth, }?: { borderColor?: ColorsPropertyDefine; lineWidth?: number; }): void; borderWithState(context: CellContext, option?: { borderColor?: ColorsPropertyDefine; lineWidth?: number; }): void; buildCheckBoxInline(check: boolean, context: CellContext, option?: Parameters<GridCanvasHelperAPI["buildCheckBoxInline"]>[2]): InlineDrawer; checkbox(check: boolean, context: CellContext, { padding, animElapsedTime, offset, uncheckBgColor, checkBgColor, borderColor, textAlign, textBaseline, }?: Parameters<GridCanvasHelperAPI["checkbox"]>[2]): void; radioButton(check: boolean, context: CellContext, { padding, animElapsedTime, offset, checkColor, uncheckBorderColor, checkBorderColor, uncheckBgColor, checkBgColor, textAlign, textBaseline, }?: Parameters<GridCanvasHelperAPI["radioButton"]>[2]): void; button(caption: string, context: CellContext, { bgColor, padding, offset, color, textAlign, textBaseline, shadow, font, textOverflow, icons, }?: Parameters<GridCanvasHelperAPI["button"]>[2]): void; testFontLoad(font: string | undefined, value: string, context: CellContext): boolean; } export {}; } declare module 'cheetah-grid/get-internal' { export function getInternal(): unknown; } declare module 'cheetah-grid/ts-types/base' { export type MaybeUndef<T> = T | undefined; export type PromiseOrUndef<T> = undefined | Promise<T | undefined>; export type PromiseMaybeUndef<T> = Promise<T | undefined>; export type MaybePromise<T> = T | Promise<T>; export type MaybeCall<T, A extends any[]> = T | ((...args: A) => T); export type MaybePromiseOrCall<T, A extends any[]> = T | Promise<T> | ((...args: A) => T); export type MaybePromiseOrUndef<T> = T | undefined | Promise<T | undefined>; export type MaybeCallOrUndef<T, A extends any[]> = undefined | T | ((...args: A) => T); export type MaybePromiseOrCallOrUndef<T, A extends any[]> = T | undefined | Promise<T | undefined> | ((...args: A) => T); export type PromiseMaybeUndefOrCall<T, A extends any[]> = Promise<T | undefined> | ((...args: A) => T); export type PromiseMaybeCallOrUndef<T, A extends any[]> = Promise<MaybeCallOrUndef<T, A>>; export type AnyFunction = (...args: any[]) => any; export interface RectProps { left: number; right: number; top: number; bottom: number; width: number; height: number; } export type ColorDef = CanvasRenderingContext2D["fillStyle"]; } declare module 'cheetah-grid/ts-types/grid' { import type { MaybePromiseOrUndef } from "cheetah-grid/ts-types/base"; export interface CellAddress { col: number; row: number; } export interface CellRange { start: CellAddress; end: CellAddress; } export type FieldGetter<T> = (record: T) => any; export type FieldSetter<T> = (record: T, value: any) => boolean; export interface FieldAssessor<T> { get: FieldGetter<T>; set: FieldSetter<T>; } export type FieldDef<T> = keyof T | FieldGetter<T> | FieldAssessor<T>; export type FieldData = MaybePromiseOrUndef<any>; } declare module 'cheetah-grid/ts-types/column' { export * from "cheetah-grid/ts-types/column/type"; export * from "cheetah-grid/ts-types/column/style"; export * from "cheetah-grid/ts-types/column/action"; } declare module 'cheetah-grid/ts-types/events' { import type { CellAddress, CellRange, FieldDef } from "cheetah-grid/ts-types/grid"; import type { AnyFunction } from "cheetah-grid/ts-types/base"; import type { ColumnDefine } from "cheetah-grid/ListGrid"; export type KeyboardEventListener = (e: KeyboardEvent) => void; export type AnyListener = AnyFunction; export type EventListenerId = number; export type BeforeSelectedCellEvent = CellAddress & { selected: false; after: CellAddress; }; export type AfterSelectedCellEvent = CellAddress & { selected: true; before: CellAddress; }; export type SelectedCellEvent = BeforeSelectedCellEvent | AfterSelectedCellEvent; export type MouseCellEvent = CellAddress & { event: MouseEvent; }; export type TouchCellEvent = CellAddress & { event: TouchEvent; }; export type KeydownEvent = { keyCode: number; event: KeyboardEvent; stopCellMoving(): void; }; export interface PasteRangeBoxValues { readonly colCount: number; readonly rowCount: number; getCellValue(offsetCol: number, offsetRow: number): string; } export type PasteCellEvent = CellAddress & { value: string; normalizeValue: string; multi: boolean; rangeBoxValues: PasteRangeBoxValues; event: ClipboardEvent; }; export type InputCellEvent = CellAddress & { value: string; }; export type DeleteCellEvent = CellAddress & { event: KeyboardEvent; }; export type ScrollEvent = { event: Event; }; export type ModifyStatusEditableinputCellEvent = CellAddress & { input: HTMLInputElement; }; export type MousePointerCellEvent = CellAddress & { related?: CellAddress; event: Pick<MouseEvent, "clientX" | "clientY" | "pageX" | "pageY">; }; export interface DrawGridEventHandlersEventMap { selected_cell: [SelectedCellEvent, boolean]; click_cell: [MouseCellEvent]; dblclick_cell: [MouseCellEvent]; mouseenter_cell: [MousePointerCellEvent]; mouseleave_cell: [MousePointerCellEvent]; mouseover_cell: [MousePointerCellEvent]; mouseout_cell: [MousePointerCellEvent]; mousemove_cell: [MouseCellEvent]; mousedown_cell: [MouseCellEvent]; mouseup_cell: [MouseCellEvent]; contextmenu_cell: [MouseCellEvent]; touchstart_cell: [TouchCellEvent]; dbltap_cell: [TouchCellEvent]; keydown: [KeydownEvent]; paste_cell: [PasteCellEvent]; input_cell: [InputCellEvent]; delete_cell: [DeleteCellEvent]; scroll: [ScrollEvent]; editableinput_cell: [CellAddress]; modify_status_editableinput_cell: [ModifyStatusEditableinputCellEvent]; focus_grid: [FocusEvent]; blur_grid: [FocusEvent]; resize_column: [{ col: number; }]; copydata: [CellRange]; } export interface DrawGridEventHandlersReturnMap { selected_cell: void; click_cell: void; dblclick_cell: void; mouseenter_cell: void; mouseleave_cell: void; mouseover_cell: void; mouseout_cell: void; mousemove_cell: void; mousedown_cell: boolean; mouseup_cell: void; contextmenu_cell: void; touchstart_cell: void; dbltap_cell: void; keydown: void; paste_cell: void; input_cell: void; delete_cell: void; scroll: void; editableinput_cell: boolean | void; modify_status_editableinput_cell: void; focus_grid: void; blur_grid: void; resize_column: void; copydata: string; } export type ChangedValueCellEvent<T> = CellAddress & { record: T; field: FieldDef<T>; value: any; oldValue: any; }; export type ChangedHeaderValueCellEvent = CellAddress & { field: string; value: any; oldValue: any; }; export type PasteRejectedValuesEvent<T> = { detail: (CellAddress & { record: T | undefined; define: ColumnDefine<T>; pasteValue: string; })[]; }; export interface ListGridEventHandlersEventMap<T> extends DrawGridEventHandlersEventMap { before_change_value: [ChangedValueCellEvent<T>]; changed_value: [ChangedValueCellEvent<T>]; changed_header_value: [ChangedHeaderValueCellEvent]; rejected_paste_values: [PasteRejectedValuesEvent<T>]; } export interface ListGridEventHandlersReturnMap extends DrawGridEventHandlersReturnMap { before_change_value: void; changed_value: void; changed_header_value: void; rejected_paste_values: void; } } declare module 'cheetah-grid/ts-types/plugin' { import type { ColorPropertyDefine, ColorsPropertyDefine, TreeBranchIconStyleDefine, TreeLineStyle } from "cheetah-grid/ts-types/define"; export interface IconDefine { d: string; width: number; height: number; } export type PartialThemeDefine = Partial<ThemeDefine>; export interface ThemeDefine { font?: string; underlayBackgroundColor: string; color: ColorPropertyDefine; frozenRowsColor?: ColorPropertyDefine; defaultBgColor?: ColorPropertyDefine; frozenRowsBgColor?: ColorPropertyDefine; selectionBgColor: ColorPropertyDefine; highlightBgColor?: ColorPropertyDefine; borderColor: ColorsPropertyDefine; frozenRowsBorderColor: ColorsPropertyDefine; highlightBorderColor: ColorsPropertyDefine; checkbox: { uncheckBgColor?: ColorPropertyDefine; checkBgColor?: ColorPropertyDefine; borderColor?: ColorPropertyDefine; }; radioButton: { checkColor?: ColorPropertyDefine; uncheckBorderColor?: ColorPropertyDefine; checkBorderColor?: ColorPropertyDefine; uncheckBgColor?: ColorPropertyDefine; checkBgColor?: ColorPropertyDefine; }; button: { color?: ColorPropertyDefine; bgColor?: ColorPropertyDefine; }; tree: { lineStyle?: TreeLineStyle; lineColor?: ColorPropertyDefine; lineWidth?: number; treeIcon?: TreeBranchIconStyleDefine; }; header: { sortArrowColor?: ColorPropertyDefine; }; messages: { infoBgColor?: ColorPropertyDefine; errorBgColor?: ColorPropertyDefine; warnBgColor?: ColorPropertyDefine; boxWidth?: number; markHeight?: number; }; indicators: { topLeftColor?: ColorPropertyDefine; topLeftSize?: number; topRightColor?: ColorPropertyDefine; topRightSize?: number; bottomRightColor?: ColorPropertyDefine; bottomRightSize?: number; bottomLeftColor?: ColorPropertyDefine; bottomLeftSize?: number; }; } export type RequiredThemeDefine = Required<ThemeDefine> & { checkbox: Required<ThemeDefine["checkbox"]>; radioButton: Required<ThemeDefine["radioButton"]>; button: Required<ThemeDefine["button"]>; tree: Required<ThemeDefine["tree"]>; header: Required<ThemeDefine["header"]>; messages: Required<ThemeDefine["messages"]>; indicators: Required<ThemeDefine["indicators"]>; }; } declare module 'cheetah-grid/ts-types/define' { import type { ColorDef } from "cheetah-grid/ts-types/base"; import type { ListGridAPI } from "cheetah-grid/ts-types/grid-engine"; export interface FontIcon<T> { font?: string; content?: T extends object ? keyof T & string : string; className?: string; tagName?: string; isLiga?: boolean; width?: number; height?: number; color?: string; offsetTop?: number; offsetLeft?: number; } export interface ImageIcon<T> { src: T extends object ? keyof T & string : string; width?: number; height?: number; } export interface PathIcon<T> { path: T extends object ? keyof T & string : string; width: number; height: number; color?: string; } export interface SvgIcon<T> { svg: T extends object ? keyof T & string : string; width?: number; height?: number; } export interface NamedIcon<T> { name: T extends object ? keyof T & string : string; width?: number; height?: number; } export type ColumnIconOption<T> = FontIcon<T> | ImageIcon<T> | PathIcon<T> | SvgIcon<T> | NamedIcon<T>; export type ColumnMenuItemOptions = ColumnMenuItemOption[] | SimpleColumnMenuItemOption[] | OldSimpleColumnMenuItemOption[] | string | ColumnMenuItemObjectOptions; export interface ColumnMenuItemOption { value: any; label: string; classList?: string[]; html?: string; } export interface SimpleColumnMenuItemOption { value: any; label: string; } /** @internal */ export interface OldSimpleColumnMenuItemOption { value: any; caption: string; } export interface ColumnMenuItemObjectOptions { [value: string]: string; } export type Visibility = "visible" | "hidden"; export type TextOverflow = "clip" | "ellipsis" | string; export type LineClamp = number | "auto"; export interface StylePropertyFunctionArg { row: number; col: number; grid: ListGridAPI<any>; context: CanvasRenderingContext2D; } export type ColorPropertyDefine = ColorDef | ((args: StylePropertyFunctionArg) => string) | ((args: StylePropertyFunctionArg) => CanvasGradient) | ((args: StylePropertyFunctionArg) => CanvasPattern) | ((args: StylePropertyFunctionArg) => string | CanvasGradient | CanvasPattern | undefined); export type ColorsPropertyDefine = ColorPropertyDefine | (ColorDef | null)[] | ((args: StylePropertyFunctionArg) => (ColorDef | null)[]); export type FontPropertyDefine = string | ((args: StylePropertyFunctionArg) => string); export type IndicatorStyle = "triangle" | "none"; export type IndicatorObject = { style?: IndicatorStyle; color?: ColorDef; size?: number | string; }; export type IndicatorDefine = IndicatorObject | IndicatorStyle; export type TreeLineStyle = "none" | "solid"; export type TreeBranchIconStyle = "chevron_right" | "expand_more" | "none"; export type TreeBranchIconStyleColumnIcon = ColumnIconOption<any>; export type TreeBranchIconStyleDefine = TreeBranchIconStyle | TreeBranchIconStyleColumnIcon | ((args: StylePropertyFunctionArg) => TreeBranchIconStyle) | ((args: StylePropertyFunctionArg) => TreeBranchIconStyleColumnIcon); } declare module 'cheetah-grid/ts-types/data' { export interface MessageObject { type: "error" | "info" | "warning"; message: string | null; original?: Message; } export type Message = MessageObject | string; } declare module 'cheetah-grid/ts-types/grid-engine' { import type { AnyFunction, ColorDef, MaybePromise, MaybePromiseOrUndef, RectProps } from "cheetah-grid/ts-types/base"; import type { AnyListener, DrawGridEventHandlersEventMap, DrawGridEventHandlersReturnMap, EventListenerId, ListGridEventHandlersEventMap, ListGridEventHandlersReturnMap } from "cheetah-grid/ts-types/events"; import type { CellAddress, CellRange, FieldData, FieldDef } from "cheetah-grid/ts-types/grid"; import type { ColorPropertyDefine, ColorsPropertyDefine, FontPropertyDefine, LineClamp, StylePropertyFunctionArg, TextOverflow } from "cheetah-grid/ts-types/define"; import type { ColumnDefine, HeadersDefine } from "cheetah-grid/list-grid/layout-map/api"; import type { RecordBoolean } from "cheetah-grid/ts-types/column"; import type { RequiredThemeDefine } from "cheetah-grid/ts-types/plugin"; import type { SimpleColumnIconOption } from "cheetah-grid/ts-types-internal/data"; export type LayoutObjectId = number | string | symbol; export type DrawGridKeyboardMoveCellFunction = (context: { event: KeyboardEvent; cell: CellAddress; grid: DrawGridAPI; }) => CellAddress | null; export interface DrawGridKeyboardOptions { moveCellOnTab?: boolean | DrawGridKeyboardMoveCellFunction; moveCellOnEnter?: boolean | DrawGridKeyboardMoveCellFunction; deleteCellValueOnDel?: boolean; selectAllOnCtrlA?: boolean; } export interface DrawGridAPI { font?: string; rowCount: number; colCount: number; frozenRowCount: number; frozenColCount: number; defaultRowHeight: number; defaultColWidth: string | number; underlayBackgroundColor?: string; trimOnPaste: boolean; keyboardOptions: DrawGridKeyboardOptions | null; readonly selection: Selection; readonly canvas: HTMLCanvasElement; readonly visibleRowCount: number; readonly visibleColCount: number; readonly topRow: number; readonly leftCol: number; scrollLeft: number; scrollTop: number; getElement(): HTMLElement; focus(): void; hasFocusGrid(): boolean; listen<TYPE extends keyof DrawGridEventHandlersEventMap>(type: TYPE, listener: (...event: DrawGridEventHandlersEventMap[TYPE]) => DrawGridEventHandlersReturnMap[TYPE]): EventListenerId; listen(type: string, listener: AnyListener): EventListenerId; configure(name: "fadeinWhenCallbackInPromise", value?: boolean): boolean; updateSize(): void; updateScroll(): boolean; invalidate(): void; invalidateCell(col: number, row: number): void; invalidateGridRect(startCol: number, startRow: number, endCol?: number, endRow?: number): void; invalidateCellRange(cellRange: CellRange): void; getRowHeight(row: number): number; setRowHeight(row: number, height: number): void; getColWidth(col: number): number; setColWidth(col: number, width: string | number | null): void; getMaxColWidth(col: number): string | number | undefined; setMaxColWidth(col: number, maxwidth: string | number): void; getMinColWidth(col: number): string | number | undefined; setMinColWidth(col: number, minwidth: string | number): void; getCellRect(col: number, row: number): RectProps; getCellRelativeRect(col: number, row: number): RectProps; getCellsRect(startCol: number, startRow: number, endCol: number, endRow: number): RectProps; getCellRangeRect(cellRange: CellRange): RectProps; isFrozenCell(col: number, row: number): { row: boolean; col: boolean; } | null; getRowAt(absoluteY: number): number; getColAt(absoluteX: number): number; getCellAt(absoluteX: number, absoluteY: number): CellAddress; makeVisibleCell(col: number, row: number): void; setFocusCursor(col: number, row: number): void; focusCell(col: number, row: number): void; getCellOverflowText(col: number, row: number): string | null; setCellOverflowText(col: number, row: number, overflowText: false | string): void; getAttachCellsArea(range: CellRange): { element: HTMLElement; rect: RectProps; }; onKeyDownMove(evt: KeyboardEvent): void; dispose(): void; addDisposable(disposable: { dispose(): void; }): void; } export interface DataSourceAPI<T> { length: number; get(index: number): MaybePromiseOrUndef<T>; getField<F extends FieldDef<T>>(index: number, field: F): FieldData; hasField(index: number, field: FieldDef<T>): boolean; setField<F extends FieldDef<T>>(index: number, field: F, value: any): MaybePromise<boolean>; sort(field: FieldDef<T>, order: "desc" | "asc"): MaybePromise<void>; dataSource: DataSourceAPI<T>; } export interface SortState { col: number; row: number; order: "asc" | "desc" | undefined; } export type HeaderValues = Map<any, any>; export interface ListGridAPI<T> extends DrawGridAPI { records: T[] | null; dataSource: DataSourceAPI<T>; theme: RequiredThemeDefine | null; allowRangePaste: boolean; header: HeadersDefine<T>; headerRowHeight: number[] | number; sortState: SortState | null; headerValues: HeaderValues; recordRowCount: number; disabled: boolean; readOnly: boolean; listen<TYPE extends keyof ListGridEventHandlersEventMap<T>>(type: TYPE, listener: (...event: ListGridEventHandlersEventMap<T>[TYPE]) => ListGridEventHandlersReturnMap[TYPE]): EventListenerId; getField(col: number, row: number): FieldDef<T> | undefined; getRowRecord(row: number): MaybePromiseOrUndef<T>; getRecordIndexByRow(row: number): number; getRecordStartRowByRecordIndex(index: number): number; getHeaderField(col: number, row: number): any | undefined; getHeaderValue(col: number, row: number): any | undefined; setHeaderValue(col: number, row: number, newValue: any): void; getCellRange(col: number, row: number): CellRange; getCellRangeByField(field: FieldDef<T>, index: number): CellRange | null; focusGridCell(field: FieldDef<T>, index: number): void; makeVisibleGridCell(field: FieldDef<T>, index: number): void; getGridCanvasHelper(): GridCanvasHelperAPI; doChangeValue(col: number, row: number, changeValueCallback: (before: any) => any): MaybePromise<boolean>; doGetCellValue(col: number, row: number, valueCallback: (value: any) => void): boolean; doSetPasteValue(text: string): void; doSetPasteValue(text: string, test: (data: SetPasteValueTestData<T>) => boolean): void; getLayoutCellId(col: number, row: number): LayoutObjectId; getColumnType(col: number, row: number): ColumnTypeAPI; getColumnDefine(col: number, row: number): ColumnDefine<T>; getColumnAction(col: number, row: number): ColumnActionAPI | undefined; fireListeners<TYPE extends keyof ListGridEventHandlersEventMap<T>>(type: TYPE, ...event: ListGridEventHandlersEventMap<T>[TYPE]): ListGridEventHandlersReturnMap[TYPE][]; } export interface ColumnTypeAPI { } export interface ColumnActionAPI { readonly editable: boolean; disabled: RecordBoolean; } export type SetPasteValueTestData<T> = CellAddress & { grid: ListGridAPI<T>; record: T; value: string; oldValue: any; }; export interface InlineAPI { width(arg: { ctx: CanvasRenderingContext2D; }): number; font(): string | null; color(): ColorDef | null; canDraw(): boolean; onReady(callback: AnyFunction): void; draw(opt: any): void; canBreak(): boolean; } type ColorsDef = ColorDef | (ColorDef | null)[]; export interface GridCanvasHelperAPI { theme: RequiredThemeDefine; text(text: string | (InlineAPI | string)[], context: CellContext, option: { padding?: number | string | (number | string)[]; offset?: number; color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; font?: FontPropertyDefine; textOverflow?: TextOverflow; icons?: SimpleColumnIconOption[]; }): void; button(caption: string, context: CellContext, option: { bgColor?: ColorPropertyDefine; padding?: number | string | (number | string)[]; offset?: number; color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; shadow?: { color?: string; blur?: number; offsetX?: number; offsetY?: number; offset?: { x?: number; y?: number; }; }; font?: FontPropertyDefine; textOverflow?: TextOverflow; icons?: SimpleColumnIconOption[]; }): void; checkbox(check: boolean, context: CellContext, option: { padding?: number | string | (number | string)[]; animElapsedTime?: number; offset?: number; uncheckBgColor?: ColorPropertyDefine; checkBgColor?: ColorPropertyDefine; borderColor?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; }): void; radioButton(check: boolean, context: CellContext, option: { padding?: number | string | (number | string)[]; animElapsedTime?: number; offset?: number; checkColor?: ColorPropertyDefine; uncheckBorderColor?: ColorPropertyDefine; checkBorderColor?: ColorPropertyDefine; uncheckBgColor?: ColorPropertyDefine; checkBgColor?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; }): void; multilineText(lines: string[], context: CellContext, option: { padding?: number | string | (number | string)[]; offset?: number; color?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; font?: FontPropertyDefine; lineHeight?: string | number; autoWrapText?: boolean; lineClamp?: LineClamp; textOverflow?: TextOverflow; icons?: SimpleColumnIconOption[]; }): void; getColor(color: ColorPropertyDefine, col: number, row: number, ctx: CanvasRenderingContext2D): ColorDef; getColor(color: ColorsPropertyDefine, col: number, row: number, ctx: CanvasRenderingContext2D): ColorsDef; getStyleProperty<T>(style: T | ((args: StylePropertyFunctionArg) => T), col: number, row: number, ctx: CanvasRenderingContext2D): T; toBoxPixelArray(value: number | string | (number | string)[], context: CellContext, font: string | undefined): [number, number, number, number]; fillRectWithState(rect: RectProps, context: CellContext, option: { fillColor?: ColorPropertyDefine; }): void; drawBorderWithClip(context: CellContext, draw: (ctx: CanvasRenderingContext2D) => void): void; drawWithClip(context: CellContext, draw: (ctx: CanvasRenderingContext2D) => void): void; testFontLoad(font: string | undefined, value: string, context: CellContext): boolean; buildCheckBoxInline(check: boolean, context: CellContext, option: { animElapsedTime?: number; uncheckBgColor?: ColorPropertyDefine; checkBgColor?: ColorPropertyDefine; borderColor?: ColorPropertyDefine; textAlign?: CanvasTextAlign; textBaseline?: CanvasTextBaseline; }): InlineAPI