handsontable.d.ts 80 KB

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