@mui/x-tree-view 7.0.0-beta.3 → 7.0.0-beta.5

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 (147) hide show
  1. package/CHANGELOG.md +357 -22
  2. package/RichTreeView/RichTreeView.js +8 -0
  3. package/RichTreeView/RichTreeView.types.d.ts +7 -1
  4. package/SimpleTreeView/SimpleTreeView.js +8 -0
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +7 -1
  6. package/TreeItem/TreeItem.js +1 -1
  7. package/TreeItem/TreeItem.types.d.ts +1 -1
  8. package/TreeView/TreeView.js +8 -0
  9. package/hooks/index.d.ts +1 -0
  10. package/hooks/index.js +1 -0
  11. package/hooks/package.json +6 -0
  12. package/hooks/useTreeViewApiRef.d.ts +6 -0
  13. package/hooks/useTreeViewApiRef.js +5 -0
  14. package/index.d.ts +1 -0
  15. package/index.js +3 -2
  16. package/internals/TreeViewProvider/DescendantProvider.js +1 -11
  17. package/internals/hooks/useTimeout.d.ts +5 -3
  18. package/internals/hooks/useTimeout.js +13 -5
  19. package/internals/models/helpers.d.ts +1 -0
  20. package/internals/models/plugin.d.ts +12 -0
  21. package/internals/models/treeView.d.ts +1 -0
  22. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
  23. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +5 -0
  24. package/internals/useTreeView/useTreeView.d.ts +2 -0
  25. package/internals/useTreeView/useTreeView.js +12 -0
  26. package/internals/useTreeView/useTreeView.types.d.ts +2 -1
  27. package/internals/useTreeView/useTreeView.utils.d.ts +2 -1
  28. package/internals/useTreeView/useTreeView.utils.js +3 -0
  29. package/internals/utils/extractPluginParamsFromProps.d.ts +3 -2
  30. package/internals/utils/extractPluginParamsFromProps.js +5 -3
  31. package/internals/utils/utils.d.ts +1 -0
  32. package/internals/utils/utils.js +10 -0
  33. package/modern/RichTreeView/RichTreeView.js +8 -0
  34. package/modern/SimpleTreeView/SimpleTreeView.js +8 -0
  35. package/modern/TreeItem/TreeItem.js +1 -1
  36. package/modern/TreeView/TreeView.js +8 -0
  37. package/modern/hooks/index.js +1 -0
  38. package/modern/hooks/useTreeViewApiRef.js +5 -0
  39. package/modern/index.js +3 -2
  40. package/modern/internals/TreeViewProvider/DescendantProvider.js +1 -11
  41. package/modern/internals/hooks/useTimeout.js +13 -5
  42. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
  43. package/modern/internals/useTreeView/useTreeView.js +12 -0
  44. package/modern/internals/useTreeView/useTreeView.utils.js +3 -0
  45. package/modern/internals/utils/extractPluginParamsFromProps.js +5 -3
  46. package/modern/internals/utils/utils.js +10 -0
  47. package/node/RichTreeView/RichTreeView.js +8 -0
  48. package/node/SimpleTreeView/SimpleTreeView.js +8 -0
  49. package/node/TreeItem/TreeItem.js +1 -1
  50. package/node/TreeView/TreeView.js +8 -0
  51. package/node/hooks/index.js +12 -0
  52. package/node/hooks/useTreeViewApiRef.js +14 -0
  53. package/node/index.js +13 -1
  54. package/node/internals/TreeViewProvider/DescendantProvider.js +1 -10
  55. package/node/internals/hooks/useTimeout.js +13 -4
  56. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +39 -21
  57. package/node/internals/useTreeView/useTreeView.js +13 -0
  58. package/node/internals/useTreeView/useTreeView.utils.js +6 -2
  59. package/node/internals/utils/extractPluginParamsFromProps.js +5 -3
  60. package/node/internals/utils/utils.js +17 -0
  61. package/package.json +1 -1
  62. package/legacy/RichTreeView/RichTreeView.js +0 -255
  63. package/legacy/RichTreeView/RichTreeView.types.js +0 -1
  64. package/legacy/RichTreeView/index.js +0 -3
  65. package/legacy/RichTreeView/richTreeViewClasses.js +0 -6
  66. package/legacy/SimpleTreeView/SimpleTreeView.js +0 -190
  67. package/legacy/SimpleTreeView/SimpleTreeView.plugins.js +0 -6
  68. package/legacy/SimpleTreeView/SimpleTreeView.types.js +0 -1
  69. package/legacy/SimpleTreeView/index.js +0 -3
  70. package/legacy/SimpleTreeView/simpleTreeViewClasses.js +0 -6
  71. package/legacy/TreeItem/TreeItem.js +0 -360
  72. package/legacy/TreeItem/TreeItem.types.js +0 -1
  73. package/legacy/TreeItem/TreeItemContent.js +0 -95
  74. package/legacy/TreeItem/index.js +0 -4
  75. package/legacy/TreeItem/treeItemClasses.js +0 -6
  76. package/legacy/TreeItem/useTreeItemState.js +0 -58
  77. package/legacy/TreeView/TreeView.js +0 -165
  78. package/legacy/TreeView/TreeView.types.js +0 -1
  79. package/legacy/TreeView/index.js +0 -3
  80. package/legacy/TreeView/treeViewClasses.js +0 -6
  81. package/legacy/icons/icons.js +0 -9
  82. package/legacy/icons/index.js +0 -1
  83. package/legacy/index.js +0 -14
  84. package/legacy/internals/TreeViewProvider/DescendantProvider.js +0 -199
  85. package/legacy/internals/TreeViewProvider/TreeViewContext.js +0 -8
  86. package/legacy/internals/TreeViewProvider/TreeViewProvider.js +0 -19
  87. package/legacy/internals/TreeViewProvider/TreeViewProvider.types.js +0 -1
  88. package/legacy/internals/TreeViewProvider/index.js +0 -1
  89. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +0 -9
  90. package/legacy/internals/corePlugins/corePlugins.js +0 -6
  91. package/legacy/internals/corePlugins/index.js +0 -1
  92. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
  93. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -40
  94. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +0 -1
  95. package/legacy/internals/hooks/useInstanceEventHandler.js +0 -87
  96. package/legacy/internals/hooks/useLazyRef.js +0 -11
  97. package/legacy/internals/hooks/useOnMount.js +0 -7
  98. package/legacy/internals/hooks/useTimeout.js +0 -38
  99. package/legacy/internals/index.js +0 -4
  100. package/legacy/internals/models/MuiCancellableEvent.js +0 -1
  101. package/legacy/internals/models/events.js +0 -1
  102. package/legacy/internals/models/helpers.js +0 -1
  103. package/legacy/internals/models/index.js +0 -3
  104. package/legacy/internals/models/plugin.js +0 -1
  105. package/legacy/internals/models/treeView.js +0 -1
  106. package/legacy/internals/plugins/defaultPlugins.js +0 -10
  107. package/legacy/internals/plugins/index.js +0 -1
  108. package/legacy/internals/plugins/useTreeViewExpansion/index.js +0 -1
  109. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -81
  110. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
  111. package/legacy/internals/plugins/useTreeViewFocus/index.js +0 -1
  112. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -103
  113. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
  114. package/legacy/internals/plugins/useTreeViewIcons/index.js +0 -1
  115. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +0 -21
  116. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +0 -1
  117. package/legacy/internals/plugins/useTreeViewId/index.js +0 -1
  118. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +0 -24
  119. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.types.js +0 -1
  120. package/legacy/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  121. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +0 -130
  122. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +0 -1
  123. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
  124. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -284
  125. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
  126. package/legacy/internals/plugins/useTreeViewNodes/index.js +0 -1
  127. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +0 -161
  128. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +0 -1
  129. package/legacy/internals/plugins/useTreeViewSelection/index.js +0 -1
  130. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -219
  131. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
  132. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -55
  133. package/legacy/internals/useTreeView/index.js +0 -1
  134. package/legacy/internals/useTreeView/useTreeView.js +0 -111
  135. package/legacy/internals/useTreeView/useTreeView.types.js +0 -1
  136. package/legacy/internals/useTreeView/useTreeView.utils.js +0 -46
  137. package/legacy/internals/useTreeView/useTreeViewModels.js +0 -75
  138. package/legacy/internals/utils/EventManager.js +0 -91
  139. package/legacy/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
  140. package/legacy/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -29
  141. package/legacy/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -52
  142. package/legacy/internals/utils/extractPluginParamsFromProps.js +0 -36
  143. package/legacy/internals/utils/publishTreeViewEvent.js +0 -3
  144. package/legacy/internals/utils/warning.js +0 -15
  145. package/legacy/models/index.js +0 -1
  146. package/legacy/models/items.js +0 -1
  147. package/legacy/themeAugmentation/index.js +0 -3
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- export * from './helpers';
2
- export * from './plugin';
3
- export * from './treeView';
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,10 +0,0 @@
1
- import { useTreeViewId } from './useTreeViewId';
2
- import { useTreeViewNodes } from './useTreeViewNodes';
3
- import { useTreeViewExpansion } from './useTreeViewExpansion';
4
- import { useTreeViewSelection } from './useTreeViewSelection';
5
- import { useTreeViewFocus } from './useTreeViewFocus';
6
- import { useTreeViewKeyboardNavigation } from './useTreeViewKeyboardNavigation';
7
- import { useTreeViewIcons } from './useTreeViewIcons';
8
- export var DEFAULT_TREE_VIEW_PLUGINS = [useTreeViewId, useTreeViewNodes, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons];
9
-
10
- // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -1 +0,0 @@
1
- export { DEFAULT_TREE_VIEW_PLUGINS } from './defaultPlugins';
@@ -1 +0,0 @@
1
- export { useTreeViewExpansion } from './useTreeViewExpansion';
@@ -1,81 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import useEventCallback from '@mui/utils/useEventCallback';
4
- import { populateInstance } from '../../useTreeView/useTreeView.utils';
5
- export var useTreeViewExpansion = function useTreeViewExpansion(_ref) {
6
- var instance = _ref.instance,
7
- params = _ref.params,
8
- models = _ref.models;
9
- var setExpandedNodes = function setExpandedNodes(event, value) {
10
- var _params$onExpandedNod;
11
- (_params$onExpandedNod = params.onExpandedNodesChange) == null || _params$onExpandedNod.call(params, event, value);
12
- models.expandedNodes.setControlledValue(value);
13
- };
14
- var isNodeExpanded = React.useCallback(function (nodeId) {
15
- return Array.isArray(models.expandedNodes.value) ? models.expandedNodes.value.indexOf(nodeId) !== -1 : false;
16
- }, [models.expandedNodes.value]);
17
- var isNodeExpandable = React.useCallback(function (nodeId) {
18
- var _instance$getNode;
19
- return !!((_instance$getNode = instance.getNode(nodeId)) != null && _instance$getNode.expandable);
20
- }, [instance]);
21
- var toggleNodeExpansion = useEventCallback(function (event, nodeId) {
22
- if (nodeId == null) {
23
- return;
24
- }
25
- var isExpandedBefore = models.expandedNodes.value.indexOf(nodeId) !== -1;
26
- var newExpanded;
27
- if (isExpandedBefore) {
28
- newExpanded = models.expandedNodes.value.filter(function (id) {
29
- return id !== nodeId;
30
- });
31
- } else {
32
- newExpanded = [nodeId].concat(models.expandedNodes.value);
33
- }
34
- if (params.onNodeExpansionToggle) {
35
- params.onNodeExpansionToggle(event, nodeId, !isExpandedBefore);
36
- }
37
- setExpandedNodes(event, newExpanded);
38
- });
39
- var expandAllSiblings = function expandAllSiblings(event, nodeId) {
40
- var node = instance.getNode(nodeId);
41
- var siblings = instance.getChildrenIds(node.parentId);
42
- var diff = siblings.filter(function (child) {
43
- return instance.isNodeExpandable(child) && !instance.isNodeExpanded(child);
44
- });
45
- var newExpanded = models.expandedNodes.value.concat(diff);
46
- if (diff.length > 0) {
47
- if (params.onNodeExpansionToggle) {
48
- diff.forEach(function (newlyExpandedNodeId) {
49
- params.onNodeExpansionToggle(event, newlyExpandedNodeId, true);
50
- });
51
- }
52
- setExpandedNodes(event, newExpanded);
53
- }
54
- };
55
- populateInstance(instance, {
56
- isNodeExpanded: isNodeExpanded,
57
- isNodeExpandable: isNodeExpandable,
58
- toggleNodeExpansion: toggleNodeExpansion,
59
- expandAllSiblings: expandAllSiblings
60
- });
61
- };
62
- useTreeViewExpansion.models = {
63
- expandedNodes: {
64
- getDefaultValue: function getDefaultValue(params) {
65
- return params.defaultExpandedNodes;
66
- }
67
- }
68
- };
69
- var DEFAULT_EXPANDED_NODES = [];
70
- useTreeViewExpansion.getDefaultizedParams = function (params) {
71
- var _params$defaultExpand;
72
- return _extends({}, params, {
73
- defaultExpandedNodes: (_params$defaultExpand = params.defaultExpandedNodes) != null ? _params$defaultExpand : DEFAULT_EXPANDED_NODES
74
- });
75
- };
76
- useTreeViewExpansion.params = {
77
- expandedNodes: true,
78
- defaultExpandedNodes: true,
79
- onExpandedNodesChange: true,
80
- onNodeExpansionToggle: true
81
- };
@@ -1 +0,0 @@
1
- export { useTreeViewFocus } from './useTreeViewFocus';
@@ -1,103 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import useEventCallback from '@mui/utils/useEventCallback';
4
- import ownerDocument from '@mui/utils/ownerDocument';
5
- import { populateInstance } from '../../useTreeView/useTreeView.utils';
6
- import { useInstanceEventHandler } from '../../hooks/useInstanceEventHandler';
7
- export var useTreeViewFocus = function useTreeViewFocus(_ref) {
8
- var instance = _ref.instance,
9
- params = _ref.params,
10
- state = _ref.state,
11
- setState = _ref.setState,
12
- models = _ref.models,
13
- rootRef = _ref.rootRef;
14
- var setFocusedNodeId = useEventCallback(function (nodeId) {
15
- var cleanNodeId = typeof nodeId === 'function' ? nodeId(state.focusedNodeId) : nodeId;
16
- setState(function (prevState) {
17
- return _extends({}, prevState, {
18
- focusedNodeId: cleanNodeId
19
- });
20
- });
21
- });
22
- var isNodeFocused = React.useCallback(function (nodeId) {
23
- return state.focusedNodeId === nodeId;
24
- }, [state.focusedNodeId]);
25
- var focusNode = useEventCallback(function (event, nodeId) {
26
- if (nodeId) {
27
- setFocusedNodeId(nodeId);
28
- if (params.onNodeFocus) {
29
- params.onNodeFocus(event, nodeId);
30
- }
31
- }
32
- });
33
- var focusRoot = useEventCallback(function () {
34
- var _rootRef$current;
35
- (_rootRef$current = rootRef.current) == null || _rootRef$current.focus({
36
- preventScroll: true
37
- });
38
- });
39
- populateInstance(instance, {
40
- isNodeFocused: isNodeFocused,
41
- focusNode: focusNode,
42
- focusRoot: focusRoot
43
- });
44
- useInstanceEventHandler(instance, 'removeNode', function (_ref2) {
45
- var id = _ref2.id;
46
- setFocusedNodeId(function (oldFocusedNodeId) {
47
- if (oldFocusedNodeId === id && rootRef.current === ownerDocument(rootRef.current).activeElement) {
48
- return instance.getChildrenIds(null)[0];
49
- }
50
- return oldFocusedNodeId;
51
- });
52
- });
53
- var createHandleFocus = function createHandleFocus(otherHandlers) {
54
- return function (event) {
55
- var _otherHandlers$onFocu;
56
- (_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);
57
-
58
- // if the event bubbled (which is React specific) we don't want to steal focus
59
- if (event.target === event.currentTarget) {
60
- var isNodeVisible = function isNodeVisible(nodeId) {
61
- var node = instance.getNode(nodeId);
62
- return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
63
- };
64
- var nodeToFocusId;
65
- if (Array.isArray(models.selectedNodes.value)) {
66
- nodeToFocusId = models.selectedNodes.value.find(isNodeVisible);
67
- } else if (models.selectedNodes.value != null && isNodeVisible(models.selectedNodes.value)) {
68
- nodeToFocusId = models.selectedNodes.value;
69
- }
70
- if (nodeToFocusId == null) {
71
- nodeToFocusId = instance.getNavigableChildrenIds(null)[0];
72
- }
73
- instance.focusNode(event, nodeToFocusId);
74
- }
75
- };
76
- };
77
- var createHandleBlur = function createHandleBlur(otherHandlers) {
78
- return function (event) {
79
- var _otherHandlers$onBlur;
80
- (_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
81
- setFocusedNodeId(null);
82
- };
83
- };
84
- var focusedNode = instance.getNode(state.focusedNodeId);
85
- var activeDescendant = focusedNode ? instance.getTreeItemId(focusedNode.id, focusedNode.idAttribute) : null;
86
- return {
87
- getRootProps: function getRootProps(otherHandlers) {
88
- return {
89
- onFocus: createHandleFocus(otherHandlers),
90
- onBlur: createHandleBlur(otherHandlers),
91
- 'aria-activedescendant': activeDescendant != null ? activeDescendant : undefined
92
- };
93
- }
94
- };
95
- };
96
- useTreeViewFocus.getInitialState = function () {
97
- return {
98
- focusedNodeId: null
99
- };
100
- };
101
- useTreeViewFocus.params = {
102
- onNodeFocus: true
103
- };
@@ -1 +0,0 @@
1
- export { useTreeViewIcons } from './useTreeViewIcons';
@@ -1,21 +0,0 @@
1
- export var useTreeViewIcons = function useTreeViewIcons(_ref) {
2
- var slots = _ref.slots,
3
- slotProps = _ref.slotProps;
4
- return {
5
- contextValue: {
6
- icons: {
7
- slots: {
8
- collapseIcon: slots.collapseIcon,
9
- expandIcon: slots.expandIcon,
10
- endIcon: slots.endIcon
11
- },
12
- slotProps: {
13
- collapseIcon: slotProps.collapseIcon,
14
- expandIcon: slotProps.expandIcon,
15
- endIcon: slotProps.endIcon
16
- }
17
- }
18
- }
19
- };
20
- };
21
- useTreeViewIcons.params = {};
@@ -1 +0,0 @@
1
- export { useTreeViewId } from './useTreeViewId';
@@ -1,24 +0,0 @@
1
- import * as React from 'react';
2
- import useId from '@mui/utils/useId';
3
- import { populateInstance } from '../../useTreeView/useTreeView.utils';
4
- export var useTreeViewId = function useTreeViewId(_ref) {
5
- var instance = _ref.instance,
6
- params = _ref.params;
7
- var treeId = useId(params.id);
8
- var getTreeItemId = React.useCallback(function (nodeId, idAttribute) {
9
- return idAttribute != null ? idAttribute : "".concat(treeId, "-").concat(nodeId);
10
- }, [treeId]);
11
- populateInstance(instance, {
12
- getTreeItemId: getTreeItemId
13
- });
14
- return {
15
- getRootProps: function getRootProps() {
16
- return {
17
- id: treeId
18
- };
19
- }
20
- };
21
- };
22
- useTreeViewId.params = {
23
- id: true
24
- };
@@ -1 +0,0 @@
1
- export { useTreeViewJSXNodes } from './useTreeViewJSXNodes';
@@ -1,130 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import * as React from 'react';
5
- import useEventCallback from '@mui/utils/useEventCallback';
6
- import useForkRef from '@mui/utils/useForkRef';
7
- import { populateInstance } from '../../useTreeView/useTreeView.utils';
8
- import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent';
9
- import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext';
10
- import { DescendantProvider, useDescendant } from '../../TreeViewProvider/DescendantProvider';
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
- export var useTreeViewJSXNodes = function useTreeViewJSXNodes(_ref) {
13
- var instance = _ref.instance,
14
- setState = _ref.setState;
15
- var insertJSXNode = useEventCallback(function (node) {
16
- setState(function (prevState) {
17
- if (prevState.nodeMap[node.id] != null) {
18
- throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', "Tow items were provided with the same id in the `items` prop: \"".concat(node.id, "\"")].join('\n'));
19
- }
20
- return _extends({}, prevState, {
21
- nodeMap: _extends({}, prevState.nodeMap, _defineProperty({}, node.id, node))
22
- });
23
- });
24
- });
25
- var removeJSXNode = useEventCallback(function (nodeId) {
26
- setState(function (prevState) {
27
- var newMap = _extends({}, prevState.nodeMap);
28
- delete newMap[nodeId];
29
- return _extends({}, prevState, {
30
- nodeMap: newMap
31
- });
32
- });
33
- publishTreeViewEvent(instance, 'removeNode', {
34
- id: nodeId
35
- });
36
- });
37
- var mapFirstCharFromJSX = useEventCallback(function (nodeId, firstChar) {
38
- instance.updateFirstCharMap(function (firstCharMap) {
39
- firstCharMap[nodeId] = firstChar;
40
- return firstCharMap;
41
- });
42
- return function () {
43
- instance.updateFirstCharMap(function (firstCharMap) {
44
- var newMap = _extends({}, firstCharMap);
45
- delete newMap[nodeId];
46
- return newMap;
47
- });
48
- };
49
- });
50
- populateInstance(instance, {
51
- insertJSXNode: insertJSXNode,
52
- removeJSXNode: removeJSXNode,
53
- mapFirstCharFromJSX: mapFirstCharFromJSX
54
- });
55
- };
56
- var useTreeViewJSXNodesItemPlugin = function useTreeViewJSXNodesItemPlugin(_ref2) {
57
- var props = _ref2.props,
58
- ref = _ref2.ref;
59
- var children = props.children,
60
- _props$disabled = props.disabled,
61
- disabled = _props$disabled === void 0 ? false : _props$disabled,
62
- label = props.label,
63
- nodeId = props.nodeId,
64
- id = props.id,
65
- inContentProps = props.ContentProps;
66
- var _useTreeViewContext = useTreeViewContext(),
67
- instance = _useTreeViewContext.instance;
68
- var isExpandable = function isExpandable(reactChildren) {
69
- if (Array.isArray(reactChildren)) {
70
- return reactChildren.length > 0 && reactChildren.some(isExpandable);
71
- }
72
- return Boolean(reactChildren);
73
- };
74
- var expandable = isExpandable(children);
75
- var _React$useState = React.useState(null),
76
- _React$useState2 = _slicedToArray(_React$useState, 2),
77
- treeItemElement = _React$useState2[0],
78
- setTreeItemElement = _React$useState2[1];
79
- var contentRef = React.useRef(null);
80
- var handleRef = useForkRef(setTreeItemElement, ref);
81
- var descendant = React.useMemo(function () {
82
- return {
83
- element: treeItemElement,
84
- id: nodeId
85
- };
86
- }, [nodeId, treeItemElement]);
87
- var _useDescendant = useDescendant(descendant),
88
- index = _useDescendant.index,
89
- parentId = _useDescendant.parentId;
90
- React.useEffect(function () {
91
- // On the first render a node's index will be -1. We want to wait for the real index.
92
- if (index !== -1) {
93
- instance.insertJSXNode({
94
- id: nodeId,
95
- idAttribute: id,
96
- index: index,
97
- parentId: parentId,
98
- expandable: expandable,
99
- disabled: disabled
100
- });
101
- return function () {
102
- return instance.removeJSXNode(nodeId);
103
- };
104
- }
105
- return undefined;
106
- }, [instance, parentId, index, nodeId, expandable, disabled, id]);
107
- React.useEffect(function () {
108
- if (label) {
109
- var _contentRef$current$t, _contentRef$current;
110
- return instance.mapFirstCharFromJSX(nodeId, ((_contentRef$current$t = (_contentRef$current = contentRef.current) == null ? void 0 : _contentRef$current.textContent) != null ? _contentRef$current$t : '').substring(0, 1).toLowerCase());
111
- }
112
- return undefined;
113
- }, [instance, nodeId, label]);
114
- return {
115
- props: _extends({}, props, {
116
- ContentProps: _extends({}, inContentProps, {
117
- ref: contentRef
118
- })
119
- }),
120
- ref: handleRef,
121
- wrapItem: function wrapItem(item) {
122
- return /*#__PURE__*/_jsx(DescendantProvider, {
123
- id: nodeId,
124
- children: item
125
- });
126
- }
127
- };
128
- };
129
- useTreeViewJSXNodes.itemPlugin = useTreeViewJSXNodesItemPlugin;
130
- useTreeViewJSXNodes.params = {};
@@ -1 +0,0 @@
1
- export { useTreeViewKeyboardNavigation } from './useTreeViewKeyboardNavigation';