UNPKG

@leankylin-sheet/core

Version:

LeankylinSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

150 lines (149 loc) 5.77 kB
import React from "react"; import { Sheet, Selection, CellMatrix, Cell } from "./types"; export type Hooks = { rowColChange?: (conf: { action: "add" | "delete"; type: "row" | "column"; index: number; count: number; direction?: "lefttop" | "rightbottom"; id: string; }) => void; onCopySheet?: (oldSheetId: string, newSheetId: string) => void; commentsPreRender?: (r: number, c: number) => any; showCommentsMenu?: (item: { text: string; show: boolean; onClick: any; }, r: any, c: any) => boolean; showMenuBefore?: (ctx: any, selection: any) => boolean; beforeUpdateCell?: (r: number, c: number, value: any) => boolean; afterUpdateCell?: (row: number, column: number, oldValue: any, newValue: any) => void; afterSelectionChange?: (sheetId: string, selection: Selection) => void; beforeRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean; afterRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void; beforeRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean; afterRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void; beforeRenderCellArea?: (cells: CellMatrix, ctx: CanvasRenderingContext2D) => boolean; beforeRenderCell?: (cell: Cell | null, cellInfo: { row: number; column: number; startX: number; startY: number; endX: number; endY: number; }, ctx: CanvasRenderingContext2D) => boolean; afterRenderCell?: (cell: Cell | null, cellInfo: { row: number; column: number; startX: number; startY: number; endX: number; endY: number; }, ctx: CanvasRenderingContext2D) => void; beforeCellMouseDown?: (cell: Cell | null, cellInfo: { row: number; column: number; startRow: number; startColumn: number; endRow: number; endColumn: number; }) => boolean; afterCellMouseMove?: (cell: Cell | null, cellInfo: { rowIndex: number; colIndex: number; startRow: number; startColumn: number; }) => void; afterCellDrop?: (cell: Cell | null, cellInfo: { rowIndex: number; colIndex: number; startRow: number; startColumn: number; }) => void; afterCellMouseLeave?: () => void; afterCellMouseDown?: (cell: Cell | null, cellInfo: { row: number; column: number; startRow: number; startColumn: number; endRow: number; endColumn: number; }) => void; beforePaste?: (selection: Selection[] | undefined, content: string) => boolean; beforeUpdateComment?: (row: number, column: number, value: any) => boolean; afterUpdateComment?: (row: number, column: number, value: any, isOver: boolean) => void; beforeInsertComment?: (row: number, column: number) => boolean; afterInsertComment?: (row: number, column: number) => void; beforeDeleteComment?: (row: number, column: number) => boolean; afterDeleteComment?: (row: number, column: number) => void; beforeAddSheet?: (sheet: Sheet) => boolean; afterAddSheet?: (sheet: Sheet) => void; beforeActivateSheet?: (id: string) => boolean; afterActivateSheet?: (id: string) => void; beforeDeleteSheet?: (id: string) => boolean; afterDeleteSheet?: (id: string) => void; beforeUpdateSheetName?: (id: string, oldName: string, newName: string) => boolean; afterUpdateSheetName?: (id: string, oldName: string, newName: string) => void; }; export type Settings = { headerBgColor?: string; toolbarRightRender?: any; renderBottomToolbar?: any; renderTopToolbar?: any; onClickContentEditable?: any; renderCustomColor?: any; renderFormulaHint?: any; renderFormulaSearch?: any; renderEditorSelector?: any; copyRich?: boolean; renderCalcInfo?: any; renderFreezeCol?: any; renderFreezeRow?: any; renderFilter?: any; fxContainer?: any; disabledKeyboardCodes?: string[]; blank?: { width: number; height: number; }; Footer?: any; column?: number; row?: number; addRows?: number; allowEdit?: boolean; showToolbar?: boolean; showFormulaBar?: boolean; showSheetTabs?: boolean; data: Sheet[]; config?: any; devicePixelRatio?: number; lang?: string | null; forceCalculation?: boolean; rowHeaderWidth?: number; columnHeaderHeight?: number; defaultColWidth?: number; defaultRowHeight?: number; defaultFontSize?: number; toolbarItems?: string[]; cellContextMenu?: () => string[]; headerContextMenu?: string[]; cellCustomContextMenu?: (selectSave?: any, headMenu?: any) => { key: string; element: any; onClick: any; }[]; sheetTabContextMenu?: string[]; filterContextMenu?: string[]; generateSheetId?: () => string; hooks?: Hooks; customToolbarItems?: { key: string; tooltip?: string; children?: React.ReactNode; iconName?: string; icon?: React.ReactNode; onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void; }[]; }; export declare const defaultSettings: Required<Settings>;