@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.
Files changed (91) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/cjs/core/create-tree.js +11 -10
  3. package/lib/cjs/features/async-data-loader/feature.js +30 -21
  4. package/lib/cjs/features/drag-and-drop/feature.js +34 -22
  5. package/lib/cjs/features/drag-and-drop/types.d.ts +14 -1
  6. package/lib/cjs/features/drag-and-drop/utils.d.ts +1 -1
  7. package/lib/cjs/features/drag-and-drop/utils.js +34 -17
  8. package/lib/cjs/features/expand-all/feature.js +12 -9
  9. package/lib/cjs/features/expand-all/types.d.ts +2 -2
  10. package/lib/cjs/features/main/types.d.ts +4 -1
  11. package/lib/cjs/features/renaming/feature.js +10 -9
  12. package/lib/cjs/features/search/feature.js +21 -7
  13. package/lib/cjs/features/search/types.d.ts +1 -1
  14. package/lib/cjs/features/selection/feature.js +6 -4
  15. package/lib/cjs/features/sync-data-loader/feature.js +6 -0
  16. package/lib/cjs/features/sync-data-loader/types.d.ts +1 -1
  17. package/lib/cjs/features/tree/feature.js +41 -24
  18. package/lib/cjs/features/tree/types.d.ts +7 -2
  19. package/lib/cjs/index.d.ts +3 -1
  20. package/lib/cjs/index.js +3 -1
  21. package/lib/cjs/types/core.d.ts +1 -3
  22. package/lib/cjs/utilities/create-on-drop-handler.d.ts +3 -0
  23. package/lib/cjs/utilities/create-on-drop-handler.js +11 -0
  24. package/lib/cjs/utilities/insert-items-at-target.d.ts +3 -0
  25. package/lib/cjs/utilities/insert-items-at-target.js +24 -0
  26. package/lib/cjs/utilities/remove-items-from-parents.d.ts +2 -0
  27. package/lib/cjs/utilities/remove-items-from-parents.js +17 -0
  28. package/lib/cjs/utils.d.ts +1 -4
  29. package/lib/cjs/utils.js +1 -53
  30. package/lib/esm/core/create-tree.js +11 -10
  31. package/lib/esm/features/async-data-loader/feature.js +30 -21
  32. package/lib/esm/features/drag-and-drop/feature.js +34 -22
  33. package/lib/esm/features/drag-and-drop/types.d.ts +14 -1
  34. package/lib/esm/features/drag-and-drop/utils.d.ts +1 -1
  35. package/lib/esm/features/drag-and-drop/utils.js +35 -18
  36. package/lib/esm/features/expand-all/feature.js +12 -9
  37. package/lib/esm/features/expand-all/types.d.ts +2 -2
  38. package/lib/esm/features/main/types.d.ts +4 -1
  39. package/lib/esm/features/renaming/feature.js +10 -9
  40. package/lib/esm/features/search/feature.js +21 -7
  41. package/lib/esm/features/search/types.d.ts +1 -1
  42. package/lib/esm/features/selection/feature.js +6 -4
  43. package/lib/esm/features/sync-data-loader/feature.js +6 -0
  44. package/lib/esm/features/sync-data-loader/types.d.ts +1 -1
  45. package/lib/esm/features/tree/feature.js +41 -24
  46. package/lib/esm/features/tree/types.d.ts +7 -2
  47. package/lib/esm/index.d.ts +3 -1
  48. package/lib/esm/index.js +3 -1
  49. package/lib/esm/types/core.d.ts +1 -3
  50. package/lib/esm/utilities/create-on-drop-handler.d.ts +3 -0
  51. package/lib/esm/utilities/create-on-drop-handler.js +7 -0
  52. package/lib/esm/utilities/insert-items-at-target.d.ts +3 -0
  53. package/lib/esm/utilities/insert-items-at-target.js +20 -0
  54. package/lib/esm/utilities/remove-items-from-parents.d.ts +2 -0
  55. package/lib/esm/utilities/remove-items-from-parents.js +13 -0
  56. package/lib/esm/utils.d.ts +1 -4
  57. package/lib/esm/utils.js +0 -50
  58. package/package.json +3 -3
  59. package/src/core/create-tree.ts +12 -8
  60. package/src/features/async-data-loader/feature.ts +15 -5
  61. package/src/features/drag-and-drop/feature.ts +42 -20
  62. package/src/features/drag-and-drop/types.ts +23 -6
  63. package/src/features/drag-and-drop/utils.ts +53 -24
  64. package/src/features/expand-all/feature.ts +10 -8
  65. package/src/features/expand-all/types.ts +2 -2
  66. package/src/features/main/types.ts +7 -0
  67. package/src/features/renaming/feature.ts +10 -5
  68. package/src/features/search/feature.ts +22 -5
  69. package/src/features/search/types.ts +1 -0
  70. package/src/features/selection/feature.ts +8 -3
  71. package/src/features/sync-data-loader/feature.ts +17 -2
  72. package/src/features/sync-data-loader/types.ts +1 -1
  73. package/src/features/tree/feature.ts +43 -23
  74. package/src/features/tree/types.ts +10 -2
  75. package/src/index.ts +4 -1
  76. package/src/types/core.ts +4 -4
  77. package/src/utilities/create-on-drop-handler.ts +14 -0
  78. package/src/utilities/insert-items-at-target.ts +30 -0
  79. package/src/utilities/remove-items-from-parents.ts +21 -0
  80. package/src/utils.ts +1 -69
  81. package/tsconfig.json +1 -1
  82. package/lib/cjs/data-adapters/nested-data-adapter.d.ts +0 -9
  83. package/lib/cjs/data-adapters/nested-data-adapter.js +0 -32
  84. package/lib/cjs/data-adapters/types.d.ts +0 -7
  85. package/lib/cjs/data-adapters/types.js +0 -2
  86. package/lib/esm/data-adapters/nested-data-adapter.d.ts +0 -9
  87. package/lib/esm/data-adapters/nested-data-adapter.js +0 -28
  88. package/lib/esm/data-adapters/types.d.ts +0 -7
  89. package/lib/esm/data-adapters/types.js +0 -1
  90. package/src/data-adapters/nested-data-adapter.ts +0 -48
  91. 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,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
- };