react-arborist 1.1.0 → 2.0.0-rc

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 (122) hide show
  1. package/dist/components/{drop-cursor.d.ts → cursor.d.ts} +0 -0
  2. package/dist/components/default-container.d.ts +2 -0
  3. package/dist/components/default-cursor.d.ts +3 -0
  4. package/dist/components/default-drag-preview.d.ts +3 -0
  5. package/dist/components/default-node.d.ts +4 -0
  6. package/dist/components/default-row.d.ts +4 -0
  7. package/dist/components/drag-preview-container.d.ts +2 -0
  8. package/dist/components/list-inner-element.d.ts +2 -0
  9. package/dist/components/list-outer-element.d.ts +2 -0
  10. package/dist/components/outer-drop.d.ts +4 -0
  11. package/dist/components/provider.d.ts +11 -0
  12. package/dist/components/row-container.d.ts +8 -0
  13. package/dist/components/tree-container.d.ts +2 -0
  14. package/dist/components/tree.d.ts +5 -4
  15. package/dist/context.d.ts +23 -18
  16. package/dist/data/create-index.d.ts +5 -0
  17. package/dist/data/create-list.d.ts +4 -0
  18. package/dist/data/create-root.d.ts +5 -0
  19. package/dist/data/flatten-tree.d.ts +4 -2
  20. package/dist/data/simple-tree.d.ts +43 -0
  21. package/dist/dnd/compute-drop.d.ts +4 -4
  22. package/dist/dnd/drag-hook.d.ts +3 -4
  23. package/dist/dnd/drop-hook.d.ts +2 -3
  24. package/dist/hooks/use-fresh-node.d.ts +2 -0
  25. package/dist/hooks/use-simple-tree.d.ts +13 -0
  26. package/dist/hooks/use-uncontrolled-tree.d.ts +24 -0
  27. package/dist/hooks/use-validated-props.d.ts +3 -0
  28. package/dist/index.d.ts +8 -4
  29. package/dist/index.js +2093 -1184
  30. package/dist/index.js.map +1 -1
  31. package/dist/interfaces/node-api.d.ts +67 -0
  32. package/dist/interfaces/tree-api.d.ts +112 -0
  33. package/dist/module.js +2082 -1192
  34. package/dist/module.js.map +1 -1
  35. package/dist/state/dnd-slice.d.ts +20 -0
  36. package/dist/state/drag-slice.d.ts +7 -0
  37. package/dist/state/edit-slice.d.ts +8 -0
  38. package/dist/state/focus-slice.d.ts +12 -0
  39. package/dist/state/initial.d.ts +3 -0
  40. package/dist/state/open-slice.d.ts +30 -0
  41. package/dist/state/root-reducer.d.ts +13 -0
  42. package/dist/state/selection-slice.d.ts +36 -0
  43. package/dist/types/dnd.d.ts +9 -0
  44. package/dist/types/handlers.d.ts +24 -0
  45. package/dist/types/renderers.d.ts +30 -0
  46. package/dist/types/state.d.ts +2 -0
  47. package/dist/types/tree-props.d.ts +43 -0
  48. package/dist/types/utils.d.ts +21 -0
  49. package/dist/utils/props.d.ts +3 -0
  50. package/dist/utils.d.ts +15 -6
  51. package/package.json +10 -7
  52. package/src/components/cursor.tsx +15 -0
  53. package/src/components/default-container.tsx +229 -0
  54. package/src/components/{drop-cursor.tsx → default-cursor.tsx} +15 -20
  55. package/src/components/default-drag-preview.tsx +92 -0
  56. package/src/components/default-node.tsx +15 -0
  57. package/src/components/default-row.tsx +21 -0
  58. package/src/components/drag-preview-container.tsx +26 -0
  59. package/src/components/list-inner-element.tsx +22 -0
  60. package/src/components/list-outer-element.tsx +45 -0
  61. package/src/components/outer-drop.ts +7 -0
  62. package/src/components/provider.tsx +97 -0
  63. package/src/components/row-container.tsx +82 -0
  64. package/src/components/tree-container.tsx +13 -0
  65. package/src/components/tree.tsx +17 -126
  66. package/src/context.ts +36 -0
  67. package/src/data/create-index.ts +9 -0
  68. package/src/data/create-list.ts +56 -0
  69. package/src/data/create-root.ts +53 -0
  70. package/src/data/simple-tree.ts +103 -0
  71. package/src/dnd/compute-drop.ts +16 -16
  72. package/src/dnd/drag-hook.ts +28 -23
  73. package/src/dnd/drop-hook.ts +35 -21
  74. package/src/dnd/outer-drop-hook.ts +6 -6
  75. package/src/hooks/use-fresh-node.ts +16 -0
  76. package/src/hooks/use-simple-tree.ts +55 -0
  77. package/src/hooks/use-validated-props.ts +35 -0
  78. package/src/index.ts +9 -5
  79. package/src/interfaces/node-api.ts +187 -0
  80. package/src/interfaces/tree-api.ts +552 -0
  81. package/src/state/dnd-slice.ts +36 -0
  82. package/src/state/drag-slice.ts +31 -0
  83. package/src/state/edit-slice.ts +19 -0
  84. package/src/state/focus-slice.ts +28 -0
  85. package/src/state/initial.ts +14 -0
  86. package/src/state/open-slice.ts +53 -0
  87. package/src/state/root-reducer.ts +21 -0
  88. package/src/state/selection-slice.ts +75 -0
  89. package/src/types/dnd.ts +10 -0
  90. package/src/types/handlers.ts +24 -0
  91. package/src/types/renderers.ts +34 -0
  92. package/src/types/state.ts +3 -0
  93. package/src/types/tree-props.ts +63 -0
  94. package/src/types/utils.ts +26 -0
  95. package/src/utils/props.ts +8 -0
  96. package/src/utils.ts +125 -11
  97. package/README.md +0 -220
  98. package/dist/components/preview.d.ts +0 -2
  99. package/dist/components/row.d.ts +0 -7
  100. package/dist/data/enrich-tree.d.ts +0 -2
  101. package/dist/provider.d.ts +0 -3
  102. package/dist/reducer.d.ts +0 -46
  103. package/dist/selection/range.d.ts +0 -13
  104. package/dist/selection/selection-hook.d.ts +0 -3
  105. package/dist/selection/selection.d.ts +0 -33
  106. package/dist/tree-api-hook.d.ts +0 -6
  107. package/dist/tree-api.d.ts +0 -34
  108. package/dist/types.d.ts +0 -131
  109. package/src/components/preview.tsx +0 -108
  110. package/src/components/row.tsx +0 -114
  111. package/src/context.tsx +0 -52
  112. package/src/data/enrich-tree.ts +0 -74
  113. package/src/data/flatten-tree.ts +0 -17
  114. package/src/provider.tsx +0 -61
  115. package/src/reducer.ts +0 -161
  116. package/src/selection/range.ts +0 -41
  117. package/src/selection/selection-hook.ts +0 -24
  118. package/src/selection/selection.test.ts +0 -111
  119. package/src/selection/selection.ts +0 -186
  120. package/src/tree-api-hook.ts +0 -34
  121. package/src/tree-api.ts +0 -156
  122. package/src/types.ts +0 -155
