@headless-tree/core 0.0.0-20250514161759 → 0.0.0-20250611124731

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 CHANGED
@@ -1,6 +1,21 @@
1
1
  # @headless-tree/core
2
2
 
3
- ## 0.0.0-20250514161759
3
+ ## 0.0.0-20250611124731
4
+
5
+ ### Minor Changes
6
+
7
+ - e2faf37: Fixed an issue async data loaders that resolve data before the tree is mounted can cause the tree to not render at all
8
+
9
+ Note: When using the `createTree()` API directly instead of going through the React `useTree` API, an additional call
10
+ to `tree.rebuildItems()` afterwards will be necessary. This change is marked as minor release regardless, since `createTree` is
11
+ currently not a publically documented feature.
12
+
13
+ ### Patch Changes
14
+
15
+ - 727c982: export makeStateUpdater from core package
16
+ - 2887b0c: Added a `item.getKey()` utility method to use for generating React keys. For now, this just returns the item id, so no migration is needed from using `item.getId()` as React keys.
17
+
18
+ ## 1.1.0
4
19
 
5
20
  ### Minor Changes
6
21
 
@@ -165,7 +165,6 @@ const createTree = (initialConfig) => {
165
165
  Object.assign(hotkeyPresets, (_d = feature.hotkeys) !== null && _d !== void 0 ? _d : {});
166
166
  }
167
167
  finalizeTree();
168
- rebuildItemMeta();
169
168
  return treeInstance;
170
169
  };
171
170
  exports.createTree = createTree;
@@ -100,6 +100,7 @@ exports.treeFeature = {
100
100
  (_d = item.getElement()) === null || _d === void 0 ? void 0 : _d.scrollIntoView(scrollIntoViewArg);
101
101
  }),
102
102
  getId: ({ itemId }) => itemId,
