@bigbinary/neeto-folders-frontend 2.0.42 → 2.0.43

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/dist/.ready CHANGED
@@ -1 +1 @@
1
- Built at 2026-07-02T04:53:18.709Z
1
+ Built at 2026-07-02T10:30:40.148Z
@@ -1715,17 +1715,46 @@ var FoldersTree = function FoldersTree(_ref) {
1715
1715
  var treeData = React.useMemo(function () {
1716
1716
  return _toAtomsTreeData(buildTreeWithItems(folders, config));
1717
1717
  }, [folders, config.items]);
1718
+ var treeMap = React.useMemo(function () {
1719
+ return treeData ? utils.treeToMap(treeData, "sid") : {};
1720
+ }, [treeData]);
1721
+
1722
+ // Only hand react-arborist keys that actually exist in the current tree. A
1723
+ // missing/undefined selection — no folder in the URL, or a stale sid during
1724
+ // SPA navigation before the tree updates — makes its selectMulti call
1725
+ // identify(undefined) and throw "Cannot read properties of undefined".
1726
+ var selectedKeys = activeFolderSid && treeMap[activeFolderSid] ? [activeFolderSid] : [];
1718
1727
  var updateExpandedKeys = function updateExpandedKeys() {
1719
- var _activeFolder$meta;
1720
1728
  if (!treeData) return;
1721
- // When active folder changes from external sources, update expanded keys to auto expand tree.
1722
- var updatedExpandedKeys = new Set(expandedKeysSet);
1723
- var map = utils.treeToMap(treeData, "sid");
1724
- var activeFolder = map[activeFolderSid];
1725
- var parentSid = activeFolder === null || activeFolder === void 0 || (_activeFolder$meta = activeFolder.meta) === null || _activeFolder$meta === void 0 || (_activeFolder$meta = _activeFolder$meta.parent) === null || _activeFolder$meta === void 0 ? void 0 : _activeFolder$meta.sid;
1726
- if (parentSid && !expandedKeysSet.has(parentSid)) {
1727
- updatedExpandedKeys.add(parentSid);
1729
+
1730
+ // Expand every ancestor of the active folder (not just the immediate
1731
+ // parent) so the full path to it is visible — folders nest up to
1732
+ // config.maxDepth. Walk up via treeMap, guarding against cycles.
1733
+ var ancestorSids = [];
1734
+ var seen = new Set();
1735
+ var node = treeMap[activeFolderSid];
1736
+ while ((_node = node) !== null && _node !== void 0 && (_node = _node.meta) !== null && _node !== void 0 && (_node = _node.parent) !== null && _node !== void 0 && _node.sid && !seen.has(node.meta.parent.sid)) {
1737
+ var _node;
1738
+ var parentSid = node.meta.parent.sid;
1739
+ seen.add(parentSid);
1740
+ ancestorSids.push(parentSid);
1741
+ node = treeMap[parentSid];
1728
1742
  }
1743
+ if (!ancestorSids.length) return;
1744
+
1745
+ // Functional update so the newly-expanded ancestors merge with the latest
1746
+ // expansion state (e.g. folders the user opened manually); bail out when
1747
+ // they're all already expanded to avoid a needless re-render.
1748
+ setExpandedKeysSet(function (prev) {
1749
+ if (ancestorSids.every(function (sid) {
1750
+ return prev.has(sid);
1751
+ })) return prev;
1752
+ var next = new Set(prev);
1753
+ ancestorSids.forEach(function (sid) {
1754
+ return next.add(sid);
1755
+ });
1756
+ return next;
1757
+ });
1729
1758
  };
1730
1759
  var handleExpand = function handleExpand(keys, _ref2) {
1731
1760
  var expanded = _ref2.expanded,
@@ -1763,7 +1792,7 @@ var FoldersTree = function FoldersTree(_ref) {
1763
1792
  className: "neeto-sidebar-folders-tree",
1764
1793
  indent: 20,
1765
1794
  rowHeight: 24,
1766
- selectedKeys: [activeFolderSid],
1795
+ selectedKeys: selectedKeys,
1767
1796
  showLine: false,
1768
1797
  switcherIcon: SwitcherIcon,
1769
1798
  titleRender: function titleRender(node) {