react-arborist 1.2.0 → 2.0.0-rc.1
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.
- package/README.md +606 -144
- package/dist/components/{drop-cursor.d.ts → cursor.d.ts} +0 -0
- package/dist/components/default-container.d.ts +7 -0
- package/dist/components/default-cursor.d.ts +3 -0
- package/dist/components/default-drag-preview.d.ts +3 -0
- package/dist/components/default-node.d.ts +4 -0
- package/dist/components/default-row.d.ts +4 -0
- package/dist/components/drag-preview-container.d.ts +2 -0
- package/dist/components/list-inner-element.d.ts +2 -0
- package/dist/components/provider.d.ts +11 -0
- package/dist/components/row-container.d.ts +8 -0
- package/dist/components/tree-container.d.ts +2 -0
- package/dist/components/tree.d.ts +5 -4
- package/dist/context.d.ts +20 -2
- package/dist/data/create-index.d.ts +5 -0
- package/dist/data/create-list.d.ts +4 -0
- package/dist/data/create-root.d.ts +5 -0
- package/dist/data/simple-tree.d.ts +43 -0
- package/dist/dnd/compute-drop.d.ts +4 -4
- package/dist/dnd/drag-hook.d.ts +3 -4
- package/dist/dnd/drop-hook.d.ts +2 -3
- package/dist/hooks/use-fresh-node.d.ts +2 -0
- package/dist/hooks/use-simple-tree.d.ts +13 -0
- package/dist/hooks/use-validated-props.d.ts +3 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +1948 -973
- package/dist/index.js.map +1 -1
- package/dist/interfaces/node-api.d.ts +67 -0
- package/dist/interfaces/tree-api.d.ts +113 -0
- package/dist/module.js +1935 -979
- package/dist/module.js.map +1 -1
- package/dist/state/dnd-slice.d.ts +20 -0
- package/dist/state/drag-slice.d.ts +7 -0
- package/dist/state/edit-slice.d.ts +8 -0
- package/dist/state/focus-slice.d.ts +12 -0
- package/dist/state/initial.d.ts +3 -0
- package/dist/state/open-slice.d.ts +30 -0
- package/dist/state/root-reducer.d.ts +13 -0
- package/dist/state/selection-slice.d.ts +36 -0
- package/dist/types/dnd.d.ts +9 -0
- package/dist/types/handlers.d.ts +24 -0
- package/dist/types/renderers.d.ts +30 -0
- package/dist/types/state.d.ts +2 -0
- package/dist/types/tree-props.d.ts +44 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/utils.d.ts +15 -6
- package/package.json +11 -7
- package/src/components/cursor.tsx +15 -0
- package/src/components/default-container.tsx +238 -0
- package/src/components/{default-drop-cursor.tsx → default-cursor.tsx} +9 -8
- package/src/components/{preview.tsx → default-drag-preview.tsx} +25 -41
- package/src/components/default-node.tsx +50 -0
- package/src/components/default-row.tsx +21 -0
- package/src/components/drag-preview-container.tsx +26 -0
- package/src/components/list-inner-element.tsx +22 -0
- package/src/components/list-outer-element.tsx +26 -15
- package/src/components/provider.tsx +97 -0
- package/src/components/row-container.tsx +82 -0
- package/src/components/tree-container.tsx +13 -0
- package/src/components/tree.tsx +16 -44
- package/src/context.ts +36 -0
- package/src/data/create-index.ts +9 -0
- package/src/data/create-list.ts +56 -0
- package/src/data/create-root.ts +54 -0
- package/src/data/simple-tree.ts +103 -0
- package/src/dnd/compute-drop.ts +16 -16
- package/src/dnd/drag-hook.ts +25 -19
- package/src/dnd/drop-hook.ts +31 -17
- package/src/dnd/outer-drop-hook.ts +1 -1
- package/src/hooks/use-fresh-node.ts +16 -0
- package/src/hooks/use-simple-tree.ts +55 -0
- package/src/hooks/use-validated-props.ts +35 -0
- package/src/index.ts +9 -19
- package/src/interfaces/node-api.ts +187 -0
- package/src/interfaces/tree-api.ts +557 -0
- package/src/state/dnd-slice.ts +36 -0
- package/src/state/drag-slice.ts +31 -0
- package/src/state/edit-slice.ts +19 -0
- package/src/state/focus-slice.ts +28 -0
- package/src/state/initial.ts +14 -0
- package/src/state/open-slice.ts +53 -0
- package/src/state/root-reducer.ts +21 -0
- package/src/state/selection-slice.ts +75 -0
- package/src/types/dnd.ts +10 -0
- package/src/types/handlers.ts +24 -0
- package/src/types/renderers.ts +34 -0
- package/src/types/state.ts +3 -0
- package/src/types/tree-props.ts +64 -0
- package/src/types/utils.ts +26 -0
- package/src/utils.ts +125 -11
- package/tsconfig.json +1 -1
- package/dist/components/default-drop-cursor.d.ts +0 -3
- package/dist/components/list.d.ts +0 -4
- package/dist/components/preview.d.ts +0 -2
- package/dist/components/row.d.ts +0 -8
- package/dist/data/enrich-tree.d.ts +0 -2
- package/dist/data/flatten-tree.d.ts +0 -2
- package/dist/provider.d.ts +0 -3
- package/dist/reducer.d.ts +0 -46
- package/dist/selection/range.d.ts +0 -13
- package/dist/selection/selection-hook.d.ts +0 -4
- package/dist/selection/selection.d.ts +0 -33
- package/dist/tree-api.d.ts +0 -50
- package/dist/types.d.ts +0 -122
- package/src/components/drop-cursor.tsx +0 -12
- package/src/components/list.tsx +0 -25
- package/src/components/row.tsx +0 -112
- package/src/context.tsx +0 -13
- package/src/data/enrich-tree.ts +0 -74
- package/src/data/flatten-tree.ts +0 -17
- package/src/provider.tsx +0 -41
- package/src/reducer.ts +0 -161
- package/src/selection/range.ts +0 -41
- package/src/selection/selection-hook.ts +0 -25
- package/src/selection/selection.test.ts +0 -111
- package/src/selection/selection.ts +0 -186
- package/src/tree-api.ts +0 -230
- package/src/types.ts +0 -148
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { TreeApi } from "./tree-api";
|
|
3
|
+
import { IdObj } from "../types/utils";
|
|
4
|
+
declare type Params<T extends IdObj> = {
|
|
5
|
+
id: string;
|
|
6
|
+
data: T;
|
|
7
|
+
level: number;
|
|
8
|
+
children: NodeApi<T>[] | null;
|
|
9
|
+
parent: NodeApi<T> | null;
|
|
10
|
+
isDraggable: boolean;
|
|
11
|
+
isDroppable: boolean;
|
|
12
|
+
rowIndex: number | null;
|
|
13
|
+
tree: TreeApi<T>;
|
|
14
|
+
};
|
|
15
|
+
export declare class NodeApi<T extends IdObj = IdObj> {
|
|
16
|
+
tree: TreeApi<T>;
|
|
17
|
+
id: string;
|
|
18
|
+
data: T;
|
|
19
|
+
level: number;
|
|
20
|
+
children: NodeApi<T>[] | null;
|
|
21
|
+
parent: NodeApi<T> | null;
|
|
22
|
+
isDraggable: boolean;
|
|
23
|
+
isDroppable: boolean;
|
|
24
|
+
rowIndex: number | null;
|
|
25
|
+
constructor(params: Params<T>);
|
|
26
|
+
get isRoot(): boolean;
|
|
27
|
+
get isLeaf(): boolean;
|
|
28
|
+
get isInternal(): boolean;
|
|
29
|
+
get isOpen(): boolean;
|
|
30
|
+
get isEditing(): boolean;
|
|
31
|
+
get isSelected(): boolean;
|
|
32
|
+
get isSelectedStart(): boolean;
|
|
33
|
+
get isSelectedEnd(): boolean;
|
|
34
|
+
get isFocused(): boolean;
|
|
35
|
+
get isDragging(): boolean;
|
|
36
|
+
get willReceiveDrop(): boolean;
|
|
37
|
+
get state(): {
|
|
38
|
+
isEditing: boolean;
|
|
39
|
+
isDragging: boolean;
|
|
40
|
+
isSelected: boolean;
|
|
41
|
+
isSelectedStart: boolean;
|
|
42
|
+
isSelectedEnd: boolean;
|
|
43
|
+
isFocused: boolean;
|
|
44
|
+
isOpen: boolean;
|
|
45
|
+
willReceiveDrop: boolean;
|
|
46
|
+
};
|
|
47
|
+
get childIndex(): number;
|
|
48
|
+
get next(): NodeApi<T> | null;
|
|
49
|
+
get prev(): NodeApi<T> | null;
|
|
50
|
+
get nextSibling(): NodeApi<T> | null;
|
|
51
|
+
select(): void;
|
|
52
|
+
deselect(): void;
|
|
53
|
+
selectMulti(): void;
|
|
54
|
+
selectContiguous(): void;
|
|
55
|
+
activate(): void;
|
|
56
|
+
focus(): void;
|
|
57
|
+
toggle(): void;
|
|
58
|
+
open(): void;
|
|
59
|
+
openParents(): void;
|
|
60
|
+
close(): void;
|
|
61
|
+
submit(value: string): void;
|
|
62
|
+
reset(): void;
|
|
63
|
+
clone(): NodeApi<T>;
|
|
64
|
+
edit(): Promise<import("..").EditResult>;
|
|
65
|
+
handleClick: (e: React.MouseEvent) => void;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { EditResult } from "../types/handlers";
|
|
2
|
+
import { Identity, IdObj } from "../types/utils";
|
|
3
|
+
import { TreeProps } from "../types/tree-props";
|
|
4
|
+
import { MutableRefObject } from "react";
|
|
5
|
+
import { Align, FixedSizeList, ListOnItemsRenderedProps } from "react-window";
|
|
6
|
+
import { DefaultRow } from "../components/default-row";
|
|
7
|
+
import { DefaultNode } from "../components/default-node";
|
|
8
|
+
import { NodeApi } from "./node-api";
|
|
9
|
+
import { Actions, RootState } from "../state/root-reducer";
|
|
10
|
+
import { DefaultDragPreview } from "../components/default-drag-preview";
|
|
11
|
+
import { DefaultContainer } from "../components/default-container";
|
|
12
|
+
import { Cursor } from "../dnd/compute-drop";
|
|
13
|
+
import { Store } from "redux";
|
|
14
|
+
export declare class TreeApi<T extends IdObj> {
|
|
15
|
+
store: Store<RootState, Actions>;
|
|
16
|
+
props: TreeProps<T>;
|
|
17
|
+
list: MutableRefObject<FixedSizeList | null>;
|
|
18
|
+
listEl: MutableRefObject<HTMLDivElement | null>;
|
|
19
|
+
static editPromise: null | ((args: EditResult) => void);
|
|
20
|
+
root: NodeApi<T>;
|
|
21
|
+
visibleNodes: NodeApi<T>[];
|
|
22
|
+
visibleStartIndex: number;
|
|
23
|
+
visibleStopIndex: number;
|
|
24
|
+
idToIndex: {
|
|
25
|
+
[id: string]: number;
|
|
26
|
+
};
|
|
27
|
+
constructor(store: Store<RootState, Actions>, props: TreeProps<T>, list: MutableRefObject<FixedSizeList | null>, listEl: MutableRefObject<HTMLDivElement | null>);
|
|
28
|
+
update(props: TreeProps<T>): void;
|
|
29
|
+
dispatch(action: Actions): import("redux").AnyAction;
|
|
30
|
+
get state(): import("redux").CombinedState<{
|
|
31
|
+
nodes: import("redux").CombinedState<{
|
|
32
|
+
focus: import("../state/focus-slice").FocusState;
|
|
33
|
+
edit: import("../state/edit-slice").EditState;
|
|
34
|
+
open: import("../state/open-slice").OpenSlice;
|
|
35
|
+
selection: import("../state/selection-slice").SelectionState;
|
|
36
|
+
drag: import("../state/drag-slice").DragSlice;
|
|
37
|
+
}>;
|
|
38
|
+
dnd: import("../state/dnd-slice").DndState;
|
|
39
|
+
}>;
|
|
40
|
+
get openState(): import("../state/open-slice").OpenMap;
|
|
41
|
+
get width(): number;
|
|
42
|
+
get height(): number;
|
|
43
|
+
get indent(): number;
|
|
44
|
+
get rowHeight(): number;
|
|
45
|
+
get searchTerm(): string;
|
|
46
|
+
get matchFn(): (node: NodeApi<T>) => boolean;
|
|
47
|
+
accessChildren(data: T): T[] | null;
|
|
48
|
+
accessId(data: T): string;
|
|
49
|
+
get firstNode(): NodeApi<T>;
|
|
50
|
+
get lastNode(): NodeApi<T>;
|
|
51
|
+
get focusedNode(): NodeApi<T> | null;
|
|
52
|
+
get mostRecentNode(): NodeApi<T> | null;
|
|
53
|
+
get nextNode(): NodeApi<T> | null;
|
|
54
|
+
get prevNode(): NodeApi<T> | null;
|
|
55
|
+
get(id: string | null): NodeApi<T> | null;
|
|
56
|
+
at(index: number): NodeApi<T> | null;
|
|
57
|
+
nodesBetween(startId: string | null, endId: string | null): NodeApi<T>[];
|
|
58
|
+
indexOf(id: string | null | IdObj): number | null;
|
|
59
|
+
get editingId(): string | null;
|
|
60
|
+
createInternal(): Promise<void>;
|
|
61
|
+
createLeaf(): Promise<void>;
|
|
62
|
+
private create;
|
|
63
|
+
delete(node: string | IdObj | null | string[] | IdObj[]): Promise<void>;
|
|
64
|
+
edit(node: string | IdObj): Promise<EditResult>;
|
|
65
|
+
submit(node: Identity, value: string): Promise<void>;
|
|
66
|
+
reset(): void;
|
|
67
|
+
activate(id: string | IdObj | null): void;
|
|
68
|
+
private resolveEdit;
|
|
69
|
+
get selectedIds(): Set<string>;
|
|
70
|
+
get selectedNodes(): NodeApi<T>[];
|
|
71
|
+
focus(node: Identity, opts?: {
|
|
72
|
+
scroll?: boolean;
|
|
73
|
+
}): void;
|
|
74
|
+
pageUp(): void;
|
|
75
|
+
pageDown(): void;
|
|
76
|
+
select(node: Identity, opts?: {
|
|
77
|
+
align?: Align;
|
|
78
|
+
}): void;
|
|
79
|
+
deselect(node: Identity): void;
|
|
80
|
+
selectMulti(identity: Identity): void;
|
|
81
|
+
selectContiguous(identity: Identity): void;
|
|
82
|
+
deselectAll(): void;
|
|
83
|
+
selectAll(): void;
|
|
84
|
+
get cursorParentId(): string | null;
|
|
85
|
+
get cursorOverFolder(): boolean;
|
|
86
|
+
hideCursor(): void;
|
|
87
|
+
showCursor(cursor: Cursor): void;
|
|
88
|
+
open(identity: Identity): void;
|
|
89
|
+
close(identity: Identity): void;
|
|
90
|
+
toggle(identity: Identity): void;
|
|
91
|
+
openParents(identity: Identity): void;
|
|
92
|
+
openSiblings(node: NodeApi<T>): void;
|
|
93
|
+
scrollTo(identity: Identity, align?: Align): Promise<void> | undefined;
|
|
94
|
+
get isEditing(): boolean;
|
|
95
|
+
get isFiltered(): boolean;
|
|
96
|
+
get hasFocus(): boolean;
|
|
97
|
+
isSelected(id?: string): boolean;
|
|
98
|
+
isOpen(id?: string): boolean;
|
|
99
|
+
isDraggable(data: T): boolean;
|
|
100
|
+
isDroppable(data: T): boolean;
|
|
101
|
+
isDragging(node: string | IdObj | null): boolean;
|
|
102
|
+
isFocused(id: string): boolean;
|
|
103
|
+
isMatch(node: NodeApi<T>): boolean;
|
|
104
|
+
willReceiveDrop(node: string | IdObj | null): boolean;
|
|
105
|
+
onFocus(): void;
|
|
106
|
+
onBlur(): void;
|
|
107
|
+
onItemsRendered(args: ListOnItemsRenderedProps): void;
|
|
108
|
+
get renderContainer(): import("react").ElementType<{}> | typeof DefaultContainer;
|
|
109
|
+
get renderRow(): import("react").ElementType<import("..").RowRendererProps<T>> | typeof DefaultRow;
|
|
110
|
+
get renderNode(): import("react").ElementType<import("..").NodeRendererProps<T>> | typeof DefaultNode;
|
|
111
|
+
get renderDragPreview(): import("react").ComponentType<import("..").DragPreviewProps> | typeof DefaultDragPreview;
|
|
112
|
+
get renderCursor(): import("react").ComponentType<import("..").DropCursorProps> | import("react").NamedExoticComponent<import("..").DropCursorProps>;
|
|
113
|
+
}
|