103
+ getKey: ({ itemId }) => itemId, // TODO apply to all stories to use
103
104
  getProps: ({ item, prev }) => {
104
105
  const itemMeta = item.getItemMeta();
105
106
  return Object.assign(Object.assign({}, prev === null || prev === void 0 ? void 0 : prev()), { ref: item.registerElement, role: "treeitem", "aria-setsize": itemMeta.setSize, "aria-posinset": itemMeta.posInSet, "aria-selected": "false", "aria-label": item.getItemName(), "aria-level": itemMeta.level, tabIndex: item.isFocused() ? 0 : -1, onClick: (e) => {
@@ -37,6 +37,7 @@ export type TreeFeatureDef<T> = {
37
37
  };
38
38
  itemInstance: {
39
39
  getId: () => string;
40
+ getKey: () => string;
40
41
  getProps: () => Record<string, any>;
41
42
  getItemName: () => string;
42
43
  getItemData: () => T;
@@ -27,3 +27,4 @@ export * from "./utilities/insert-items-at-target";
27
27
  export * from "./utilities/remove-items-from-parents";
28
28
  export * from "./core/build-proxified-instance";
29
29
  export * from "./core/build-static-instance";
30
+ export { makeStateUpdater } from "./utils";
package/lib/cjs/index.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.makeStateUpdater = void 0;
17
18
  __exportStar(require("./types/core"), exports);
18
19
  __exportStar(require("./core/create-tree"), exports);
19
20
  __exportStar(require("./features/tree/types"), exports);
@@ -42,3 +43,5 @@ __exportStar(require("./utilities/insert-items-at-target"), exports);
42
43
  __exportStar(require("./utilities/remove-items-from-parents"), exports);
43
44
  __exportStar(require("./core/build-proxified-instance"), exports);
44
45
  __exportStar(require("./core/build-static-instance"), exports);
46
+ var utils_1 = require("./utils");
47
+ Object.defineProperty(exports, "makeStateUpdater", { enumerable: true, get: function () { return utils_1.makeStateUpdater; } });
@@ -34,6 +34,7 @@ class TestTree {
34
34
  get instance() {
35
35
  if (!this.treeInstance) {
36
36
  this.treeInstance = (0, create_tree_1.createTree)(this.config);
37
+ this.treeInstance.rebuildTree();
37
38
  }
38
39
  return this.treeInstance;
39
40
  }
@@ -162,6 +162,5 @@ export const createTree = (initialConfig) => {
162
162
  Object.assign(hotkeyPresets, (_d = feature.hotkeys) !== null && _d !== void 0 ? _d : {});
163
163
  }
164
164
  finalizeTree();
165
- rebuildItemMeta();
166
165
  return treeInstance;
167
166
  };
@@ -97,6 +97,7 @@ export const treeFeature = {
97
97
  (_d = item.getElement()) === null || _d === void 0 ? void 0 : _d.scrollIntoView(scrollIntoViewArg);
98
98
  }),
99
99
  getId: ({ itemId }) => itemId,
100
+ getKey: ({ itemId }) => itemId, // TODO apply to all stories to use
100
101
  getProps: ({ item, prev }) => {
101
102
  const itemMeta = item.getItemMeta();
102
103
  return Object.assign(Object.assign({}, prev === null || prev === void 0 ? void 0 : prev()), { ref: item.registerElement, role: "treeitem", "aria-setsize": itemMeta.setSize, "aria-posinset": itemMeta.posInSet, "aria-selected": "false", "aria-label": item.getItemName(), "aria-level": itemMeta.level, tabIndex: item.isFocused() ? 0 : -1, onClick: (e) => {
@@ -37,6 +37,7 @@ export type TreeFeatureDef<T> = {
37
37
  };
38
38
  itemInstance: {
39
39
  getId: () => string;
40
+ getKey: () => string;
40
41
  getProps: () => Record<string, any>;
41
42
  getItemName: () => string;
42
43
  getItemData: () => T;
@@ -27,3 +27,4 @@ export * from "./utilities/insert-items-at-target";
27
27
  export * from "./utilities/remove-items-from-parents";
28
28
  export * from "./core/build-proxified-instance";
29
29
  export * from "./core/build-static-instance";
30
+ export { makeStateUpdater } from "./utils";
package/lib/esm/index.js CHANGED
@@ -26,3 +26,4 @@ export * from "./utilities/insert-items-at-target";
26
26
  export * from "./utilities/remove-items-from-parents";
27
27
  export * from "./core/build-proxified-instance";
28
28
  export * from "./core/build-static-instance";
29
+ export { makeStateUpdater } from "./utils";
@@ -31,6 +31,7 @@ export class TestTree {
31
31
  get instance() {
32
32
  if (!this.treeInstance) {
33
33
  this.treeInstance = createTree(this.config);
34
+ this.treeInstance.rebuildTree();
34
35
  }
35
36
  return this.treeInstance;
36
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@headless-tree/core",
3
- "version": "0.0.0-20250514161759",
3
+ "version": "0.0.0-20250611124731",
4
4
  "type": "module",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -228,7 +228,6 @@ export const createTree = <T>(
228
228
  }
229
229
 
230
230
  finalizeTree();
231
- rebuildItemMeta();
232
231
 
233
232
  return treeInstance;
234
233
  };
@@ -126,6 +126,7 @@ export const treeFeature: FeatureImplementation<any> = {
126
126
  item.getElement()?.scrollIntoView(scrollIntoViewArg);
127
127
  },
128
128
  getId: ({ itemId }) => itemId,
129
+ getKey: ({ itemId }) => itemId, // TODO apply to all stories to use
129
130
  getProps: ({ item, prev }) => {
130
131
  const itemMeta = item.getItemMeta();
131
132
  return {
@@ -44,6 +44,7 @@ export type TreeFeatureDef<T> = {
44
44
  };
45
45
  itemInstance: {
46
46
  getId: () => string;
47
+ getKey: () => string;
47
48
  getProps: () => Record<string, any>;
48
49
  getItemName: () => string;
49
50
  getItemData: () => T;
package/src/index.ts CHANGED
@@ -31,3 +31,5 @@ export * from "./utilities/remove-items-from-parents";
31
31
 
32
32
  export * from "./core/build-proxified-instance";
33
33
  export * from "./core/build-static-instance";
34
+
35
+ export { makeStateUpdater } from "./utils";
@@ -78,6 +78,7 @@ export class TestTree<T = string> {
78
78
  get instance() {
79
79
  if (!this.treeInstance) {
80
80
  this.treeInstance = createTree(this.config);
81
+ this.treeInstance.rebuildTree();
81
82
  }
82
83
  return this.treeInstance;
83
84
  }