@mui/x-tree-view 6.0.0-alpha.3 → 6.0.0-beta.0

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 (265) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/TreeItem/TreeItem.js +18 -31
  3. package/TreeItem/useTreeItem.js +18 -27
  4. package/TreeView/TreeView.d.ts +4 -1
  5. package/TreeView/TreeView.js +65 -708
  6. package/TreeView/TreeView.types.d.ts +4 -147
  7. package/index.d.ts +1 -0
  8. package/index.js +3 -2
  9. package/{TreeView/descendants.d.ts → internals/TreeViewProvider/DescendantProvider.d.ts} +1 -5
  10. package/internals/TreeViewProvider/TreeViewContext.d.ts +7 -0
  11. package/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +8 -18
  12. package/internals/TreeViewProvider/TreeViewProvider.d.ts +9 -0
  13. package/internals/TreeViewProvider/TreeViewProvider.js +21 -0
  14. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +18 -0
  15. package/internals/TreeViewProvider/index.d.ts +2 -0
  16. package/internals/TreeViewProvider/index.js +1 -0
  17. package/internals/TreeViewProvider/useTreeViewContext.d.ts +3 -0
  18. package/internals/TreeViewProvider/useTreeViewContext.js +3 -0
  19. package/internals/corePlugins/corePlugins.d.ts +7 -0
  20. package/internals/corePlugins/corePlugins.js +6 -0
  21. package/internals/corePlugins/index.d.ts +2 -0
  22. package/internals/corePlugins/index.js +1 -0
  23. package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +2 -0
  24. package/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
  25. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +8 -0
  26. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +35 -0
  27. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +21 -0
  28. package/internals/hooks/useInstanceEventHandler.d.ts +15 -0
  29. package/internals/hooks/useInstanceEventHandler.js +82 -0
  30. package/internals/models/events.d.ts +9 -0
  31. package/internals/models/helpers.d.ts +13 -0
  32. package/internals/models/helpers.js +1 -0
  33. package/internals/models/index.d.ts +3 -0
  34. package/internals/models/index.js +3 -0
  35. package/internals/models/plugin.d.ts +69 -0
  36. package/internals/models/plugin.js +1 -0
  37. package/internals/models/treeView.d.ts +23 -0
  38. package/internals/models/treeView.js +1 -0
  39. package/internals/plugins/defaultPlugins.d.ts +10 -0
  40. package/internals/plugins/defaultPlugins.js +9 -0
  41. package/internals/plugins/index.d.ts +2 -0
  42. package/internals/plugins/index.js +1 -0
  43. package/internals/plugins/useTreeViewContextValueBuilder/index.d.ts +2 -0
  44. package/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
  45. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.d.ts +3 -0
  46. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +24 -0
  47. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +34 -0
  48. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
  49. package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -0
  50. package/internals/plugins/useTreeViewExpansion/index.js +1 -0
  51. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +3 -0
  52. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +63 -0
  53. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +32 -0
  54. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
  55. package/internals/plugins/useTreeViewFocus/index.d.ts +2 -0
  56. package/internals/plugins/useTreeViewFocus/index.js +1 -0
  57. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +3 -0
  58. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +89 -0
  59. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +27 -0
  60. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
  61. package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +2 -0
  62. package/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
  63. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +3 -0
  64. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +223 -0
  65. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +14 -0
  66. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
  67. package/internals/plugins/useTreeViewNodes/index.d.ts +2 -0
  68. package/internals/plugins/useTreeViewNodes/index.js +1 -0
  69. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.d.ts +3 -0
  70. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +60 -0
  71. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +27 -0
  72. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
  73. package/internals/plugins/useTreeViewSelection/index.d.ts +2 -0
  74. package/internals/plugins/useTreeViewSelection/index.js +1 -0
  75. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +3 -0
  76. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +172 -0
  77. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +49 -0
  78. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
  79. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +17 -0
  80. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
  81. package/internals/useTreeView/index.d.ts +2 -0
  82. package/internals/useTreeView/index.js +1 -0
  83. package/internals/useTreeView/useTreeView.d.ts +3 -0
  84. package/internals/useTreeView/useTreeView.js +65 -0
  85. package/internals/useTreeView/useTreeView.types.d.ts +20 -0
  86. package/internals/useTreeView/useTreeView.types.js +1 -0
  87. package/internals/useTreeView/useTreeView.utils.d.ts +8 -0
  88. package/internals/useTreeView/useTreeView.utils.js +43 -0
  89. package/internals/useTreeView/useTreeViewModels.d.ts +6 -0
  90. package/internals/useTreeView/useTreeViewModels.js +63 -0
  91. package/internals/utils/EventManager.d.ts +29 -0
  92. package/internals/utils/EventManager.js +69 -0
  93. package/internals/utils/cleanupTracking/CleanupTracking.d.ts +9 -0
  94. package/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
  95. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +7 -0
  96. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +18 -0
  97. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +10 -0
  98. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +38 -0
  99. package/internals/utils/publishTreeViewEvent.d.ts +5 -0
  100. package/internals/utils/publishTreeViewEvent.js +3 -0
  101. package/legacy/TreeItem/TreeItem.js +21 -32
  102. package/legacy/TreeItem/useTreeItem.js +18 -27
  103. package/legacy/TreeView/TreeView.js +65 -766
  104. package/legacy/index.js +3 -2
  105. package/legacy/internals/TreeViewProvider/TreeViewContext.js +21 -0
  106. package/legacy/internals/TreeViewProvider/TreeViewProvider.js +19 -0
  107. package/legacy/internals/TreeViewProvider/TreeViewProvider.types.js +1 -0
  108. package/legacy/internals/TreeViewProvider/index.js +1 -0
  109. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +5 -0
  110. package/legacy/internals/corePlugins/corePlugins.js +6 -0
  111. package/legacy/internals/corePlugins/index.js +1 -0
  112. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
  113. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +45 -0
  114. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +1 -0
  115. package/legacy/internals/hooks/useInstanceEventHandler.js +87 -0
  116. package/legacy/internals/models/events.js +1 -0
  117. package/legacy/internals/models/helpers.js +1 -0
  118. package/legacy/internals/models/index.js +3 -0
  119. package/legacy/internals/models/plugin.js +1 -0
  120. package/legacy/internals/models/treeView.js +1 -0
  121. package/legacy/internals/plugins/defaultPlugins.js +9 -0
  122. package/legacy/internals/plugins/index.js +1 -0
  123. package/legacy/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
  124. package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +25 -0
  125. package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
  126. package/legacy/internals/plugins/useTreeViewExpansion/index.js +1 -0
  127. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +66 -0
  128. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
  129. package/legacy/internals/plugins/useTreeViewFocus/index.js +1 -0
  130. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +99 -0
  131. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
  132. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
  133. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +226 -0
  134. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
  135. package/legacy/internals/plugins/useTreeViewNodes/index.js +1 -0
  136. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +71 -0
  137. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
  138. package/legacy/internals/plugins/useTreeViewSelection/index.js +1 -0
  139. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +188 -0
  140. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
  141. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
  142. package/legacy/internals/useTreeView/index.js +1 -0
  143. package/legacy/internals/useTreeView/useTreeView.js +71 -0
  144. package/legacy/internals/useTreeView/useTreeView.types.js +1 -0
  145. package/legacy/internals/useTreeView/useTreeView.utils.js +46 -0
  146. package/legacy/internals/useTreeView/useTreeViewModels.js +76 -0
  147. package/legacy/internals/utils/EventManager.js +91 -0
  148. package/legacy/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
  149. package/legacy/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +29 -0
  150. package/legacy/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +52 -0
  151. package/legacy/internals/utils/publishTreeViewEvent.js +3 -0
  152. package/modern/TreeItem/TreeItem.js +18 -31
  153. package/modern/TreeItem/useTreeItem.js +18 -27
  154. package/modern/TreeView/TreeView.js +65 -707
  155. package/modern/index.js +3 -2
  156. package/modern/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +8 -18
  157. package/modern/internals/TreeViewProvider/TreeViewProvider.js +21 -0
  158. package/modern/internals/TreeViewProvider/TreeViewProvider.types.js +1 -0
  159. package/modern/internals/TreeViewProvider/index.js +1 -0
  160. package/modern/internals/TreeViewProvider/useTreeViewContext.js +3 -0
  161. package/modern/internals/corePlugins/corePlugins.js +6 -0
  162. package/modern/internals/corePlugins/index.js +1 -0
  163. package/modern/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
  164. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +35 -0
  165. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +1 -0
  166. package/modern/internals/hooks/useInstanceEventHandler.js +77 -0
  167. package/modern/internals/models/events.js +1 -0
  168. package/modern/internals/models/helpers.js +1 -0
  169. package/modern/internals/models/index.js +3 -0
  170. package/modern/internals/models/plugin.js +1 -0
  171. package/modern/internals/models/treeView.js +1 -0
  172. package/modern/internals/plugins/defaultPlugins.js +9 -0
  173. package/modern/internals/plugins/index.js +1 -0
  174. package/modern/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
  175. package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +24 -0
  176. package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
  177. package/modern/internals/plugins/useTreeViewExpansion/index.js +1 -0
  178. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +57 -0
  179. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
  180. package/modern/internals/plugins/useTreeViewFocus/index.js +1 -0
  181. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +84 -0
  182. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
  183. package/modern/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
  184. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +222 -0
  185. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
  186. package/modern/internals/plugins/useTreeViewNodes/index.js +1 -0
  187. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +60 -0
  188. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
  189. package/modern/internals/plugins/useTreeViewSelection/index.js +1 -0
  190. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +169 -0
  191. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
  192. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
  193. package/modern/internals/useTreeView/index.js +1 -0
  194. package/modern/internals/useTreeView/useTreeView.js +65 -0
  195. package/modern/internals/useTreeView/useTreeView.types.js +1 -0
  196. package/modern/internals/useTreeView/useTreeView.utils.js +43 -0
  197. package/modern/internals/useTreeView/useTreeViewModels.js +63 -0
  198. package/modern/internals/utils/EventManager.js +69 -0
  199. package/modern/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
  200. package/modern/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +18 -0
  201. package/modern/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +38 -0
  202. package/modern/internals/utils/publishTreeViewEvent.js +3 -0
  203. package/node/TreeItem/TreeItem.js +20 -33
  204. package/node/TreeItem/useTreeItem.js +18 -29
  205. package/node/TreeView/TreeView.js +65 -707
  206. package/node/index.js +14 -2
  207. package/node/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +10 -19
  208. package/node/internals/TreeViewProvider/TreeViewProvider.js +29 -0
  209. package/node/internals/TreeViewProvider/index.js +12 -0
  210. package/node/internals/TreeViewProvider/useTreeViewContext.js +12 -0
  211. package/node/internals/corePlugins/corePlugins.js +13 -0
  212. package/node/internals/corePlugins/index.js +12 -0
  213. package/node/internals/corePlugins/useTreeViewInstanceEvents/index.js +12 -0
  214. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +44 -0
  215. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +5 -0
  216. package/node/internals/hooks/useInstanceEventHandler.js +88 -0
  217. package/node/internals/models/events.js +5 -0
  218. package/node/internals/models/helpers.js +5 -0
  219. package/node/internals/models/index.js +38 -0
  220. package/node/internals/models/plugin.js +5 -0
  221. package/node/internals/models/treeView.js +5 -0
  222. package/node/internals/plugins/defaultPlugins.js +16 -0
  223. package/node/internals/plugins/index.js +12 -0
  224. package/node/internals/plugins/useTreeViewContextValueBuilder/index.js +12 -0
  225. package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +32 -0
  226. package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +5 -0
  227. package/node/internals/plugins/useTreeViewExpansion/index.js +12 -0
  228. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +67 -0
  229. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +5 -0
  230. package/node/internals/plugins/useTreeViewFocus/index.js +12 -0
  231. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +94 -0
  232. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +5 -0
  233. package/node/internals/plugins/useTreeViewKeyboardNavigation/index.js +12 -0
  234. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +232 -0
  235. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +5 -0
  236. package/node/internals/plugins/useTreeViewNodes/index.js +12 -0
  237. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +70 -0
  238. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +5 -0
  239. package/node/internals/plugins/useTreeViewSelection/index.js +12 -0
  240. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +179 -0
  241. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +5 -0
  242. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +62 -0
  243. package/node/internals/useTreeView/index.js +12 -0
  244. package/node/internals/useTreeView/useTreeView.js +75 -0
  245. package/node/internals/useTreeView/useTreeView.types.js +5 -0
  246. package/node/internals/useTreeView/useTreeView.utils.js +54 -0
  247. package/node/internals/useTreeView/useTreeViewModels.js +73 -0
  248. package/node/internals/utils/EventManager.js +76 -0
  249. package/node/internals/utils/cleanupTracking/CleanupTracking.js +5 -0
  250. package/node/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +25 -0
  251. package/node/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +45 -0
  252. package/node/internals/utils/publishTreeViewEvent.js +10 -0
  253. package/package.json +1 -1
  254. package/themeAugmentation/props.d.ts +1 -1
  255. package/TreeView/TreeViewContext.d.ts +0 -6
  256. package/internals/models.d.ts +0 -1
  257. package/legacy/TreeView/TreeViewContext.js +0 -41
  258. /package/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
  259. /package/internals/{models.js → TreeViewProvider/TreeViewProvider.types.js} +0 -0
  260. /package/{legacy/internals/models.js → internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js} +0 -0
  261. /package/{modern/internals/models.js → internals/models/events.js} +0 -0
  262. /package/legacy/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
  263. /package/modern/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
  264. /package/node/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
  265. /package/node/internals/{models.js → TreeViewProvider/TreeViewProvider.types.js} +0 -0
