diff --git a/types/handsontable/index.d.ts b/types/handsontable/index.d.ts
index 39b81d1f8d..fe4cfeb112 100644
--- a/types/handsontable/index.d.ts
+++ b/types/handsontable/index.d.ts
@@ -3,6 +3,97 @@
// Definitions by: Handsoncode sp. z o.o. , Ryan Riley
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\
+declare namespace __Handsontable {
+ // The Core class is used inside the Handsontable namespace in the actual source code.
+ // However, there is a resolution issue when a class outside a namespace or module
+ // extends a class inside a module with the same name. That issue includes a work-around.
+ // Using the workaround found here: https://github.com/Microsoft/TypeScript/issues/3602
+
+ class Core {
+ constructor (element: Element, options: Handsontable.Options);
+ addHook(key: string, callback: Function|any[]): void;
+ addHookOnce(key: string, callback: Function|any[]): void;
+ alter(action: string, index: number, amount?: number, source?: string, keepEmptyRows?: boolean): void;
+ clear(): void;
+ colOffset(): number;
+ colToProp(col: number): string|number;
+ countCols(): number;
+ countEmptyCols(ending?: boolean): number;
+ countEmptyRows(ending?: boolean): number;
+ countRenderedCols(): number;
+ countRenderedRows(): number;
+ countRows(): number;
+ countSourceRows(): number;
+ countVisibleCols(): number;
+ countVisibleRows(): number;
+ deselectCell(): void;
+ destroy(): void;
+ destroyEditor(revertOriginal?: boolean): void;
+ getActiveEditor(): Object;
+ getCell(row: number, col: number, topmost?: boolean): Element;
+ getCellEditor(row: number, col: number): Object;
+ getCellMeta(row: number, col: number): Object;
+ getCellRenderer(row: number, col: number): Function;
+ getCellValidator(row: number, col: number): any;
+ getColHeader(col?: number): any[]|string;
+ getColWidth(col: number): number;
+ getCoords(elem: Element): Object;
+ getCopyableData(row: number, column: number): string;
+ getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string;
+ getData(r?: number, c?: number, r2?: number, c2?: number): any[];
+ getDataAtCell(row: number, col: number): any;
+ getDataAtCol(col: number): any[];
+ getDataAtProp(prop: string|number): any[];
+ getDataAtRow(row: number): any[];
+ getDataAtRowProp(row: number, prop: string): any;
+ getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string;
+ getInstance(): any;
+ getPlugin(pluginName: string): any;
+ getRowHeader(row?: number): any[]|string;
+ getRowHeight(row: number): number;
+ getSchema(): Object;
+ getSelected(): any[];
+ getSelectedRange(): Handsontable.Range;
+ getSettings(): Handsontable.Options;
+ getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[];
+ getSourceDataAtCell(row: number, column: number): any;
+ getSourceDataAtCol(column: number): any[];
+ getSourceDataAtRow(row: number): any[]|Object;
+ getValue(): any;
+ hasColHeaders(): boolean;
+ hasHook(key: string): boolean;
+ hasRowHeaders(): boolean;
+ isEmptyCol(col: number): boolean;
+ isEmptyRow(row: number): boolean;
+ isListening(): boolean;
+ listen(): void;
+ loadData(data: any[]): void;
+ populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any;
+ propToCol(prop: string | number): number;
+ removeCellMeta(row: number, col: number, key: string): void;
+ removeHook(key: string, callback: Function): void;
+ render(): void;
+ rowOffset(): number;
+ runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
+ selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
+ selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
+ setCellMeta(row: number, col: number, key: string, val: string): void;
+ setCellMetaObject(row: number, col: number, prop: Object): void;
+ setDataAtCell(row: number|any[], col: number, value: string, source?: string): void;
+ setDataAtRowProp(row: number|any[], prop: string, value: string, source?: string): void;
+ spliceCol(col: number, index: number, amount: number, elements?: any): void;
+ spliceRow(row: number, index: number, amount: number, elements?: any): void;
+ toPhysicalRow(row: number): number;
+ toPhysicalColumn(column: number): number;
+ toVisualRow(row: number): number;
+ toVisualColumn(column: number): number;
+ unlisten(): void;
+ updateSettings(settings: Object, init?: boolean): void;
+ validateCells(callback: Function): void;
+ }
+
+}
+
declare namespace Handsontable {
interface Options {
allowEmpty?: boolean;
@@ -208,86 +299,8 @@ declare namespace Handsontable {
unmodifyCol?(col: number): void;
}
- interface Methods {
- addHook(key: string, callback: Function|any[]): void;
- addHookOnce(key: string, callback: Function|any[]): void;
- alter(action: string, index: number, amount?: number, source?: string, keepEmptyRows?: boolean): void;
- clear(): void;
- colOffset(): number;
- colToProp(col: number): string|number;
- countCols(): number;
- countEmptyCols(ending?: boolean): number;
- countEmptyRows(ending?: boolean): number;
- countRenderedCols(): number;
- countRenderedRows(): number;
- countRows(): number;
- countSourceRows(): number;
- countVisibleCols(): number;
- countVisibleRows(): number;
- deselectCell(): void;
- destroy(): void;
- destroyEditor(revertOriginal?: boolean): void;
- getActiveEditor(): Object;
- getCell(row: number, col: number, topmost?: boolean): Element;
- getCellEditor(row: number, col: number): Object;
- getCellMeta(row: number, col: number): Object;
- getCellRenderer(row: number, col: number): Function;
- getCellValidator(row: number, col: number): any;
- getColHeader(col?: number): any[]|string;
- getColWidth(col: number): number;
- getCoords(elem: Element): Object;
- getCopyableData(row: number, column: number): string;
- getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string;
- getData(r?: number, c?: number, r2?: number, c2?: number): any[];
- getDataAtCell(row: number, col: number): any;
- getDataAtCol(col: number): any[];
- getDataAtProp(prop: string|number): any[];
- getDataAtRow(row: number): any[];
- getDataAtRowProp(row: number, prop: string): any;
- getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string;
- getInstance(): any;
- getPlugin(pluginName: string): any;
- getRowHeader(row?: number): any[]|string;
- getRowHeight(row: number): number;
- getSchema(): Object;
- getSelected(): any[];
- getSelectedRange(): Range;
- getSettings(): Options;
- getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[];
- getSourceDataAtCell(row: number, column: number): any;
- getSourceDataAtCol(column: number): any[];
- getSourceDataAtRow(row: number): any[]|Object;
- getValue(): any;
- hasColHeaders(): boolean;
- hasHook(key: string): boolean;
- hasRowHeaders(): boolean;
- isEmptyCol(col: number): boolean;
- isEmptyRow(row: number): boolean;
- isListening(): boolean;
- listen(): void;
- loadData(data: any[]): void;
- populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any;
- propToCol(prop: string | number): number;
- removeCellMeta(row: number, col: number, key: string): void;
- removeHook(key: string, callback: Function): void;
- render(): void;
- rowOffset(): number;
- runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
- selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
- selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
- setCellMeta(row: number, col: number, key: string, val: string): void;
- setCellMetaObject(row: number, col: number, prop: Object): void;
- setDataAtCell(row: number|any[], col: number, value: string, source?: string): void;
- setDataAtRowProp(row: number|any[], prop: string, value: string, source?: string): void;
- spliceCol(col: number, index: number, amount: number, elements?: any): void;
- spliceRow(row: number, index: number, amount: number, elements?: any): void;
- toPhysicalRow(row: number): number;
- toPhysicalColumn(column: number): number;
- toVisualRow(row: number): number;
- toVisualColumn(column: number): number;
- unlisten(): void;
- updateSettings(settings: Object, init?: boolean): void;
- validateCells(callback: Function): void;
+ class Core extends __Handsontable.Core {
+
}
interface Selection {
@@ -301,8 +314,8 @@ declare namespace Handsontable {
}
interface HandsontableRegisterer {
- getInstance(id: string): Methods;
- registerInstance(id: string, instance: Methods): void;
+ getInstance(id: string): Core;
+ registerInstance(id: string, instance: Core): void;
removeInstance(id: string): void;
}
@@ -342,11 +355,11 @@ declare namespace Handsontable {
updatePlugin(): void;
destroy(): void;
enabled: boolean;
- hot: Methods;
+ hot: Core;
}
interface PluginConstructor {
- new (hotInstance: Methods): BasePlugin;
+ new (hotInstance: Core): BasePlugin;
}
interface ContextMenuPluginConstructor extends PluginConstructor {
@@ -389,7 +402,7 @@ declare namespace Handsontable {
interface Hooks {
register(key: string): void;
- run(instace: Methods, hookName: string, key?: any, value?: any): any;
+ run(instace: Core, hookName: string, key?: any, value?: any): any;
}
interface Dom {
@@ -430,7 +443,7 @@ declare namespace Handsontable {
}
type CellRenderer = (
- instance: Methods,
+ instance: Core,
td: HTMLTableCellElement,
row: number,
col: number,
@@ -443,7 +456,7 @@ declare namespace Handsontable {
}
interface EditorConstructor {
- new (instance: Methods): Editor;
+ new (instance: Core): Editor;
}
interface Editors {
@@ -493,7 +506,7 @@ declare namespace Handsontable {
type DropdownColumn = AutocompleteColumn;
}
-declare class Handsontable implements Handsontable.Methods {
+declare class Handsontable extends __Handsontable.Core {
constructor (element: Element, options: Handsontable.Options);
static plugins: Handsontable.Plugins;
static hooks: Handsontable.Hooks;
@@ -503,85 +516,6 @@ declare class Handsontable implements Handsontable.Methods {
static utils: Handsontable.Utils;
static renderers: Handsontable.Renderers;
static editors: Handsontable.Editors;
- addHook(key: string, callback: Function|any[]): void;
- addHookOnce(key: string, callback: Function|any[]): void;
- alter(action: string, index: number, amount?: number, source?: string, keepEmptyRows?: boolean): void;
- clear(): void;
- colOffset(): number;
- colToProp(col: number): string|number;
- countCols(): number;
- countEmptyCols(ending?: boolean): number;
- countEmptyRows(ending?: boolean): number;
- countRenderedCols(): number;
- countRenderedRows(): number;
- countRows(): number;
- countSourceRows(): number;
- countVisibleCols(): number;
- countVisibleRows(): number;
- deselectCell(): void;
- destroy(): void;
- destroyEditor(revertOriginal?: boolean): void;
- getActiveEditor(): Object;
- getCell(row: number, col: number, topmost?: boolean): Element;
- getCellEditor(row: number, col: number): Object;
- getCellMeta(row: number, col: number): Object;
- getCellRenderer(row: number, col: number): Function;
- getCellValidator(row: number, col: number): any;
- getColHeader(col?: number): any[]|string;
- getColWidth(col: number): number;
- getCoords(elem: Element): Object;
- getCopyableData(row: number, column: number): string;
- getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string;
- getData(r?: number, c?: number, r2?: number, c2?: number): any[];
- getDataAtCell(row: number, col: number): any;
- getDataAtCol(col: number): any[];
- getDataAtProp(prop: string|number): any[];
- getDataAtRow(row: number): any[];
- getDataAtRowProp(row: number, prop: string): any;
- getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string;
- getInstance(): any;
- getPlugin(pluginName: string): any;
- getRowHeader(row?: number): any[]|string;
- getRowHeight(row: number): number;
- getSchema(): Object;
- getSelected(): any[];
- getSelectedRange(): Handsontable.Range;
- getSettings(): Handsontable.Options;
- getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[];
- getSourceDataAtCell(row: number, column: number): any;
- getSourceDataAtCol(column: number): any[];
- getSourceDataAtRow(row: number): any[]|Object;
- getValue(): any;
- hasColHeaders(): boolean;
- hasHook(key: string): boolean;
- hasRowHeaders(): boolean;
- isEmptyCol(col: number): boolean;
- isEmptyRow(row: number): boolean;
- isListening(): boolean;
- listen(): void;
- loadData(data: any[]): void;
- populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any;
- propToCol(prop: string | number): number;
- removeCellMeta(row: number, col: number, key: string): void;
- removeHook(key: string, callback: Function): void;
- render(): void;
- rowOffset(): number;
- runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
- selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
- selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
- setCellMeta(row: number, col: number, key: string, val: string): void;
- setCellMetaObject(row: number, col: number, prop: Object): void;
- setDataAtCell(row: number|any[], col: number, value: string, source?: string): void;
- setDataAtRowProp(row: number|any[], prop: string, value: string, source?: string): void;
- spliceCol(col: number, index: number, amount: number, elements?: any): void;
- spliceRow(row: number, index: number, amount: number, elements?: any): void;
- toPhysicalRow(row: number): number;
- toPhysicalColumn(column: number): number;
- toVisualRow(row: number): number;
- toVisualColumn(column: number): number;
- unlisten(): void;
- updateSettings(settings: Object, init?: boolean): void;
- validateCells(callback: Function): void;
}
declare module "handsontable" {