UNPKG

@reactual/handsontable

Version:

Spreadsheet-like data grid editor

1,452 lines (1,293 loc) 68 kB
declare namespace _Handsontable { namespace wot { interface CellCoords { col: number, row: number } interface CellRange { highlight: CellCoords; from: CellCoords; to: CellCoords; } } namespace cellTypes { interface Autocomplete { editor: editors.Autocomplete; renderer: renderers.Autocomplete; validator: (value: any, callback: () => void) => boolean; } interface Checkbox { editor: editors.Checkbox; renderer: renderers.Checkbox; } interface Date { editor: editors.Date; renderer: renderers.Autocomplete; validator: (value: any, callback: () => void) => boolean; } interface Dropdown { editor: editors.Dropdown; renderer: renderers.Autocomplete; validator: (value: any, callback: () => void) => boolean; } interface Handsontable { editor: editors.Handsontable; renderer: renderers.Autocomplete; } interface Numeric { dataType: string; editor: editors.Numeric; renderer: renderers.Numeric; validator: (value: any, callback: () => void) => boolean; } interface Password { copyable: boolean; editor: editors.Password; renderer: renderers.Password; } interface Text { editor: editors.Text; renderer: renderers.Text; } interface Time { editor: editors.Text; renderer: renderers.Text; validator: (value: any, callback: () => void) => boolean; } } namespace editors { class Base { instance: Core; row: number; col: number; prop: string | number; TD: HTMLElement; cellProperties: object; constructor (hotInstance: Core, row: number, col: number, prop: string | number, TD: HTMLElement, cellProperties: object) beginEditing(initialValue?: string): void; cancelChanges(): void; checkEditorSection(): void; close(): void; discardEditor(validationResult?: boolean): void; enableFullEditMode(): void; extend(): void; finishEditing(restoreOriginalValue?: boolean, ctrlDown?: boolean, callback?: () => void): void; getValue(): void; init(): void; isInFullEditMode(): void; isOpened(): boolean; isWaiting(): boolean; open(): void; prepare(row: number, col: number, prop: string | number, TD: HTMLElement, originalValue: any, cellProperties: object): void; saveValue(val?: any, ctrlDown?: boolean): void; setValue(newValue?: any): void; } class Checkbox extends Base { } class Mobile extends Base { hideCellPointer(): void; onBeforeKeyDown(event?: Event): void; prepareAndSave(): void; scrollToView(): void; updateEditorData(): void; updateEditorPosition(x?: number, y?: number): void; valueChanged(): void; } class Select extends Base { focus(): void; getEditedCell(): void; prepareOptions(optionsToPrepare?: object | any[]): void; refreshDimensions(): void; refreshValue(): void; registerHooks(): void; } class Text extends Base { bindEvents(): void; close(tdOutside?: HTMLElement): void; createElements(): void; destroy(): void; focus(): void; getEditedCell(): void; refreshDimensions(): void; refreshValue():void; } class Date extends Text { close(): void; destroyElements(): void; finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void; getDatePickerConfig(): object; hideDatepicker(): void; open(event?: Event): void; showDatepicker(event?: Event): void; } class Handsontable extends Text { assignHooks(): void; beginEditing(initialValue?: any): void; close(): void; finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void; focus(): void; open(): void; } class Numeric extends Text { } class Password extends Text { } class Autocomplete extends Handsontable { allowKeyEventPropagation(keyCode?: number): void; finishEditing(restoreOriginalValue?: boolean): void; flipDropdown(dropdownHeight?: number): void; flipDropdownIfNeeded(): void; getDropdownHeight(): void; highlightBestMatchingChoice(index?: number): void; limitDropdownIfNeeded(spaceAvailable?: number, dropdownHeight?: number): void; queryChoices(query?: any): void; sortByRelevance(value?: any, choices?: any[], caseSensitive?: boolean): any[]; setDropdownHeight(height?: number): void; updateChoicesList(choices?: any[]): void; unflipDropdown(): void; updateDropdownHeight(): void; } class Dropdown extends Autocomplete { } class CommentEditor { editor: HTMLElement; editorStyle: CSSStyleDeclaration; hidden: boolean; setPosition(x: number, y: number): void; setSize(width: number, height: number): void; resetSize(): void; setReadOnlyState(state: boolean): void; show(): void; hide(): void; isVisible(): void; setValue(value?: string): void; getValue(): string; isFocused(): boolean; focus(): void; createEditor(): HTMLElement; getInputElement(): HTMLElement; destroy(): void; } } namespace plugins { // utils for Filters namespace FiltersPlugin { type OperationType = 'conjunction' | 'disjunction'; type ConditionName = 'begins_with' | 'between' | 'by_value' | 'contains' | 'empty' | 'ends_with' | 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'not_between' | 'not_contains' | 'not_empty' | 'neq'; interface ConditionId { args: any[]; name?: ConditionName command?: { key: ConditionName } } interface Condition { name: ConditionName, args: any[]; func: (dataRow: CellValue, values: any[]) => boolean } interface CellLikeData { meta: { row: number, col: number, visualCol: number, visualRow: number, type: string, instance: Core, dateFormat?: string }, value: string } interface BaseComponent { elements: any[]; hidden: boolean; destroy(): boolean; hide(): void; isHidden(): boolean; reset(): void; show(): void; } interface ActionBarComponent extends BaseComponent { getMenuItemDescriptor(): object; accept(): void; cancel(): void; } interface ConditionComponent extends BaseComponent { getInputElement(index?: number): InputUI; getInputElements(): any[]; getMenuItemDescriptor(): object; getSelectElement(): SelectUI; getState(): object; setState(value: object): void; updateState(stateInfo: object): void; } interface ValueComponent extends BaseComponent { getMenuItemDescriptor(): object; getMultipleSelectElement(): MultipleSelectUI; getState(): object; setState(value: object): void; updateState(stateInfo: object): void; } interface BaseUI { buildState: boolean; eventManager: EventManager; hot: Core; options: object; build(): void; destroy(): void; element(): Element; focus(): void; getValue(): any; hide(): void; isBuilt(): boolean; reset(): void; setValue(value: any): any; show(): void; update(): void; } interface InputUI extends BaseUI { } interface MultipleSelectUI extends BaseUI { clearAllUI: BaseUI; items: any[]; itemsBox: Core; searchInput: InputUI; selectAllUI: BaseUI; getItems(): void; getValue(): any[]; isSelectedAllValues(): boolean; setItems(items: any[]): void; } interface SelectUI extends BaseUI { menu: Menu | void; items: any[]; setItems(items: any[]): void; openOptions(): void; closeOptions(): void; } interface ConditionCollection { conditions: object; orderStack: any[]; addCondition(column: number, conditionDefinition: ConditionId, operation?: OperationType): void; clean(): void; clearConditions(column: number): void; destroy(): void; exportAllConditions(): ConditionId[]; getConditions(column: number): Condition[]; hasConditions(column: number, name: string): boolean; isEmpty(): boolean; isMatch(value: CellLikeData, column: number): boolean; isMatchInConditions(conditions: Condition[], value: CellLikeData, operationType?: OperationType): boolean; importAllConditions(conditions: ConditionId[]): void; removeConditions(column: number): void; } interface ConditionUpdateObserver { changes: number[]; columnDataFactory: (column: number) => object[]; conditionCollection: ConditionCollection; grouping: boolean; latestEditedColumnPosition: number; latestOrderStack: number[]; destroy(): void; flush(): void; groupChanges(): void; updateStatesAtColumn(column: number, conditionArgsChange: object): void; } } interface BindStrategy { klass: () => void; strategy: string | void; clearMap(): void; createMap(length: number): void; createRow(params: any): void; destroy(): void; removeRow(params: any): void; setStrategy(name: string): void; translate(params: any): void; } interface CommandExecutor { hot: Core; commands: object; commonCallback: (() => void) | void; registerCommand(name: string, commandDescriptor: object): void; setCommonCallback(callback: () => void): void; execute(commandName: string, ...params: any[]): void; } interface Cursor { cellHeight: number; cellWidth: number; left: number; leftRelative: number; scrollLeft: number; scrollTop: number; top: number; topRelative: number; type: string; fitsAbove(element: HTMLElement): boolean; fitsBelow(element: HTMLElement, viewportHeight?: number): boolean; fitsOnLeft(element: HTMLElement): boolean; fitsOnRight(element: HTMLElement, viewportHeight?: number): boolean; getSourceType(object: any): string; } interface Endpoints { plugin: plugins.ColumnSummary; hot: Core; endpoints: any[]; settings: object | (() => void); settingsType: string; currentEndpoint: object | void; assignSetting(settings: object, endpoint: object, name: string, defaultValue: any): void; getAllEndpoints(): any[]; getEndpoint(index: number): object; parseSettings(settings: any[]): void; refreshAllEndpoints(init: boolean): void; refreshChangedEndpoints(changes: any[]): void; refreshEndpoint(endpoint: object): void; resetAllEndpoints(endpoints: any[], useOffset?: boolean): void; resetEndpointValue(endpoint: object, useOffset?: boolean): void; setEndpointValue(endpoint: object, source: string, render?: boolean): void; } interface EventManager { context?: object; addEventListener(element: Element, eventName: string, callback: () => void): () => void; removeEventListener(element: Element, eventName: string, callback: () => void): void; clearEvents(): void; clear(): void; destroy(): void; fireEvent(element: Element, eventName: string): void; extendEvent(context: object, event: Event): any; } interface GhostTable { columns: number[]; container: HTMLElement | null; hot: Core; injected: boolean; rows: object[]; samples: object | null; settings: object; addRow(row: number, samples: object): void; addColumn(column: number, samples: object): void; addColumnHeadersRow(samples: object): void; clean(): void; createCol(column: number): DocumentFragment; createColElement(column: number): HTMLElement; createColGroupsCol(): DocumentFragment; createColumnHeadersRow(): DocumentFragment; createContainer(className?: string): object; createRow(row: number): DocumentFragment; createTable(className?: string): object; getHeights(callback: (row: number, height: number) => void): void; getWidths(callback: (row: number, height: number) => void): void; getSettings(): object | void; getSetting(name: string): boolean | void; injectTable(parent?: HTMLElement | void): void; isHorizontal(): boolean; isVertical(): boolean; removeTable(): void; setSettings(settings: object): void; setSetting(name: string, value: any): void; } interface ItemsFactory { defaultOrderPattern: any[] | void; hot: Core; predefinedItems: object; getItems(pattern?: any[] | object | boolean): any[]; setPredefinedItems(predefinedItems: any[]): void; } interface Menu { container: HTMLElement; eventManager: EventManager; hot: Core; hotMenu: Core; hotSubMenus: object; keyEvent: boolean; menuItems: any[] | null; offset: object; options: object; origOutsideClickDeselects: boolean | (() => void); parentMenu: Menu | null; close(closeParent?: boolean): void; closeSubMenu(row: number): void; closeAllSubMenus(): void; destroy(): void; executeCommand(event: Event): void; isOpened(): boolean; isSubMenu(): boolean; open(): void; openSubMenu(row: number): Menu | boolean; setMenuItems(menuItems: any[]): void; setOffset(area: string, offset?: number): void; selectLastCell(): void; selectFirstCell(): void; selectPrevCell(row: number, col: number): void; selectNextCell(row: number, col: number): void; setPosition(coords: Event | object): void; setPositionAboveCursor(cursor: Cursor): void; setPositionBelowCursor(cursor: Cursor): void; setPositionOnLeftOfCursor(cursor: Cursor): void; setPositionOnRightOfCursor(cursor: Cursor): void; } interface SamplesGenerator { allowDuplicates: boolean | null; customSampleCount: boolean | null; dataFactory: () => void; samples: object | null; generateColumnSamples(colRange: object, rowRange: object): object; generateRowSamples(rowRange: object | number, colRange: object): object; generateSamples(type: string, range: object, specifierRange: object | number): object; generateSample(type: string, range: object, specifierValue: number): object getSampleCount(): number; setAllowDuplicates(allowDuplicates: boolean): void; setSampleCount(sampleCount: number): void; } class Base { pluginName: string; pluginsInitializedCallback: any[]; isPluginsReady: boolean; enabled: boolean; initialized: boolean; constructor(hotInstance?: Core); addHook(name: string, callback: () => void): void; callOnPluginsReady(callback: () => void): void; clearHooks(): void; destroy(): void; disablePlugin(): void; enablePlugin(): void; init(): void; removeHook(name: string): void; } interface AutoColumnSize extends Base { firstCalculation: boolean; ghostTable: GhostTable; inProgress: boolean; sampleGenerator: SamplesGenerator; widths: any[]; calculateAllColumnsWidth(rowRange?: number | object): void; calculateColumnsWidth(colRange?: number | object, rowRange?: number | object, force?: boolean): void; clearCache(columns?: any[]): void; findColumnsWhereHeaderWasChanged(): any[]; getColumnWidth(col: number, defaultWidth?: number, keepMinimum?: boolean): number; getFirstVisibleColumn(): number; getLastVisibleColumn(): number; getSyncCalculationLimit(): number; isNeedRecalculate(): boolean; recalculateAllColumnsWidth(): void; } interface AutoRowSize extends Base { firstCalculation: boolean; heights: any[]; ghostTable: GhostTable; inProgress: boolean; sampleGenerator: SamplesGenerator; calculateAllRowsHeight(colRange?: number | object): void; calculateRowsHeight(rowRange?: number | object, colRange?: number | object, force?: boolean): void; clearCache(): void; clearCacheByRange(range: number | object): void; findColumnsWhereHeaderWasChanged(): any[]; getColumnHeaderHeight(): number | void; getFirstVisibleRow(): number; getLastVisibleRow(): number; getRowHeight(col: number, defaultHeight?: number): number; getSyncCalculationLimit(): number; isNeedRecalculate(): boolean; recalculateAllRowsHeight(): void; } interface Autofill extends Base { addingStarted: boolean; autoInsertRow: boolean; directions: string[]; eventManager: EventManager; handleDraggedCells: boolean; mouseDownOnCellCorner: boolean; mouseDragOutside: boolean; } interface BindRowsWithHeaders extends Base { bindStrategy: BindStrategy; removeRows: any[]; } interface CollapsibleColumns extends Base { buttonEnabledList: object; collapsedSections: object; columnHeaderLevelCount: number; eventManager: EventManager; hiddenColumnsPlugin: object; nestedHeadersPlugin: object; settings: boolean | any[]; checkDependencies(): void; collapseAll(): void; collapseSection(coords: object): void; expandAll(): void; expandSection(coords: object): void; generateIndicator(col: number, TH: HTMLElement): HTMLElement; markSectionAs(state: string, row: number, column: number, recursive: boolean): void; meetsDependencies(): boolean; parseSettings(): void; toggleAllCollapsibleSections(action: string): void; toggleCollapsibleSection(coords: object, action: string): void; } interface ColumnSorting extends Base { lastSortedColumn: number; sortEmptyCells: boolean; sortIndicators: any[]; dateSort(sortOrder: boolean, columnMeta: object): (a: any, b: any) => boolean; defaultSort(sortOrder: boolean, columnMeta: object): (a: any, b: any) => boolean; enableObserveChangesPlugin(): void; getColHeader(col: number, TH: HTMLElement): void; isSorted(): boolean; loadSortingState(): any; numericSort(sortOrder: boolean, columnMeta: object): (a: any, b: any) => boolean; saveSortingState(): void; setSortingColumn(col: number, order: boolean | void): void; sort(): void; sortBySettings(): void; sortByColumn(col: number, order: boolean | void): void; translateRow(row: number): number; untranslateRow(row: number): number; updateOrderClass(): void; updateSortIndicator(): void; } interface ColumnSummary extends Base { endpoints: Endpoints | void; calculate(endpoint: Endpoints): void; calculateAverage(endpoint: Endpoints): number; calculateMinMax(endpoint: Endpoints, type: string): number; calculateSum(endpoint: Endpoints): void; countEmpty(rowRange: any[], col: number): number; countEntries(endpoint: Endpoints): number; getCellValue(row: number, col: number): string; getPartialMinMax(rowRange: any[], col: number, type: string): number; getPartialSum(rowRange: any[], col: number): number; } type CommentsRangeObject = { from: wot.CellCoords, to?: wot.CellCoords } interface Comments extends Base { contextMenuEvent: boolean; displayDelay: number; editor: editors.CommentEditor; eventManager: EventManager; mouseDown: boolean; range: CommentsRangeObject; timer: any; clearRange(): void; getComment(): object; getCommentMeta(row: number, column: number, property: string): any; hide(): void; refreshEditor(force?: boolean): void; removeComment(forceRender?: boolean): void; removeCommentAtCell(row: number, col: number, forceRender?: boolean): void; setComment(value: string): void; setCommentAtCell(row: number, col: number, value: string): void; setRange(range: CommentsRangeObject): void; show(): boolean; showAtCell(row: number, col: number): boolean; targetIsCellWithComment(event: Event): boolean; targetIsCommentTextArea(event: Event): boolean; updateCommentMeta(row: number, column: number, metaObject: object): void; } interface ContextMenu extends Base { eventManager: EventManager; commandExecutor: CommandExecutor; itemsFactory: ItemsFactory | void; menu: Menu | void; close(): void; executeCommand(commandName: string, ...params: any[]): void; open(event: Event): void; } interface Textarea { element: HTMLElement; isAppended: boolean; refCounter: number; append(): void; create(): void; deselect(): void; destroy(): void; getValue(): string; hasBeenDestroyed(): boolean; isActive(): boolean; select(): void; setValue(data: string): void; } type PasteModeType = 'overwrite' | 'shift_down' | 'shift_right'; type RangeType = {startRow: number, startCol: number, endRow: number, endCol: number}; interface CopyPaste extends Base { eventManager: EventManager; columnsLimit: number; copyableRanges: any[]; pasteMode: PasteModeType; rowsLimit: number; textarea: Textarea; setCopyableText(): void; getRangedCopyableData(ranges: RangeType[]): string; getRangedData(ranges: RangeType[]): any[]; copy(triggeredByClick?: boolean): void; cut(triggeredByClick?: boolean): void; paste(triggeredByClick?: boolean): void; } interface DragToScroll extends Base { boundaries: object | void; callback: (() => void) | void; check(x: number, y: number): void; setBoundaries(boundaries: object): void; setCallback(callback: () => void): void; } type SeparatorObject = { name: string; } interface DropdownMenu extends Base { eventManager: EventManager; commandExecutor: CommandExecutor; itemsFactory: ItemsFactory | void; menu: Menu | void; SEPARATOR: SeparatorObject close(): void; executeCommand(commandName: string, ...params: any[]): void; open(event: Event): void; } interface ExportFile extends Base { downloadFile(format: string, options: object): void; exportAsString(format: string, options?: object): string; exportAsBlob(format: string, options?: object): Blob; } interface Filters extends Base { actionBarComponent: FiltersPlugin.ActionBarComponent | void; dropdownMenuPlugin: DropdownMenu | void; eventManager: EventManager; conditionComponent: FiltersPlugin.ConditionComponent | void; conditionCollection: FiltersPlugin.ConditionCollection | void; conditionUpdateObserver: FiltersPlugin.ConditionUpdateObserver | void; lastSelectedColumn?: number | void; trimRowsPlugin: TrimRows | void; valueComponent: FiltersPlugin.ValueComponent | void; addCondition(column: number, name: string, args: any[], operationId: FiltersPlugin.OperationType): void; clearColumnSelection(): void; clearConditions(column?: number | void): void; getDataMapAtColumn(column: number): FiltersPlugin.CellLikeData[]; getSelectedColumn(): number | void; filter(): void; removeConditions(column: number): void; } interface RecordTranslator { hot: Core; toPhysical(row: number | object, column?: number): object | any[]; toPhysicalColumn(column: number): number; toPhysicalRow(row: number): number; toVisual(row: number | object, column?: number): object | any[]; toVisualColumn(column: number): number; toVisualRow(row: number): number; } interface DataProvider { changes: object; hot: Core; t: RecordTranslator; clearChanges(): void; collectChanges(row: number, column: number, value: any): void; destroy(): void; getDataAtCell(row: number, column: number): any; getDataByRange(row1: number, column1: number, row2: number, column2: number): any[]; getRawDataAtCell(row: number, column: number): any; getRawDataByRange(row1: number, column1: number, row2: number, column2: number): any[]; getSourceDataByRange(row1: number, column1: number, row2: number, column2: number): any[]; getSourceDataAtCell(row: number, column: number): any; isInDataRange(row: number, column: number): boolean; updateSourceData(row: number, column: number, value: any): void; } interface AlterManager { sheet: Sheet; hot: Core; dataProvider: DataProvider; matrix: Matrix; prepareAlter(action: string, args: any): void; triggerAlter(action: string, args: any): void; destroy(): void; } interface Matrix { t: RecordTranslator; data: any[]; cellReferences: any[]; getCellAt(row: number, column: number): CellValue | void; getOutOfDateCells(): any[]; add(cellValue: CellValue | object): void; remove(cellValue: CellValue | object| any[]): void; getDependencies(cellCoord: object): void; registerCellRef(cellReference: CellReference | object): void; removeCellRefsAtRange(start: object, end: object): any[]; reset(): void; } interface BaseCell { columnAbsolute: boolean; columnOffset: number; rowAbsolute: boolean; rowOffset: number; isEqual(cell: BaseCell): boolean; toString(): string; translateTo(rowOffset: number, columnOffset: number): void; } interface CellReference extends BaseCell { } interface CellValue extends BaseCell { error: string | void; precedents: any[]; state: string; value: any; addPrecedent(cellReference: CellReference): void; clearPrecedents(): void; getError(): string | void; getPrecedents(): any[]; getValue(): any; hasError(): boolean; hasPrecedent(cellReference: CellReference): boolean; hasPrecedents(): boolean; isState(state: number): boolean; removePrecedent(cellReference: CellReference): void; setError(error: string): void; setState(state: number): void; setValue(value: any): void; } type Parser = {}; interface Sheet { alterManager: AlterManager dataProvider: DataProvider; hot: Core; matrix: Matrix; parser: Parser; t: RecordTranslator; applyChanges(row: number, column: number, newValue: any): void; destroy(): void; getCellAt(row: number, column: number): CellValue | void; getCellDependencies(row: number, column: number): any[]; getVariable(name: string): any; parseExpression(cellValue: CellValue | object, formula: string): void; recalculate(): void; recalculateFull(): void; recalculateOptimized(): void; setVariable(name: string, value: any): void; } interface Stack { items: any[]; isEmpty(): boolean; peek(): any; pop(): any; push(items: any): void; size(): number; } interface UndoRedoSnapshot { sheet: Sheet; stack: Stack; destroy(): void; restore(): void; save(axis: string, index: number, amount: number): void; } interface Formulas extends Base { dataProvider: DataProvider; eventManager: EventManager; sheet: Sheet; undoRedoSnapshot: UndoRedoSnapshot; getCellValue(row: number, column: number): any; getVariable(name: string): any; hasComputedCellValue(row: number, column: number): boolean; recalculate(): void; recalculateFull(): void; recalculateOptimized(): void; setVariable(name: string, value: any): void; } interface GanttChart extends Base { colorData: object; currentYear: number | void; dateCalculator: object | void; dataFeed: object | void; hotSource: Core | void; initialSettings: object | void; monthHeadersArray: any[]; monthList: any[]; nestedHeadersPlugin: NestedHeaders | void; overallWeekSectionCount: number | void; rangeBarMeta: object | void; rangeBars: object; rangeList: object; settings: object; weekHeadersArray: any[]; addRangeBar(row: number, startDate: Date | string, endDate: Date | string, additionalData: object): boolean | any[]; applyRangeBarMetaCache(): void; cacheRangeBarMeta(row: number, col: number, key: string, value: any | any[]): void; checkDependencies(): void; getRangeBarCoordinates(row: number): object; getRangeBarData(row: number, column: number): object | boolean; renderRangeBar(row: number, startDateColumn: number, endDateColumn: number, additionalData: object): void; removeRangeBarByDate(row: number, startDate: Date | string): void; removeRangeBarByColumn(row: number, startDateColumn: number): void; removeAllRangeBars(): void; setRangeBarColors(rows: object): void; setYear(year: number): void; uniformBackgroundRenderer(instance: Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: string | number, cellProperties: object): void; unrenderRangeBar(row: number, startDateColumn: number, endDateColumn: number): void; updateRangeBarData(row: number, column: number, data: object): void; } interface HeaderTooltips extends Base { settings: boolean | object; parseSettings(): void; } interface HiddenColumns extends Base { hiddenColumns: boolean | any[]; lastSelectedColumn: number; settings: object | void; isHidden(column: number, isLogicIndex?: boolean): boolean; hideColumn(column: number): void; hideColumns(columns: any[]): void; showColumn(column: number): void; showColumns(columns: any[]): void; } interface HiddenRows extends Base { hiddenRows: boolean | any[]; lastSelectedRow: number; settings: object | void; isHidden(row: number, isLogicIndex?: boolean): boolean; hideRow(row: number): void; hideRows(rows: any[]): void; showRow(row: number): void; showRows(rows: any[]): void; } interface ManualColumnFreeze extends Base { frozenColumnsBasePositions: any[]; manualColumnMovePlugin: ManualColumnMove; freezeColumn(column: number): void; unfreezeColumn(column: number): void; } interface arrayMapper { getValueByIndex(index: number): any; getIndexByValue(value: any): number; insertItems(index: number, amount?: number): any[]; removeItems(index: number, amount?: number): any[]; shiftItems(index: number, amount?: number): void; unshiftItems(index: number, amount?: number): void; } interface MoveColumnsMapper extends arrayMapper { manualColumnMove: ManualColumnMove; clearNull(): void; createMap(length?: number): void; destroy(): void; moveColumn(from: number, to: number): void; } interface MoveRowsMapper extends arrayMapper { manualRowMove: ManualRowMove; clearNull(): void; createMap(length?: number): void; destroy(): void; moveColumn(from: number, to: number): void; } interface TrimRowsMapper extends arrayMapper { trimRows: TrimRows; createMap(length?: number): void; destroy(): void; } namespace moveUI { interface BaseUI { hot: Core; state: number; appendTo(wrapper: HTMLElement): void; build(): void; destroy(): void; getOffset(): object; getPosition(): object; getSize(): object; isAppended(): boolean; isBuilt(): boolean; setOffset(top: number, left: number): void; setPosition(top: number, left: number): void; setSize(width: number, height: number): void; } interface BacklightUI extends BaseUI { } interface GuidelineUI extends BaseUI { } } interface ManualColumnMove extends Base { backlight: moveUI.BacklightUI; columnsMapper: MoveColumnsMapper; eventManager: EventManager; guideline: moveUI.GuidelineUI; removedColumns: any[]; moveColumn(column: number, target: number): void; moveColumns(columns: number[], target: number): void; } interface ManualColumnResize extends Base { autoresizeTimeout: (() => void) | void; currentCol: number | void; currentTH: HTMLElement | void; currentWidth: number | void; dblclick: number; eventManager: EventManager; guide: HTMLElement; handle: HTMLElement; manualColumnWidths: any[]; newSize: number | void; pressed: Core | void; selectedCols: any[]; startOffset: number | void; startWidth: number | void; startY: number | void; checkIfColumnHeader(element: HTMLElement): boolean; clearManualSize(column: number): void; getTHFromTargetElement(element: HTMLElement): HTMLElement; hideHandleAndGuide(): void; loadManualColumnWidths(): void; refreshGuidePosition(): void; refreshHandlePosition(): void; saveManualColumnWidths(): void; setManualSize(column: number, width: number): number; setupGuidePosition(): void; setupHandlePosition(TH: HTMLElement): boolean | void; } interface ManualRowMove extends Base { backlight: moveUI.BacklightUI; eventManager: EventManager; guideline: moveUI.GuidelineUI; removedRows: any[]; rowsMapper: MoveRowsMapper; moveRow(row: number, target: number): void; moveRows(rows: number[], target: number): void; } interface ManualRowResize extends Base { autoresizeTimeout: (() => void) | void; currentRow: number | void; currentTH: HTMLElement | void; currentWidth: number | void; dblclick: number; eventManager: EventManager; guide: HTMLElement; handle: HTMLElement; manualRowHeights: any[]; newSize: number | void; pressed: Core | void; selectedRows: any[]; startOffset: number | void; startWidth: number | void; startY: number | void; checkIfRowHeader(element: HTMLElement): boolean; clearManualSize(column: number): void; getTHFromTargetElement(element: HTMLElement): HTMLElement; hideHandleAndGuide(): void; loadManualRowHeights(): void; refreshGuidePosition(): void; refreshHandlePosition(): void; saveManualRowHeights(): void; setManualSize(column: number, width: number): number; setupGuidePosition(): void; setupHandlePosition(TH: HTMLElement): boolean | void; } interface MultipleSelectionHandles extends Base { dragged: any[]; eventManager: EventManager; lastSetCell: HTMLElement | void; getCurrentRangeCoords(selectedRange: wot.CellRange, currentTouch: wot.CellCoords, touchStartDirection: string, currentDirection: string, draggedHandle: string): object; isDragged(): boolean; } interface GhostTableNestedHeaders { container: any; nestedHeaders: NestedHeaders; widthsCache: any[]; clear(): void; } interface NestedHeaders extends Base { colspanArray: any[]; columnHeaderLevelCount: number; ghostTable: GhostTableNestedHeaders; settings: any[]; checkForFixedColumnsCollision(): void; checkForOverlappingHeaders(): void; getChildHeaders(row: number, column: number): any[]; fillColspanArrayWithDummies(colspan: number, level: number): void; fillTheRemainingColspans(): void; getColspan(row: number, column: number): number; getNestedParent(level: number, column: number): any; headerRendererFactory(headerRow: number): () => void; levelToRowCoords(level: number): number; rowCoordsToLevel(row: number): number; setupColspanArray(): void; } interface DataManager { cache: object; data: object; hot: Core; parentReference: any; //WeakMap plugin: NestedRows; addChild(parent: object, element?: object): void; addChildAtIndex(parent: object, index: number, element?: object, globalIndex?: number): void; addSibling(index: number, where?: string): void; countAllRows(): number; countChildren(parent: object | number): number; detachFromParent(elements: object | any[], forceRender?: boolean): void; getDataObject(row: number): any | void; getRowIndex(rowObj: object): number | void; getRowIndexWithinParent(row: number | object): number; getRowLevel(row: number): number | void; getRowParent(row: number | object): object | void; hasChildren(row: number | object): boolean; isParent(row: number | object): boolean; moveRow(fromIndex: number, toIndex: number): void; rewriteCache(): void; } interface NestedRows extends Base { bindRowsWithHeadersPlugin: BindRowsWithHeaders | void; dataManager: DataManager | void; headersUI: object | void; sourceData: object | void; trimRowsPlugin: TrimRows | void; } interface DataObserver { observedData: any[]; observer: object; paused: boolean; destroy(): void; isPaused(): boolean; pause(): void; resume(): void; setObservedData(observedData: any): void; } interface ObserveChanges extends Base { observer: DataObserver | void; } interface TouchScroll extends Base { clones: any[]; lockedCollection: boolean; scrollbars: any[]; } interface TrimRows extends Base { trimmedRows: any[]; removedRows: any[]; rowsMapper: TrimRowsMapper; isTrimmed(row: number): boolean; trimRow(row: number): void; trimRows(rows: number[]): void; untrimAll(): void; untrimRow(row: number): void; untrimRows(rows: number[]): void; } } namespace renderers { interface Base { (instance: Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: any, cellProperties: GridSettings): HTMLElement; } interface Autocomplete extends Base { } interface Checkbox extends Base { } interface Html extends Base { } interface Numeric extends Base { } interface Password extends Base { } interface Text extends Base { } } interface DefaultSettings extends GridSettings { } interface DefaultSettings extends Hooks { } interface GridSettings { allowEmpty?: boolean; allowHtml?: boolean; allowInsertColumn?: boolean; allowInsertRow?: boolean; allowInvalid?: boolean; allowRemoveColumn?: boolean; allowRemoveRow?: boolean; autoColumnSize?: object | boolean; autoComplete?: any[]; autoRowSize?: object | boolean; autoWrapCol?: boolean; autoWrapRow?: boolean; bindRowsWithHeaders?: boolean | string; // pro cell?: any[]; cells?: (row?: number, col?: number, prop?: object) => GridSettings; checkedTemplate?: boolean | string; className?: string | any[]; colHeaders?: ((index?: number) => void) | boolean | any[]; collapsibleColumns?: boolean | any[]; // pro columnHeaderHeight?: number | any[]; columns?: ((index?: number) => void) | any[]; columnSorting?: boolean | object; columnSummary?: object; // pro colWidths?: ((index?: number) => void) | number | string | any[]; commentedCellClassName?: string; comments?: boolean | CommentObject[]; contextMenu?: boolean | any[] | contextMenu.Settings; contextMenuCopyPaste?: object; copyable?: boolean; copyColsLimit?: number; copyPaste?: boolean; copyRowsLimit?: number; correctFormat?: boolean; currentColClassName?: string; currentHeaderClassName?: string; currentRowClassName?: string; customBorders?: boolean | any[]; data?: any | any[]; dataSchema?: object; dateFormat?: string; debug?: boolean; defaultDate?: string; disableVisualSelection?: boolean | string | any[]; dropdownMenu?: boolean | object | any[]; // pro editor?: string | (() => void) | boolean; enterBeginsEditing?: boolean; enterMoves?: object | (() => void); fillHandle?: boolean | string | object; filter?: boolean; filteringCaseSensitive?: boolean; filters?: boolean; // pro fixedColumnsLeft?: number; fixedRowsBottom?: number; // pro fixedRowsTop?: number; format?: string; fragmentSelection?: boolean | string; ganttChart?: object; // pro headerTooltips?: boolean | object; // pro height?: number | (() => void); hiddenColumns?: boolean | object; // pro hiddenRows?: boolean | object; // pro invalidCellClassName?: string; isEmptyCol?: (col: number) => boolean; isEmptyRow?: (row: number) => boolean; label?: object; language?: string; manualColumnFreeze?: boolean; manualColumnMove?: boolean | any[]; manualColumnResize?: boolean | any[]; manualRowMove?: boolean | any[ ]; manualRowResize?: boolean | any[]; maxCols?: number; maxRows?: number; mergeCells?: boolean | any[]; minCols?: number; minRows?: number; minSpareCols?: number; minSpareRows?: number; multiSelect?: boolean; nestedHeaders?: any[]; // pro noWordWrapClassName?: string; observeChanges?: boolean; observeDOMVisibility?: boolean; outsideClickDeselects?: boolean; pasteMode?: string; persistentState?: boolean; placeholder?: any; placeholderCellClassName?: string; preventOverflow?: string | boolean; readOnly?: boolean; readOnlyCellClassName?: string; renderAllRows?: boolean; renderer?: string | (() => void); rowHeaders?: boolean | any[] | (() => void); rowHeaderWidth?: number | any[]; rowHeights?: any[] | (() => void) | number | string; search?: boolean; selectOptions?: any[]; skipColumnOnPaste?: boolean; sortByRelevance?: boolean; sortFunction?: () => void; sortIndicator?: boolean; source?: any[] | (() => void); startCols?: number; startRows?: number; stretchH?: string; strict?: boolean; tableClassName?: string | any[]; tabMoves?: object; title?: string; trimDropdown?: boolean; trimRows?: boolean; // pro trimWhitespace?: boolean; type?: string; uncheckedTemplate?: boolean | string; undo?: boolean; validator?: (() => void) | RegExp; viewportColumnRenderingOffset?: number | string; viewportRowRenderingOffset?: number | string; visibleRows?: number; width?: number | (() => void); wordWrap?: boolean; } interface Hooks { afterAddChild?: (parent: object, element: object | void, index: number | void) => void; afterBeginEdting?: (row: number, column: number) => void; afterCellMetaReset?: () => void; afterChange?: (changes: any[], source: string) => void; afterChangesObserved?: () => void; afterColumnMove?: (startColumn: number, endColumn: number) => void; afterColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void; afterColumnSort?: (column: number, order: boolean) => void; afterContextMenuDefaultOptions?: (predefinedItems: any[]) => void; afterContextMenuHide?: (context: object) => void; afterContextMenuShow?: (context: object) => void; afterCopy?: (data: any[], coords: any[]) => void; afterCopyLimit?: (selectedRows: number, selectedColumnds: number, copyRowsLimit: number, copyColumnsLimit: number) => void; afterCreateCol?: (index: number, amount: number) => void; afterCreateRow?: (index: number, amount: number) => void; afterCut?: (data: any[], coords: any[]) => void; afterDeselect?: () => void; afterDestroy?: () => void; afterDetachChild?: (parent: object, element: object) => void; afterDocumentKeyDown?: (event: Event) => void; afterDropdownMenuDefaultOptions?: (predefinedItems: any[]) => void; afterDropdownMenuHide?: (instance: any) => void; afterDropdownMenuShow?: (instance: any) => void; afterFilter?: (formulasStack: any[]) => void; afterGetCellMeta?: (row: number, col: number, cellProperties: object) => void; afterGetColHeader?: (col: number, TH: Element) => void; afterGetColumnHeaderRenderers?: (array: any[]) => void; afterGetRowHeader?: (row: number, TH: Element) => void; afterGetRowHeaderRenderers?: (array: any[]) => void; afterInit?: () => void; afterLoadData?: (firstTime: boolean) => void; afterModifyTransformEnd?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void; afterModifyTransformStart?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void; afterMomentumScroll?: () => void; afterOnCellCornerDblClick?: (event: object) => void; afterOnCellCornerMouseDown?: (event: object) => void; afterOnCellMouseDown?: (event: object, coords: object, TD: Element) => void; afterOnCellMouseOver?: (event: object, coords: object, TD: Element) => void; afterOnCellMouseOut?: (event: object, coords: object, TD: Element) => void; afterPaste?: (data: any[], coords: any[]) => void; afterPluginsInitialized?: () => void; afterRedo?: (action: object) => void; afterRemoveCol?: (index: number, amount: number) => void; afterRemoveRow?: (index: number, amount: number) => void; afterRender?: (isForced: boolean) => void; afterRenderer?: (TD: Element, row: number, col: number, prop: string|number, value: string, cellProperties: object) => void; afterRowMove?: (startRow: number, endRow: number) => void; afterRowResize?: (currentRow: number, newSize: number, isDoubleClick: boolean) => void; afterScrollHorizontally?: () => void; afterScrollVertically?: () => void; afterSelection?: (r: number, c: number, r2: number, c2: number) => void; afterSelectionByProp?: (r: number, p: string, r2: number, p2: string) => void; afterSelectionEnd?: (r: number, c: number, r2: number, c2: number) => void; afterSelectionEndByProp?: (r: number, p: string, r2: number, p2: string) => void; afterSetCellMeta?: (row: number, col: number, key: string, value: any) => void; afterSetDataAtCell?: (changes: any[], source?: string) => void; afterSetDataAtRowProp?: (changes: any[], source?: string) => void; afterTrimRow?: (rows: any[]) => void; afterUndo?: (action: object) => void; afterUntrimRow?: (rows: any[]) => void; afterUpdateSettings?: () => void; afterValidate?: (isValid: boolean, value: any, row: number, prop: string|number, source: string) => void|boolean; afterViewportColumnCalculatorOverride?: (calc: object) => void; afterViewportRowCalculatorOverride?: (calc: object) => void; beforeAddChild?: (parent: object, element: object | void, index: number | void) => void; beforeAutofill?: (start: object, end: object, data: any[]) => void; beforeAutofillInsidePopulate?: (index: object, direction: string, input: any[], deltas: any[]) => void; beforeCellAlignment?: (stateBefore: any, range: any, type: string, alignmentClass: string) => void; beforeChange?: (changes: any[], source: string) => void; beforeChangeRender?: (changes: any[], source: string) => void; beforeColumnMove?: (startColumn: number, endColumn: number) => void; beforeColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void; beforeColumnSort?: (column: number, order: boolean) => void; beforeContextMenuSetItems?: (menuItems: any[]) => void; beforeCopy?: (data: any[], coords: any[]) => any; beforeCreateCol?: (index: number, amount: number, source?: string) => void; beforeCreateRow?: (index: number, amount: number, source?: string) => void; beforeCut?: (data: any[], coords: any[]) => any; beforeDetachChild?: (parent: object, element: object) => void; beforeDrawBorders?: (corners: any[], borderClassName: string) => void; beforeDropdownMenuSetItems?: (menuItems: any[]) => void; beforeFilter?: (formulasStack: any[]) => void; beforeGetCellMeta?: (row: number, col: number, cellProperties: object) => void; beforeInit?: () => void; beforeInitWalkontable?: (walkontableConfig: object) => void; beforeKeyDown?: (event: Event) => void; beforeOnCellMouseDown?: (event: Event, coords: object, TD: Element) => void; beforeOnCellMouseOut?: (event: Event, coords: wot.CellCoords, TD: Element) => void; beforeOnCellMouseOver?: (event: Event, coords: wot.CellCoords, TD: Element, blockCalculations: object) => void; beforePaste?: (data: any[], coords: any[]) => any; beforeRedo?: (action: object) => void; beforeRemoveCol?: (index: number, amount: number, logicalCols?: any[]) => void; beforeRemoveRow?: (index: number, amount: number, logicalRows?: any[]) => void; beforeRender?: (isForced: boolean, skipRender: object) => void; beforeRenderer?: (TD: Element, row: number, col: