handsontable.d.ts 79 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778
  1. declare namespace _Handsontable {
  2. class Core {
  3. constructor(element: Element, options: Handsontable.DefaultSettings);
  4. addHook(key: string, callback: (() => void) | (() => void)[]): void;
  5. addHookOnce(key: string, callback: (() => void) | (() => void)[]): void;
  6. alter(action: 'insert_row' | 'insert_col' | 'remove_row' | 'remove_col', index?: number | Array<[number, number]>, amount?: number, source?: string, keepEmptyRows?: boolean): void;
  7. clear(): void;
  8. colOffset(): number;
  9. colToProp(col: number): string | number;
  10. countCols(): number;
  11. countEmptyCols(ending?: boolean): number;
  12. countEmptyRows(ending?: boolean): number;
  13. countRenderedCols(): number;
  14. countRenderedRows(): number;
  15. countRows(): number;
  16. countSourceCols(): number;
  17. countSourceRows(): number;
  18. countVisibleCols(): number;
  19. countVisibleRows(): number;
  20. deselectCell(): void;
  21. destroy(): void;
  22. destroyEditor(revertOriginal?: boolean, prepareEditorIfNeeded?: boolean): void;
  23. emptySelectedCells(): void;
  24. getActiveEditor(): object;
  25. getCell(row: number, col: number, topmost?: boolean): Element;
  26. getCellEditor<T extends Handsontable._editors.Base>(row: number, col: number): T;
  27. getCellMeta(row: number, col: number): Handsontable.GridSettings;
  28. getCellMetaAtRow(row: number): Handsontable.GridSettings[];
  29. getCellRenderer(row: number, col: number): Handsontable.renderers.Base;
  30. getCellValidator(row: number, col: number): (value: any, callback: (valid: boolean) => void) => void | RegExp | undefined;
  31. getColHeader(col?: number): any[] | string;
  32. getColWidth(col: number): number;
  33. getCoords(elem: Element | null): object;
  34. getCopyableData(row: number, column: number): string;
  35. getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string;
  36. getData(r?: number, c?: number, r2?: number, c2?: number): any[];
  37. getDataAtCell(row: number, col: number): any;
  38. getDataAtCol(col: number): any[];
  39. getDataAtProp(prop: string | number): any[];
  40. getDataAtRow(row: number): any[];
  41. getDataAtRowProp(row: number, prop: string): any;
  42. getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string;
  43. getInstance(): Handsontable;
  44. getPlugin<T extends keyof Handsontable.PluginsCollection>(pluginName: T): Handsontable.PluginsCollection[T];
  45. getRowHeader(row?: number): any[] | string;
  46. getRowHeight(row: number): number;
  47. getSchema(): object;
  48. getSelected(): Array<[number, number, number, number]> | undefined;
  49. getSelectedLast(): number[] | undefined;
  50. getSelectedRange(): Handsontable.wot.CellRange[] | undefined;
  51. getSelectedRangeLast(): Handsontable.wot.CellRange | undefined;
  52. getSettings(): Handsontable.DefaultSettings;
  53. getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[];
  54. getSourceDataArray(r?: number, c?: number, r2?: number, c2?: number): any[];
  55. getSourceDataAtCell(row: number, column: number): any;
  56. getSourceDataAtCol(column: number): any[];
  57. getSourceDataAtRow(row: number): any[] | object;
  58. getTranslatedPhrase(dictionaryKey: string, extraArguments: any): string | null;
  59. getValue(): any;
  60. hasColHeaders(): boolean;
  61. hasHook(key: string): boolean;
  62. hasRowHeaders(): boolean;
  63. isColumnModificationAllowed(): boolean;
  64. isEmptyCol(col: number): boolean;
  65. isEmptyRow(row: number): boolean;
  66. isListening(): boolean;
  67. listen(): void;
  68. loadData(data: any[]): void;
  69. populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any;
  70. propToCol(prop: string | number): number;
  71. removeCellMeta(row: number, col: number, key: string): void;
  72. removeHook(key: string, callback: (() => void) | (() => void)[]): void;
  73. render(): void;
  74. rowOffset(): number;
  75. runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
  76. scrollViewportTo(row?: number, column?: number, snapToBottom?: boolean, snapToRight?: boolean): boolean;
  77. selectAll(): void;
  78. selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
  79. selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
  80. selectCells(coords: Array<[number, number | string, number, number | string]> | Array<Handsontable.wot.CellRange>, scrollToCell?: boolean, changeListener?: boolean): boolean;
  81. selectColumns(startColumn: number | string, endColumn?: number | string): boolean;
  82. selectRows(startRow: number, endRow?: number): boolean;
  83. setCellMeta(row: number, col: number, key: string, val: string): void;
  84. setCellMetaObject(row: number, col: number, prop: object): void;
  85. setDataAtCell(row: number, col: string | number, value: any, source?: string): void;
  86. setDataAtCell(changes: Array<[number, string | number, any]>, source?: string): void;
  87. setDataAtRowProp(row: number, prop: string, value: any, source?: string): void;
  88. setDataAtRowProp(changes: Array<[number, string | number, any]>, source?: string): void;
  89. spliceCol(col: number, index: number, amount: number, elements?: any): void;
  90. spliceRow(row: number, index: number, amount: number, elements?: any): void;
  91. toPhysicalColumn(column: number): number;
  92. toPhysicalRow(row: number): number;
  93. toVisualColumn(column: number): number;
  94. toVisualRow(row: number): number;
  95. unlisten(): void;
  96. updateSettings(settings: Handsontable.DefaultSettings, init?: boolean): void;
  97. validateCells(callback: (valid: boolean) => void): void;
  98. validateColumns(columns: number[], callback: (valid: boolean) => void): void;
  99. validateRows(rows: number[], callback: (valid: boolean) => void): void;
  100. isDestroyed: boolean;
  101. }
  102. }
  103. declare namespace Handsontable {
  104. namespace wot {
  105. interface CellCoords {
  106. col: number,
  107. row: number
  108. }
  109. interface CellRange {
  110. highlight: CellCoords;
  111. from: CellCoords;
  112. to: CellCoords;
  113. }
  114. }
  115. namespace cellTypes {
  116. interface Autocomplete {
  117. editor: _editors.Autocomplete;
  118. renderer: renderers.Autocomplete;
  119. validator: (value: any, callback: (valid: boolean) => void) => void;
  120. }
  121. interface Checkbox {
  122. editor: _editors.Checkbox;
  123. renderer: renderers.Checkbox;
  124. }
  125. interface Date {
  126. editor: _editors.Date;
  127. renderer: renderers.Autocomplete;
  128. validator: (value: any, callback: (valid: boolean) => void) => void;
  129. }
  130. interface Dropdown {
  131. editor: _editors.Dropdown;
  132. renderer: renderers.Autocomplete;
  133. validator: (value: any, callback: (valid: boolean) => void) => void;
  134. }
  135. interface Handsontable {
  136. editor: _editors.Handsontable;
  137. renderer: renderers.Autocomplete;
  138. }
  139. interface Numeric {
  140. dataType: string;
  141. editor: _editors.Numeric;
  142. renderer: renderers.Numeric;
  143. validator: (value: any, callback: (valid: boolean) => void) => void;
  144. }
  145. interface Password {
  146. copyable: boolean;
  147. editor: _editors.Password;
  148. renderer: renderers.Password;
  149. }
  150. interface Text {
  151. editor: _editors.Text;
  152. renderer: renderers.Text;
  153. }
  154. interface Time {
  155. editor: _editors.Text;
  156. renderer: renderers.Text;
  157. validator: (value: any, callback: (valid: boolean) => void) => void;
  158. }
  159. }
  160. namespace _editors {
  161. class Base {
  162. instance: _Handsontable.Core;
  163. row: number;
  164. col: number;
  165. prop: string | number;
  166. TD: HTMLElement;
  167. cellProperties: object;
  168. constructor(hotInstance: _Handsontable.Core, row: number, col: number, prop: string | number, TD: HTMLElement, cellProperties: GridSettings)
  169. beginEditing(initialValue?: string): void;
  170. cancelChanges(): void;
  171. checkEditorSection(): 'top-left-corner' | 'top' | 'bottom-left-corner' | 'bottom' | 'left' | '' ;
  172. close(): void;
  173. discardEditor(validationResult?: boolean): void;
  174. enableFullEditMode(): void;
  175. extend<T extends _editors.Base>(): T;
  176. finishEditing(restoreOriginalValue?: boolean, ctrlDown?: boolean, callback?: () => void): void;
  177. getValue(): any;
  178. init(): void;
  179. isInFullEditMode(): boolean;
  180. isOpened(): boolean;
  181. isWaiting(): boolean;
  182. open(): void;
  183. prepare(row: number, col: number, prop: string | number, TD: HTMLElement, originalValue: any, cellProperties: GridSettings): void;
  184. saveValue(val?: any, ctrlDown?: boolean): void;
  185. setValue(newValue?: any): void;
  186. }
  187. class Checkbox extends Base {
  188. }
  189. class Mobile extends Base {
  190. hideCellPointer(): void;
  191. onBeforeKeyDown(event?: Event): void;
  192. prepareAndSave(): void;
  193. scrollToView(): void;
  194. updateEditorData(): void;
  195. updateEditorPosition(x?: number, y?: number): void;
  196. valueChanged(): boolean;
  197. }
  198. class Select extends Base {
  199. focus(): void;
  200. getEditedCell(): Element | undefined;
  201. prepareOptions(optionsToPrepare?: object | any[]): void;
  202. refreshDimensions(): void;
  203. refreshValue(): void;
  204. registerHooks(): void;
  205. }
  206. class Text extends Base {
  207. bindEvents(): void;
  208. close(tdOutside?: HTMLElement): void;
  209. createElements(): void;
  210. destroy(): void;
  211. focus(): void;
  212. hideEditableElement(): void;
  213. showEditableElement(): void;
  214. getEditedCell(): Element | undefined;
  215. refreshDimensions(force?: boolean): void;
  216. refreshValue(): void;
  217. TEXTAREA: HTMLInputElement;
  218. TEXTAREA_PARENT: HTMLElement;
  219. textareaStyle: CSSStyleDeclaration;
  220. }
  221. class Date extends Text {
  222. close(): void;
  223. destroyElements(): void;
  224. finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void;
  225. getDatePickerConfig(): object;
  226. hideDatepicker(): void;
  227. open(event?: Event): void;
  228. showDatepicker(event?: Event): void;
  229. }
  230. class Handsontable extends Text {
  231. assignHooks(): void;
  232. beginEditing(initialValue?: any): void;
  233. close(): void;
  234. finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void;
  235. focus(): void;
  236. open(): void;
  237. }
  238. class Numeric extends Text {
  239. }
  240. class Password extends Text {
  241. }
  242. class Autocomplete extends Handsontable {
  243. allowKeyEventPropagation(keyCode?: number): boolean;
  244. finishEditing(restoreOriginalValue?: boolean): void;
  245. flipDropdown(dropdownHeight?: number): void;
  246. flipDropdownIfNeeded(): void;
  247. getDropdownHeight(): number;
  248. highlightBestMatchingChoice(index?: number): void;
  249. limitDropdownIfNeeded(spaceAvailable?: number, dropdownHeight?: number): void;
  250. queryChoices(query?: any): void;
  251. sortByRelevance(value?: any, choices?: any[], caseSensitive?: boolean): any[];
  252. setDropdownHeight(height?: number): void;
  253. updateChoicesList(choices?: any[]): void;
  254. unflipDropdown(): void;
  255. updateDropdownHeight(): void;
  256. }
  257. class Dropdown extends Autocomplete {
  258. }
  259. class CommentEditor {
  260. editor: HTMLElement;
  261. editorStyle: CSSStyleDeclaration;
  262. hidden: boolean;
  263. setPosition(x: number, y: number): void;
  264. setSize(width: number, height: number): void;
  265. resetSize(): void;
  266. setReadOnlyState(state: boolean): void;
  267. show(): void;
  268. hide(): void;
  269. isVisible(): boolean;
  270. setValue(value?: string): void;
  271. getValue(): string;
  272. isFocused(): boolean;
  273. focus(): void;
  274. createEditor(): HTMLElement;
  275. getInputElement(): HTMLElement;
  276. destroy(): void;
  277. }
  278. }
  279. namespace plugins {
  280. // utils for Filters
  281. namespace FiltersPlugin {
  282. type OperationType = 'conjunction' | 'disjunction';
  283. type ConditionName = 'begins_with' | 'between' | 'by_value' | 'contains' | 'empty' | 'ends_with' | 'eq' | 'gt' |
  284. 'gte' | 'lt' | 'lte' | 'not_between' | 'not_contains' | 'not_empty' | 'neq';
  285. interface ConditionId {
  286. args: any[];
  287. name?: ConditionName
  288. command?: {
  289. key: ConditionName
  290. }
  291. }
  292. interface Condition {
  293. name: ConditionName,
  294. args: any[];
  295. func: (dataRow: CellValue, values: any[]) => boolean
  296. }
  297. interface CellLikeData {
  298. meta: {
  299. row: number,
  300. col: number,
  301. visualCol: number,
  302. visualRow: number,
  303. type: string,
  304. instance: _Handsontable.Core,
  305. dateFormat?: string
  306. },
  307. value: string
  308. }
  309. interface BaseComponent {
  310. elements: any[];
  311. hidden: boolean;
  312. destroy(): boolean;
  313. hide(): void;
  314. isHidden(): boolean;
  315. reset(): void;
  316. show(): void;
  317. }
  318. interface ActionBarComponent extends BaseComponent {
  319. getMenuItemDescriptor(): object;
  320. accept(): void;
  321. cancel(): void;
  322. }
  323. interface ConditionComponent extends BaseComponent {
  324. getInputElement(index?: number): InputUI;
  325. getInputElements(): InputUI[];
  326. getMenuItemDescriptor(): object;
  327. getSelectElement(): SelectUI;
  328. getState(): object;
  329. setState(value: object): void;
  330. updateState(stateInfo: object): void;
  331. }
  332. interface ValueComponent extends BaseComponent {
  333. getMenuItemDescriptor(): object;
  334. getMultipleSelectElement(): MultipleSelectUI;
  335. getState(): object;
  336. setState(value: object): void;
  337. updateState(stateInfo: object): void;
  338. }
  339. interface BaseUI {
  340. buildState: boolean;
  341. eventManager: EventManager;
  342. hot: _Handsontable.Core;
  343. options: object;
  344. build(): void;
  345. destroy(): void;
  346. element(): Element;
  347. focus(): void;
  348. getValue(): any;
  349. hide(): void;
  350. isBuilt(): boolean;
  351. reset(): void;
  352. setValue(value: any): any;
  353. show(): void;
  354. update(): void;
  355. }
  356. type InputUI = BaseUI
  357. interface MultipleSelectUI extends BaseUI {
  358. clearAllUI: BaseUI;
  359. items: any[];
  360. itemsBox: _Handsontable.Core;
  361. searchInput: InputUI;
  362. selectAllUI: BaseUI;
  363. getItems(): void;
  364. getValue(): any[];
  365. isSelectedAllValues(): boolean;
  366. setItems(items: any[]): void;
  367. }
  368. interface SelectUI extends BaseUI {
  369. menu: Menu | void;
  370. items: any[];
  371. setItems(items: any[]): void;
  372. openOptions(): void;
  373. closeOptions(): void;
  374. }
  375. interface ConditionCollection {
  376. conditions: object;
  377. orderStack: any[];
  378. addCondition(column: number, conditionDefinition: ConditionId, operation?: OperationType): void;
  379. clean(): void;
  380. clearConditions(column: number): void;
  381. destroy(): void;
  382. exportAllConditions(): ConditionId[];
  383. getConditions(column: number): Condition[];
  384. hasConditions(column: number, name: string): boolean;
  385. isEmpty(): boolean;
  386. isMatch(value: CellLikeData, column: number): boolean;
  387. isMatchInConditions(conditions: Condition[], value: CellLikeData, operationType?: OperationType): boolean;
  388. importAllConditions(conditions: ConditionId[]): void;
  389. removeConditions(column: number): void;
  390. }
  391. interface ConditionUpdateObserver {
  392. changes: number[];
  393. columnDataFactory: (column: number) => object[];
  394. conditionCollection: ConditionCollection;
  395. grouping: boolean;
  396. latestEditedColumnPosition: number;
  397. latestOrderStack: number[];
  398. destroy(): void;
  399. flush(): void;
  400. groupChanges(): void;
  401. updateStatesAtColumn(column: number, conditionArgsChange: object): void;
  402. }
  403. }
  404. interface BindStrategy {
  405. klass: () => void;
  406. strategy: string | void;
  407. clearMap(): void;
  408. createMap(length: number): void;
  409. createRow(params: any): void;
  410. destroy(): void;
  411. removeRow(params: any): void;
  412. setStrategy(name: string): void;
  413. translate(params: any): void;
  414. }
  415. interface CommandExecutor {
  416. hot: _Handsontable.Core;
  417. commands: object;
  418. commonCallback: (() => void) | void;
  419. registerCommand(name: string, commandDescriptor: object): void;
  420. setCommonCallback(callback: () => void): void;
  421. execute(commandName: string, ...params: any[]): void;
  422. }
  423. interface Cursor {
  424. cellHeight: number;
  425. cellWidth: number;
  426. left: number;
  427. leftRelative: number;
  428. scrollLeft: number;
  429. scrollTop: number;
  430. top: number;
  431. topRelative: number;
  432. type: string;
  433. fitsAbove(element: HTMLElement): boolean;
  434. fitsBelow(element: HTMLElement, viewportHeight?: number): boolean;
  435. fitsOnLeft(element: HTMLElement): boolean;
  436. fitsOnRight(element: HTMLElement, viewportHeight?: number): boolean;
  437. getSourceType(object: any): string;
  438. }
  439. interface Endpoints {
  440. plugin: plugins.ColumnSummary;
  441. hot: _Handsontable.Core;
  442. endpoints: any[];
  443. settings: object | (() => void);
  444. settingsType: string;
  445. currentEndpoint: object | void;
  446. assignSetting(settings: object, endpoint: object, name: string, defaultValue: any): void;
  447. getAllEndpoints(): any[];
  448. getEndpoint(index: number): object;
  449. parseSettings(settings: any[]): void;
  450. refreshAllEndpoints(init: boolean): void;
  451. refreshChangedEndpoints(changes: any[]): void;
  452. refreshEndpoint(endpoint: object): void;
  453. resetAllEndpoints(endpoints: any[], useOffset?: boolean): void;
  454. resetEndpointValue(endpoint: object, useOffset?: boolean): void;
  455. setEndpointValue(endpoint: object, source: string, render?: boolean): void;
  456. }
  457. interface EventManager {
  458. context?: object;
  459. addEventListener(element: Element, eventName: string, callback: (event: Event) => void): () => void;
  460. removeEventListener(element: Element, eventName: string, callback: (event: Event) => void): void;
  461. clearEvents(): void;
  462. clear(): void;
  463. destroy(): void;
  464. fireEvent(element: Element, eventName: string): void;
  465. extendEvent(context: object, event: Event): any;
  466. }
  467. interface GhostTable {
  468. columns: number[];
  469. container: HTMLElement | null;
  470. hot: _Handsontable.Core;
  471. injected: boolean;
  472. rows: object[];
  473. samples: object | null;
  474. settings: object;
  475. addRow(row: number, samples: object): void;
  476. addColumn(column: number, samples: object): void;
  477. addColumnHeadersRow(samples: object): void;
  478. clean(): void;
  479. createCol(column: number): DocumentFragment;
  480. createColElement(column: number): HTMLElement;
  481. createColGroupsCol(): DocumentFragment;
  482. createColumnHeadersRow(): DocumentFragment;
  483. createContainer(className?: string): object;
  484. createRow(row: number): DocumentFragment;
  485. createTable(className?: string): object;
  486. getHeights(callback: (row: number, height: number) => void): void;
  487. getWidths(callback: (row: number, height: number) => void): void;
  488. getSettings(): object | void;
  489. getSetting(name: string): boolean | void;
  490. injectTable(parent?: HTMLElement | void): void;
  491. isHorizontal(): boolean;
  492. isVertical(): boolean;
  493. removeTable(): void;
  494. setSettings(settings: DefaultSettings): void;
  495. setSetting(name: string, value: any): void;
  496. }
  497. interface ItemsFactory {
  498. defaultOrderPattern: any[] | void;
  499. hot: _Handsontable.Core;
  500. predefinedItems: object;
  501. getItems(pattern?: any[] | object | boolean): any[];
  502. setPredefinedItems(predefinedItems: any[]): void;
  503. }
  504. interface Menu {
  505. container: HTMLElement;
  506. eventManager: EventManager;
  507. hot: _Handsontable.Core;
  508. hotMenu: _Handsontable.Core;
  509. hotSubMenus: object;
  510. keyEvent: boolean;
  511. menuItems: any[] | null;
  512. offset: object;
  513. options: object;
  514. origOutsideClickDeselects: boolean | (() => void);
  515. parentMenu: Menu | null;
  516. close(closeParent?: boolean): void;
  517. closeSubMenu(row: number): void;
  518. closeAllSubMenus(): void;
  519. destroy(): void;
  520. executeCommand(event: Event): void;
  521. isOpened(): boolean;
  522. isSubMenu(): boolean;
  523. open(): void;
  524. openSubMenu(row: number): Menu | boolean;
  525. setMenuItems(menuItems: any[]): void;
  526. setOffset(area: string, offset?: number): void;
  527. selectLastCell(): void;
  528. selectFirstCell(): void;
  529. selectPrevCell(row: number, col: number): void;
  530. selectNextCell(row: number, col: number): void;
  531. setPosition(coords: Event | object): void;
  532. setPositionAboveCursor(cursor: Cursor): void;
  533. setPositionBelowCursor(cursor: Cursor): void;
  534. setPositionOnLeftOfCursor(cursor: Cursor): void;
  535. setPositionOnRightOfCursor(cursor: Cursor): void;
  536. }
  537. interface SamplesGenerator {
  538. allowDuplicates: boolean | null;
  539. customSampleCount: boolean | null;
  540. dataFactory: () => void;
  541. samples: object | null;
  542. generateColumnSamples(colRange: object, rowRange: object): object;
  543. generateRowSamples(rowRange: object | number, colRange: object): object;
  544. generateSamples(type: string, range: object, specifierRange: object | number): object;
  545. generateSample(type: string, range: object, specifierValue: number): object
  546. getSampleCount(): number;
  547. setAllowDuplicates(allowDuplicates: boolean): void;
  548. setSampleCount(sampleCount: number): void;
  549. }
  550. class Base {
  551. pluginName: string;
  552. pluginsInitializedCallback: any[];
  553. isPluginsReady: boolean;
  554. enabled: boolean;
  555. initialized: boolean;
  556. constructor(hotInstance?: _Handsontable.Core);
  557. addHook(name: string, callback: () => void): void;
  558. callOnPluginsReady(callback: () => void): void;
  559. clearHooks(): void;
  560. destroy(): void;
  561. disablePlugin(): void;
  562. enablePlugin(): void;
  563. init(): void;
  564. removeHook(name: string): void;
  565. }
  566. interface AutoColumnSize extends Base {
  567. firstCalculation: boolean;
  568. ghostTable: GhostTable;
  569. inProgress: boolean;
  570. samplesGenerator: SamplesGenerator;
  571. widths: any[];
  572. calculateAllColumnsWidth(rowRange?: number | object): void;
  573. calculateColumnsWidth(colRange?: number | object, rowRange?: number | object, force?: boolean): void;
  574. clearCache(columns?: any[]): void;
  575. findColumnsWhereHeaderWasChanged(): any[];
  576. getColumnWidth(col: number, defaultWidth?: number, keepMinimum?: boolean): number;
  577. getFirstVisibleColumn(): number;
  578. getLastVisibleColumn(): number;
  579. getSyncCalculationLimit(): number;
  580. isNeedRecalculate(): boolean;
  581. recalculateAllColumnsWidth(): void;
  582. }
  583. interface AutoRowSize extends Base {
  584. firstCalculation: boolean;
  585. heights: any[];
  586. ghostTable: GhostTable;
  587. inProgress: boolean;
  588. sampleGenerator: SamplesGenerator;
  589. calculateAllRowsHeight(colRange?: number | object): void;
  590. calculateRowsHeight(rowRange?: number | object, colRange?: number | object, force?: boolean): void;
  591. clearCache(): void;
  592. clearCacheByRange(range: number | object): void;
  593. findColumnsWhereHeaderWasChanged(): any[];
  594. getColumnHeaderHeight(): number | void;
  595. getFirstVisibleRow(): number;
  596. getLastVisibleRow(): number;
  597. getRowHeight(col: number, defaultHeight?: number): number;
  598. getSyncCalculationLimit(): number;
  599. isNeedRecalculate(): boolean;
  600. recalculateAllRowsHeight(): void;
  601. }
  602. interface Autofill extends Base {
  603. addingStarted: boolean;
  604. autoInsertRow: boolean;
  605. directions: string[];
  606. eventManager: EventManager;
  607. handleDraggedCells: number;
  608. mouseDownOnCellCorner: boolean;
  609. mouseDragOutside: boolean;
  610. }
  611. interface BindRowsWithHeaders extends Base {
  612. bindStrategy: BindStrategy;
  613. removeRows: any[];
  614. }
  615. interface CollapsibleColumns extends Base {
  616. buttonEnabledList: object;
  617. collapsedSections: object;
  618. columnHeaderLevelCount: number;
  619. eventManager: EventManager;
  620. hiddenColumnsPlugin: object;
  621. nestedHeadersPlugin: object;
  622. settings: boolean | any[];
  623. checkDependencies(): void;
  624. collapseAll(): void;
  625. collapseSection(coords: object): void;
  626. expandAll(): void;
  627. expandSection(coords: object): void;
  628. generateIndicator(col: number, TH: HTMLElement): HTMLElement;
  629. markSectionAs(state: string, row: number, column: number, recursive: boolean): void;
  630. meetsDependencies(): boolean;
  631. parseSettings(): void;
  632. toggleAllCollapsibleSections(action: string): void;
  633. toggleCollapsibleSection(coords: object, action: string): void;
  634. }
  635. interface ColumnSorting extends Base {
  636. clearSort(): void;
  637. destroy(): void;
  638. getSortConfig(column: number): void | columnSorting.Config
  639. getSortConfig(): Array<columnSorting.Config>
  640. isSorted(): boolean;
  641. setSortConfig(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  642. sort(sortConfig?: columnSorting.Config): void;
  643. }
  644. interface ColumnSummary extends Base {
  645. endpoints: Endpoints | void;
  646. calculate(endpoint: Endpoints): void;
  647. calculateAverage(endpoint: Endpoints): number;
  648. calculateMinMax(endpoint: Endpoints, type: string): number;
  649. calculateSum(endpoint: Endpoints): void;
  650. countEmpty(rowRange: any[], col: number): number;
  651. countEntries(endpoint: Endpoints): number;
  652. getCellValue(row: number, col: number): string;
  653. getPartialMinMax(rowRange: any[], col: number, type: string): number;
  654. getPartialSum(rowRange: any[], col: number): number;
  655. }
  656. type CommentsRangeObject = {
  657. from: wot.CellCoords,
  658. to?: wot.CellCoords
  659. }
  660. interface Comments extends Base {
  661. contextMenuEvent: boolean;
  662. displayDelay: number;
  663. editor: _editors.CommentEditor;
  664. eventManager: EventManager;
  665. mouseDown: boolean;
  666. range: CommentsRangeObject;
  667. timer: any;
  668. clearRange(): void;
  669. getComment(): string;
  670. getCommentMeta(row: number, column: number, property: string): any;
  671. hide(): void;
  672. refreshEditor(force?: boolean): void;
  673. removeComment(forceRender?: boolean): void;
  674. removeCommentAtCell(row: number, col: number, forceRender?: boolean): void;
  675. setComment(value: string): void;
  676. setCommentAtCell(row: number, col: number, value: string): void;
  677. setRange(range: CommentsRangeObject): void;
  678. show(): boolean;
  679. showAtCell(row: number, col: number): boolean;
  680. targetIsCellWithComment(event: Event): boolean;
  681. targetIsCommentTextArea(event: Event): boolean;
  682. updateCommentMeta(row: number, column: number, metaObject: object): void;
  683. }
  684. interface ContextMenu extends Base {
  685. eventManager: EventManager;
  686. commandExecutor: CommandExecutor;
  687. itemsFactory: ItemsFactory | void;
  688. menu: Menu | void;
  689. close(): void;
  690. executeCommand(commandName: string, ...params: any[]): void;
  691. open(event: Event): void;
  692. }
  693. interface FocusableWrapper {
  694. mainElement: HTMLElement;
  695. eventManager: EventManager;
  696. listenersCount: WeakSet<HTMLElement>;
  697. useSecondaryElement(): void;
  698. setFocusableElement(element: HTMLElement): void;
  699. getFocusableElement(): HTMLElement;
  700. focus(): void;
  701. }
  702. type PasteModeType = 'overwrite' | 'shift_down' | 'shift_right';
  703. type RangeType = { startRow: number, startCol: number, endRow: number, endCol: number };
  704. interface CopyPaste extends Base {
  705. eventManager: EventManager;
  706. columnsLimit: number;
  707. copyableRanges: any[];
  708. pasteMode: PasteModeType;
  709. rowsLimit: number;
  710. focusableElement: FocusableWrapper;
  711. setCopyableText(): void;
  712. getRangedCopyableData(ranges: RangeType[]): string;
  713. getRangedData(ranges: RangeType[]): any[];
  714. copy(triggeredByClick?: boolean): void;
  715. cut(triggeredByClick?: boolean): void;
  716. paste(triggeredByClick?: boolean): void;
  717. }
  718. interface CustomBorders extends Base {
  719. savedBorderSettings: any[];
  720. setBorders(selection: Range[] | Array<[number, number, number, number]>, borderObject: object): void;
  721. getBorders(selection: Range[] | Array<[number, number, number, number]>): Array<[object]>;
  722. clearBorders(selection: Range[] | Array<[number, number, number, number]>): void;
  723. }
  724. interface DragToScroll extends Base {
  725. boundaries: object | void;
  726. callback: (() => void) | void;
  727. check(x: number, y: number): void;
  728. setBoundaries(boundaries: object): void;
  729. setCallback(callback: () => void): void;
  730. }
  731. type SeparatorObject = {
  732. name: string;
  733. }
  734. interface DropdownMenu extends Base {
  735. eventManager: EventManager;
  736. commandExecutor: CommandExecutor;
  737. itemsFactory: ItemsFactory | void;
  738. menu: Menu | void;
  739. SEPARATOR: SeparatorObject
  740. close(): void;
  741. executeCommand(commandName: string, ...params: any[]): void;
  742. open(event: Event): void;
  743. }
  744. interface ExportFile extends Base {
  745. downloadFile(format: string, options: object): void;
  746. exportAsString(format: string, options?: object): string;
  747. exportAsBlob(format: string, options?: object): Blob;
  748. }
  749. interface Filters extends Base {
  750. actionBarComponent: FiltersPlugin.ActionBarComponent | void;
  751. dropdownMenuPlugin: DropdownMenu | void;
  752. eventManager: EventManager;
  753. conditionComponent: FiltersPlugin.ConditionComponent | void;
  754. conditionCollection: FiltersPlugin.ConditionCollection | void;
  755. conditionUpdateObserver: FiltersPlugin.ConditionUpdateObserver | void;
  756. lastSelectedColumn?: number | void;
  757. trimRowsPlugin: TrimRows | void;
  758. valueComponent: FiltersPlugin.ValueComponent | void;
  759. addCondition(column: number, name: string, args: any[], operationId: FiltersPlugin.OperationType): void;
  760. clearColumnSelection(): void;
  761. clearConditions(column?: number | void): void;
  762. getDataMapAtColumn(column: number): FiltersPlugin.CellLikeData[];
  763. getSelectedColumn(): number | void;
  764. filter(): void;
  765. removeConditions(column: number): void;
  766. }
  767. interface RecordTranslator {
  768. hot: _Handsontable.Core;
  769. toPhysical(row: number | object, column?: number): object | any[];
  770. toPhysicalColumn(column: number): number;
  771. toPhysicalRow(row: number): number;
  772. toVisual(row: number | object, column?: number): object | any[];
  773. toVisualColumn(column: number): number;
  774. toVisualRow(row: number): number;
  775. }
  776. interface DataProvider {
  777. changes: object;
  778. hot: _Handsontable.Core;
  779. t: RecordTranslator;
  780. clearChanges(): void;
  781. collectChanges(row: number, column: number, value: any): void;
  782. destroy(): void;
  783. getDataAtCell(row: number, column: number): any;
  784. getDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  785. getRawDataAtCell(row: number, column: number): any;
  786. getRawDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  787. getSourceDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  788. getSourceDataAtCell(row: number, column: number): any;
  789. isInDataRange(row: number, column: number): boolean;
  790. updateSourceData(row: number, column: number, value: any): void;
  791. }
  792. interface AlterManager {
  793. sheet: Sheet;
  794. hot: _Handsontable.Core;
  795. dataProvider: DataProvider;
  796. matrix: Matrix;
  797. prepareAlter(action: string, args: any): void;
  798. triggerAlter(action: string, args: any): void;
  799. destroy(): void;
  800. }
  801. interface Matrix {
  802. t: RecordTranslator;
  803. data: any[];
  804. cellReferences: any[];
  805. getCellAt(row: number, column: number): CellValue | void;
  806. getOutOfDateCells(): any[];
  807. add(cellValue: CellValue | object): void;
  808. remove(cellValue: CellValue | object | any[]): void;
  809. getDependencies(cellCoord: object): void;
  810. registerCellRef(cellReference: CellReference | object): void;
  811. removeCellRefsAtRange(start: object, end: object): any[];
  812. reset(): void;
  813. }
  814. interface BaseCell {
  815. columnAbsolute: boolean;
  816. columnOffset: number;
  817. rowAbsolute: boolean;
  818. rowOffset: number;
  819. isEqual(cell: BaseCell): boolean;
  820. toString(): string;
  821. translateTo(rowOffset: number, columnOffset: number): void;
  822. }
  823. type CellReference = BaseCell
  824. interface CellValue extends BaseCell {
  825. error: string | void;
  826. precedents: any[];
  827. state: string;
  828. value: any;
  829. addPrecedent(cellReference: CellReference): void;
  830. clearPrecedents(): void;
  831. getError(): string | void;
  832. getPrecedents(): any[];
  833. getValue(): any;
  834. hasError(): boolean;
  835. hasPrecedent(cellReference: CellReference): boolean;
  836. hasPrecedents(): boolean;
  837. isState(state: number): boolean;
  838. removePrecedent(cellReference: CellReference): void;
  839. setError(error: string): void;
  840. setState(state: number): void;
  841. setValue(value: any): void;
  842. }
  843. type Parser = {};
  844. interface Sheet {
  845. alterManager: AlterManager
  846. dataProvider: DataProvider;
  847. hot: _Handsontable.Core;
  848. matrix: Matrix;
  849. parser: Parser;
  850. t: RecordTranslator;
  851. applyChanges(row: number, column: number, newValue: any): void;
  852. destroy(): void;
  853. getCellAt(row: number, column: number): CellValue | void;
  854. getCellDependencies(row: number, column: number): any[];
  855. getVariable(name: string): any;
  856. parseExpression(cellValue: CellValue | object, formula: string): void;
  857. recalculate(): void;
  858. recalculateFull(): void;
  859. recalculateOptimized(): void;
  860. setVariable(name: string, value: any): void;
  861. }
  862. interface Stack {
  863. items: any[];
  864. isEmpty(): boolean;
  865. peek(): any;
  866. pop(): any;
  867. push(items: any): void;
  868. size(): number;
  869. }
  870. interface UndoRedoSnapshot {
  871. sheet: Sheet;
  872. stack: Stack;
  873. destroy(): void;
  874. restore(): void;
  875. save(axis: string, index: number, amount: number): void;
  876. }
  877. interface Formulas extends Base {
  878. dataProvider: DataProvider;
  879. eventManager: EventManager;
  880. sheet: Sheet;
  881. undoRedoSnapshot: UndoRedoSnapshot;
  882. getCellValue(row: number, column: number): any;
  883. getVariable(name: string): any;
  884. hasComputedCellValue(row: number, column: number): boolean;
  885. recalculate(): void;
  886. recalculateFull(): void;
  887. recalculateOptimized(): void;
  888. setVariable(name: string, value: any): void;
  889. }
  890. interface GanttChart extends Base {
  891. colorData: object;
  892. currentYear: number | void;
  893. dateCalculator: object | void;
  894. dataFeed: object | void;
  895. hotSource: _Handsontable.Core | void;
  896. initialSettings: object | void;
  897. monthHeadersArray: any[];
  898. monthList: any[];
  899. nestedHeadersPlugin: NestedHeaders | void;
  900. overallWeekSectionCount: number | void;
  901. rangeBarMeta: object | void;
  902. rangeBars: object;
  903. rangeList: object;
  904. settings: object;
  905. weekHeadersArray: any[];
  906. addRangeBar(row: number, startDate: Date | string, endDate: Date | string, additionalData: object): boolean | any[];
  907. applyRangeBarMetaCache(): void;
  908. cacheRangeBarMeta(row: number, col: number, key: string, value: any | any[]): void;
  909. checkDependencies(): void;
  910. getRangeBarCoordinates(row: number): object;
  911. getRangeBarData(row: number, column: number): object | boolean;
  912. renderRangeBar(row: number, startDateColumn: number, endDateColumn: number, additionalData: object): void;
  913. removeRangeBarByDate(row: number, startDate: Date | string): void;
  914. removeRangeBarByColumn(row: number, startDateColumn: number): void;
  915. removeAllRangeBars(): void;
  916. setRangeBarColors(rows: object): void;
  917. setYear(year: number): void;
  918. uniformBackgroundRenderer(instance: _Handsontable.Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: string | number, cellProperties: GridSettings): void;
  919. unrenderRangeBar(row: number, startDateColumn: number, endDateColumn: number): void;
  920. updateRangeBarData(row: number, column: number, data: object): void;
  921. }
  922. interface HeaderTooltips extends Base {
  923. settings: boolean | object;
  924. parseSettings(): void;
  925. }
  926. interface HiddenColumns extends Base {
  927. hiddenColumns: boolean | any[];
  928. lastSelectedColumn: number;
  929. settings: object | void;
  930. isHidden(column: number, isLogicIndex?: boolean): boolean;
  931. hideColumn(column: number): void;
  932. hideColumns(columns: any[]): void;
  933. showColumn(column: number): void;
  934. showColumns(columns: any[]): void;
  935. }
  936. interface HiddenRows extends Base {
  937. hiddenRows: boolean | any[];
  938. lastSelectedRow: number;
  939. settings: object | void;
  940. isHidden(row: number, isLogicIndex?: boolean): boolean;
  941. hideRow(row: number): void;
  942. hideRows(rows: any[]): void;
  943. showRow(row: number): void;
  944. showRows(rows: any[]): void;
  945. }
  946. interface ManualColumnFreeze extends Base {
  947. frozenColumnsBasePositions: any[];
  948. manualColumnMovePlugin: ManualColumnMove;
  949. freezeColumn(column: number): void;
  950. unfreezeColumn(column: number): void;
  951. }
  952. interface arrayMapper {
  953. getValueByIndex(index: number): any;
  954. getIndexByValue(value: any): number;
  955. insertItems(index: number, amount?: number): any[];
  956. removeItems(index: number, amount?: number): any[];
  957. shiftItems(index: number, amount?: number): void;
  958. unshiftItems(index: number, amount?: number): void;
  959. }
  960. interface MoveColumnsMapper extends arrayMapper {
  961. manualColumnMove: ManualColumnMove;
  962. clearNull(): void;
  963. createMap(length?: number): void;
  964. destroy(): void;
  965. moveColumn(from: number, to: number): void;
  966. }
  967. interface MoveRowsMapper extends arrayMapper {
  968. manualRowMove: ManualRowMove;
  969. clearNull(): void;
  970. createMap(length?: number): void;
  971. destroy(): void;
  972. moveColumn(from: number, to: number): void;
  973. }
  974. interface MultiColumnSorting extends Base {
  975. clearSort(): void;
  976. destroy(): void;
  977. getSortConfig(column: number): void | columnSorting.Config
  978. getSortConfig(): Array<columnSorting.Config>
  979. isSorted(): boolean;
  980. setSortConfig(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  981. sort(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  982. }
  983. interface TrimRowsMapper extends arrayMapper {
  984. trimRows: TrimRows;
  985. createMap(length?: number): void;
  986. destroy(): void;
  987. }
  988. namespace moveUI {
  989. interface BaseUI {
  990. hot: _Handsontable.Core;
  991. state: number;
  992. appendTo(wrapper: HTMLElement): void;
  993. build(): void;
  994. destroy(): void;
  995. getOffset(): object;
  996. getPosition(): object;
  997. getSize(): object;
  998. isAppended(): boolean;
  999. isBuilt(): boolean;
  1000. setOffset(top: number, left: number): void;
  1001. setPosition(top: number, left: number): void;
  1002. setSize(width: number, height: number): void;
  1003. }
  1004. type BacklightUI = BaseUI
  1005. type GuidelineUI = BaseUI
  1006. }
  1007. interface MergeCells extends Base {
  1008. mergedCellsCollection: MergeCellsPlugin.MergedCellsCollection;
  1009. autofillCalculations: MergeCellsPlugin.AutofillCalculations;
  1010. selectionCalculations: MergeCellsPlugin.SelectionCalculations;
  1011. clearCollections(): void;
  1012. mergeSelection(cellRange: wot.CellRange): void;
  1013. merge(startRow: number, startColumn: number, endRow: number, endColumn: number): void;
  1014. unmerge(startRow: number, startColumn: number, endRow: number, endColumn: number): void;
  1015. }
  1016. namespace MergeCellsPlugin {
  1017. interface AutofillCalculations {
  1018. plugin: MergeCells;
  1019. mergedCellsCollection: MergeCellsPlugin.MergedCellsCollection;
  1020. currentFillData: object;
  1021. correctSelectionAreaSize(selectionArea: number[]): void;
  1022. getDirection(selectionArea: number[], finalArea: number[]): string;
  1023. snapDragArea(baseArea: number[], dragArea: number[], dragDirection: string, foundMergedCells: MergeCellsPlugin.MergedCellCoords[]): number[];
  1024. recreateAfterDataPopulation(changes: any[]): void;
  1025. dragAreaOverlapsCollections(baseArea: number[], fullArea: number[], direction: string): boolean;
  1026. }
  1027. interface SelectionCalculations {
  1028. snapDelta(delta: object, selectionRange: wot.CellRange, mergedCell: MergeCellsPlugin.MergedCellCoords): void;
  1029. getUpdatedSelectionRange(oldSelectionRange: wot.CellRange, delta: object): wot.CellRange;
  1030. }
  1031. interface MergedCellCoords {
  1032. row: number;
  1033. col: number;
  1034. rowspan: number;
  1035. colspan: number;
  1036. removed: boolean;
  1037. normalize(hotInstance: _Handsontable.Core): void;
  1038. includes(row: number, column: number): boolean;
  1039. includesHorizontally(column: number): boolean;
  1040. includesVertically(row: number): boolean;
  1041. shift(shiftVector: number[], indexOfChange: number): boolean;
  1042. isFarther(mergedCell: MergeCellsPlugin.MergedCellCoords, direction: string): boolean | void;
  1043. getLastRow(): number;
  1044. getLastColumn(): number;
  1045. getRange(): wot.CellRange;
  1046. }
  1047. interface MergedCellsCollection {
  1048. plugin: MergeCells;
  1049. mergedCells: MergeCellsPlugin.MergedCellCoords[];
  1050. hot: _Handsontable.Core;
  1051. get(row: number, column: number): MergeCellsPlugin.MergedCellCoords | boolean;
  1052. getByRange(range: wot.CellRange | object): MergeCellsPlugin.MergedCellCoords | boolean;
  1053. getWithinRange(range: wot.CellRange | object, countPartials: boolean): MergeCellsPlugin.MergedCellCoords[] | boolean;
  1054. add(mergedCellInfo: object): MergeCellsPlugin.MergedCellCoords | boolean;
  1055. remove(row: number, column: number): MergeCellsPlugin.MergedCellCoords | boolean;
  1056. clear(): void;
  1057. isOverlapping(mergedCell: MergeCellsPlugin.MergedCellCoords): boolean;
  1058. isMergedParent(row: number, column: number): boolean;
  1059. shiftCollections(direction: string, index: number, count: number): void;
  1060. }
  1061. }
  1062. interface ManualColumnMove extends Base {
  1063. backlight: moveUI.BacklightUI;
  1064. columnsMapper: MoveColumnsMapper;
  1065. eventManager: EventManager;
  1066. guideline: moveUI.GuidelineUI;
  1067. removedColumns: any[];
  1068. moveColumn(column: number, target: number): void;
  1069. moveColumns(columns: number[], target: number): void;
  1070. }
  1071. interface ManualColumnResize extends Base {
  1072. autoresizeTimeout: (() => void) | void;
  1073. currentCol: number | void;
  1074. currentTH: HTMLElement | void;
  1075. currentWidth: number | void;
  1076. dblclick: number;
  1077. eventManager: EventManager;
  1078. guide: HTMLElement;
  1079. handle: HTMLElement;
  1080. manualColumnWidths: any[];
  1081. newSize: number | void;
  1082. pressed: _Handsontable.Core | void;
  1083. selectedCols: any[];
  1084. startOffset: number | void;
  1085. startWidth: number | void;
  1086. startY: number | void;
  1087. checkIfColumnHeader(element: HTMLElement): boolean;
  1088. clearManualSize(column: number): void;
  1089. getTHFromTargetElement(element: HTMLElement): HTMLElement;
  1090. hideHandleAndGuide(): void;
  1091. loadManualColumnWidths(): void;
  1092. refreshGuidePosition(): void;
  1093. refreshHandlePosition(): void;
  1094. saveManualColumnWidths(): void;
  1095. setManualSize(column: number, width: number): number;
  1096. setupGuidePosition(): void;
  1097. setupHandlePosition(TH: HTMLElement): boolean | void;
  1098. }
  1099. interface ManualRowMove extends Base {
  1100. backlight: moveUI.BacklightUI;
  1101. eventManager: EventManager;
  1102. guideline: moveUI.GuidelineUI;
  1103. removedRows: any[];
  1104. rowsMapper: MoveRowsMapper;
  1105. moveRow(row: number, target: number): void;
  1106. moveRows(rows: number[], target: number): void;
  1107. }
  1108. interface ManualRowResize extends Base {
  1109. autoresizeTimeout: (() => void) | void;
  1110. currentRow: number | void;
  1111. currentTH: HTMLElement | void;
  1112. currentWidth: number | void;
  1113. dblclick: number;
  1114. eventManager: EventManager;
  1115. guide: HTMLElement;
  1116. handle: HTMLElement;
  1117. manualRowHeights: any[];
  1118. newSize: number | void;
  1119. pressed: _Handsontable.Core | void;
  1120. selectedRows: any[];
  1121. startOffset: number | void;
  1122. startWidth: number | void;
  1123. startY: number | void;
  1124. checkIfRowHeader(element: HTMLElement): boolean;
  1125. clearManualSize(column: number): void;
  1126. getTHFromTargetElement(element: HTMLElement): HTMLElement;
  1127. hideHandleAndGuide(): void;
  1128. loadManualRowHeights(): void;
  1129. refreshGuidePosition(): void;
  1130. refreshHandlePosition(): void;
  1131. saveManualRowHeights(): void;
  1132. setManualSize(column: number, width: number): number;
  1133. setupGuidePosition(): void;
  1134. setupHandlePosition(TH: HTMLElement): boolean | void;
  1135. }
  1136. interface MultipleSelectionHandles extends Base {
  1137. dragged: any[];
  1138. eventManager: EventManager;
  1139. lastSetCell: HTMLElement | void;
  1140. getCurrentRangeCoords(selectedRange: wot.CellRange, currentTouch: wot.CellCoords, touchStartDirection: string, currentDirection: string, draggedHandle: string): object;
  1141. isDragged(): boolean;
  1142. }
  1143. interface GhostTableNestedHeaders {
  1144. container: any;
  1145. nestedHeaders: NestedHeaders;
  1146. widthsCache: any[];
  1147. clear(): void;
  1148. }
  1149. interface NestedHeaders extends Base {
  1150. colspanArray: any[];
  1151. columnHeaderLevelCount: number;
  1152. ghostTable: GhostTableNestedHeaders;
  1153. settings: any[];
  1154. checkForFixedColumnsCollision(): void;
  1155. checkForOverlappingHeaders(): void;
  1156. getChildHeaders(row: number, column: number): any[];
  1157. fillColspanArrayWithDummies(colspan: number, level: number): void;
  1158. fillTheRemainingColspans(): void;
  1159. getColspan(row: number, column: number): number;
  1160. getNestedParent(level: number, column: number): any;
  1161. headerRendererFactory(headerRow: number): () => void;
  1162. levelToRowCoords(level: number): number;
  1163. rowCoordsToLevel(row: number): number;
  1164. setupColspanArray(): void;
  1165. }
  1166. interface DataManager {
  1167. cache: object;
  1168. data: object;
  1169. hot: _Handsontable.Core;
  1170. parentReference: any; // WeakMap
  1171. plugin: NestedRows;
  1172. addChild(parent: object, element?: object): void;
  1173. addChildAtIndex(parent: object, index: number, element?: object, globalIndex?: number): void;
  1174. addSibling(index: number, where?: string): void;
  1175. countAllRows(): number;
  1176. countChildren(parent: object | number): number;
  1177. detachFromParent(elements: object | any[], forceRender?: boolean): void;
  1178. getDataObject(row: number): any | void;
  1179. getRowIndex(rowObj: object): number | void;
  1180. getRowIndexWithinParent(row: number | object): number;
  1181. getRowLevel(row: number): number | void;
  1182. getRowParent(row: number | object): object | void;
  1183. hasChildren(row: number | object): boolean;
  1184. isParent(row: number | object): boolean;
  1185. moveRow(fromIndex: number, toIndex: number): void;
  1186. rewriteCache(): void;
  1187. }
  1188. interface NestedRows extends Base {
  1189. bindRowsWithHeadersPlugin: BindRowsWithHeaders | void;
  1190. dataManager: DataManager | void;
  1191. headersUI: object | void;
  1192. sourceData: object | void;
  1193. trimRowsPlugin: TrimRows | void;
  1194. }
  1195. interface DataObserver {
  1196. observedData: any[];
  1197. observer: object;
  1198. paused: boolean;
  1199. destroy(): void;
  1200. isPaused(): boolean;
  1201. pause(): void;
  1202. resume(): void;
  1203. setObservedData(observedData: any): void;
  1204. }
  1205. interface ObserveChanges extends Base {
  1206. observer: DataObserver | void;
  1207. }
  1208. interface TouchScroll extends Base {
  1209. clones: any[];
  1210. lockedCollection: boolean;
  1211. scrollbars: any[];
  1212. }
  1213. interface TrimRows extends Base {
  1214. trimmedRows: any[];
  1215. removedRows: any[];
  1216. rowsMapper: TrimRowsMapper;
  1217. isTrimmed(row: number): boolean;
  1218. trimRow(row: number): void;
  1219. trimRows(rows: number[]): void;
  1220. untrimAll(): void;
  1221. untrimRow(row: number): void;
  1222. untrimRows(rows: number[]): void;
  1223. }
  1224. interface Search extends Base {
  1225. callback: () => void;
  1226. queryMethod: () => void;
  1227. searchResultClass: string;
  1228. query(queryStr: string, callback: () => void, queryMethod: () => void): any[];
  1229. getCallback(): () => void;
  1230. setCallback(newCallback: () => void): void;
  1231. getQueryMethod(): () => void;
  1232. setQueryMethod(newQueryMethod: () => void): void;
  1233. getSearchResultClass(): string;
  1234. setSearchResultClass(newElementClass: string): void;
  1235. }
  1236. }
  1237. namespace renderers {
  1238. interface Base {
  1239. (instance: _Handsontable.Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: any, cellProperties: GridSettings): HTMLElement;
  1240. }
  1241. type Autocomplete = Base
  1242. type Checkbox = Base
  1243. type Html = Base
  1244. type Numeric = Base
  1245. type Password = Base
  1246. type Text = Base
  1247. }
  1248. interface DefaultSettings extends GridSettings {
  1249. }
  1250. interface DefaultSettings extends Hooks {
  1251. }
  1252. interface GridSettings extends Hooks {
  1253. activeHeaderClassName?: string;
  1254. allowEmpty?: boolean;
  1255. allowHtml?: boolean;
  1256. allowInsertColumn?: boolean;
  1257. allowInsertRow?: boolean;
  1258. allowInvalid?: boolean;
  1259. allowRemoveColumn?: boolean;
  1260. allowRemoveRow?: boolean;
  1261. autoColumnSize?: object | boolean;
  1262. autoComplete?: any[];
  1263. autoRowSize?: object | boolean;
  1264. autoWrapCol?: boolean;
  1265. autoWrapRow?: boolean;
  1266. bindRowsWithHeaders?: boolean | string; // pro
  1267. cell?: any[];
  1268. cells?: (row?: number, col?: number, prop?: object) => GridSettings;
  1269. checkedTemplate?: boolean | string;
  1270. className?: string | any[];
  1271. colHeaders?: ((index?: number) => void) | boolean | any[];
  1272. collapsibleColumns?: boolean | any[]; // pro
  1273. columnHeaderHeight?: number | any[];
  1274. columns?: ((index?: number) => void) | any[];
  1275. columnSorting?: boolean | columnSorting.Settings;
  1276. columnSummary?: object; // pro
  1277. colWidths?: ((index?: number) => void) | number | string | any[];
  1278. commentedCellClassName?: string;
  1279. comments?: boolean | CommentObject[];
  1280. contextMenu?: boolean | any[] | contextMenu.Settings;
  1281. contextMenuCopyPaste?: object;
  1282. copyable?: boolean;
  1283. copyColsLimit?: number;
  1284. copyPaste?: boolean;
  1285. copyRowsLimit?: number;
  1286. correctFormat?: boolean;
  1287. currentColClassName?: string;
  1288. currentHeaderClassName?: string;
  1289. currentRowClassName?: string;
  1290. customBorders?: boolean | any[];
  1291. data?: any | any[];
  1292. dataSchema?: object;
  1293. dateFormat?: string;
  1294. numericFormat?: object;
  1295. debug?: boolean;
  1296. defaultDate?: string;
  1297. disableVisualSelection?: boolean | string | any[];
  1298. dragToScroll?: boolean;
  1299. dropdownMenu?: boolean | object | any[]; // pro
  1300. editor?: string | (() => void) | boolean;
  1301. enterBeginsEditing?: boolean;
  1302. enterMoves?: object | (() => void);
  1303. fillHandle?: boolean | string | object;
  1304. filter?: boolean;
  1305. filteringCaseSensitive?: boolean;
  1306. filters?: boolean; // pro
  1307. fixedColumnsLeft?: number;
  1308. fixedRowsBottom?: number; // pro
  1309. fixedRowsTop?: number;
  1310. fragmentSelection?: boolean | string;
  1311. ganttChart?: object; // pro
  1312. headerTooltips?: boolean | object; // pro
  1313. height?: number | (() => void);
  1314. hiddenColumns?: boolean | object; // pro
  1315. hiddenRows?: boolean | object; // pro
  1316. invalidCellClassName?: string;
  1317. isEmptyCol?: (col: number) => boolean;
  1318. isEmptyRow?: (row: number) => boolean;
  1319. label?: object;
  1320. language?: string;
  1321. manualColumnFreeze?: boolean;
  1322. manualColumnMove?: boolean | any[];
  1323. manualColumnResize?: boolean | any[];
  1324. manualRowMove?: boolean | any[];
  1325. manualRowResize?: boolean | any[];
  1326. maxCols?: number;
  1327. maxRows?: number;
  1328. mergeCells?: boolean | any[];
  1329. minCols?: number;
  1330. minRows?: number;
  1331. minSpareCols?: number;
  1332. minSpareRows?: number;
  1333. multiColumnSorting?: boolean | multiColumnSorting.Settings;
  1334. selectionMode?: 'single' | 'range' | 'multiple';
  1335. nestedHeaders?: any[]; // pro
  1336. noWordWrapClassName?: string;
  1337. observeChanges?: boolean;
  1338. observeDOMVisibility?: boolean;
  1339. outsideClickDeselects?: boolean | ((target: HTMLElement) => boolean);
  1340. pasteMode?: string;
  1341. persistentState?: boolean;
  1342. placeholder?: any;
  1343. placeholderCellClassName?: string;
  1344. preventOverflow?: string | boolean;
  1345. readOnly?: boolean;
  1346. readOnlyCellClassName?: string;
  1347. renderAllRows?: boolean;
  1348. renderer?: string | renderers.Base;
  1349. rowHeaders?: boolean | any[] | (() => void);
  1350. rowHeaderWidth?: number | any[];
  1351. rowHeights?: any[] | (() => void) | number | string;
  1352. search?: boolean;
  1353. selectOptions?: any[];
  1354. skipColumnOnPaste?: boolean;
  1355. sortByRelevance?: boolean;
  1356. source?: any[] | (() => void);
  1357. startCols?: number;
  1358. startRows?: number;
  1359. stretchH?: string;
  1360. strict?: boolean;
  1361. tableClassName?: string | any[];
  1362. tabMoves?: object;
  1363. title?: string;
  1364. trimDropdown?: boolean;
  1365. trimRows?: boolean; // pro
  1366. trimWhitespace?: boolean;
  1367. type?: string;
  1368. uncheckedTemplate?: boolean | string;
  1369. undo?: boolean;
  1370. valid?: boolean;
  1371. validator?: (value: any, callback: (valid: boolean) => void) => void | RegExp;
  1372. viewportColumnRenderingOffset?: number | string;
  1373. viewportRowRenderingOffset?: number | string;
  1374. visibleRows?: number;
  1375. width?: number | (() => void);
  1376. wordWrap?: boolean;
  1377. }
  1378. interface Hooks {
  1379. afterAddChild?: (parent: object, element: object | void, index: number | void) => void;
  1380. afterBeginEditing?: (row: number, column: number) => void;
  1381. afterCellMetaReset?: () => void;
  1382. afterChange?: (changes: [number, string | number, any, any][], source: string) => void;
  1383. afterChangesObserved?: () => void;
  1384. afterColumnMove?: (startColumn: number, endColumn: number) => void;
  1385. afterColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void;
  1386. afterColumnSort?: (currentSortConfig: object[], destinationSortConfigs: object[]) => void;
  1387. afterContextMenuDefaultOptions?: (predefinedItems: any[]) => void;
  1388. afterContextMenuHide?: (context: Handsontable.plugins.ContextMenu) => void;
  1389. afterContextMenuShow?: (context: Handsontable.plugins.ContextMenu) => void;
  1390. afterCopy?: (data: any[], coords: any[]) => void;
  1391. afterCopyLimit?: (selectedRows: number, selectedColumnds: number, copyRowsLimit: number, copyColumnsLimit: number) => void;
  1392. afterCreateCol?: (index: number, amount: number) => void;
  1393. afterCreateRow?: (index: number, amount: number) => void;
  1394. afterCut?: (data: any[], coords: any[]) => void;
  1395. afterDeselect?: () => void;
  1396. afterDestroy?: () => void;
  1397. afterDetachChild?: (parent: object, element: object) => void;
  1398. afterDocumentKeyDown?: (event: Event) => void;
  1399. afterDrawSelection?: (currentRow: number, currentColumn: number, cornersOfSelection: number[], layerLevel: number | void) => string | void
  1400. afterDropdownMenuDefaultOptions?: (predefinedItems: any[]) => void;
  1401. afterDropdownMenuHide?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1402. afterDropdownMenuShow?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1403. afterFilter?: (formulasStack: any[]) => void;
  1404. afterGetCellMeta?: (row: number, col: number, cellProperties: GridSettings) => void;
  1405. afterGetColHeader?: (col: number, TH: Element) => void;
  1406. afterGetColumnHeaderRenderers?: (array: any[]) => void;
  1407. afterGetRowHeader?: (row: number, TH: Element) => void;
  1408. afterGetRowHeaderRenderers?: (array: any[]) => void;
  1409. afterInit?: () => void;
  1410. afterLanguageChange?: (languageCode: string) => void;
  1411. afterListen?: () => void;
  1412. afterLoadData?: (firstTime: boolean) => void;
  1413. afterMergeCells?: (cellRange: wot.CellRange, mergeParent: object, auto: boolean) => void;
  1414. afterModifyTransformEnd?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void;
  1415. afterModifyTransformStart?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void;
  1416. afterMomentumScroll?: () => void;
  1417. afterOnCellContextMenu?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1418. afterOnCellCornerDblClick?: (event: MouseEvent) => void;
  1419. afterOnCellCornerMouseDown?: (event: MouseEvent) => void;
  1420. afterOnCellMouseDown?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1421. afterOnCellMouseOver?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1422. afterOnCellMouseOut?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1423. afterOnCellMouseUp?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1424. afterPaste?: (data: any[], coords: any[]) => void;
  1425. afterPluginsInitialized?: () => void;
  1426. afterRedo?: (action: object) => void;
  1427. afterRemoveCellMeta?: (row: number, column: number, key: string, value: any) => void;
  1428. afterRemoveCol?: (index: number, amount: number) => void;
  1429. afterRemoveRow?: (index: number, amount: number) => void;
  1430. afterRender?: (isForced: boolean) => void;
  1431. afterRenderer?: (TD: Element, row: number, col: number, prop: string | number, value: string, cellProperties: GridSettings) => void;
  1432. afterRowMove?: (startRow: number, endRow: number) => void;
  1433. afterRowResize?: (currentRow: number, newSize: number, isDoubleClick: boolean) => void;
  1434. afterScrollHorizontally?: () => void;
  1435. afterScrollVertically?: () => void;
  1436. afterSelection?: (r: number, c: number, r2: number, c2: number, preventScrolling: object, selectionLayerLevel: number) => void;
  1437. afterSelectionByProp?: (r: number, p: string, r2: number, p2: string, preventScrolling: object, selectionLayerLevel: number) => void;
  1438. afterSelectionEnd?: (r: number, c: number, r2: number, c2: number, selectionLayerLevel: number) => void;
  1439. afterSelectionEndByProp?: (r: number, p: string, r2: number, p2: string, selectionLayerLevel: number) => void;
  1440. afterSetCellMeta?: (row: number, col: number, key: string, value: any) => void;
  1441. afterSetDataAtCell?: (changes: any[], source?: string) => void;
  1442. afterSetDataAtRowProp?: (changes: any[], source?: string) => void;
  1443. afterTrimRow?: (rows: any[]) => void;
  1444. afterUndo?: (action: object) => void;
  1445. afterUnlisten?: () => void;
  1446. afterUnmergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1447. afterUntrimRow?: (rows: any[]) => void;
  1448. afterUpdateSettings?: () => void;
  1449. afterValidate?: (isValid: boolean, value: any, row: number, prop: string | number, source: string) => void | boolean;
  1450. afterViewportColumnCalculatorOverride?: (calc: object) => void;
  1451. afterViewportRowCalculatorOverride?: (calc: object) => void;
  1452. beforeAddChild?: (parent: object, element: object | void, index: number | void) => void;
  1453. beforeAutofill?: (start: object, end: object, data: any[]) => void;
  1454. beforeAutofillInsidePopulate?: (index: object, direction: string, input: any[], deltas: any[]) => void;
  1455. beforeCellAlignment?: (stateBefore: any, range: any, type: string, alignmentClass: string) => void;
  1456. beforeChange?: (changes: [number, string | number, any, any][], source: string) => void;
  1457. beforeChangeRender?: (changes: any[], source: string) => void;
  1458. beforeColumnMove?: (columns: number[], target: number) => void;
  1459. beforeColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void;
  1460. beforeColumnSort?: (currentSortConfig: object[], destinationSortConfigs: object[]) => void;
  1461. beforeContextMenuSetItems?: (menuItems: any[]) => void;
  1462. beforeContextMenuShow?: (context: Handsontable.plugins.ContextMenu) => void;
  1463. beforeCopy?: (data: any[], coords: any[]) => any;
  1464. beforeCreateCol?: (index: number, amount: number, source?: string) => void;
  1465. beforeCreateRow?: (index: number, amount: number, source?: string) => void;
  1466. beforeCut?: (data: any[], coords: any[]) => any;
  1467. beforeDetachChild?: (parent: object, element: object) => void;
  1468. beforeDrawBorders?: (corners: any[], borderClassName: string) => void;
  1469. beforeDropdownMenuSetItems?: (menuItems: any[]) => void;
  1470. beforeDropdownMenuShow?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1471. beforeFilter?: (formulasStack: any[]) => void;
  1472. beforeGetCellMeta?: (row: number, col: number, cellProperties: GridSettings) => void;
  1473. beforeInit?: () => void;
  1474. beforeInitWalkontable?: (walkontableConfig: object) => void;
  1475. beforeKeyDown?: (event: Event) => void;
  1476. beforeLanguageChange?: (languageCode: string) => void;
  1477. beforeMergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1478. beforeOnCellContextMenu?: (event: object, coords: object, TD: Element) => void;
  1479. beforeOnCellMouseDown?: (event: Event, coords: object, TD: Element, controller: object) => void;
  1480. beforeOnCellMouseOut?: (event: Event, coords: wot.CellCoords, TD: Element) => void;
  1481. beforeOnCellMouseOver?: (event: Event, coords: wot.CellCoords, TD: Element, controller: object) => void;
  1482. beforeOnCellMouseUp?: (event: Event, coords: wot.CellCoords, TD: Element, controller: object) => void;
  1483. beforePaste?: (data: any[], coords: any[]) => any;
  1484. beforeRemoveCellClassNames?: () => string[] | void;
  1485. beforeRemoveCellMeta?: (row: number, column: number, key: string, value: any) => void;
  1486. beforeRedo?: (action: object) => void;
  1487. beforeRemoveCol?: (index: number, amount: number, logicalCols?: any[]) => void;
  1488. beforeRemoveRow?: (index: number, amount: number, logicalRows?: any[]) => void;
  1489. beforeRender?: (isForced: boolean, skipRender: object) => void;
  1490. beforeRenderer?: (TD: Element, row: number, col: number, prop: string | number, value: string, cellProperties: GridSettings) => void;
  1491. beforeRowMove?: (columns: number[], target: number) => void;
  1492. beforeRowResize?: (currentRow: number, newSize: number, isDoubleClick: boolean) => any;
  1493. beforeSetRangeEnd?: (coords: wot.CellCoords) => void;
  1494. beforeSetRangeStart?: (coords: wot.CellCoords) => void;
  1495. beforeSetRangeStartOnly?: (coords: wot.CellCoords) => void;
  1496. beforeStretchingColumnWidth?: (stretchedWidth: number, column: number) => void;
  1497. beforeTouchScroll?: () => void;
  1498. beforeUndo?: (action: object) => void;
  1499. beforeUnmergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1500. beforeValidate?: (value: any, row: number, prop: string | number, source?: string) => void;
  1501. beforeValueRender?: (value: any, cellProperties: object) => void;
  1502. construct?: () => void;
  1503. getRegistered?: () => string[];
  1504. hiddenColumn?: (column: number) => void;
  1505. hiddenRow?: (row: number) => void;
  1506. init?: () => void;
  1507. manualRowHeights?: (state: any[]) => void;
  1508. modifyAutofillRange?: (startArea: any[], entireArea: any[]) => void;
  1509. modifyCol?: (col: number) => void;
  1510. modifyColHeader?: (column: number) => void;
  1511. modifyColumnHeaderHeight?: () => void;
  1512. modifyColWidth?: (width: number, col: number) => void;
  1513. modifyCopyableRange?: (copyableRanges: any[]) => void;
  1514. modifyData?: (row: number, column: number, valueHolder: object, ioMode: string) => void;
  1515. modifyGetCellCoords?: (row: number, column: number, topmost: boolean) => void;
  1516. modifyRow?: (row: number) => void;
  1517. modifyRowData?: (row: number) => void;
  1518. modifyRowHeader?: (row: number) => void;
  1519. modifyRowHeaderWidth?: (rowHeaderWidth: number) => void;
  1520. modifyRowHeight?: (height: number, row: number) => void;
  1521. modifyRowSourceData?: (row: number) => void;
  1522. modifyTransformEnd?: (delta: wot.CellCoords) => void;
  1523. modifyTransformStart?: (delta: wot.CellCoords) => void;
  1524. persistentStateLoad?: (key: string, valuePlaceholder: object) => void;
  1525. persistentStateReset?: (key: string) => void;
  1526. persistentStateSave?: (key: string, value: any) => void;
  1527. skipLengthCache?: (delay: number) => void;
  1528. unmodifyCol?: (col: number) => void;
  1529. unmodifyRow?: (row: number) => void;
  1530. }
  1531. namespace I18n {
  1532. type LanguageDictionary = {
  1533. [phraseKey: string]: string | string[];
  1534. languageCode: string;
  1535. };
  1536. interface Internationalization {
  1537. dictionaryKeys: I18n.LanguageDictionary;
  1538. registerLanguageDictionary: (languageCodeOrDictionary: LanguageDictionary | string, dictionary?: LanguageDictionary) => LanguageDictionary;
  1539. getTranslatedPhrase: (dictionaryKey: string, extraArguments?: any) => string | null;
  1540. getLanguagesDictionaries: () => LanguageDictionary[];
  1541. getLanguageDictionary: (languageCode: string) => LanguageDictionary;
  1542. }
  1543. }
  1544. interface CellTypes {
  1545. autocomplete: cellTypes.Autocomplete;
  1546. checkbox: cellTypes.Checkbox;
  1547. date: cellTypes.Date;
  1548. dropdown: cellTypes.Dropdown;
  1549. handsontable: cellTypes.Handsontable;
  1550. numeric: cellTypes.Numeric;
  1551. password: cellTypes.Password;
  1552. text: cellTypes.Text;
  1553. time: cellTypes.Time;
  1554. }
  1555. interface Editors {
  1556. AutocompleteEditor: typeof Handsontable._editors.Autocomplete;
  1557. BaseEditor: typeof Handsontable._editors.Base;
  1558. CheckboxEditor: typeof Handsontable._editors.Checkbox;
  1559. DateEditor: typeof Handsontable._editors.Date;
  1560. DropdownEditor: typeof Handsontable._editors.Dropdown;
  1561. HandsontableEditor: typeof Handsontable._editors.Handsontable;
  1562. MobileEditor: typeof Handsontable._editors.Mobile;
  1563. NumericEditor: typeof Handsontable._editors.Numeric;
  1564. PasswordEditor: typeof Handsontable._editors.Password;
  1565. SelectEditor: typeof Handsontable._editors.Select;
  1566. TextEditor: typeof Handsontable._editors.Text;
  1567. getEditor: (editorName: string, hotInstance: Handsontable) => any;
  1568. registerEditor: (editorName: string, editorClass: any) => void;
  1569. }
  1570. interface Renderers {
  1571. AutocompleteRenderer: renderers.Autocomplete;
  1572. BaseRenderer: renderers.Base;
  1573. CheckboxRenderer: renderers.Checkbox;
  1574. HtmlRenderer: renderers.Html;
  1575. NumericRenderer: renderers.Numeric;
  1576. PasswordRenderer: renderers.Password;
  1577. TextRenderer: renderers.Text;
  1578. }
  1579. interface Helper {
  1580. readonly KEY_CODES: {
  1581. A: number,
  1582. ALT: number,
  1583. ARROW_DOWN: number,
  1584. ARROW_LEFT: number,
  1585. ARROW_RIGHT: number,
  1586. ARROW_UP: number,
  1587. BACKSPACE: number,
  1588. C: number,
  1589. CAPS_LOCK: number,
  1590. COMMA: number,
  1591. COMMAND_LEFT: number,
  1592. COMMAND_RIGHT: number,
  1593. CONTROL_LEFT: number,
  1594. DELETE: number,
  1595. END: number,
  1596. ENTER: number,
  1597. ESCAPE: number,
  1598. F1: number,
  1599. F2: number,
  1600. F3: number,
  1601. F4: number,
  1602. F5: number,
  1603. F6: number,
  1604. F7: number,
  1605. F8: number,
  1606. F9: number,
  1607. F10: number,
  1608. F11: number,
  1609. F12: number,
  1610. HOME: number,
  1611. INSERT: number,
  1612. MOUSE_LEFT: number,
  1613. MOUSE_MIDDLE: number,
  1614. MOUSE_RIGHT: number,
  1615. PAGE_DOWN: number,
  1616. PAGE_UP: number,
  1617. PERIOD: number,
  1618. SHIFT: number,
  1619. SPACE: number,
  1620. TAB: number,
  1621. V: number,
  1622. X: number
  1623. },
  1624. arrayAvg(array: any[]): number,
  1625. arrayEach(array: any[], iteratee: (value: any, index: number, array: any[]) => void): any[],
  1626. arrayFilter(array: any[], predicate: (value: any, index: number, array: any[]) => void): any[],
  1627. arrayFlatten(array: any[]): any[],
  1628. arrayIncludes(array: any[], searchElement: any, fromIndex: number): any[],
  1629. arrayMap(array: any[], iteratee: (value: any, index: number, array: any[]) => void): any[],
  1630. arrayMax(array: any[]): number,
  1631. arrayMin(array: any[]): number,
  1632. arrayReduce(array: any[], iteratee: (value: any, index: number, array: any[]) => void, accumulator: any, initFromArray: boolean): any,
  1633. arraySum(array: any[]): number,
  1634. arrayUnique(array: any[]): any[],
  1635. cancelAnimationFrame(id: number): void,
  1636. cellMethodLookupFactory(methodName: string, allowUndefined: boolean): void,
  1637. clone(object: object): object,
  1638. columnFactory(GridSettings: GridSettings, conflictList: any[]): object,
  1639. createEmptySpreadsheetData(rows: number, columns: number): any[],
  1640. createObjectPropListener(defaultValue?: any, propertyToListen?: string): object,
  1641. createSpreadsheetData(rows?: number, columns?: number): any[],
  1642. createSpreadsheetObjectData(rows?: number, colCount?: number): any[],
  1643. curry(func: () => void): () => void,
  1644. curryRight(func: () => void): () => void,
  1645. debounce(func: () => void, wait?: number): () => void,
  1646. deepClone(obj: object): object,
  1647. deepExtend(target: object, extension: object): void,
  1648. deepObjectSize(object: object): number,
  1649. defineGetter(object: object, property: any, value: any, options: object): void,
  1650. duckSchema(object: any[] | object): any[] | object,
  1651. endsWith(string: string, needle: string): boolean,
  1652. equalsIgnoreCase(...string: string[]): boolean,
  1653. extend(target: object, extension: object): void,
  1654. extendArray(arr: any[], extension: any[]): void,
  1655. getComparisonFunction(language: string, options?: object): any | void,
  1656. getNormalizedDate(dateString: string): Date,
  1657. getProperty(object: object, name: string): any | void,
  1658. getPrototypeOf(obj: object): any | void,
  1659. hasCaptionProblem(): boolean | void,
  1660. inherit(Child: object, Parent: object): object,
  1661. isChrome(): boolean,
  1662. isCtrlKey(keyCode: number): boolean,
  1663. isDefined(variable: any): boolean,
  1664. isEdge(): boolean,
  1665. isEmpty(variable: any): boolean,
  1666. isFunction(func: any): boolean,
  1667. isIE(): boolean,
  1668. isIE8(): boolean,
  1669. isIE9(): boolean,
  1670. isKey(keyCode: number, baseCode: string): boolean
  1671. isMetaKey(keyCode: number): boolean,
  1672. isMobileBrowser(): boolean,
  1673. isMSBrowser(): boolean,
  1674. isNumeric(n: any): boolean,
  1675. isObject(obj: any): boolean,
  1676. isObjectEqual(object1: object | any[], object2: object | any[]): boolean,
  1677. isPercentValue(value: string): boolean,
  1678. isPrintableChar(keyCode: number): boolean,
  1679. isSafari(): boolean,
  1680. isTouchSupported(): boolean,
  1681. isUndefined(variable: any): boolean,
  1682. isWebComponentSupportedNatively(): boolean,
  1683. mixin(Base: object, ...mixins: object[]): object,
  1684. objectEach(object: object, iteratee: (value: any, key: any, object: object) => void): object,
  1685. padStart(string: string, maxLength: number, fillString?: string): string,
  1686. partial(func: () => void, ...params: any[]): () => void,
  1687. pipe(...functions: (() => void)[]): () => void,
  1688. pivot(arr: any[]): any[],
  1689. randomString(): string,
  1690. rangeEach(rangeFrom: number, rangeTo: number, iteratee: (index: number) => void): void,
  1691. rangeEachReverse(rangeFrom: number, rangeTo: number, iteratee: (index: number) => void): void,
  1692. requestAnimationFrame(callback: () => void): number,
  1693. spreadsheetColumnIndex(label: string): number,
  1694. spreadsheetColumnLabel(index: number): string,
  1695. startsWith(string: string, needle: string): boolean,
  1696. stringify(value: any): string,
  1697. stripTags(string: string): string,
  1698. substitute(template: string, variables?: object): string,
  1699. throttle(func: () => void, wait?: number): () => void,
  1700. throttleAfterHits(func: () => void, wait?: number, hits?: number): () => void,
  1701. to2dArray(arr: any[]): void,
  1702. toUpperCaseFirst(string: string): string,
  1703. translateRowsToColumns(input: any[]): any[],
  1704. valueAccordingPercent(value: number, percent: string | number): number
  1705. }
  1706. interface Dom {
  1707. HTML_CHARACTERS: RegExp,
  1708. addClass: (element: HTMLElement, className: string | any[]) => void;
  1709. addEvent: (element: HTMLElement, event: string, callback: () => void) => void;
  1710. closest: (element: HTMLElement, nodes: any[], until?: HTMLElement) => HTMLElement | void;
  1711. closestDown: (element: HTMLElement, nodes: any[], until?: HTMLElement) => HTMLElement | void;
  1712. empty: (element: HTMLElement) => void;
  1713. fastInnerHTML: (element: HTMLElement, content: string) => void;
  1714. fastInnerText: (element: HTMLElement, content: string) => void;
  1715. getCaretPosition: (el: HTMLElement) => number;
  1716. getComputedStyle: (element: HTMLElement) => CSSStyleDeclaration | object;
  1717. getCssTransform: (element: HTMLElement) => number | void;
  1718. getParent: (element: HTMLElement, level?: number) => HTMLElement | void;
  1719. getScrollLeft: (element: HTMLElement) => number;
  1720. getScrollTop: (element: HTMLElement) => number;
  1721. getScrollableElement: (element: HTMLElement) => HTMLElement;
  1722. getScrollbarWidth: () => number;
  1723. getSelectionEndPosition: (el: HTMLElement) => number;
  1724. getSelectionText: () => string;
  1725. getStyle: (element: HTMLElement, prop: string) => string;
  1726. getTrimmingContainer: (base: HTMLElement) => HTMLElement;
  1727. getWindowScrollLeft: () => number;
  1728. getWindowScrollTop: () => number;
  1729. hasClass: (element: HTMLElement, className: string) => boolean;
  1730. hasHorizontalScrollbar: (element: HTMLElement) => boolean;
  1731. hasVerticalScrollbar: (element: HTMLElement) => boolean;
  1732. index: (element: Element) => number;
  1733. innerHeight: (element: HTMLElement) => number;
  1734. innerWidth: (element: HTMLElement) => number;
  1735. isChildOf: (child: HTMLElement, parent: object | string) => boolean;
  1736. isChildOfWebComponentTable: (element: Element) => boolean;
  1737. isImmediatePropagationStopped: (event: Event) => boolean;
  1738. isInput: (element: HTMLElement) => boolean;
  1739. isLeftClick: (event: Event) => boolean;
  1740. isOutsideInput: (element: HTMLElement) => boolean;
  1741. isRightClick: (event: Event) => boolean;
  1742. isVisible: (elem: HTMLElement) => boolean;
  1743. offset: (elem: HTMLElement) => object;
  1744. outerHeight: (elem: HTMLElement) => number;
  1745. outerWidth: (element: HTMLElement) => number;
  1746. overlayContainsElement: (overlayType: string, element: HTMLElement) => boolean;
  1747. pageX: (event: Event) => number;
  1748. pageY: (event: Event) => number;
  1749. polymerUnwrap: (element: HTMLElement) => any | void;
  1750. polymerWrap: (element: HTMLElement) => any | void;
  1751. removeClass: (element: HTMLElement, className: string | any[]) => void;
  1752. removeEvent: (element: HTMLElement, event: string, callback: () => void) => void;
  1753. removeTextNodes: (element: HTMLElement, parent: HTMLElement) => void;
  1754. resetCssTransform: (element: HTMLElement) => void;
  1755. setCaretPosition: (element: HTMLElement, pos: number, endPos: number) => void;
  1756. setOverlayPosition: (overlayElem: HTMLElement, left: number, top: number) => void;
  1757. stopImmediatePropagation: (event: Event) => void;
  1758. stopPropagation: (event: Event) => void;
  1759. }
  1760. interface Plugins {
  1761. AutoColumnSize: plugins.AutoColumnSize,
  1762. Autofill: plugins.Autofill,
  1763. AutoRowSize: plugins.AutoRowSize,
  1764. BasePlugin: plugins.Base,
  1765. BindRowsWithHeaders: plugins.BindRowsWithHeaders,
  1766. CollapsibleColumns: plugins.CollapsibleColumns,
  1767. ColumnSorting: plugins.ColumnSorting,
  1768. ColumnSummary: plugins.ColumnSummary,
  1769. Comments: plugins.Comments,
  1770. ContextMenu: plugins.ContextMenu,
  1771. CopyPaste: plugins.CopyPaste,
  1772. DragToScroll: plugins.DragToScroll,
  1773. DropdownMenu: plugins.DropdownMenu,
  1774. ExportFile: plugins.ExportFile,
  1775. Filters: plugins.Filters,
  1776. Formulas: plugins.Formulas,
  1777. GanttChart: plugins.GanttChart,
  1778. HeaderTooltips: plugins.HeaderTooltips,
  1779. HiddenColumns: plugins.HiddenColumns,
  1780. HiddenRows: plugins.HiddenRows,
  1781. ManualColumnFreeze: plugins.ManualColumnFreeze,
  1782. ManualColumnMove: plugins.ManualColumnMove,
  1783. ManualColumnResize: plugins.ManualColumnResize,
  1784. ManualRowMove: plugins.ManualRowMove,
  1785. ManualRowResize: plugins.ManualRowResize;
  1786. MergeCells: plugins.MergeCells;
  1787. MultiColumnSorting: plugins.MultiColumnSorting,
  1788. MultipleSelectionHandles: plugins.MultipleSelectionHandles,
  1789. NestedHeaders: plugins.NestedHeaders,
  1790. NestedRows: plugins.NestedRows,
  1791. ObserveChanges: plugins.ObserveChanges,
  1792. Search: plugins.Search,
  1793. TouchScroll: plugins.TouchScroll,
  1794. TrimRows: plugins.TrimRows,
  1795. registerPlugin: () => void
  1796. }
  1797. // Plugin collection, map for getPlugin method
  1798. interface PluginsCollection {
  1799. autoColumnSize: plugins.AutoColumnSize,
  1800. autofill: plugins.Autofill,
  1801. autoRowSize: plugins.AutoRowSize,
  1802. bindRowsWithHeaders: plugins.BindRowsWithHeaders,
  1803. collapsibleColumns: plugins.CollapsibleColumns,
  1804. columnSorting: plugins.ColumnSorting,
  1805. columnSummary: plugins.ColumnSummary,
  1806. comments: plugins.Comments,
  1807. contextMenu: plugins.ContextMenu,
  1808. copyPaste: plugins.CopyPaste,
  1809. dragToScroll: plugins.DragToScroll,
  1810. dropdownMenu: plugins.DropdownMenu,
  1811. exportFile: plugins.ExportFile,
  1812. filters: plugins.Filters,
  1813. formulas: plugins.Formulas,
  1814. ganttChart: plugins.GanttChart,
  1815. headerTooltips: plugins.HeaderTooltips,
  1816. hiddenColumns: plugins.HiddenColumns,
  1817. hiddenRows: plugins.HiddenRows,
  1818. manualColumnFreeze: plugins.ManualColumnFreeze,
  1819. manualColumnMove: plugins.ManualColumnMove,
  1820. manualColumnResize: plugins.ManualColumnResize,
  1821. manualRowMove: plugins.ManualRowMove,
  1822. manualRowResize: plugins.ManualRowResize;
  1823. mergeCells: plugins.MergeCells;
  1824. multiColumnSorting: plugins.MultiColumnSorting,
  1825. multipleSelectionHandles: plugins.MultipleSelectionHandles,
  1826. nestedHeaders: plugins.NestedHeaders,
  1827. nestedRows: plugins.NestedRows,
  1828. observeChanges: plugins.ObserveChanges,
  1829. search: plugins.Search,
  1830. touchScroll: plugins.TouchScroll,
  1831. trimRows: plugins.TrimRows,
  1832. }
  1833. // plugins
  1834. // Comments
  1835. interface CommentObject {
  1836. row: number,
  1837. col: number,
  1838. comment?: {
  1839. value?: string,
  1840. readOnly?: boolean,
  1841. style?: {
  1842. height?: number,
  1843. width?: number
  1844. }
  1845. }
  1846. }
  1847. // ContextMenu
  1848. namespace contextMenu {
  1849. interface Options {
  1850. start: wot.CellCoords,
  1851. end: wot.CellCoords
  1852. }
  1853. interface Settings {
  1854. callback: (key: string, options: contextMenu.Options) => void;
  1855. items: any;
  1856. }
  1857. }
  1858. namespace columnSorting {
  1859. type SortOrderType = 'asc' | 'desc';
  1860. type Config = { column: number, sortOrder: SortOrderType }
  1861. interface Settings {
  1862. initialConfig?: Config,
  1863. sortEmptyCells?: boolean,
  1864. indicator?: boolean,
  1865. headerAction?: boolean,
  1866. compareFunctionFactory?: ((sortOrder: SortOrderType, columnMeta: GridSettings) =>
  1867. (value: any, nextValue: any) => -1 | 0 | 1)
  1868. }
  1869. }
  1870. namespace multiColumnSorting {
  1871. interface Settings {
  1872. initialConfig?: columnSorting.Config | Array<columnSorting.Config>,
  1873. sortEmptyCells?: boolean,
  1874. indicator?: boolean,
  1875. headerAction?: boolean,
  1876. compareFunctionFactory?: ((sortOrder: columnSorting.SortOrderType, columnMeta: GridSettings) =>
  1877. (value: any, nextValue: any) => -1 | 0 | 1)
  1878. }
  1879. }
  1880. }
  1881. declare class Handsontable extends _Handsontable.Core {
  1882. static baseVersion: string;
  1883. static buildDate: string;
  1884. static packageName: string;
  1885. static version: string;
  1886. static cellTypes: Handsontable.CellTypes;
  1887. static languages: Handsontable.I18n.Internationalization;
  1888. static dom: Handsontable.Dom;
  1889. static editors: Handsontable.Editors;
  1890. static helper: Handsontable.Helper;
  1891. static hooks: Handsontable.Hooks;
  1892. static plugins: Handsontable.Plugins;
  1893. static renderers: Handsontable.Renderers;
  1894. }
  1895. export = Handsontable;
  1896. export as namespace Handsontable;