@ishibashi0112/spreadsheet-grid 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/controllers/columnAutosizeRunner.d.ts +20 -0
  2. package/dist/controllers/columnHeaderDragController.d.ts +44 -0
  3. package/dist/controllers/columnMenuController.d.ts +49 -0
  4. package/dist/controllers/contextMenuController.d.ts +30 -0
  5. package/dist/controllers/filterPopoverController.d.ts +53 -0
  6. package/dist/controllers/globalFilteredOrder.d.ts +38 -0
  7. package/dist/controllers/pointerInteractionsController.d.ts +74 -0
  8. package/dist/controllers/popoverSupport.d.ts +18 -0
  9. package/dist/controllers/rowDragController.d.ts +40 -0
  10. package/dist/controllers/selectOptionsCollector.d.ts +31 -0
  11. package/dist/controllers/serverSideRowModel.d.ts +36 -0
  12. package/dist/controllers/toolPanelController.d.ts +36 -0
  13. package/dist/hooks/useCellContextMenuController.d.ts +7 -13
  14. package/dist/hooks/useColumnAutosizeRunner.d.ts +3 -13
  15. package/dist/hooks/useColumnHeaderDragController.d.ts +5 -16
  16. package/dist/hooks/useColumnMenuController.d.ts +10 -12
  17. package/dist/hooks/useColumnSelectOptionsCollector.d.ts +2 -10
  18. package/dist/hooks/useFilterPopoverController.d.ts +16 -25
  19. package/dist/hooks/useGlobalFilteredOrder.d.ts +4 -8
  20. package/dist/hooks/useGridPointerInteractions.d.ts +15 -39
  21. package/dist/hooks/useRowDragController.d.ts +4 -13
  22. package/dist/hooks/useServerSideRowModel.d.ts +5 -18
  23. package/dist/hooks/useToolPanelController.d.ts +7 -9
  24. package/dist/index.cjs +8 -8
  25. package/dist/index.js +3474 -3537
  26. package/dist/logic/chunkedLoop.d.ts +8 -0
  27. package/dist/logic/valueStore.d.ts +6 -0
  28. package/package.json +1 -1
@@ -1,22 +1,7 @@
1
1
  import { type RefObject } from 'react';
2
2
  import type { ColumnFilterUiType, ColumnFilterValue, GridColumn } from '../model/gridTypes';
