@mui/x-tree-view 8.23.0 → 8.24.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.
- package/CHANGELOG.md +111 -1
- package/RichTreeView/RichTreeView.d.ts +1 -1
- package/RichTreeView/RichTreeView.js +34 -28
- package/RichTreeView/RichTreeView.types.d.ts +6 -4
- package/RichTreeView/index.d.ts +1 -3
- package/RichTreeView/index.js +1 -13
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
- package/RichTreeView/useExtractRichTreeViewParameters.js +91 -0
- package/SimpleTreeView/SimpleTreeView.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.js +30 -24
- package/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.js +78 -0
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/RichTreeView/RichTreeView.d.ts +1 -1
- package/esm/RichTreeView/RichTreeView.js +33 -27
- package/esm/RichTreeView/RichTreeView.types.d.ts +6 -4
- package/esm/RichTreeView/index.d.ts +1 -3
- package/esm/RichTreeView/index.js +1 -1
- package/esm/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
- package/esm/RichTreeView/useExtractRichTreeViewParameters.js +83 -0
- package/esm/SimpleTreeView/SimpleTreeView.d.ts +1 -1
- package/esm/SimpleTreeView/SimpleTreeView.js +29 -23
- package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
- package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
- package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js +70 -0
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +1 -1
- package/esm/hooks/useRichTreeViewApiRef.d.ts +2 -2
- package/esm/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
- package/esm/hooks/useTreeItemModel.d.ts +2 -2
- package/esm/hooks/useTreeItemModel.js +1 -1
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +25 -34
- package/esm/hooks/useTreeViewApiRef.d.ts +2 -4
- package/esm/hooks/useTreeViewApiRef.js +3 -2
- package/esm/index.d.ts +0 -1
- package/esm/index.js +1 -2
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +126 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +49 -0
- package/esm/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
- package/esm/internals/MinimalTreeViewStore/TimeoutManager.js +39 -0
- package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
- package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +16 -0
- package/esm/internals/MinimalTreeViewStore/index.d.ts +2 -0
- package/esm/internals/MinimalTreeViewStore/index.js +2 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.js +21 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js +15 -0
- package/esm/internals/RichTreeViewStore/index.d.ts +3 -0
- package/esm/internals/RichTreeViewStore/index.js +3 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +18 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +5 -0
- package/esm/internals/SimpleTreeViewStore/index.d.ts +2 -0
- package/esm/internals/SimpleTreeViewStore/index.js +2 -0
- package/esm/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -3
- package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
- package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
- package/esm/internals/TreeViewProvider/TreeViewProvider.js +11 -6
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
- package/esm/internals/TreeViewProvider/index.d.ts +1 -1
- package/esm/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
- package/esm/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
- package/esm/internals/components/RichTreeViewItems.js +3 -3
- package/esm/internals/hooks/useTreeViewRootProps.d.ts +287 -0
- package/esm/internals/hooks/useTreeViewRootProps.js +30 -0
- package/esm/internals/hooks/useTreeViewStore.d.ts +10 -0
- package/esm/internals/hooks/useTreeViewStore.js +19 -0
- package/esm/internals/index.d.ts +15 -21
- package/esm/internals/index.js +11 -14
- package/esm/internals/models/events.d.ts +24 -3
- package/esm/internals/models/index.d.ts +2 -3
- package/esm/internals/models/index.js +2 -3
- package/esm/internals/models/itemPlugin.d.ts +9 -0
- package/esm/internals/models/treeView.d.ts +5 -9
- package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
- package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.js +124 -0
- package/esm/internals/plugins/expansion/index.d.ts +2 -0
- package/esm/internals/plugins/expansion/index.js +2 -0
- package/esm/internals/plugins/expansion/selectors.d.ts +27 -0
- package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +5 -5
- package/esm/internals/plugins/expansion/utils.d.ts +5 -0
- package/esm/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
- package/esm/internals/plugins/focus/TreeViewFocusPlugin.js +107 -0
- package/esm/internals/plugins/focus/index.d.ts +2 -0
- package/esm/internals/plugins/focus/index.js +2 -0
- package/esm/internals/plugins/focus/selectors.d.ts +21 -0
- package/esm/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +6 -6
- package/esm/internals/plugins/id/index.d.ts +1 -0
- package/esm/internals/plugins/id/index.js +1 -0
- package/esm/internals/plugins/id/selectors.d.ts +13 -0
- package/esm/internals/plugins/id/selectors.js +18 -0
- package/esm/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
- package/esm/internals/plugins/items/TreeViewItemsPlugin.js +223 -0
- package/esm/internals/plugins/items/index.d.ts +3 -0
- package/esm/internals/plugins/items/index.js +3 -0
- package/esm/internals/plugins/items/selectors.d.ts +60 -0
- package/esm/internals/plugins/items/selectors.js +64 -0
- package/esm/internals/plugins/items/utils.d.ts +43 -0
- package/esm/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -50
- package/esm/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
- package/esm/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +81 -0
- package/esm/internals/plugins/jsxItems/index.d.ts +1 -0
- package/esm/internals/plugins/jsxItems/index.js +1 -0
- package/esm/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
- package/esm/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +29 -17
- package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
- package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +306 -0
- package/esm/internals/plugins/keyboardNavigation/index.d.ts +1 -0
- package/esm/internals/plugins/keyboardNavigation/index.js +1 -0
- package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
- package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +50 -0
- package/esm/internals/plugins/labelEditing/index.d.ts +2 -0
- package/esm/internals/plugins/labelEditing/index.js +2 -0
- package/{internals/plugins/useTreeViewLabel → esm/internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
- package/esm/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +2 -2
- package/esm/internals/plugins/labelEditing/selectors.d.ts +15 -0
- package/esm/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
- package/esm/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/esm/internals/plugins/lazyLoading/index.js +2 -0
- package/esm/internals/plugins/lazyLoading/selectors.d.ts +19 -0
- package/esm/internals/plugins/lazyLoading/selectors.js +25 -0
- package/esm/internals/plugins/lazyLoading/types.d.ts +5 -0
- package/esm/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
- package/esm/internals/plugins/selection/TreeViewSelectionPlugin.js +319 -0
- package/esm/internals/plugins/selection/index.d.ts +2 -0
- package/esm/internals/plugins/selection/index.js +2 -0
- package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
- package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +3 -3
- package/esm/internals/plugins/selection/selectors.d.ts +48 -0
- package/esm/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -9
- package/esm/internals/utils/tree.d.ts +8 -10
- package/esm/internals/utils/tree.js +2 -2
- package/esm/models/items.d.ts +5 -2
- package/esm/useTreeItem/useTreeItem.d.ts +18 -2
- package/esm/useTreeItem/useTreeItem.js +14 -18
- package/esm/useTreeItem/useTreeItem.types.d.ts +4 -19
- package/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
- package/hooks/useRichTreeViewApiRef.d.ts +2 -2
- package/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
- package/hooks/useTreeItemModel.d.ts +2 -2
- package/hooks/useTreeItemModel.js +2 -2
- package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +41 -49
- package/hooks/useTreeViewApiRef.d.ts +2 -4
- package/hooks/useTreeViewApiRef.js +2 -4
- package/index.d.ts +0 -1
- package/index.js +1 -22
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +134 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +58 -0
- package/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
- package/internals/MinimalTreeViewStore/TimeoutManager.js +46 -0
- package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
- package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +23 -0
- package/internals/MinimalTreeViewStore/index.d.ts +2 -0
- package/internals/MinimalTreeViewStore/index.js +27 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.js +30 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.utils.js +22 -0
- package/internals/RichTreeViewStore/index.d.ts +3 -0
- package/internals/RichTreeViewStore/index.js +38 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +26 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +11 -0
- package/internals/SimpleTreeViewStore/index.d.ts +2 -0
- package/internals/SimpleTreeViewStore/index.js +27 -0
- package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +3 -4
- package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
- package/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
- package/internals/TreeViewProvider/TreeViewProvider.js +14 -9
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
- package/internals/TreeViewProvider/index.d.ts +1 -1
- package/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
- package/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
- package/internals/components/RichTreeViewItems.js +9 -9
- package/internals/hooks/useTreeViewRootProps.d.ts +287 -0
- package/internals/hooks/useTreeViewRootProps.js +36 -0
- package/internals/hooks/useTreeViewStore.d.ts +10 -0
- package/internals/hooks/useTreeViewStore.js +26 -0
- package/internals/index.d.ts +15 -21
- package/internals/index.js +40 -70
- package/internals/models/events.d.ts +24 -3
- package/internals/models/index.d.ts +2 -3
- package/internals/models/index.js +11 -22
- package/internals/models/itemPlugin.d.ts +9 -0
- package/internals/models/treeView.d.ts +5 -9
- package/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
- package/internals/plugins/expansion/TreeViewExpansionPlugin.js +132 -0
- package/internals/plugins/expansion/index.d.ts +2 -0
- package/internals/plugins/expansion/index.js +27 -0
- package/internals/plugins/expansion/selectors.d.ts +27 -0
- package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +8 -8
- package/internals/plugins/expansion/utils.d.ts +5 -0
- package/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
- package/internals/plugins/focus/TreeViewFocusPlugin.js +114 -0
- package/internals/plugins/focus/index.d.ts +2 -0
- package/internals/plugins/focus/index.js +27 -0
- package/internals/plugins/focus/selectors.d.ts +21 -0
- package/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +9 -9
- package/internals/plugins/id/index.d.ts +1 -0
- package/internals/plugins/id/index.js +16 -0
- package/internals/plugins/id/selectors.d.ts +13 -0
- package/internals/plugins/id/selectors.js +24 -0
- package/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
- package/internals/plugins/items/TreeViewItemsPlugin.js +231 -0
- package/internals/plugins/items/index.d.ts +3 -0
- package/internals/plugins/items/index.js +46 -0
- package/internals/plugins/items/selectors.d.ts +60 -0
- package/internals/plugins/{useTreeViewItems/useTreeViewItems.selectors.js → items/selectors.js} +16 -16
- package/internals/plugins/items/utils.d.ts +43 -0
- package/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -51
- package/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
- package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +89 -0
- package/internals/plugins/jsxItems/index.d.ts +1 -0
- package/internals/plugins/jsxItems/index.js +16 -0
- package/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
- package/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +30 -17
- package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
- package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +313 -0
- package/internals/plugins/keyboardNavigation/index.d.ts +1 -0
- package/internals/plugins/keyboardNavigation/index.js +16 -0
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +58 -0
- package/internals/plugins/labelEditing/index.d.ts +2 -0
- package/internals/plugins/labelEditing/index.js +27 -0
- package/{esm/internals/plugins/useTreeViewLabel → internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
- package/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +6 -6
- package/internals/plugins/labelEditing/selectors.d.ts +15 -0
- package/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
- package/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/internals/plugins/lazyLoading/index.js +27 -0
- package/internals/plugins/lazyLoading/selectors.d.ts +19 -0
- package/internals/plugins/{useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js → lazyLoading/selectors.js} +11 -6
- package/internals/plugins/lazyLoading/types.d.ts +5 -0
- package/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
- package/internals/plugins/selection/TreeViewSelectionPlugin.js +327 -0
- package/internals/plugins/selection/index.d.ts +2 -0
- package/internals/plugins/selection/index.js +27 -0
- package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
- package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +13 -13
- package/internals/plugins/selection/selectors.d.ts +48 -0
- package/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -9
- package/internals/utils/tree.d.ts +8 -10
- package/internals/utils/tree.js +33 -33
- package/models/items.d.ts +5 -2
- package/package.json +2 -2
- package/useTreeItem/useTreeItem.d.ts +18 -2
- package/useTreeItem/useTreeItem.js +18 -23
- package/useTreeItem/useTreeItem.types.d.ts +4 -19
- package/RichTreeView/RichTreeView.plugins.d.ts +0 -10
- package/RichTreeView/RichTreeView.plugins.js +0 -15
- package/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
- package/SimpleTreeView/SimpleTreeView.plugins.js +0 -15
- package/esm/RichTreeView/RichTreeView.plugins.d.ts +0 -10
- package/esm/RichTreeView/RichTreeView.plugins.js +0 -9
- package/esm/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
- package/esm/SimpleTreeView/SimpleTreeView.plugins.js +0 -9
- package/esm/internals/corePlugins/corePlugins.d.ts +0 -9
- package/esm/internals/corePlugins/corePlugins.js +0 -8
- package/esm/internals/corePlugins/index.d.ts +0 -2
- package/esm/internals/corePlugins/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewId/index.js +0 -2
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -38
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -9
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -26
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -31
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -12
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
- package/esm/internals/hooks/useInstanceEventHandler.d.ts +0 -15
- package/esm/internals/hooks/useInstanceEventHandler.js +0 -79
- package/esm/internals/models/helpers.d.ts +0 -7
- package/esm/internals/models/plugin.d.ts +0 -166
- package/esm/internals/models/plugin.js +0 -1
- package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewExpansion/index.js +0 -2
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -149
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
- package/esm/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewFocus/index.js +0 -2
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -113
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
- package/esm/internals/plugins/useTreeViewItems/index.d.ts +0 -4
- package/esm/internals/plugins/useTreeViewItems/index.js +0 -3
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -223
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -64
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
- package/esm/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewJSXItems/index.js +0 -1
- package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -104
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -1
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -305
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
- package/esm/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewLabel/index.js +0 -2
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -70
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +0 -20
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -1
- package/esm/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewSelection/index.js +0 -2
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -231
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -107
- package/esm/internals/useTreeView/index.d.ts +0 -1
- package/esm/internals/useTreeView/index.js +0 -1
- package/esm/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
- package/esm/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -51
- package/esm/internals/useTreeView/useTreeView.d.ts +0 -18
- package/esm/internals/useTreeView/useTreeView.js +0 -102
- package/esm/internals/useTreeView/useTreeView.types.d.ts +0 -20
- package/esm/internals/useTreeView/useTreeView.types.js +0 -1
- package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
- package/esm/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
- package/esm/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -14
- package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
- package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -38
- package/esm/internals/utils/plugins.d.ts +0 -2
- package/esm/internals/utils/plugins.js +0 -4
- package/esm/internals/utils/publishTreeViewEvent.d.ts +0 -5
- package/esm/internals/utils/publishTreeViewEvent.js +0 -3
- package/internals/corePlugins/corePlugins.d.ts +0 -9
- package/internals/corePlugins/corePlugins.js +0 -14
- package/internals/corePlugins/index.d.ts +0 -2
- package/internals/corePlugins/index.js +0 -12
- package/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
- package/internals/corePlugins/useTreeViewId/index.js +0 -19
- package/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -46
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -15
- package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -34
- package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
- package/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -12
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -38
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -12
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -19
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
- package/internals/hooks/useInstanceEventHandler.d.ts +0 -15
- package/internals/hooks/useInstanceEventHandler.js +0 -87
- package/internals/models/helpers.d.ts +0 -7
- package/internals/models/plugin.d.ts +0 -166
- package/internals/models/plugin.js +0 -5
- package/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
- package/internals/plugins/useTreeViewExpansion/index.js +0 -19
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -157
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -5
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
- package/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
- package/internals/plugins/useTreeViewFocus/index.js +0 -19
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -121
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -5
- package/internals/plugins/useTreeViewItems/index.d.ts +0 -4
- package/internals/plugins/useTreeViewItems/index.js +0 -32
- package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -231
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -5
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
- package/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
- package/internals/plugins/useTreeViewJSXItems/index.js +0 -12
- package/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -112
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -5
- package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
- package/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -12
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -312
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -5
- package/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
- package/internals/plugins/useTreeViewLabel/index.js +0 -19
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -78
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -5
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
- package/internals/plugins/useTreeViewLazyLoading/index.js +0 -12
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -5
- package/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
- package/internals/plugins/useTreeViewSelection/index.js +0 -19
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -240
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -116
- package/internals/useTreeView/index.d.ts +0 -1
- package/internals/useTreeView/index.js +0 -12
- package/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
- package/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -60
- package/internals/useTreeView/useTreeView.d.ts +0 -18
- package/internals/useTreeView/useTreeView.js +0 -112
- package/internals/useTreeView/useTreeView.types.d.ts +0 -20
- package/internals/useTreeView/useTreeView.types.js +0 -5
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
- package/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
- package/internals/utils/cleanupTracking/CleanupTracking.js +0 -5
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -21
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -45
- package/internals/utils/plugins.d.ts +0 -2
- package/internals/utils/plugins.js +0 -11
- package/internals/utils/publishTreeViewEvent.d.ts +0 -5
- package/internals/utils/publishTreeViewEvent.js +0 -10
- /package/esm/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
- /package/esm/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
- /package/esm/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
- /package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
- /package/esm/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
- /package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
- /package/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';
|
|
4
|
-
import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
|
|
5
|
-
import { findOrderInTremauxTree, getAllNavigableItems, getFirstNavigableItem, getLastNavigableItem, getNonDisabledItemsInRange } from "../../utils/tree.js";
|
|
6
|
-
import { propagateSelection, getAddedAndRemovedItems, getLookupFromArray } from "./useTreeViewSelection.utils.js";
|
|
7
|
-
import { selectionSelectors } from "./useTreeViewSelection.selectors.js";
|
|
8
|
-
import { itemsSelectors } from "../useTreeViewItems/useTreeViewItems.selectors.js";
|
|
9
|
-
import { useTreeViewSelectionItemPlugin } from "./itemPlugin.js";
|
|
10
|
-
export const useTreeViewSelection = ({
|
|
11
|
-
store,
|
|
12
|
-
params
|
|
13
|
-
}) => {
|
|
14
|
-
useAssertModelConsistency({
|
|
15
|
-
componentName: 'Tree View',
|
|
16
|
-
propName: 'selectedItems',
|
|
17
|
-
controlled: params.selectedItems,
|
|
18
|
-
defaultValue: params.defaultSelectedItems
|
|
19
|
-
});
|
|
20
|
-
const lastSelectedItem = React.useRef(null);
|
|
21
|
-
const lastSelectedRange = React.useRef({});
|
|
22
|
-
const setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
|
|
23
|
-
const oldModel = selectionSelectors.selectedItemsRaw(store.state);
|
|
24
|
-
let cleanModel;
|
|
25
|
-
const isMultiSelectEnabled = selectionSelectors.isMultiSelectEnabled(store.state);
|
|
26
|
-
if (isMultiSelectEnabled && (params.selectionPropagation.descendants || params.selectionPropagation.parents)) {
|
|
27
|
-
cleanModel = propagateSelection({
|
|
28
|
-
store,
|
|
29
|
-
selectionPropagation: params.selectionPropagation,
|
|
30
|
-
newModel: newModel,
|
|
31
|
-
oldModel: oldModel,
|
|
32
|
-
additionalItemsToPropagate
|
|
33
|
-
});
|
|
34
|
-
} else {
|
|
35
|
-
cleanModel = newModel;
|
|
36
|
-
}
|
|
37
|
-
if (params.onItemSelectionToggle) {
|
|
38
|
-
if (isMultiSelectEnabled) {
|
|
39
|
-
const changes = getAddedAndRemovedItems({
|
|
40
|
-
store,
|
|
41
|
-
newModel: cleanModel,
|
|
42
|
-
oldModel: oldModel
|
|
43
|
-
});
|
|
44
|
-
if (params.onItemSelectionToggle) {
|
|
45
|
-
changes.added.forEach(itemId => {
|
|
46
|
-
params.onItemSelectionToggle(event, itemId, true);
|
|
47
|
-
});
|
|
48
|
-
changes.removed.forEach(itemId => {
|
|
49
|
-
params.onItemSelectionToggle(event, itemId, false);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
} else if (params.onItemSelectionToggle && cleanModel !== oldModel) {
|
|
53
|
-
if (oldModel != null) {
|
|
54
|
-
params.onItemSelectionToggle(event, oldModel, false);
|
|
55
|
-
}
|
|
56
|
-
if (cleanModel != null) {
|
|
57
|
-
params.onItemSelectionToggle(event, cleanModel, true);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (params.selectedItems === undefined) {
|
|
62
|
-
store.set('selection', _extends({}, store.state.selection, {
|
|
63
|
-
selectedItems: cleanModel
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
params.onSelectedItemsChange?.(event, cleanModel);
|
|
67
|
-
};
|
|
68
|
-
const setItemSelection = ({
|
|
69
|
-
itemId,
|
|
70
|
-
event = null,
|
|
71
|
-
keepExistingSelection = false,
|
|
72
|
-
shouldBeSelected
|
|
73
|
-
}) => {
|
|
74
|
-
if (!selectionSelectors.enabled(store.state)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
let newSelected;
|
|
78
|
-
const isMultiSelectEnabled = selectionSelectors.isMultiSelectEnabled(store.state);
|
|
79
|
-
if (keepExistingSelection) {
|
|
80
|
-
const oldSelected = selectionSelectors.selectedItems(store.state);
|
|
81
|
-
const isSelectedBefore = selectionSelectors.isItemSelected(store.state, itemId);
|
|
82
|
-
if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
|
|
83
|
-
newSelected = oldSelected.filter(id => id !== itemId);
|
|
84
|
-
} else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
|
|
85
|
-
newSelected = [itemId].concat(oldSelected);
|
|
86
|
-
} else {
|
|
87
|
-
newSelected = oldSelected;
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
// eslint-disable-next-line no-lonely-if
|
|
91
|
-
if (shouldBeSelected === false || shouldBeSelected == null && selectionSelectors.isItemSelected(store.state, itemId)) {
|
|
92
|
-
newSelected = isMultiSelectEnabled ? [] : null;
|
|
93
|
-
} else {
|
|
94
|
-
newSelected = isMultiSelectEnabled ? [itemId] : itemId;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
setSelectedItems(event, newSelected,
|
|
98
|
-
// If shouldBeSelected === selectionSelectors.isItemSelected(store, itemId), we still want to propagate the select.
|
|
99
|
-
// This is useful when the element is in an indeterminate state.
|
|
100
|
-
[itemId]);
|
|
101
|
-
lastSelectedItem.current = itemId;
|
|
102
|
-
lastSelectedRange.current = {};
|
|
103
|
-
};
|
|
104
|
-
const selectRange = (event, [start, end]) => {
|
|
105
|
-
const isMultiSelectEnabled = selectionSelectors.isMultiSelectEnabled(store.state);
|
|
106
|
-
if (!isMultiSelectEnabled) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
let newSelectedItems = selectionSelectors.selectedItems(store.state).slice();
|
|
110
|
-
|
|
111
|
-
// If the last selection was a range selection,
|
|
112
|
-
// remove the items that were part of the last range from the model
|
|
113
|
-
if (Object.keys(lastSelectedRange.current).length > 0) {
|
|
114
|
-
newSelectedItems = newSelectedItems.filter(id => !lastSelectedRange.current[id]);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Add to the model the items that are part of the new range and not already part of the model.
|
|
118
|
-
const selectedItemsLookup = getLookupFromArray(newSelectedItems);
|
|
119
|
-
const range = getNonDisabledItemsInRange(store.state, start, end).filter(id => itemsSelectors.isItemSelectable(store.state, id));
|
|
120
|
-
const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);
|
|
121
|
-
newSelectedItems = newSelectedItems.concat(itemsToAddToModel);
|
|
122
|
-
setSelectedItems(event, newSelectedItems);
|
|
123
|
-
lastSelectedRange.current = getLookupFromArray(range);
|
|
124
|
-
};
|
|
125
|
-
const expandSelectionRange = (event, itemId) => {
|
|
126
|
-
if (lastSelectedItem.current != null) {
|
|
127
|
-
const [start, end] = findOrderInTremauxTree(store.state, itemId, lastSelectedItem.current);
|
|
128
|
-
selectRange(event, [start, end]);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
const selectRangeFromStartToItem = (event, itemId) => {
|
|
132
|
-
selectRange(event, [getFirstNavigableItem(store.state), itemId]);
|
|
133
|
-
};
|
|
134
|
-
const selectRangeFromItemToEnd = (event, itemId) => {
|
|
135
|
-
selectRange(event, [itemId, getLastNavigableItem(store.state)]);
|
|
136
|
-
};
|
|
137
|
-
const selectAllNavigableItems = event => {
|
|
138
|
-
const isMultiSelectEnabled = selectionSelectors.isMultiSelectEnabled(store.state);
|
|
139
|
-
if (!isMultiSelectEnabled) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const navigableItems = getAllNavigableItems(store.state);
|
|
143
|
-
setSelectedItems(event, navigableItems);
|
|
144
|
-
lastSelectedRange.current = getLookupFromArray(navigableItems);
|
|
145
|
-
};
|
|
146
|
-
const selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
|
|
147
|
-
const isMultiSelectEnabled = selectionSelectors.isMultiSelectEnabled(store.state);
|
|
148
|
-
if (!isMultiSelectEnabled) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
let newSelectedItems = selectionSelectors.selectedItems(store.state).slice();
|
|
152
|
-
if (Object.keys(lastSelectedRange.current).length === 0) {
|
|
153
|
-
newSelectedItems.push(nextItem);
|
|
154
|
-
lastSelectedRange.current = {
|
|
155
|
-
[currentItem]: true,
|
|
156
|
-
[nextItem]: true
|
|
157
|
-
};
|
|
158
|
-
} else {
|
|
159
|
-
if (!lastSelectedRange.current[currentItem]) {
|
|
160
|
-
lastSelectedRange.current = {};
|
|
161
|
-
}
|
|
162
|
-
if (lastSelectedRange.current[nextItem]) {
|
|
163
|
-
newSelectedItems = newSelectedItems.filter(id => id !== currentItem);
|
|
164
|
-
delete lastSelectedRange.current[currentItem];
|
|
165
|
-
} else {
|
|
166
|
-
newSelectedItems.push(nextItem);
|
|
167
|
-
lastSelectedRange.current[nextItem] = true;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
setSelectedItems(event, newSelectedItems);
|
|
171
|
-
};
|
|
172
|
-
useIsoLayoutEffect(() => {
|
|
173
|
-
store.set('selection', {
|
|
174
|
-
selectedItems: params.selectedItems === undefined ? store.state.selection.selectedItems : params.selectedItems,
|
|
175
|
-
isEnabled: !params.disableSelection,
|
|
176
|
-
isMultiSelectEnabled: params.multiSelect,
|
|
177
|
-
isCheckboxSelectionEnabled: params.checkboxSelection,
|
|
178
|
-
selectionPropagation: {
|
|
179
|
-
descendants: params.selectionPropagation.descendants,
|
|
180
|
-
parents: params.selectionPropagation.parents
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
}, [store, params.selectedItems, params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
|
|
184
|
-
return {
|
|
185
|
-
getRootProps: () => ({
|
|
186
|
-
'aria-multiselectable': params.multiSelect
|
|
187
|
-
}),
|
|
188
|
-
publicAPI: {
|
|
189
|
-
setItemSelection
|
|
190
|
-
},
|
|
191
|
-
instance: {
|
|
192
|
-
setItemSelection,
|
|
193
|
-
selectAllNavigableItems,
|
|
194
|
-
expandSelectionRange,
|
|
195
|
-
selectRangeFromStartToItem,
|
|
196
|
-
selectRangeFromItemToEnd,
|
|
197
|
-
selectItemFromArrowNavigation
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
};
|
|
201
|
-
useTreeViewSelection.itemPlugin = useTreeViewSelectionItemPlugin;
|
|
202
|
-
const DEFAULT_SELECTED_ITEMS = [];
|
|
203
|
-
const EMPTY_SELECTION_PROPAGATION = {};
|
|
204
|
-
useTreeViewSelection.applyDefaultValuesToParams = ({
|
|
205
|
-
params
|
|
206
|
-
}) => _extends({}, params, {
|
|
207
|
-
disableSelection: params.disableSelection ?? false,
|
|
208
|
-
multiSelect: params.multiSelect ?? false,
|
|
209
|
-
checkboxSelection: params.checkboxSelection ?? false,
|
|
210
|
-
defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null),
|
|
211
|
-
selectionPropagation: params.selectionPropagation ?? EMPTY_SELECTION_PROPAGATION
|
|
212
|
-
});
|
|
213
|
-
useTreeViewSelection.getInitialState = params => ({
|
|
214
|
-
selection: {
|
|
215
|
-
selectedItems: params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems,
|
|
216
|
-
isEnabled: !params.disableSelection,
|
|
217
|
-
isMultiSelectEnabled: params.multiSelect,
|
|
218
|
-
isCheckboxSelectionEnabled: params.checkboxSelection,
|
|
219
|
-
selectionPropagation: params.selectionPropagation
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
useTreeViewSelection.params = {
|
|
223
|
-
disableSelection: true,
|
|
224
|
-
multiSelect: true,
|
|
225
|
-
checkboxSelection: true,
|
|
226
|
-
defaultSelectedItems: true,
|
|
227
|
-
selectedItems: true,
|
|
228
|
-
onSelectedItemsChange: true,
|
|
229
|
-
onItemSelectionToggle: true,
|
|
230
|
-
selectionPropagation: true
|
|
231
|
-
};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { TreeViewState } from "../../models/index.js";
|
|
2
|
-
import { UseTreeViewSelectionSignature } from "./useTreeViewSelection.types.js";
|
|
3
|
-
export declare const selectionSelectors: {
|
|
4
|
-
/**
|
|
5
|
-
* Gets the selected items as provided to the component.
|
|
6
|
-
*/
|
|
7
|
-
selectedItemsRaw: (state: TreeViewState<[UseTreeViewSelectionSignature]>) => string | string[] | null;
|
|
8
|
-
/**
|
|
9
|
-
* Gets the selected items as an array.
|
|
10
|
-
*/
|
|
11
|
-
selectedItems: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewSelection.types.js").UseTreeViewSelectionState & Partial<{}>) => string[];
|
|
12
|
-
/**
|
|
13
|
-
* Gets the selected items as a Map.
|
|
14
|
-
*/
|
|
15
|
-
selectedItemsMap: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewSelection.types.js").UseTreeViewSelectionState & Partial<{}>) => Map<string, true>;
|
|
16
|
-
/**
|
|
17
|
-
* Checks whether selection is enabled.
|
|
18
|
-
*/
|
|
19
|
-
enabled: (state: TreeViewState<[UseTreeViewSelectionSignature]>) => boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Checks whether multi selection is enabled.
|
|
22
|
-
*/
|
|
23
|
-
isMultiSelectEnabled: (state: TreeViewState<[UseTreeViewSelectionSignature]>) => boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Checks whether checkbox selection is enabled.
|
|
26
|
-
*/
|
|
27
|
-
isCheckboxSelectionEnabled: (state: TreeViewState<[UseTreeViewSelectionSignature]>) => boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Gets the selection propagation rules.
|
|
30
|
-
*/
|
|
31
|
-
propagationRules: (state: TreeViewState<[UseTreeViewSelectionSignature]>) => import("../../../index.js").TreeViewSelectionPropagation;
|
|
32
|
-
/**
|
|
33
|
-
* Checks whether an item is selected.
|
|
34
|
-
*/
|
|
35
|
-
isItemSelected: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewSelection.types.js").UseTreeViewSelectionState & Partial<{}>, itemId: string) => boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Checks whether the selection feature is enabled for an item.
|
|
38
|
-
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
39
|
-
*/
|
|
40
|
-
isFeatureEnabledForItem: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewSelection.types.js").UseTreeViewSelectionState & Partial<{}>, _itemId: string) => boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
43
|
-
*/
|
|
44
|
-
canItemBeSelected: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewSelection.types.js").UseTreeViewSelectionState & Partial<{}>, _itemId: string) => boolean;
|
|
45
|
-
};
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import type { DefaultizedProps } from '@mui/x-internals/types';
|
|
3
|
-
import type { TreeViewPluginSignature } from "../../models/index.js";
|
|
4
|
-
import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
|
|
5
|
-
import { UseTreeViewExpansionSignature } from "../useTreeViewExpansion/index.js";
|
|
6
|
-
import { TreeViewSelectionPropagation, TreeViewItemId } from "../../../models/index.js";
|
|
7
|
-
export interface UseTreeViewSelectionPublicAPI {
|
|
8
|
-
/**
|
|
9
|
-
* Select or deselect an item.
|
|
10
|
-
* @param {object} parameters The parameters of the method.
|
|
11
|
-
* @param {TreeViewItemId} parameters.itemId The id of the item to select or deselect.
|
|
12
|
-
* @param {React.SyntheticEvent} parameters.event The DOM event that triggered the change.
|
|
13
|
-
* @param {boolean} parameters.keepExistingSelection If `true`, the other already selected items will remain selected, otherwise, they will be deselected. This parameter is only relevant when `multiSelect` is `true`
|
|
14
|
-
* @param {boolean | undefined} parameters.shouldBeSelected If `true` the item will be selected. If `false` the item will be deselected. If not defined, the item's selection status will be toggled.
|
|
15
|
-
*/
|
|
16
|
-
setItemSelection: (parameters: {
|
|
17
|
-
itemId: TreeViewItemId;
|
|
18
|
-
event?: React.SyntheticEvent;
|
|
19
|
-
shouldBeSelected?: boolean;
|
|
20
|
-
keepExistingSelection?: boolean;
|
|
21
|
-
}) => void;
|
|
22
|
-
}
|
|
23
|
-
export interface UseTreeViewSelectionInstance extends UseTreeViewSelectionPublicAPI {
|
|
24
|
-
/**
|
|
25
|
-
* Select all the navigable items in the tree.
|
|
26
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
27
|
-
*/
|
|
28
|
-
selectAllNavigableItems: (event: React.SyntheticEvent) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Expand the current selection range up to the given item.
|
|
31
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
32
|
-
* @param {TreeViewItemId} itemId The id of the item to expand the selection to.
|
|
33
|
-
*/
|
|
34
|
-
expandSelectionRange: (event: React.SyntheticEvent, itemId: TreeViewItemId) => void;
|
|
35
|
-
/**
|
|
36
|
-
* Expand the current selection range from the first navigable item to the given item.
|
|
37
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
38
|
-
* @param {TreeViewItemId} itemId The id of the item up to which the selection range should be expanded.
|
|
39
|
-
*/
|
|
40
|
-
selectRangeFromStartToItem: (event: React.SyntheticEvent, itemId: TreeViewItemId) => void;
|
|
41
|
-
/**
|
|
42
|
-
* Expand the current selection range from the given item to the last navigable item.
|
|
43
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
44
|
-
* @param {TreeViewItemId} itemId The id of the item from which the selection range should be expanded.
|
|
45
|
-
*/
|
|
46
|
-
selectRangeFromItemToEnd: (event: React.SyntheticEvent, itemId: TreeViewItemId) => void;
|
|
47
|
-
/**
|
|
48
|
-
* Update the selection when navigating with ArrowUp / ArrowDown keys.
|
|
49
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
50
|
-
* @param {TreeViewItemId} currentItemId The id of the active item before the keyboard navigation.
|
|
51
|
-
* @param {TreeViewItemId} nextItemId The id of the active item after the keyboard navigation.
|
|
52
|
-
*/
|
|
53
|
-
selectItemFromArrowNavigation: (event: React.SyntheticEvent, currentItemId: TreeViewItemId, nextItemId: TreeViewItemId) => void;
|
|
54
|
-
}
|
|
55
|
-
export type TreeViewSelectionValue<Multiple extends boolean | undefined> = Multiple extends true ? TreeViewItemId[] : TreeViewItemId | null;
|
|
56
|
-
export interface UseTreeViewSelectionParameters<Multiple extends boolean | undefined> {
|
|
57
|
-
/**
|
|
58
|
-
* Whether selection is disabled.
|
|
59
|
-
* @default false
|
|
60
|
-
*/
|
|
61
|
-
disableSelection?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Selected item ids. (Uncontrolled)
|
|
64
|
-
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
65
|
-
* @default []
|
|
66
|
-
*/
|
|
67
|
-
defaultSelectedItems?: TreeViewSelectionValue<Multiple>;
|
|
68
|
-
/**
|
|
69
|
-
* Selected item ids. (Controlled)
|
|
70
|
-
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
71
|
-
*/
|
|
72
|
-
selectedItems?: TreeViewSelectionValue<Multiple>;
|
|
73
|
-
/**
|
|
74
|
-
* Whether multiple items can be selected.
|
|
75
|
-
* @default false
|
|
76
|
-
*/
|
|
77
|
-
multiSelect?: Multiple;
|
|
78
|
-
/**
|
|
79
|
-
* Whether the Tree View renders a checkbox at the left of its label that allows selecting it.
|
|
80
|
-
* @default false
|
|
81
|
-
*/
|
|
82
|
-
checkboxSelection?: boolean;
|
|
83
|
-
/**
|
|
84
|
-
* When `selectionPropagation.descendants` is set to `true`.
|
|
85
|
-
*
|
|
86
|
-
* - Selecting a parent selects all its descendants automatically.
|
|
87
|
-
* - Deselecting a parent deselects all its descendants automatically.
|
|
88
|
-
*
|
|
89
|
-
* When `selectionPropagation.parents` is set to `true`.
|
|
90
|
-
*
|
|
91
|
-
* - Selecting all the descendants of a parent selects the parent automatically.
|
|
92
|
-
* - Deselecting a descendant of a selected parent deselects the parent automatically.
|
|
93
|
-
*
|
|
94
|
-
* Only works when `multiSelect` is `true`.
|
|
95
|
-
* On the <SimpleTreeView />, only the expanded items are considered (since the collapsed item are not passed to the Tree View component at all)
|
|
96
|
-
*
|
|
97
|
-
* @default { parents: false, descendants: false }
|
|
98
|
-
*/
|
|
99
|
-
selectionPropagation?: TreeViewSelectionPropagation;
|
|
100
|
-
/**
|
|
101
|
-
* Callback fired when Tree Items are selected/deselected.
|
|
102
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
|
|
103
|
-
* @param {TreeViewItemId[] | TreeViewItemId} itemIds The ids of the selected items.
|
|
104
|
-
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
105
|
-
*/
|
|
106
|
-
onSelectedItemsChange?: (event: React.SyntheticEvent | null, itemIds: TreeViewSelectionValue<Multiple>) => void;
|
|
107
|
-
/**
|
|
108
|
-
* Callback fired when a Tree Item is selected or deselected.
|
|
109
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
|
|
110
|
-
* @param {TreeViewItemId} itemId The itemId of the modified item.
|
|
111
|
-
* @param {boolean} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
112
|
-
*/
|
|
113
|
-
onItemSelectionToggle?: (event: React.SyntheticEvent | null, itemId: TreeViewItemId, isSelected: boolean) => void;
|
|
114
|
-
}
|
|
115
|
-
export type UseTreeViewSelectionParametersWithDefaults<Multiple extends boolean> = DefaultizedProps<UseTreeViewSelectionParameters<Multiple>, 'disableSelection' | 'defaultSelectedItems' | 'multiSelect' | 'checkboxSelection' | 'selectionPropagation'>;
|
|
116
|
-
export interface UseTreeViewSelectionState {
|
|
117
|
-
selection: {
|
|
118
|
-
selectedItems: TreeViewSelectionValue<boolean>;
|
|
119
|
-
isEnabled: boolean;
|
|
120
|
-
isMultiSelectEnabled: boolean;
|
|
121
|
-
isCheckboxSelectionEnabled: boolean;
|
|
122
|
-
selectionPropagation: TreeViewSelectionPropagation;
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{
|
|
126
|
-
params: UseTreeViewSelectionParameters<any>;
|
|
127
|
-
paramsWithDefaults: UseTreeViewSelectionParametersWithDefaults<any>;
|
|
128
|
-
instance: UseTreeViewSelectionInstance;
|
|
129
|
-
publicAPI: UseTreeViewSelectionPublicAPI;
|
|
130
|
-
state: UseTreeViewSelectionState;
|
|
131
|
-
dependencies: [UseTreeViewItemsSignature, UseTreeViewExpansionSignature, UseTreeViewItemsSignature];
|
|
132
|
-
}>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { TreeViewItemId, TreeViewSelectionPropagation } from "../../../models/index.js";
|
|
2
|
-
import { TreeViewUsedStore } from "../../models/index.js";
|
|
3
|
-
import { UseTreeViewSelectionSignature } from "./useTreeViewSelection.types.js";
|
|
4
|
-
export declare const getLookupFromArray: (array: string[]) => {
|
|
5
|
-
[itemId: string]: true;
|
|
6
|
-
};
|
|
7
|
-
export declare const getAddedAndRemovedItems: ({
|
|
8
|
-
store,
|
|
9
|
-
oldModel,
|
|
10
|
-
newModel
|
|
11
|
-
}: {
|
|
12
|
-
store: TreeViewUsedStore<UseTreeViewSelectionSignature>;
|
|
13
|
-
oldModel: TreeViewItemId[];
|
|
14
|
-
newModel: TreeViewItemId[];
|
|
15
|
-
}) => {
|
|
16
|
-
added: string[];
|
|
17
|
-
removed: string[];
|
|
18
|
-
};
|
|
19
|
-
export declare const propagateSelection: ({
|
|
20
|
-
store,
|
|
21
|
-
selectionPropagation,
|
|
22
|
-
newModel,
|
|
23
|
-
oldModel,
|
|
24
|
-
additionalItemsToPropagate
|
|
25
|
-
}: {
|
|
26
|
-
store: TreeViewUsedStore<UseTreeViewSelectionSignature>;
|
|
27
|
-
selectionPropagation: TreeViewSelectionPropagation;
|
|
28
|
-
newModel: TreeViewItemId[];
|
|
29
|
-
oldModel: TreeViewItemId[];
|
|
30
|
-
additionalItemsToPropagate?: TreeViewItemId[];
|
|
31
|
-
}) => string[];
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { selectionSelectors } from "./useTreeViewSelection.selectors.js";
|
|
2
|
-
import { itemsSelectors } from "../useTreeViewItems/useTreeViewItems.selectors.js";
|
|
3
|
-
export const getLookupFromArray = array => {
|
|
4
|
-
const lookup = {};
|
|
5
|
-
array.forEach(itemId => {
|
|
6
|
-
lookup[itemId] = true;
|
|
7
|
-
});
|
|
8
|
-
return lookup;
|
|
9
|
-
};
|
|
10
|
-
export const getAddedAndRemovedItems = ({
|
|
11
|
-
store,
|
|
12
|
-
oldModel,
|
|
13
|
-
newModel
|
|
14
|
-
}) => {
|
|
15
|
-
const newModelMap = new Map();
|
|
16
|
-
newModel.forEach(id => {
|
|
17
|
-
newModelMap.set(id, true);
|
|
18
|
-
});
|
|
19
|
-
return {
|
|
20
|
-
added: newModel.filter(itemId => !selectionSelectors.isItemSelected(store.state, itemId)),
|
|
21
|
-
removed: oldModel.filter(itemId => !newModelMap.has(itemId))
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
export const propagateSelection = ({
|
|
25
|
-
store,
|
|
26
|
-
selectionPropagation,
|
|
27
|
-
newModel,
|
|
28
|
-
oldModel,
|
|
29
|
-
additionalItemsToPropagate
|
|
30
|
-
}) => {
|
|
31
|
-
if (!selectionPropagation.descendants && !selectionPropagation.parents) {
|
|
32
|
-
return newModel;
|
|
33
|
-
}
|
|
34
|
-
let shouldRegenerateModel = false;
|
|
35
|
-
const newModelLookup = getLookupFromArray(newModel);
|
|
36
|
-
const changes = getAddedAndRemovedItems({
|
|
37
|
-
store,
|
|
38
|
-
newModel,
|
|
39
|
-
oldModel
|
|
40
|
-
});
|
|
41
|
-
additionalItemsToPropagate?.forEach(itemId => {
|
|
42
|
-
if (newModelLookup[itemId]) {
|
|
43
|
-
if (!changes.added.includes(itemId)) {
|
|
44
|
-
changes.added.push(itemId);
|
|
45
|
-
}
|
|
46
|
-
} else if (!changes.removed.includes(itemId)) {
|
|
47
|
-
changes.removed.push(itemId);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
changes.added.forEach(addedItemId => {
|
|
51
|
-
if (selectionPropagation.descendants) {
|
|
52
|
-
const selectDescendants = itemId => {
|
|
53
|
-
if (itemId !== addedItemId) {
|
|
54
|
-
shouldRegenerateModel = true;
|
|
55
|
-
newModelLookup[itemId] = true;
|
|
56
|
-
}
|
|
57
|
-
itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(selectDescendants);
|
|
58
|
-
};
|
|
59
|
-
selectDescendants(addedItemId);
|
|
60
|
-
}
|
|
61
|
-
if (selectionPropagation.parents) {
|
|
62
|
-
const checkAllDescendantsSelected = itemId => {
|
|
63
|
-
if (!newModelLookup[itemId]) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
const children = itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
|
|
67
|
-
return children.every(checkAllDescendantsSelected);
|
|
68
|
-
};
|
|
69
|
-
const selectParents = itemId => {
|
|
70
|
-
const parentId = itemsSelectors.itemParentId(store.state, itemId);
|
|
71
|
-
if (parentId == null) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const siblings = itemsSelectors.itemOrderedChildrenIds(store.state, parentId);
|
|
75
|
-
if (siblings.every(checkAllDescendantsSelected)) {
|
|
76
|
-
shouldRegenerateModel = true;
|
|
77
|
-
newModelLookup[parentId] = true;
|
|
78
|
-
selectParents(parentId);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
selectParents(addedItemId);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
changes.removed.forEach(removedItemId => {
|
|
85
|
-
if (selectionPropagation.parents) {
|
|
86
|
-
let parentId = itemsSelectors.itemParentId(store.state, removedItemId);
|
|
87
|
-
while (parentId != null) {
|
|
88
|
-
if (newModelLookup[parentId]) {
|
|
89
|
-
shouldRegenerateModel = true;
|
|
90
|
-
delete newModelLookup[parentId];
|
|
91
|
-
}
|
|
92
|
-
parentId = itemsSelectors.itemParentId(store.state, parentId);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (selectionPropagation.descendants) {
|
|
96
|
-
const deSelectDescendants = itemId => {
|
|
97
|
-
if (itemId !== removedItemId) {
|
|
98
|
-
shouldRegenerateModel = true;
|
|
99
|
-
delete newModelLookup[itemId];
|
|
100
|
-
}
|
|
101
|
-
itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(deSelectDescendants);
|
|
102
|
-
};
|
|
103
|
-
deSelectDescendants(removedItemId);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
return shouldRegenerateModel ? Object.keys(newModelLookup) : newModel;
|
|
107
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useTreeView } from "./useTreeView.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useTreeView } from "./useTreeView.js";
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ConvertSignaturesIntoPlugins, MergeSignaturesProperty, TreeViewAnyPluginSignature, TreeViewPluginSignature } from "../models/index.js";
|
|
2
|
-
import { UseTreeViewBaseProps } from "./useTreeView.types.js";
|
|
3
|
-
import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
|
|
4
|
-
export declare const useExtractPluginParamsFromProps: <TSignatures extends readonly TreeViewPluginSignature<any>[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>>({
|
|
5
|
-
props: {
|
|
6
|
-
apiRef,
|
|
7
|
-
...props
|
|
8
|
-
},
|
|
9
|
-
plugins
|
|
10
|
-
}: ExtractPluginParamsFromPropsParameters<TSignatures, TProps>) => ExtractPluginParamsFromPropsReturnValue<TSignatures, TProps>;
|
|
11
|
-
interface ExtractPluginParamsFromPropsParameters<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> {
|
|
12
|
-
plugins: ConvertSignaturesIntoPlugins<readonly [...TreeViewCorePluginSignatures, ...TSignatures]>;
|
|
13
|
-
props: TProps;
|
|
14
|
-
}
|
|
15
|
-
interface ExtractPluginParamsFromPropsReturnValue<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> extends UseTreeViewBaseProps<TSignatures> {
|
|
16
|
-
pluginParams: MergeSignaturesProperty<TSignatures, 'paramsWithDefaults'>;
|
|
17
|
-
forwardedProps: Omit<TProps, keyof MergeSignaturesProperty<TSignatures, 'params'>>;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
-
const _excluded = ["apiRef"];
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
export const useExtractPluginParamsFromProps = _ref => {
|
|
5
|
-
let {
|
|
6
|
-
props: {
|
|
7
|
-
apiRef
|
|
8
|
-
},
|
|
9
|
-
plugins
|
|
10
|
-
} = _ref,
|
|
11
|
-
props = _objectWithoutPropertiesLoose(_ref.props, _excluded);
|
|
12
|
-
const paramsLookup = React.useMemo(() => {
|
|
13
|
-
const tempParamsLookup = {};
|
|
14
|
-
plugins.forEach(plugin => {
|
|
15
|
-
Object.assign(tempParamsLookup, plugin.params);
|
|
16
|
-
});
|
|
17
|
-
return tempParamsLookup;
|
|
18
|
-
}, [plugins]);
|
|
19
|
-
const {
|
|
20
|
-
forwardedProps,
|
|
21
|
-
pluginParams
|
|
22
|
-
} = React.useMemo(() => {
|
|
23
|
-
const tempPluginParams = {};
|
|
24
|
-
const tempForwardedProps = {};
|
|
25
|
-
Object.keys(props).forEach(propName => {
|
|
26
|
-
const prop = props[propName];
|
|
27
|
-
if (paramsLookup[propName]) {
|
|
28
|
-
tempPluginParams[propName] = prop;
|
|
29
|
-
} else {
|
|
30
|
-
tempForwardedProps[propName] = prop;
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
const pluginParamsWithDefaults = plugins.reduce((acc, plugin) => {
|
|
34
|
-
if (plugin.applyDefaultValuesToParams) {
|
|
35
|
-
return plugin.applyDefaultValuesToParams({
|
|
36
|
-
params: acc
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
return acc;
|
|
40
|
-
}, tempPluginParams);
|
|
41
|
-
return {
|
|
42
|
-
forwardedProps: tempForwardedProps,
|
|
43
|
-
pluginParams: pluginParamsWithDefaults
|
|
44
|
-
};
|
|
45
|
-
}, [plugins, props, paramsLookup]);
|
|
46
|
-
return {
|
|
47
|
-
forwardedProps,
|
|
48
|
-
pluginParams,
|
|
49
|
-
apiRef
|
|
50
|
-
};
|
|
51
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
3
|
-
import { UseTreeViewBaseProps, UseTreeViewParameters, UseTreeViewReturnValue } from "./useTreeView.types.js";
|
|
4
|
-
export declare function useTreeViewApiInitialization<T>(inputApiRef: React.RefObject<Partial<T> | undefined> | undefined): React.RefObject<T>;
|
|
5
|
-
/**
|
|
6
|
-
* This is the main hook that sets the plugin system up for the tree-view.
|
|
7
|
-
*
|
|
8
|
-
* It manages the data used to create the tree-view.
|
|
9
|
-
*
|
|
10
|
-
* @param plugins All the plugins that will be used in the tree-view.
|
|
11
|
-
* @param props The props passed to the tree-view.
|
|
12
|
-
* @param rootRef The ref of the root element.
|
|
13
|
-
*/
|
|
14
|
-
export declare const useTreeView: <TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>>({
|
|
15
|
-
plugins: inPlugins,
|
|
16
|
-
rootRef,
|
|
17
|
-
props
|
|
18
|
-
}: UseTreeViewParameters<TSignatures, TProps>) => UseTreeViewReturnValue<TSignatures>;
|