@headless-tree/core 0.0.4 → 0.0.6
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/CHANGELOG.md +12 -0
- package/lib/cjs/core/create-tree.js +11 -10
- package/lib/cjs/features/async-data-loader/feature.js +30 -21
- package/lib/cjs/features/drag-and-drop/feature.js +34 -22
- package/lib/cjs/features/drag-and-drop/types.d.ts +14 -1
- package/lib/cjs/features/drag-and-drop/utils.d.ts +1 -1
- package/lib/cjs/features/drag-and-drop/utils.js +34 -17
- package/lib/cjs/features/expand-all/feature.js +12 -9
- package/lib/cjs/features/expand-all/types.d.ts +2 -2
- package/lib/cjs/features/main/types.d.ts +4 -1
- package/lib/cjs/features/renaming/feature.js +10 -9
- package/lib/cjs/features/search/feature.js +21 -7
- package/lib/cjs/features/search/types.d.ts +1 -1
- package/lib/cjs/features/selection/feature.js +6 -4
- package/lib/cjs/features/sync-data-loader/feature.js +6 -0
- package/lib/cjs/features/sync-data-loader/types.d.ts +1 -1
- package/lib/cjs/features/tree/feature.js +41 -24
- package/lib/cjs/features/tree/types.d.ts +7 -2
- package/lib/cjs/index.d.ts +3 -1
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/types/core.d.ts +1 -3
- package/lib/cjs/utilities/create-on-drop-handler.d.ts +3 -0
- package/lib/cjs/utilities/create-on-drop-handler.js +11 -0
- package/lib/cjs/utilities/insert-items-at-target.d.ts +3 -0
- package/lib/cjs/utilities/insert-items-at-target.js +24 -0
- package/lib/cjs/utilities/remove-items-from-parents.d.ts +2 -0
- package/lib/cjs/utilities/remove-items-from-parents.js +17 -0
- package/lib/cjs/utils.d.ts +1 -4
- package/lib/cjs/utils.js +1 -53
- package/lib/esm/core/create-tree.js +11 -10
- package/lib/esm/features/async-data-loader/feature.js +30 -21
- package/lib/esm/features/drag-and-drop/feature.js +34 -22
- package/lib/esm/features/drag-and-drop/types.d.ts +14 -1
- package/lib/esm/features/drag-and-drop/utils.d.ts +1 -1
- package/lib/esm/features/drag-and-drop/utils.js +35 -18
- package/lib/esm/features/expand-all/feature.js +12 -9
- package/lib/esm/features/expand-all/types.d.ts +2 -2
- package/lib/esm/features/main/types.d.ts +4 -1
- package/lib/esm/features/renaming/feature.js +10 -9
- package/lib/esm/features/search/feature.js +21 -7
- package/lib/esm/features/search/types.d.ts +1 -1
- package/lib/esm/features/selection/feature.js +6 -4
- package/lib/esm/features/sync-data-loader/feature.js +6 -0
- package/lib/esm/features/sync-data-loader/types.d.ts +1 -1
- package/lib/esm/features/tree/feature.js +41 -24
- package/lib/esm/features/tree/types.d.ts +7 -2
- package/lib/esm/index.d.ts +3 -1
- package/lib/esm/index.js +3 -1
- package/lib/esm/types/core.d.ts +1 -3
- package/lib/esm/utilities/create-on-drop-handler.d.ts +3 -0
- package/lib/esm/utilities/create-on-drop-handler.js +7 -0
- package/lib/esm/utilities/insert-items-at-target.d.ts +3 -0
- package/lib/esm/utilities/insert-items-at-target.js +20 -0
- package/lib/esm/utilities/remove-items-from-parents.d.ts +2 -0
- package/lib/esm/utilities/remove-items-from-parents.js +13 -0
- package/lib/esm/utils.d.ts +1 -4
- package/lib/esm/utils.js +0 -50
- package/package.json +3 -3
- package/src/core/create-tree.ts +12 -8
- package/src/features/async-data-loader/feature.ts +15 -5
- package/src/features/drag-and-drop/feature.ts +42 -20
- package/src/features/drag-and-drop/types.ts +23 -6
- package/src/features/drag-and-drop/utils.ts +53 -24
- package/src/features/expand-all/feature.ts +10 -8
- package/src/features/expand-all/types.ts +2 -2
- package/src/features/main/types.ts +7 -0
- package/src/features/renaming/feature.ts +10 -5
- package/src/features/search/feature.ts +22 -5
- package/src/features/search/types.ts +1 -0
- package/src/features/selection/feature.ts +8 -3
- package/src/features/sync-data-loader/feature.ts +17 -2
- package/src/features/sync-data-loader/types.ts +1 -1
- package/src/features/tree/feature.ts +43 -23
- package/src/features/tree/types.ts +10 -2
- package/src/index.ts +4 -1
- package/src/types/core.ts +4 -4
- package/src/utilities/create-on-drop-handler.ts +14 -0
- package/src/utilities/insert-items-at-target.ts +30 -0
- package/src/utilities/remove-items-from-parents.ts +21 -0
- package/src/utils.ts +1 -69
- package/tsconfig.json +1 -1
- package/lib/cjs/data-adapters/nested-data-adapter.d.ts +0 -9
- package/lib/cjs/data-adapters/nested-data-adapter.js +0 -32
- package/lib/cjs/data-adapters/types.d.ts +0 -7
- package/lib/cjs/data-adapters/types.js +0 -2
- package/lib/esm/data-adapters/nested-data-adapter.d.ts +0 -9
- package/lib/esm/data-adapters/nested-data-adapter.js +0 -28
- package/lib/esm/data-adapters/types.d.ts +0 -7
- package/lib/esm/data-adapters/types.js +0 -1
- package/src/data-adapters/nested-data-adapter.ts +0 -48
- package/src/data-adapters/types.ts +0 -9
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { DragAndDropFeatureDef } from "../features/drag-and-drop/types";
|
|
2
|
-
import { SyncDataLoaderFeatureDef } from "../features/sync-data-loader/types";
|
|
3
|
-
export type DataAdapterConfig<T> = {
|
|
4
|
-
rootItemId: SyncDataLoaderFeatureDef<T>["config"]["rootItemId"];
|
|
5
|
-
dataLoader: SyncDataLoaderFeatureDef<T>["config"]["dataLoader"];
|
|
6
|
-
onDrop: DragAndDropFeatureDef<T>["config"]["onDrop"];
|
|
7
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DataAdapterConfig } from "./types";
|
|
2
|
-
interface NestedDataAdapterProps<T> {
|
|
3
|
-
rootItem: T;
|
|
4
|
-
getItemId: (item: T) => string;
|
|
5
|
-
getChildren: (item: T) => T[] | undefined;
|
|
6
|
-
changeChildren?: (item: T, children: T[]) => void;
|
|
7
|
-
}
|
|
8
|
-
export declare const nestedDataAdapter: <T = any>(props: NestedDataAdapterProps<T>) => DataAdapterConfig<T>;
|
|
9
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { performItemsMove } from "../utils";
|
|
2
|
-
const createItemMap = (props, item, map = {}) => {
|
|
3
|
-
var _a;
|
|
4
|
-
map[props.getItemId(item)] = item;
|
|
5
|
-
(_a = props.getChildren(item)) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
|
|
6
|
-
createItemMap(props, child, map);
|
|
7
|
-
});
|
|
8
|
-
return map;
|
|
9
|
-
};
|
|
10
|
-
export const nestedDataAdapter = (props) => {
|
|
11
|
-
const itemMap = createItemMap(props, props.rootItem);
|
|
12
|
-
return {
|
|
13
|
-
rootItemId: props.getItemId(props.rootItem),
|
|
14
|
-
dataLoader: {
|
|
15
|
-
getItem: (itemId) => itemMap[itemId],
|
|
16
|
-
getChildren: (itemId) => { var _a, _b; return (_b = (_a = props.getChildren(itemMap[itemId])) === null || _a === void 0 ? void 0 : _a.map(props.getItemId)) !== null && _b !== void 0 ? _b : []; },
|
|
17
|
-
},
|
|
18
|
-
onDrop: (items, target) => {
|
|
19
|
-
if (!props.changeChildren) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
performItemsMove(items, target, (item, newChildren) => {
|
|
23
|
-
var _a;
|
|
24
|
-
(_a = props.changeChildren) === null || _a === void 0 ? void 0 : _a.call(props, item.getItemData(), newChildren.map((child) => child.getItemData()));
|
|
25
|
-
});
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { DragAndDropFeatureDef } from "../features/drag-and-drop/types";
|
|
2
|
-
import { SyncDataLoaderFeatureDef } from "../features/sync-data-loader/types";
|
|
3
|
-
export type DataAdapterConfig<T> = {
|
|
4
|
-
rootItemId: SyncDataLoaderFeatureDef<T>["config"]["rootItemId"];
|
|
5
|
-
dataLoader: SyncDataLoaderFeatureDef<T>["config"]["dataLoader"];
|
|
6
|
-
onDrop: DragAndDropFeatureDef<T>["config"]["onDrop"];
|
|
7
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { DataAdapterConfig } from "./types";
|
|
2
|
-
import { ItemInstance } from "../types/core";
|
|
3
|
-
import { DropTarget } from "../features/drag-and-drop/types";
|
|
4
|
-
import { performItemsMove } from "../utils";
|
|
5
|
-
|
|
6
|
-
interface NestedDataAdapterProps<T> {
|
|
7
|
-
rootItem: T;
|
|
8
|
-
getItemId: (item: T) => string;
|
|
9
|
-
getChildren: (item: T) => T[] | undefined;
|
|
10
|
-
changeChildren?: (item: T, children: T[]) => void;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const createItemMap = <T>(
|
|
14
|
-
props: NestedDataAdapterProps<T>,
|
|
15
|
-
item: T,
|
|
16
|
-
map: Record<string, T> = {}
|
|
17
|
-
) => {
|
|
18
|
-
map[props.getItemId(item)] = item;
|
|
19
|
-
props.getChildren(item)?.forEach((child) => {
|
|
20
|
-
createItemMap(props, child, map);
|
|
21
|
-
});
|
|
22
|
-
return map;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export const nestedDataAdapter = <T = any>(
|
|
26
|
-
props: NestedDataAdapterProps<T>
|
|
27
|
-
): DataAdapterConfig<T> => {
|
|
28
|
-
const itemMap = createItemMap(props, props.rootItem);
|
|
29
|
-
return {
|
|
30
|
-
rootItemId: props.getItemId(props.rootItem),
|
|
31
|
-
dataLoader: {
|
|
32
|
-
getItem: (itemId) => itemMap[itemId],
|
|
33
|
-
getChildren: (itemId) =>
|
|
34
|
-
props.getChildren(itemMap[itemId])?.map(props.getItemId) ?? [],
|
|
35
|
-
},
|
|
36
|
-
onDrop: (items: ItemInstance<T>[], target: DropTarget<T>) => {
|
|
37
|
-
if (!props.changeChildren) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
performItemsMove(items, target, (item, newChildren) => {
|
|
41
|
-
props.changeChildren?.(
|
|
42
|
-
item.getItemData(),
|
|
43
|
-
newChildren.map((child) => child.getItemData())
|
|
44
|
-
);
|
|
45
|
-
});
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DragAndDropFeatureDef } from "../features/drag-and-drop/types";
|
|
2
|
-
import { SyncDataLoaderFeatureDef } from "../features/sync-data-loader/types";
|
|
3
|
-
|
|
4
|
-
export type DataAdapterConfig<T> = {
|
|
5
|
-
rootItemId: SyncDataLoaderFeatureDef<T>["config"]["rootItemId"];
|
|
6
|
-
dataLoader: SyncDataLoaderFeatureDef<T>["config"]["dataLoader"];
|
|
7
|
-
onDrop: DragAndDropFeatureDef<T>["config"]["onDrop"];
|
|
8
|
-
// TODO onDropForeignDragObject: DragAndDropFeatureDef<T>["config"]["onDropForeignDragObject"];
|
|
9
|
-
};
|