3
- import { type NumberFilterConditionDraft } from '../logic/numberFilterCondition';
4
- import { type TextFilterConditionDraft } from '../logic/textFilterCondition';
5
- import { type DateFilterConditionDraft } from '../logic/dateFilterCondition';
6
- type HeaderFilterPopoverState = {
7
- columnKey: string;
8
- filterType: ColumnFilterUiType;
9
- draftValue: string;
10
- numberDraft: NumberFilterConditionDraft | null;
11
- textDraft: TextFilterConditionDraft | null;
12
- dateDraft: DateFilterConditionDraft | null;
13
- };
14
- export type FilterPopoverLayout = {
15
- top: number;
16
- left: number;
17
- width: number;
18
- maxHeight: number;
19
- };
3
+ import { type FilterPopoverLayout } from '../controllers/filterPopoverController';
4
+ export type { FilterPopoverLayout } from '../controllers/filterPopoverController';
20
5
  type UseFilterPopoverControllerArgs<T> = {
21
6
  visibleColumns: GridColumn<T>[];
22
7
  columnFilterValues: Record<string, ColumnFilterValue>;
@@ -24,20 +9,26 @@ type UseFilterPopoverControllerArgs<T> = {
24
9
  gridRootRef: RefObject<HTMLDivElement | null>;
25
10
  resolveColumnFilterType?: (column: GridColumn<T>) => ColumnFilterUiType;
26
11
  };
27
- export declare const useFilterPopoverController: <T>({ visibleColumns, columnFilterValues, enableColumnFilter, gridRootRef, resolveColumnFilterType, }: UseFilterPopoverControllerArgs<T>) => {
28
- filterPopoverState: HeaderFilterPopoverState | null;
12
+ export declare const useFilterPopoverController: <T>(args: UseFilterPopoverControllerArgs<T>) => {
13
+ filterPopoverState: import("../controllers/filterPopoverController").HeaderFilterPopoverState | null;
29
14
  filterPopoverLayout: FilterPopoverLayout | null;
30
- filterPopoverRef: RefObject<HTMLDivElement | null>;
31
- filterTextInputRef: RefObject<HTMLInputElement | null>;
32
- filterSelectRef: RefObject<HTMLSelectElement | null>;
15
+ filterPopoverRef: {
16
+ current: HTMLDivElement | null;
17
+ };
18
+ filterTextInputRef: {
19
+ current: HTMLInputElement | null;
20
+ };
21
+ filterSelectRef: {
22
+ current: HTMLSelectElement | null;
23
+ };
33
24
  isFilterPopoverOpen: boolean;
34
25
  openedFilterColumn: GridColumn<T> | null;
35
26
  openedFilterType: ColumnFilterUiType | null;
36
27
  openColumnFilterPopover: (column: GridColumn<T>) => void;
37
28
  closeColumnFilterPopover: () => void;
38
29
  updateFilterPopoverDraft: (value: string) => void;
39
- updateFilterPopoverNumberDraft: (draft: NumberFilterConditionDraft) => void;
40
- updateFilterPopoverTextDraft: (draft: TextFilterConditionDraft) => void;
41
- updateFilterPopoverDateDraft: (draft: DateFilterConditionDraft) => void;
30
+ updateFilterPopoverNumberDraft: (draft: import("../logic/numberFilterCondition").NumberFilterConditionDraft) => void;
31
+ updateFilterPopoverTextDraft: (draft: import("../logic/textFilterCondition").TextFilterConditionDraft) => void;
32
+ updateFilterPopoverDateDraft: (draft: import("../logic/dateFilterCondition").DateFilterConditionDraft) => void;
42
33
  };
43
34
  export default useFilterPopoverController;
@@ -1,11 +1,7 @@
1
- import type { GlobalFilterStatus, GridColumn } from '../model/gridTypes';
2
- import { type RowOrder } from '../logic/filtering';
3
- export declare const ASYNC_GLOBAL_FILTER_ROW_THRESHOLD = 50000;
4
- export type GlobalFilteredOrderResult = {
5
- order: RowOrder;
6
- status: GlobalFilterStatus;
7
- progress: number;
8
- };
1
+ import type { GridColumn } from '../model/gridTypes';
2
+ import { type GlobalFilteredOrderResult } from '../controllers/globalFilteredOrder';
3
+ import type { RowOrder } from '../logic/filtering';
4
+ export { ASYNC_GLOBAL_FILTER_ROW_THRESHOLD, type GlobalFilteredOrderResult, } from '../controllers/globalFilteredOrder';
9
5
  type UseGlobalFilteredOrderArgs<T> = {
10
6
  rows: T[];
11
7
  baseOrder: RowOrder;
@@ -1,11 +1,8 @@
1
- import { type Dispatch, type PointerEvent, type RefObject } from 'react';
2
- import { type GridUiAction } from '../model/gridActions';
3
- import type { CellCoord, GridColumn, GridUiState } from '../model/gridTypes';
4
- import { type GridPaneLayout } from '../logic/geometry';
5
- import type { RowMetrics } from '../logic/verticalGeometry';
6
- export declare const TOUCH_TAP_SLOP_PX = 10;
7
- export declare const TOUCH_DOUBLE_TAP_MS = 300;
8
- type UseGridPointerInteractionsArgs<T> = {
1
+ import type { RefObject } from 'react';
2
+ import type { CellCoord } from '../model/gridTypes';
3
+ import { type PointerInteractionsArgs } from '../controllers/pointerInteractionsController';
4
+ export { TOUCH_DOUBLE_TAP_MS, TOUCH_TAP_SLOP_PX, } from '../controllers/pointerInteractionsController';
5
+ type UseGridPointerInteractionsArgs<T> = Omit<PointerInteractionsArgs<T>, 'gridRootRef' | 'bodyScrollRef' | 'scrollContainerRef' | 'leftPaneScrollRef' | 'rightPaneScrollRef' | 'pointerClientRef' | 'autoScrollFrameRef' | 'onCellDoubleClickRef'> & {
9
6
  gridRootRef: RefObject<HTMLDivElement | null>;
10
7
  bodyScrollRef: RefObject<HTMLDivElement | null>;
11
8
  scrollContainerRef: RefObject<HTMLDivElement | null>;
@@ -16,40 +13,19 @@ type UseGridPointerInteractionsArgs<T> = {
16
13
  y: number;
17
14
  } | null>;
18
15
  autoScrollFrameRef: RefObject<number | null>;
19
- uiState: GridUiState;
20
- dispatch: Dispatch<GridUiAction>;
21
- enableRangeSelection: boolean;
22
- enableSorting: boolean;
23
- orderedColumns: GridColumn<T>[];
24
- filteredRowsLength: number;
25
- visibleColumnsLength: number;
26
- paneLayout: GridPaneLayout<T>;
27
- leftLeadingWidth: number;
28
- centerLeadingWidth: number;
29
- rightLeadingWidth: number;
30
- headerHeight: number;
31
- rowMetrics: RowMetrics;
32
- verticalScaleFactor: number;
33
- setHoveredRowIndex: (value: number | null) => void;
34
- setHoveredColumnIndex: (value: number | null) => void;
35
- enableRowHover: boolean;
36
- enableColumnHeaderHover: boolean;
37
- enableRowSelection: boolean;
38
- onGutterRowSelect: (viewIndex: number, opts: {
39
- shiftKey: boolean;
40
- }) => void;
41
- onGutterRowSelectDrag: (viewIndex: number) => void;
42
16
  onCellDoubleClickRef: RefObject<(cell: CellCoord) => void>;
43
17
  };
44
- export declare const useGridPointerInteractions: <T>({ gridRootRef, bodyScrollRef, scrollContainerRef, leftPaneScrollRef, rightPaneScrollRef, pointerClientRef, autoScrollFrameRef, uiState, dispatch, enableRangeSelection, enableSorting, orderedColumns, filteredRowsLength, visibleColumnsLength, paneLayout, leftLeadingWidth, centerLeadingWidth, rightLeadingWidth, headerHeight, rowMetrics, verticalScaleFactor, setHoveredRowIndex, setHoveredColumnIndex, enableRowHover, enableColumnHeaderHover, enableRowSelection, onGutterRowSelect, onGutterRowSelectDrag, onCellDoubleClickRef, }: UseGridPointerInteractionsArgs<T>) => {
18
+ export declare const useGridPointerInteractions: <T>(args: UseGridPointerInteractionsArgs<T>) => {
45
19
  updateSelectionFromPointer: (clientX: number, clientY: number) => void;
46
- handleCellPointerDown: (cell: CellCoord, event: PointerEvent<HTMLDivElement>) => void;
20
+ handleCellPointerDown: (cell: CellCoord, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
47
21
  handleCellDoubleClick: (cell: CellCoord) => void;
48
- handleCellPointerEnter: (cell: CellCoord, event: PointerEvent<HTMLDivElement>) => void;
49
- handleNativeDragStart: (event: React.DragEvent<HTMLDivElement>) => void;
50
- handleRowHeaderPointerDown: (rowIndex: number, event: PointerEvent<HTMLDivElement>) => void;
51
- handleRowHeaderPointerEnter: (rowIndex: number, event: PointerEvent<HTMLDivElement>) => void;
52
- handleColumnHeaderPointerDown: (colIndex: number, event: PointerEvent<HTMLDivElement>) => void;
53
- handleColumnHeaderPointerEnter: (colIndex: number, event: PointerEvent<HTMLDivElement>) => void;
22
+ handleCellPointerEnter: (cell: CellCoord, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
23
+ handleNativeDragStart: (event: {
24
+ preventDefault: () => void;
25
+ }) => void;
26
+ handleRowHeaderPointerDown: (rowIndex: number, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
27
+ handleRowHeaderPointerEnter: (rowIndex: number, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
28
+ handleColumnHeaderPointerDown: (colIndex: number, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
29
+ handleColumnHeaderPointerEnter: (colIndex: number, event: import("../controllers/pointerInteractionsController").GridPointerEventLike) => void;
54
30
  };
55
31
  export default useGridPointerInteractions;
@@ -1,20 +1,11 @@
1
- import { type PointerEvent, type RefObject } from 'react';
2
- import type { RowMetrics } from '../logic/verticalGeometry';
3
- import type { GridResolvedSlot } from '../model/gridTypes';
4
- type UseRowDragControllerArgs = {
5
- enabled: boolean;
6
- rowMetrics: RowMetrics;
7
- headerHeight: number;
8
- verticalScaleFactor: number;
9
- windowBaseOffsetPx: number;
1
+ import { type RefObject } from 'react';
2
+ import { type RowDragArgs } from '../controllers/rowDragController';
3
+ type UseRowDragControllerArgs = Omit<RowDragArgs, 'scrollContainerRef' | 'bodyScrollRef' | 'leftIndicatorRef' | 'centerIndicatorRef' | 'rightIndicatorRef'> & {
10
4
  scrollContainerRef: RefObject<HTMLDivElement | null>;
11
5
  bodyScrollRef: RefObject<HTMLDivElement | null>;
12
- getRowDragLabel: (viewIndex: number) => string;
13
- commitRowMove: (fromIndex: number, toIndex: number) => void;
14
- ghostSlot?: GridResolvedSlot;
15
6
  };
16
7
  export declare const useRowDragController: (args: UseRowDragControllerArgs) => {
17
- onRowDragHandlePointerDown: (viewIndex: number, event: PointerEvent<HTMLElement>) => void;
8
+ onRowDragHandlePointerDown: (viewIndex: number, event: import("../controllers/rowDragController").RowDragHandlePointerEvent) => void;
18
9
  leftIndicatorRef: RefObject<HTMLDivElement | null>;
19
10
  centerIndicatorRef: RefObject<HTMLDivElement | null>;
20
11
  rightIndicatorRef: RefObject<HTMLDivElement | null>;
@@ -1,21 +1,8 @@
1
- import type { GridRowKey, RowModel, ServerSideDataSource, ServerSideLoadErrorParams, ServerSideQuery, ServerSideWriteErrorParams } from '../model/gridTypes';
2
- import { type ServerSideCellEditInput } from '../logic/serverSideEdits';
3
- export type UseServerSideRowModelParams<T> = {
4
- dataSource?: ServerSideDataSource<T>;
5
- rowKeyGetter: (row: T, index: number) => GridRowKey;
6
- query: ServerSideQuery;
7
- queryKey: string;
8
- refreshToken?: number;
9
- onLoadError?: (error: unknown, params: ServerSideLoadErrorParams) => void;
10
- onWriteError?: (error: unknown, params: ServerSideWriteErrorParams<T>) => void;
11
- debounceMs?: number;
12
- };
13
- export type ServerSideLoadErrorState = {
14
- failedBlockCount: number;
15
- };
16
- export type ServerSideWriteErrorState = {
17
- failedRowCount: number;
18
- };
1
+ import type { RowModel } from '../model/gridTypes';
2
+ import { type ServerSideLoadErrorState, type ServerSideRowModelArgs, type ServerSideWriteErrorState } from '../controllers/serverSideRowModel';
3
+ import type { ServerSideCellEditInput } from '../logic/serverSideEdits';
4
+ export type { ServerSideLoadErrorState, ServerSideWriteErrorState, } from '../controllers/serverSideRowModel';
5
+ export type UseServerSideRowModelParams<T> = ServerSideRowModelArgs<T>;
19
6
  export type UseServerSideRowModelResult<T> = {
20
7
  rowModel: RowModel<T>;
21
8
  rowCount: number;
@@ -1,10 +1,6 @@
1
- import type { RefObject } from 'react';
2
- export type ToolPanelTab = 'filter' | 'columns' | 'sort';
3
- export type ToolPanelLayout = {
4
- top: number;
5
- left: number;
6
- width: number;
7
- };
1
+ import { type RefObject } from 'react';
2
+ import { type ToolPanelLayout, type ToolPanelTab } from '../controllers/toolPanelController';
3
+ export type { ToolPanelLayout, ToolPanelTab } from '../controllers/toolPanelController';
8
4
  type UseToolPanelControllerArgs = {
9
5
  canUseFilterTab: boolean;
10
6
  canUseColumnsTab: boolean;
@@ -14,12 +10,14 @@ type UseToolPanelControllerArgs = {
14
10
  suppressEscape?: boolean;
15
11
  onSuppressedEscape?: () => void;
16
12
  };
17
- export declare const useToolPanelController: ({ canUseFilterTab, canUseColumnsTab, canUseSortTab, gridRootRef, alliedRef, suppressEscape, onSuppressedEscape, }: UseToolPanelControllerArgs) => {
13
+ export declare const useToolPanelController: (args: UseToolPanelControllerArgs) => {
18
14
  activeToolPanelTab: ToolPanelTab | null;
19
15
  availableToolPanelTabs: ToolPanelTab[];
20
16
  toolPanelLayout: ToolPanelLayout | null;
21
17
  toolPanelFlashTick: number;
22
- toolPanelRef: RefObject<HTMLDivElement | null>;
18
+ toolPanelRef: {
19
+ current: HTMLDivElement | null;
20
+ };
23
21
  openToolPanel: (tab: ToolPanelTab) => void;
24
22
  closeToolPanel: () => void;
25
23
  moveToolPanel: (top: number, left: number) => void;