@headless-tree/core 1.4.0 → 1.5.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/CHANGELOG.md +27 -0
- package/dist/index.d.mts +34 -10
- package/dist/index.d.ts +34 -10
- package/dist/index.js +152 -73
- package/dist/index.mjs +152 -73
- package/package.json +19 -3
- package/readme.md +6 -6
- package/src/core/create-tree.ts +45 -9
- package/src/features/async-data-loader/async-data-loader.spec.ts +1 -0
- package/src/features/async-data-loader/feature.ts +16 -20
- package/src/features/async-data-loader/types.ts +2 -1
- package/src/features/checkboxes/checkboxes.spec.ts +111 -122
- package/src/features/checkboxes/feature.ts +89 -40
- package/src/features/checkboxes/types.ts +16 -3
- package/src/features/drag-and-drop/feature.ts +7 -0
- package/src/features/drag-and-drop/types.ts +6 -0
- package/src/features/hotkeys-core/feature.ts +2 -0
- package/src/features/main/types.ts +9 -0
- package/src/features/sync-data-loader/types.ts +7 -1
- package/src/features/tree/feature.ts +2 -2
- package/src/features/tree/tree.spec.ts +37 -4
- package/src/mddocs-entry.ts +13 -0
- package/src/test-utils/test-tree-do.ts +6 -0
- package/src/test-utils/test-tree.ts +17 -6
- package/src/types/core.ts +5 -5
|
@@ -63,21 +63,22 @@ export class TestTree<T = string> {
|
|
|
63
63
|
}),
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
forSuits(runSuite: (tree: TestTree<T
|
|
66
|
+
forSuits(runSuite: (tree: TestTree<T>, title: string) => void) {
|
|
67
67
|
describe.for([
|
|
68
68
|
this.suits.sync(),
|
|
69
69
|
this.suits.async(),
|
|
70
70
|
this.suits.proxifiedSync(),
|
|
71
71
|
this.suits.proxifiedAsync(),
|
|
72
|
-
])("$title", ({ tree }) => {
|
|
72
|
+
])("$title", ({ tree, title }) => {
|
|
73
73
|
tree.resetBeforeEach();
|
|
74
|
-
runSuite(tree);
|
|
74
|
+
runSuite(tree, title);
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
get instance() {
|
|
79
79
|
if (!this.treeInstance) {
|
|
80
80
|
this.treeInstance = createTree(this.config);
|
|
81
|
+
this.treeInstance.setMounted(true);
|
|
81
82
|
this.treeInstance.rebuildTree();
|
|
82
83
|
}
|
|
83
84
|
return this.treeInstance;
|
|
@@ -87,10 +88,9 @@ export class TestTree<T = string> {
|
|
|
87
88
|
|
|
88
89
|
static async resolveAsyncLoaders() {
|
|
89
90
|
do {
|
|
91
|
+
await vi.advanceTimersToNextTimerAsync();
|
|
90
92
|
TestTree.asyncLoaderResolvers.shift()?.();
|
|
91
|
-
await
|
|
92
|
-
setTimeout(r);
|
|
93
|
-
});
|
|
93
|
+
await vi.advanceTimersToNextTimerAsync();
|
|
94
94
|
} while (TestTree.asyncLoaderResolvers.length);
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -101,6 +101,17 @@ export class TestTree<T = string> {
|
|
|
101
101
|
await TestTree.resolveAsyncLoaders();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
async runWhileResolvingItems(cb: () => Promise<void>) {
|
|
105
|
+
const interval = setInterval(() => {
|
|
106
|
+
TestTree.resolveAsyncLoaders();
|
|
107
|
+
}, 5);
|
|
108
|
+
try {
|
|
109
|
+
await cb();
|
|
110
|
+
} finally {
|
|
111
|
+
clearInterval(interval);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
104
115
|
static default(config: Partial<TreeConfig<string>>) {
|
|
105
116
|
return new TestTree({
|
|
106
117
|
rootItemId: "x",
|
package/src/types/core.ts
CHANGED
|
@@ -93,11 +93,11 @@ type MayReturnNull<T extends (...x: any[]) => any> = (
|
|
|
93
93
|
...args: Parameters<T>
|
|
94
94
|
) => ReturnType<T> | null;
|
|
95
95
|
|
|
96
|
-
export type ItemInstanceOpts<Key extends keyof ItemInstance<any>> = {
|
|
97
|
-
item: ItemInstance<
|
|
98
|
-
tree: TreeInstance<
|
|
96
|
+
export type ItemInstanceOpts<T, Key extends keyof ItemInstance<any>> = {
|
|
97
|
+
item: ItemInstance<T>;
|
|
98
|
+
tree: TreeInstance<T>;
|
|
99
99
|
itemId: string;
|
|
100
|
-
prev?: MayReturnNull<ItemInstance<
|
|
100
|
+
prev?: MayReturnNull<ItemInstance<T>[Key]>;
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
export type TreeInstanceOpts<Key extends keyof TreeInstance<any>> = {
|
|
@@ -131,7 +131,7 @@ export type FeatureImplementation<T = any> = {
|
|
|
131
131
|
|
|
132
132
|
itemInstance?: {
|
|
133
133
|
[key in keyof ItemInstance<T>]?: (
|
|
134
|
-
opts: ItemInstanceOpts<key>,
|
|
134
|
+
opts: ItemInstanceOpts<T, key>,
|
|
135
135
|
...args: Parameters<ItemInstance<T>[key]>
|
|
136
136
|
) => void;
|
|
137
137
|
};
|