@@ -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 next(): NodeApi<T> | null;
27
+ get prev(): NodeApi<T> | null;
28
+ get nextSibling(): NodeApi<T> | null;
29
+ get isRoot(): boolean;
30
+ get isLeaf(): boolean;
31
+ get isInternal(): boolean;
32
+ get isOpen(): boolean;
33
+ get isEditing(): boolean;
34
+ get isSelected(): boolean;
35
+ get isSelectedStart(): boolean;
36
+ get isSelectedEnd(): boolean;
37
+ get isFocused(): boolean;
38
+ get childIndex(): number;
39
+ get isDragging(): boolean;
40
+ get willReceiveDrop(): boolean;
41
+ get state(): {
42
+ isEditing: boolean;
43
+ isDragging: boolean;
44
+ isSelected: boolean;
45
+ isSelectedStart: boolean;
46
+ isSelectedEnd: boolean;
47
+ isFocused: boolean;
48
+ isOpen: boolean;
49
+ willReceiveDrop: boolean;
50
+ };
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,112 @@
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
+ getChildren(data: T): T[] | null;
48
+ get firstNode(): NodeApi<T>;
49
+ get lastNode(): NodeApi<T>;
50
+ get focusedNode(): NodeApi<T> | null;
51
+ get mostRecentNode(): NodeApi<T> | null;
52
+ get nextNode(): NodeApi<T> | null;
53
+ get prevNode(): NodeApi<T> | null;
54
+ get(id: string | null): NodeApi<T> | null;
55
+ at(index: number): NodeApi<T> | null;
56
+ nodesBetween(startId: string | null, endId: string | null): NodeApi<T>[];
57
+ indexOf(id: string | null | IdObj): number | null;
58
+ get editingId(): string | null;
59
+ createInternal(): Promise<void>;
60
+ createLeaf(): Promise<void>;
61
+ private create;
62
+ delete(node: string | IdObj | null | string[] | IdObj[]): Promise<void>;
63
+ edit(node: string | IdObj): Promise<EditResult>;
64
+ submit(node: Identity, value: string): Promise<void>;
65
+ reset(): void;
66
+ activate(id: string | IdObj | null): void;
67
+ private resolveEdit;
68
+ get selectedIds(): Set<string>;
69
+ get selectedNodes(): NodeApi<T>[];
70
+ focus(node: Identity, opts?: {
71
+ scroll?: boolean;
72
+ }): void;
73
+ pageUp(): void;
74
+ pageDown(): void;
75
+ select(node: Identity, opts?: {
76
+ align?: Align;
77
+ }): void;
78
+ deselect(node: Identity): void;
79
+ selectMulti(identity: Identity): void;
80
+ selectContiguous(identity: Identity): void;
81
+ selectNone(): void;
82
+ selectAll(): void;
83
+ get cursorParentId(): string | null;
84
+ get cursorOverFolder(): boolean;
85
+ hideCursor(): void;
86
+ showCursor(cursor: Cursor): void;
87
+ open(identity: Identity): void;
88
+ close(identity: Identity): void;
89
+ toggle(identity: Identity): void;
90
+ openParents(identity: Identity): void;
91
+ openSiblings(node: NodeApi<T>): void;
92
+ scrollTo(identity: Identity, align?: Align): Promise<void> | undefined;
93
+ get isEditing(): boolean;
94
+ get isFiltered(): boolean;
95
+ get hasFocus(): boolean;
96
+ isSelected(id?: string): boolean;
97
+ isOpen(id?: string): boolean;
98
+ isDraggable(data: T): boolean;
99
+ isDroppable(data: T): boolean;
100
+ isDragging(node: string | IdObj | null): boolean;
101
+ isFocused(id: string): boolean;
102
+ isMatch(node: NodeApi<T>): boolean;
103
+ willReceiveDrop(node: string | IdObj | null): boolean;
104
+ onFocus(): void;
105
+ onBlur(): void;
106
+ onItemsRendered(args: ListOnItemsRenderedProps): void;
107
+ get renderContainer(): import("react").ElementType<{}> | typeof DefaultContainer;
108
+ get renderRow(): import("react").ElementType<import("..").RowRendererProps<T>> | typeof DefaultRow;
109
+ get renderNode(): import("react").ElementType<import("..").NodeRendererProps<T>> | typeof DefaultNode;
110
+ get renderDragPreview(): import("react").ComponentType<import("..").DragPreviewProps> | typeof DefaultDragPreview;
111
+ get renderCursor(): import("react").ComponentType<import("..").DropCursorProps> | import("react").NamedExoticComponent<import("..").DropCursorProps>;
112
+ }