import { CardInterface , CardValue , ClipboardData , NodeInterface , PluginOptions , } from '@aomao/engine' ; import { EventEmitter2 } from 'eventemitter2' ; export interface HelperInterface { isEmptyModelCol ( model ) : model is TableModelEmptyCol ; param { NativeNode } table return { ( tdModel [ ] ) [ ] } tdModel getTableModel ( table ) : TableModel ; param { nativeNode } table return { nativeNode } normalize ( table ) : NodeInterface ; param event fixDragEvent ( event ) : void ; param from param to copyCss ( from , to ) : void ; param from param to copyTo ( from , to ) : void ; param html copyHTML ( html ) : void ; returns getCopyData ( ) : { html : string ; text : string ; } | undefined ; trimBlankSpan ( node ) : NodeInterface ; param { NodeInterface } table return { NodeInterface } normalizeTable ( table ) : NodeInterface ; } export interface TemplateInterface { param value param { number } value . rows param { number } value . cols param { string } value . html return { string } htmlEdit ( value , menus ) : string ; htmlView ( value ) : string ; renderRowsHeader ( rows ) : string ; renderColsHeader ( rows ) : string ; } export interface TableValue extends CardValue { id : string ; rows : number ; cols : number ; width ? : number ; height ? : number ; html ? : string ; color ? : string ; noBorder ? : boolean ; overflow ? : boolean ; } export type TableMenuItem = { action ? : string ; icon ? : string ; text ? : string ; split ? : true ; } ; export type TableMenu = Array < TableMenuItem > ; export type TableModelCol = { isShadow ? : boolean ; rowSpan : number ; colSpan : number ; isMulti ? : boolean ; element : HTMLTableColElement | HTMLTableDataCellElement | null ; } ; export type TableModelEmptyCol = { isEmpty : true ; parent : { row : number ; col : number ; } ; } ; export type TableModel = { rows : number ; cols : number ; width : number ; height : number ; table : Array < Array < TableModelCol | TableModelEmptyCol > > ; } ; export interface TableInterface < V extends TableValue = TableValue > extends CardInterface < V > { wrapper ? : NodeInterface ; helper : HelperInterface ; template : TemplateInterface ; selection : TableSelectionInterface ; conltrollBar : ControllBarInterface ; command : TableCommandInterface ; colMinWidth : number ; rowMinHeight : number ; isChanged : boolean ; /**
     * 渲染
     */ render ( ) : string | NodeInterface | void ; } export interface TableOptions extends PluginOptions { hotkey ? : string | Array < string > ; overflow ? : { maxLeftWidth ? : ( ) => number ; maxRightWidth ? : ( ) => number ; } ; colMinWidth ? : number ; rowMinHeight ? : number ; markdown ? : boolean ; } export type ControllOptions = { col_min_width : number ; row_min_height : number ; } ; export type ControllDragging = { x : number ; y : number ; } ; export type ControllDraggingHeader = { element : NodeInterface ; minIndex : number ; maxIndex : number ; count : number ; index ? : number ; isNext ? : boolean ; } ; export type ControllChangeSize = { trigger : { element : NodeInterface ; height : number ; width : number ; } ; width : number ; height : number ; element : NodeInterface ; index : number ; table : { width : number ; height : number ; } ; } ; export interface ControllBarInterface extends EventEmitter2 { /**
     * 拖动参数
     */ dragging ? : ControllDragging ; /**
     * 拖动行列头部
     */ draggingHeader ? : ControllDraggingHeader ; /**
     * 调整大小参数
     */ changeSize ? : ControllChangeSize ; init ( ) : void ; refresh ( ) : void ; renderRowBars ( start ? , end ? ) : void ; renderColBars ( ) : void ; removeRow ( index ) : void ; removeCol ( index ) : void ; showContextMenu ( event ) : void ; hideContextMenu ( ) : void ; drawBackgroundColor ( color ? ) : void ; setAlign ( align ? ) : void ; destroy ( ) : void ; } export interface TableCommandInterface extends EventEmitter2 { init ( ) : void ; insertColAt ( index , count , isLeft ? , widths ? , ... args ) : void ; insertCol ( position ? , count ? , ... args ) : void ; removeCol ( ... args ) : void ; insertColLeft ( ) : void ; insertColRight ( ) : void ; insertRowAt ( index , count , isUp ? , ... args ) : void ; insertRow ( position ? , count ? , ... args ) : void ; insertRowUp ( ) : void ; insertRowDown ( ) : void ; removeRow ( ... args ) : void ; removeTable ( ) : void ; copy ( all ? ) : void ; mockCopy ( ) : void ; shortcutCopy ( event ) : void ; cut ( ) : void ; shortcutCut ( event ) : void ; clear ( ) : void ; mockPaste ( ... args ) : void ; shortcutPaste ( event ) : void ; paste ( data , ... args ) : void ; mergeCell ( ... args ) : void ; splitCell ( ... args ) : void ; hasCopyData ( ) : boolean ; } export type TableSelectionArea = { begin : { row : number ; col : number ; } ; end : { row : number ; col : number ; } ; count : number ; allCol : boolean ; allRow : boolean ; } ; export type TableSelectionDragging = { trigger : { element : NodeInterface ; } ; } ; export interface TableSelectionInterface extends EventEmitter2 { tableModel ? : TableModel ; selectArea ? : TableSelectionArea ; init ( ) : void ; render ( action ) : void ; each ( fn , reverse ? ) : void ; refreshModel ( ) : void ; getCellPoint ( td ) : Array < number > ; getCellIndex ( row , col ) : number ; getSingleCell ( ) : NodeInterface | null ; getSingleCellPoint ( ) : Array < number > ; getSelectArea ( ) : TableSelectionArea ; selectCol ( begin , end ? ) : void ; selectRow ( begin , end ? ) : void ; select ( start , end ) : void ; clearSelect ( ) : void ; getSelectionHtml ( all ? ) : string | null ; hasMergeCell ( ) : boolean ; isRowSelected ( ) : boolean ; isColSelected ( ) : boolean ; isTableSelected ( ) : boolean ; showHighlight ( area ) : void ; hideHighlight ( ) : void ; focusCell ( cell , start ? ) : void ; selectCellRange ( cell ) : void ; destroy ( ) : void ; }