@visactor/vtable
Version:
canvas table width high performance
364 lines (363 loc) • 9.88 kB
TypeScript
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;
}