@@ -0,0 +1,69 @@
1
+ // Used https://gist.github.com/mudge/5830382 as a starting point.
2
+ // See https://github.com/browserify/events/blob/master/events.js for
3
+ // the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.
4
+ export class EventManager {
5
+ constructor() {
6
+ this.maxListeners = 20;
7
+ this.warnOnce = false;
8
+ this.events = {};
9
+ }
10
+ on(eventName, listener, options = {}) {
11
+ let collection = this.events[eventName];
12
+ if (!collection) {
13
+ collection = {
14
+ highPriority: new Map(),
15
+ regular: new Map()
16
+ };
17
+ this.events[eventName] = collection;
18
+ }
19
+ if (options.isFirst) {
20
+ collection.highPriority.set(listener, true);
21
+ } else {
22
+ collection.regular.set(listener, true);
23
+ }
24
+ if (process.env.NODE_ENV !== 'production') {
25
+ const collectionSize = collection.highPriority.size + collection.regular.size;
26
+ if (collectionSize > this.maxListeners && !this.warnOnce) {
27
+ this.warnOnce = true;
28
+ console.warn([`Possible EventEmitter memory leak detected. ${collectionSize} ${eventName} listeners added.`].join('\n'));
29
+ }
30
+ }
31
+ }
32
+ removeListener(eventName, listener) {
33
+ if (this.events[eventName]) {
34
+ this.events[eventName].regular.delete(listener);
35
+ this.events[eventName].highPriority.delete(listener);
36
+ }
37
+ }
38
+ removeAllListeners() {
39
+ this.events = {};
40
+ }
41
+ emit(eventName, ...args) {
42
+ const collection = this.events[eventName];
43
+ if (!collection) {
44
+ return;
45
+ }
46
+ const highPriorityListeners = Array.from(collection.highPriority.keys());
47
+ const regularListeners = Array.from(collection.regular.keys());
48
+ for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {
49
+ const listener = highPriorityListeners[i];
50
+ if (collection.highPriority.has(listener)) {
51
+ listener.apply(this, args);
52
+ }
53
+ }
54
+ for (let i = 0; i < regularListeners.length; i += 1) {
55
+ const listener = regularListeners[i];
56
+ if (collection.regular.has(listener)) {
57
+ listener.apply(this, args);
58
+ }
59
+ }
60
+ }
61
+ once(eventName, listener) {
62
+ // eslint-disable-next-line consistent-this
63
+ const that = this;
64
+ this.on(eventName, function oneTimeListener(...args) {
65
+ that.removeListener(eventName, oneTimeListener);
66
+ listener.apply(that, args);
67
+ });
68
+ }
69
+ }
@@ -0,0 +1,9 @@
1
+ export type UnregisterToken = {
2
+ cleanupToken: number;
3
+ };
4
+ export type UnsubscribeFn = () => void;
5
+ export interface CleanupTracking {
6
+ register(object: any, unsubscribe: UnsubscribeFn, unregisterToken: UnregisterToken): void;
7
+ unregister(unregisterToken: UnregisterToken): void;
8
+ reset(): void;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { CleanupTracking, UnsubscribeFn, UnregisterToken } from './CleanupTracking';
2
+ export declare class FinalizationRegistryBasedCleanupTracking implements CleanupTracking {
3
+ registry: FinalizationRegistry<UnsubscribeFn>;
4
+ register(object: any, unsubscribe: UnsubscribeFn, unregisterToken: UnregisterToken): void;
5
+ unregister(unregisterToken: UnregisterToken): void;
6
+ reset(): void;
7
+ }
@@ -0,0 +1,18 @@
1
+ export class FinalizationRegistryBasedCleanupTracking {
2
+ constructor() {
3
+ this.registry = new FinalizationRegistry(unsubscribe => {
4
+ if (typeof unsubscribe === 'function') {
5
+ unsubscribe();
6
+ }
7
+ });
8
+ }
9
+ register(object, unsubscribe, unregisterToken) {
10
+ this.registry.register(object, unsubscribe, unregisterToken);
11
+ }
12
+ unregister(unregisterToken) {
13
+ this.registry.unregister(unregisterToken);
14
+ }
15
+
16
+ // eslint-disable-next-line class-methods-use-this
17
+ reset() {}
18
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { CleanupTracking, UnregisterToken, UnsubscribeFn } from './CleanupTracking';
3
+ export declare class TimerBasedCleanupTracking implements CleanupTracking {
4
+ timeouts?: Map<number, NodeJS.Timeout> | undefined;
5
+ cleanupTimeout: number;
6
+ constructor(timeout?: number);
7
+ register(object: any, unsubscribe: UnsubscribeFn, unregisterToken: UnregisterToken): void;
8
+ unregister(unregisterToken: UnregisterToken): void;
9
+ reset(): void;
10
+ }
@@ -0,0 +1,38 @@
1
+ // If no effect ran after this amount of time, we assume that the render was not committed by React
2
+ const CLEANUP_TIMER_LOOP_MILLIS = 1000;
3
+ export class TimerBasedCleanupTracking {
4
+ constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {
5
+ this.timeouts = new Map();
6
+ this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;
7
+ this.cleanupTimeout = timeout;
8
+ }
9
+ register(object, unsubscribe, unregisterToken) {
10
+ if (!this.timeouts) {
11
+ this.timeouts = new Map();
12
+ }
13
+ const timeout = setTimeout(() => {
14
+ if (typeof unsubscribe === 'function') {
15
+ unsubscribe();
16
+ }
17
+ this.timeouts.delete(unregisterToken.cleanupToken);
18
+ }, this.cleanupTimeout);
19
+ this.timeouts.set(unregisterToken.cleanupToken, timeout);
20
+ }
21
+ unregister(unregisterToken) {
22
+ const timeout = this.timeouts.get(unregisterToken.cleanupToken);
23
+ if (timeout) {
24
+ this.timeouts.delete(unregisterToken.cleanupToken);
25
+ clearTimeout(timeout);
26
+ }
27
+ }
28
+ reset() {
29
+ if (this.timeouts) {
30
+ this.timeouts.forEach((value, key) => {
31
+ this.unregister({
32
+ cleanupToken: key
33
+ });
34
+ });
35
+ this.timeouts = undefined;
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,5 @@
1
+ import { UseTreeViewInstanceEventsInstance } from '../corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types';
2
+ import { TreeViewAnyPluginSignature, TreeViewUsedEvents } from '../models';
3
+ export declare const publishTreeViewEvent: <Instance extends UseTreeViewInstanceEventsInstance & {
4
+ $$signature: TreeViewAnyPluginSignature;
5
+ }, E extends keyof Instance["$$signature"]["events"] | keyof import("../models").MergePluginsProperty<[import("../corePlugins").TreeViewCorePluginsSignature, ...Instance["$$signature"]["dependantPlugins"]], "events">>(instance: Instance, eventName: E, params: TreeViewUsedEvents<Instance["$$signature"]>[E]["params"]) => void;
@@ -0,0 +1,3 @@
1
+ export const publishTreeViewEvent = (instance, eventName, params) => {
2
+ instance.$$publishEvent(eventName, params);
3
+ };
@@ -13,10 +13,10 @@ import useForkRef from '@mui/utils/useForkRef';
13
13
  import unsupportedProp from '@mui/utils/unsupportedProp';
14
14
  import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
15
15
  import { unstable_composeClasses as composeClasses } from '@mui/base';
16
- import { TreeViewContext } from '../TreeView/TreeViewContext';
17
- import { DescendantProvider, useDescendant } from '../TreeView/descendants';
16
+ import { DescendantProvider, useDescendant } from '../internals/TreeViewProvider/DescendantProvider';
18
17
  import { TreeItemContent } from './TreeItemContent';
19
18
  import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
19
+ import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
21
  import { jsxs as _jsxs } from "react/jsx-runtime";
22
22
  var useUtilityClasses = function useUtilityClasses(ownerState) {
@@ -152,20 +152,12 @@ export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, r
152
152
  TransitionComponent = _props$TransitionComp === void 0 ? Collapse : _props$TransitionComp,
153
153
  TransitionProps = props.TransitionProps,
154
154
  other = _objectWithoutProperties(props, _excluded);
155
- var _React$useContext = React.useContext(TreeViewContext),
156
- contextIcons = _React$useContext.icons,
157
- focus = _React$useContext.focus,
158
- isExpanded = _React$useContext.isExpanded,
159
- isFocused = _React$useContext.isFocused,
160
- isSelected = _React$useContext.isSelected,
161
- isDisabled = _React$useContext.isDisabled,
162
- multiSelect = _React$useContext.multiSelect,
163
- disabledItemsFocusable = _React$useContext.disabledItemsFocusable,
164
- mapFirstChar = _React$useContext.mapFirstChar,
165
- unMapFirstChar = _React$useContext.unMapFirstChar,
166
- registerNode = _React$useContext.registerNode,
167
- unregisterNode = _React$useContext.unregisterNode,
168
- treeId = _React$useContext.treeId;
155
+ var _useTreeViewContext = useTreeViewContext(),
156
+ contextIcons = _useTreeViewContext.icons,
157
+ multiSelect = _useTreeViewContext.multiSelect,
158
+ disabledItemsFocusable = _useTreeViewContext.disabledItemsFocusable,
159
+ treeId = _useTreeViewContext.treeId,
160
+ instance = _useTreeViewContext.instance;
169
161
  var id;
170
162
  if (idProp != null) {
171
163
  id = idProp;
@@ -188,10 +180,10 @@ export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, r
188
180
  index = _useDescendant.index,
189
181
  parentId = _useDescendant.parentId;
190
182
  var expandable = Boolean(Array.isArray(children) ? children.length : children);
191
- var expanded = isExpanded ? isExpanded(nodeId) : false;
192
- var focused = isFocused ? isFocused(nodeId) : false;
193
- var selected = isSelected ? isSelected(nodeId) : false;
194
- var disabled = isDisabled ? isDisabled(nodeId) : false;
183
+ var expanded = instance ? instance.isNodeExpanded(nodeId) : false;
184
+ var focused = instance ? instance.isNodeFocused(nodeId) : false;
185
+ var selected = instance ? instance.isNodeSelected(nodeId) : false;
186
+ var disabled = instance ? instance.isNodeDisabled(nodeId) : false;
195
187
  var ownerState = _extends({}, props, {
196
188
  expanded: expanded,
197
189
  focused: focused,
@@ -215,8 +207,8 @@ export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, r
215
207
  }
216
208
  React.useEffect(function () {
217
209
  // On the first render a node's index will be -1. We want to wait for the real index.
218
- if (registerNode && unregisterNode && index !== -1) {
219
- registerNode({
210
+ if (instance && index !== -1) {
211
+ instance.updateNode({
220
212
  id: nodeId,
221
213
  idAttribute: id,
222
214
  index: index,
@@ -225,21 +217,18 @@ export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, r
225
217
  disabled: disabledProp
226
218
  });
227
219
  return function () {
228
- unregisterNode(nodeId);
220
+ return instance.removeNode(nodeId);
229
221
  };
230
222
  }
231
223
  return undefined;
232
- }, [registerNode, unregisterNode, parentId, index, nodeId, expandable, disabledProp, id]);
224
+ }, [instance, parentId, index, nodeId, expandable, disabledProp, id]);
233
225
  React.useEffect(function () {
234
- if (mapFirstChar && unMapFirstChar && label) {
226
+ if (instance && label) {
235
227
  var _contentRef$current$t, _contentRef$current;
236
- mapFirstChar(nodeId, ((_contentRef$current$t = (_contentRef$current = contentRef.current) == null ? void 0 : _contentRef$current.textContent) != null ? _contentRef$current$t : '').substring(0, 1).toLowerCase());
237
- return function () {
238
- unMapFirstChar(nodeId);
239
- };
228
+ return instance.mapFirstChar(nodeId, ((_contentRef$current$t = (_contentRef$current = contentRef.current) == null ? void 0 : _contentRef$current.textContent) != null ? _contentRef$current$t : '').substring(0, 1).toLowerCase());
240
229
  }
241
230
  return undefined;
242
- }, [mapFirstChar, unMapFirstChar, nodeId, label]);
231
+ }, [instance, nodeId, label]);
243
232
  var ariaSelected;
244
233
  if (multiSelect) {
245
234
  ariaSelected = selected;
@@ -266,8 +255,8 @@ export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, r
266
255
  });
267
256
  }
268
257
  var unfocusable = !disabledItemsFocusable && disabled;
269
- if (!focused && event.currentTarget === event.target && !unfocusable) {
270
- focus(event, nodeId);
258
+ if (instance && !focused && event.currentTarget === event.target && !unfocusable) {
259
+ instance.focusNode(event, nodeId);
271
260
  }
272
261
  }
273
262
  return /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
@@ -1,51 +1,42 @@
1
- import * as React from 'react';
2
- import { TreeViewContext } from '../TreeView/TreeViewContext';
1
+ import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
3
2
  export function useTreeItem(nodeId) {
4
- var _React$useContext = React.useContext(TreeViewContext),
5
- focus = _React$useContext.focus,
6
- isExpanded = _React$useContext.isExpanded,
7
- isExpandable = _React$useContext.isExpandable,
8
- isFocused = _React$useContext.isFocused,
9
- isDisabled = _React$useContext.isDisabled,
10
- isSelected = _React$useContext.isSelected,
11
- multiSelect = _React$useContext.multiSelect,
12
- selectNode = _React$useContext.selectNode,
13
- selectRange = _React$useContext.selectRange,
14
- toggleExpansion = _React$useContext.toggleExpansion;
15
- var expandable = isExpandable ? isExpandable(nodeId) : false;
16
- var expanded = isExpanded ? isExpanded(nodeId) : false;
17
- var focused = isFocused ? isFocused(nodeId) : false;
18
- var disabled = isDisabled ? isDisabled(nodeId) : false;
19
- var selected = isSelected ? isSelected(nodeId) : false;
3
+ var _useTreeViewContext = useTreeViewContext(),
4
+ instance = _useTreeViewContext.instance,
5
+ multiSelect = _useTreeViewContext.multiSelect;
6
+ var expandable = instance ? instance.isNodeExpandable(nodeId) : false;
7
+ var expanded = instance ? instance.isNodeExpanded(nodeId) : false;
8
+ var focused = instance ? instance.isNodeFocused(nodeId) : false;
9
+ var selected = instance ? instance.isNodeSelected(nodeId) : false;
10
+ var disabled = instance ? instance.isNodeDisabled(nodeId) : false;
20
11
  var handleExpansion = function handleExpansion(event) {
21
- if (!disabled) {
12
+ if (instance && !disabled) {
22
13
  if (!focused) {
23
- focus(event, nodeId);
14
+ instance.focusNode(event, nodeId);
24
15
  }
25
16
  var multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
26
17
 
27
18
  // If already expanded and trying to toggle selection don't close
28
- if (expandable && !(multiple && isExpanded(nodeId))) {
29
- toggleExpansion(event, nodeId);
19
+ if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
20
+ instance.toggleNodeExpansion(event, nodeId);
30
21
  }
31
22
  }
32
23
  };
33
24
  var handleSelection = function handleSelection(event) {
34
- if (!disabled) {
25
+ if (instance && !disabled) {
35
26
  if (!focused) {
36
- focus(event, nodeId);
27
+ instance.focusNode(event, nodeId);
37
28
  }
38
29
  var multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
39
30
  if (multiple) {
40
31
  if (event.shiftKey) {
41
- selectRange(event, {
32
+ instance.selectRange(event, {
42
33
  end: nodeId
43
34
  });
44
35
  } else {
45
- selectNode(event, nodeId, true);
36
+ instance.selectNode(event, nodeId, true);
46
37
  }
47
38
  } else {
48
- selectNode(event, nodeId);
39
+ instance.selectNode(event, nodeId);
49
40
  }
50
41
  }
51
42
  };