UNPKG

@visactor/vtable

Version:

canvas table width high performance

364 lines (363 loc) 9.88 kB
import type { CellAddress, CellRange, CellLocation, FieldDef, CellAddressWithBound } from './table-engine'; import type { DropDownMenuEventArgs, MenuListItem, PivotInfo } from './menu'; import type { IDimensionInfo, MergeCellInfo, RectProps, SortOrder } from './common'; import type { IconFuncTypeEnum, CellInfo, HierarchyState } from '.'; import type { Icon } from '../scenegraph/graphic/icon'; import type { FederatedPointerEvent, IEventTarget } from './../vrender'; export type KeyboardEventListener = (e: KeyboardEvent) => void; export type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (args: TableEventHandlersEventArgumentMap[TYPE]) => TableEventHandlersReturnMap[TYPE]; export type EventListenerId = number; export type SelectedCellEvent = CellAddress & { ranges: CellRange[]; }; export type MenuEvent = CellAddress & { dropDownMenu: MenuListItem[]; pivotInfo: PivotInfo; }; export type TouchCellEvent = CellAddress & { event: TouchEvent; }; export type KeydownEvent = { keyCode: number; code: string; event: KeyboardEvent; stopCellMoving?: () => void; scaleRatio?: number; }; export type MousePointerCellEvent = CellAddressWithBound & CellInfo & { scaleRatio?: number; targetIcon?: { name: string; position: RectProps; funcType: string; }; event?: MouseEvent | PointerEvent | TouchEvent; federatedEvent?: FederatedPointerEvent; target: IEventTarget | undefined; mergeCellInfo?: MergeCellInfo; }; export type MousePointerMultiCellEvent = MousePointerCellEvent & { cells: CellInfo[][]; }; export type MousePointerSparklineEvent = MousePointerCellEvent & { sparkline: { pointData: any; }; }; export interface TableEventHandlersEventArgumentMap { selected_cell: SelectedCellEvent; selected_clear: {}; click_cell: MousePointerCellEvent; dblclick_cell: MousePointerCellEvent; mouseenter_table: { event?: MouseEvent | PointerEvent | TouchEvent; }; mouseleave_table: { event?: MouseEvent | PointerEvent | TouchEvent; }; mousedown_table: { event?: MouseEvent | PointerEvent | TouchEvent; }; mousemove_table: MousePointerCellEvent; mouseenter_cell: MousePointerCellEvent; mouseleave_cell: MousePointerCellEvent; mousemove_cell: MousePointerCellEvent; mousedown_cell: MousePointerCellEvent; mouseup_cell: MousePointerCellEvent; contextmenu_cell: MousePointerMultiCellEvent; keydown: KeydownEvent; scroll: { event: WheelEvent; scrollLeft: number; scrollTop: number; scrollWidth: number; scrollHeight: number; viewWidth: number; viewHeight: number; scrollDirection: 'horizontal' | 'vertical'; scrollRatioX?: number; scrollRatioY?: number; dx?: number; dy?: number; }; can_scroll: { event: WheelEvent; scrollLeft: number; scrollTop: number; scrollWidth: number; scrollHeight: number; viewWidth: number; viewHeight: number; scrollDirection: 'horizontal' | 'vertical'; scrollRatioX?: number; scrollRatioY?: number; dx?: number; dy?: number; }; scroll_vertical_end: { scrollLeft: number; scrollTop: number; scrollWidth: number; scrollHeight: number; viewWidth: number; viewHeight: number; }; scroll_horizontal_end: { scrollLeft: number; scrollTop: number; scrollWidth: number; scrollHeight: number; viewWidth: number; viewHeight: number; }; resize_column: { col: number; colWidth: number; }; resize_column_end: { col: number; colWidths: number[]; }; resize_row: { row: number; rowHeight: number; }; resize_row_end: { row: number; rowHeight: number; }; change_header_position: { source: CellAddress; target: CellAddress; event: Event; }; change_header_position_start: { col: number; row: number; x: number; y: number; backX: number; lineX: number; backY: number; lineY: number; event: Event; }; changing_header_position: { col: number; row: number; x: number; y: number; backX: number; lineX: number; backY: number; lineY: number; event: Event; }; change_header_position_fail: { source: CellAddress; target: CellAddress; event: Event; }; sort_click: { field: FieldDef; order: SortOrder; event: Event; }; after_sort: { field: FieldDef; order: SortOrder; event: Event; }; freeze_click: { col: number; row: number; fields: FieldDef[]; colCount: number; }; dropdown_menu_click: DropDownMenuEventArgs; mouseover_chart_symbol: MousePointerSparklineEvent; drag_select_end: MousePointerMultiCellEvent; copy_data: { cellRange: CellRange[]; copyData: string; }; drillmenu_click: DrillMenuEventInfo; dropdown_icon_click: CellAddress & { event: Event; }; dropdown_menu_clear: CellAddress; show_menu: { x: number; y: number; col: number; row: number; type: 'dropDown' | 'contextmenu' | 'custom'; }; hide_menu: []; icon_click: { name: string; col: number; row: number; x: number; y: number; funcType?: IconFuncTypeEnum | string; icon: Icon; event: Event; }; pivot_sort_click: { col: number; row: number; order: SortOrder; dimensionInfo: IDimensionInfo[]; cellLocation: CellLocation; event: Event; }; tree_hierarchy_state_change: { col: number; row: number; hierarchyState: HierarchyState; dimensionInfo?: IDimensionInfo[]; originData?: any; }; vchart_event_type: { eventName: string; col: number; row: number; chartEventArguments: any; }; change_order: []; source_length_update: number; legend_item_click: { model: any; value: any; event: PointerEvent; }; legend_item_hover: { model: any; value: any; event: PointerEvent; }; legend_item_unHover: { model: any; value: any; event: PointerEvent; }; legend_change: { model: any; value: any; event: PointerEvent; }; mouseenter_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom'; }; mouseleave_axis: MousePointerCellEvent & { axisPosition: 'left' | 'right' | 'top' | 'bottom'; }; checkbox_state_change: MousePointerCellEvent & { checked: boolean; }; radio_state_change: MousePointerCellEvent & { radioIndexInCell: number | undefined; }; switch_state_change: MousePointerCellEvent & { checked: boolean; }; after_render: null; initialized: null; change_cell_value: { col: number; row: number; rawValue: string | number; currentValue: string | number; changedValue: string | number; }; mousedown_fill_handle: {}; drag_fill_handle_end: { direction?: 'top' | 'bottom' | 'left' | 'right'; }; dblclick_fill_handle: {}; empty_tip_click: {}; empty_tip_dblclick: {}; button_click: { col: number; row: number; event: Event; }; } export interface DrillMenuEventInfo { dimensionKey: string | number; title: string; drillDown: boolean; drillUp: boolean; col: number; row: number; event: Event; } export interface TableEventHandlersReturnMap { selected_cell: void; selected_clear: void; click_cell: void; dblclick_cell: void; mouseenter_table: void; mouseleave_table: void; mousedown_table: void; mousemove_table: void; mouseenter_cell: void; mouseleave_cell: void; mouseout_cell: void; mousemove_cell: void; mousedown_cell: boolean; mouseup_cell: void; contextmenu_cell: void; keydown: void; scroll: void; can_scroll: void | boolean; focus_table: void; blur_table: void; resize_column: void; resize_column_end: void; resize_row: void; resize_row_end: void; change_header_position: void; change_header_position_start: void; changing_header_position: void; change_header_position_fail: void; sort_click: boolean; after_sort: void; freeze_click: void; dropdown_menu_click: void; mouseover_chart_symbol: void; drag_select_end: void; copy_data: void; drillmenu_click: void; dropdown_icon_click: void; dropdown_menu_clear: void; show_menu: void; hide_menu: void; icon_click: void; pivot_sort_click: void; tree_hierarchy_state_change: void; vchart_event_type: void; change_order: void; source_length_update: void; legend_item_click: void; legend_item_hover: void; legend_item_unHover: void; legend_change: void; mouseenter_axis: void; mouseleave_axis: void; checkbox_state_change: void; radio_state_change: void; switch_state_change: void; after_render: void; initialized: void; change_cell_value: void; mousedown_fill_handle: void; drag_fill_handle_end: void; dblclick_fill_handle: void; scroll_vertical_end: void; scroll_horizontal_end: void; empty_tip_click: void; empty_tip_dblclick: void; button_click: void; }