From e2eb29bf89a0cd58165c8afcf9ae85dbe87e84f3 Mon Sep 17 00:00:00 2001 From: Ryan Riley Date: Fri, 31 Mar 2017 15:16:15 -0500 Subject: [PATCH] More closely relate the definitions to the underlying source code. --- types/handsontable/index.d.ts | 268 +++++++++++++--------------------- 1 file changed, 101 insertions(+), 167 deletions(-) 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" {