@mui/x-tree-view 8.10.2 → 8.11.1
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 +214 -13
- package/RichTreeView/RichTreeView.js +16 -15
- package/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/SimpleTreeView/SimpleTreeView.js +10 -9
- package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.types.d.ts +3 -1
- package/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/RichTreeView/RichTreeView.js +16 -15
- package/esm/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/esm/SimpleTreeView/SimpleTreeView.js +10 -9
- package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.types.d.ts +3 -1
- package/esm/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/hooks/useTreeItemModel.js +3 -3
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
- package/esm/index.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/esm/internals/components/RichTreeViewItems.js +5 -5
- package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
- package/esm/internals/index.d.ts +6 -14
- package/esm/internals/index.js +6 -13
- package/esm/internals/models/plugin.d.ts +2 -3
- package/esm/internals/models/treeView.d.ts +4 -6
- package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
- package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +78 -99
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
- package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeView.js +11 -18
- package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/esm/internals/utils/tree.js +33 -33
- package/esm/useTreeItem/useTreeItem.js +14 -14
- package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/hooks/useTreeItemModel.js +3 -3
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/components/RichTreeViewItems.js +5 -5
- package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/internals/corePlugins/useTreeViewId/index.js +8 -1
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
- package/internals/index.d.ts +6 -14
- package/internals/index.js +12 -73
- package/internals/models/plugin.d.ts +2 -3
- package/internals/models/treeView.d.ts +4 -6
- package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/internals/plugins/useTreeViewExpansion/index.js +8 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/internals/plugins/useTreeViewFocus/index.js +8 -1
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
- package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/index.js +8 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +77 -98
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLabel/index.js +8 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/internals/plugins/useTreeViewSelection/index.js +8 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
- package/internals/useTreeView/useTreeView.d.ts +1 -1
- package/internals/useTreeView/useTreeView.js +11 -18
- package/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/internals/utils/tree.js +31 -31
- package/package.json +12 -13
- package/useTreeItem/useTreeItem.js +14 -14
- package/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/esm/internals/hooks/useSelector.d.ts +0 -4
- package/esm/internals/hooks/useSelector.js +0 -8
- package/esm/internals/utils/TreeViewStore.d.ts +0 -12
- package/esm/internals/utils/TreeViewStore.js +0 -22
- package/esm/internals/utils/selectors.d.ts +0 -21
- package/esm/internals/utils/selectors.js +0 -51
- package/internals/hooks/useSelector.d.ts +0 -4
- package/internals/hooks/useSelector.js +0 -16
- package/internals/utils/TreeViewStore.d.ts +0 -12
- package/internals/utils/TreeViewStore.js +0 -29
- package/internals/utils/selectors.d.ts +0 -21
- package/internals/utils/selectors.js +0 -58
|
@@ -7,6 +7,7 @@ import { UseTreeViewFocusSignature } from "../internals/plugins/useTreeViewFocus
|
|
|
7
7
|
import { UseTreeViewKeyboardNavigationSignature } from "../internals/plugins/useTreeViewKeyboardNavigation/index.js";
|
|
8
8
|
import { UseTreeViewLabelSignature } from "../internals/plugins/useTreeViewLabel/index.js";
|
|
9
9
|
import { UseTreeViewExpansionSignature } from "../internals/plugins/useTreeViewExpansion/index.js";
|
|
10
|
+
import { UseTreeViewLazyLoadingSignature } from "../internals/plugins/useTreeViewLazyLoading/index.js";
|
|
10
11
|
export interface UseTreeItemParameters {
|
|
11
12
|
/**
|
|
12
13
|
* The id attribute of the item. If not provided, it will be generated.
|
|
@@ -199,4 +200,4 @@ export type UseTreeItemMinimalPlugins = readonly [UseTreeViewSelectionSignature,
|
|
|
199
200
|
/**
|
|
200
201
|
* Plugins that `UseTreeItem` can use if they are present, but are not required.
|
|
201
202
|
*/
|
|
202
|
-
export type UseTreeItemOptionalPlugins = readonly [];
|
|
203
|
+
export type UseTreeItemOptionalPlugins = readonly [UseTreeViewLazyLoadingSignature];
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
2
|
-
import { TreeViewStore } from "../utils/TreeViewStore.js";
|
|
3
|
-
import { TreeViewSelector } from "../utils/selectors.js";
|
|
4
|
-
export declare const useSelector: <TSignatures extends readonly TreeViewAnyPluginSignature[], TArgs, TValue>(store: TreeViewStore<TSignatures>, selector: TreeViewSelector<TreeViewState<TSignatures>, TArgs, TValue>, args?: TArgs, equals?: (a: TValue, b: TValue) => boolean) => TValue;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/* We need to import the shim because React 17 does not support the `useSyncExternalStore` API.
|
|
2
|
-
* More info: https://github.com/mui/mui-x/issues/18303#issuecomment-2958392341 */
|
|
3
|
-
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';
|
|
4
|
-
const defaultCompare = Object.is;
|
|
5
|
-
export const useSelector = (store, selector, args = undefined, equals = defaultCompare) => {
|
|
6
|
-
const selectorWithArgs = state => selector(state, args);
|
|
7
|
-
return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);
|
|
8
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
2
|
-
type Listener<T> = (value: T) => void;
|
|
3
|
-
export type StoreUpdater<TSignatures extends readonly TreeViewAnyPluginSignature[]> = (prevState: TreeViewState<TSignatures>) => TreeViewState<TSignatures>;
|
|
4
|
-
export declare class TreeViewStore<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
|
|
5
|
-
value: TreeViewState<TSignatures>;
|
|
6
|
-
private listeners;
|
|
7
|
-
constructor(value: TreeViewState<TSignatures>);
|
|
8
|
-
subscribe: (fn: Listener<TreeViewState<TSignatures>>) => () => void;
|
|
9
|
-
getSnapshot: () => TreeViewState<TSignatures>;
|
|
10
|
-
update: (updater: StoreUpdater<TSignatures>) => void;
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export class TreeViewStore {
|
|
2
|
-
constructor(value) {
|
|
3
|
-
this.value = value;
|
|
4
|
-
this.listeners = new Set();
|
|
5
|
-
}
|
|
6
|
-
subscribe = fn => {
|
|
7
|
-
this.listeners.add(fn);
|
|
8
|
-
return () => {
|
|
9
|
-
this.listeners.delete(fn);
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
getSnapshot = () => {
|
|
13
|
-
return this.value;
|
|
14
|
-
};
|
|
15
|
-
update = updater => {
|
|
16
|
-
const newState = updater(this.value);
|
|
17
|
-
if (newState !== this.value) {
|
|
18
|
-
this.value = newState;
|
|
19
|
-
this.listeners.forEach(l => l(newState));
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CreateSelectorFunction } from 'reselect';
|
|
2
|
-
import { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
3
|
-
/**
|
|
4
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on a required plugin.
|
|
5
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
6
|
-
* @returns {any | undefined} The value of the plugin state.
|
|
7
|
-
*/
|
|
8
|
-
export type TreeViewRootSelector<TSignature extends TreeViewAnyPluginSignature, TIsOptional extends boolean = false> = <TSignatures extends (TIsOptional extends true ? [] : [TSignature]), TOptionalSignatures extends (TIsOptional extends true ? [TSignature] : [])>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TIsOptional extends true ? TSignature['state'][keyof TSignature['state']] | undefined : TSignature['state'][keyof TSignature['state']];
|
|
9
|
-
/**
|
|
10
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on an optional plugin.
|
|
11
|
-
*
|
|
12
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
13
|
-
* @returns {any | undefined} The value of the plugin state or undefined if the plugin is not registered.
|
|
14
|
-
*/
|
|
15
|
-
export type TreeViewRootSelectorForOptionalPlugin<TSignature extends TreeViewAnyPluginSignature> = <TSignatures extends [], TOptionalSignatures extends [TSignature]>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TSignature['state'][keyof TSignature['state']] | undefined;
|
|
16
|
-
export type TreeViewSelector<TState, TArgs, TResult> = (state: TState, args: TArgs) => TResult;
|
|
17
|
-
/**
|
|
18
|
-
* Method wrapping reselect's createSelector to provide caching for tree view instances.
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
export declare const createSelector: CreateSelectorFunction;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { lruMemoize, createSelectorCreator } from 'reselect';
|
|
2
|
-
const reselectCreateSelector = createSelectorCreator({
|
|
3
|
-
memoize: lruMemoize,
|
|
4
|
-
memoizeOptions: {
|
|
5
|
-
maxSize: 1,
|
|
6
|
-
equalityCheck: Object.is
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
|
-
const cache = new WeakMap();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on a required plugin.
|
|
13
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
14
|
-
* @returns {any | undefined} The value of the plugin state.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on an optional plugin.
|
|
19
|
-
*
|
|
20
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
21
|
-
* @returns {any | undefined} The value of the plugin state or undefined if the plugin is not registered.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Method wrapping reselect's createSelector to provide caching for tree view instances.
|
|
26
|
-
*
|
|
27
|
-
*/
|
|
28
|
-
export const createSelector = (...createSelectorArgs) => {
|
|
29
|
-
const selector = (state, selectorArgs) => {
|
|
30
|
-
const cacheKey = state.cacheKey;
|
|
31
|
-
|
|
32
|
-
// If there is no cache for the current tree view instance, create one.
|
|
33
|
-
let cacheForCurrentTreeViewInstance = cache.get(cacheKey);
|
|
34
|
-
if (!cacheForCurrentTreeViewInstance) {
|
|
35
|
-
cacheForCurrentTreeViewInstance = new Map();
|
|
36
|
-
cache.set(cacheKey, cacheForCurrentTreeViewInstance);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// If there is a cached selector, execute it.
|
|
40
|
-
const cachedSelector = cacheForCurrentTreeViewInstance.get(createSelectorArgs);
|
|
41
|
-
if (cachedSelector) {
|
|
42
|
-
return cachedSelector(state, selectorArgs);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Otherwise, create a new selector and cache it and execute it.
|
|
46
|
-
const fn = reselectCreateSelector(...createSelectorArgs);
|
|
47
|
-
cacheForCurrentTreeViewInstance.set(createSelectorArgs, fn);
|
|
48
|
-
return fn(state, selectorArgs);
|
|
49
|
-
};
|
|
50
|
-
return selector;
|
|
51
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
2
|
-
import { TreeViewStore } from "../utils/TreeViewStore.js";
|
|
3
|
-
import { TreeViewSelector } from "../utils/selectors.js";
|
|
4
|
-
export declare const useSelector: <TSignatures extends readonly TreeViewAnyPluginSignature[], TArgs, TValue>(store: TreeViewStore<TSignatures>, selector: TreeViewSelector<TreeViewState<TSignatures>, TArgs, TValue>, args?: TArgs, equals?: (a: TValue, b: TValue) => boolean) => TValue;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useSelector = void 0;
|
|
7
|
-
var _withSelector = require("use-sync-external-store/shim/with-selector");
|
|
8
|
-
/* We need to import the shim because React 17 does not support the `useSyncExternalStore` API.
|
|
9
|
-
* More info: https://github.com/mui/mui-x/issues/18303#issuecomment-2958392341 */
|
|
10
|
-
|
|
11
|
-
const defaultCompare = Object.is;
|
|
12
|
-
const useSelector = (store, selector, args = undefined, equals = defaultCompare) => {
|
|
13
|
-
const selectorWithArgs = state => selector(state, args);
|
|
14
|
-
return (0, _withSelector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);
|
|
15
|
-
};
|
|
16
|
-
exports.useSelector = useSelector;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
2
|
-
type Listener<T> = (value: T) => void;
|
|
3
|
-
export type StoreUpdater<TSignatures extends readonly TreeViewAnyPluginSignature[]> = (prevState: TreeViewState<TSignatures>) => TreeViewState<TSignatures>;
|
|
4
|
-
export declare class TreeViewStore<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
|
|
5
|
-
value: TreeViewState<TSignatures>;
|
|
6
|
-
private listeners;
|
|
7
|
-
constructor(value: TreeViewState<TSignatures>);
|
|
8
|
-
subscribe: (fn: Listener<TreeViewState<TSignatures>>) => () => void;
|
|
9
|
-
getSnapshot: () => TreeViewState<TSignatures>;
|
|
10
|
-
update: (updater: StoreUpdater<TSignatures>) => void;
|
|
11
|
-
}
|
|
12
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TreeViewStore = void 0;
|
|
7
|
-
class TreeViewStore {
|
|
8
|
-
constructor(value) {
|
|
9
|
-
this.value = value;
|
|
10
|
-
this.listeners = new Set();
|
|
11
|
-
}
|
|
12
|
-
subscribe = fn => {
|
|
13
|
-
this.listeners.add(fn);
|
|
14
|
-
return () => {
|
|
15
|
-
this.listeners.delete(fn);
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
getSnapshot = () => {
|
|
19
|
-
return this.value;
|
|
20
|
-
};
|
|
21
|
-
update = updater => {
|
|
22
|
-
const newState = updater(this.value);
|
|
23
|
-
if (newState !== this.value) {
|
|
24
|
-
this.value = newState;
|
|
25
|
-
this.listeners.forEach(l => l(newState));
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
exports.TreeViewStore = TreeViewStore;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CreateSelectorFunction } from 'reselect';
|
|
2
|
-
import { TreeViewAnyPluginSignature, TreeViewState } from "../models/index.js";
|
|
3
|
-
/**
|
|
4
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on a required plugin.
|
|
5
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
6
|
-
* @returns {any | undefined} The value of the plugin state.
|
|
7
|
-
*/
|
|
8
|
-
export type TreeViewRootSelector<TSignature extends TreeViewAnyPluginSignature, TIsOptional extends boolean = false> = <TSignatures extends (TIsOptional extends true ? [] : [TSignature]), TOptionalSignatures extends (TIsOptional extends true ? [TSignature] : [])>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TIsOptional extends true ? TSignature['state'][keyof TSignature['state']] | undefined : TSignature['state'][keyof TSignature['state']];
|
|
9
|
-
/**
|
|
10
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on an optional plugin.
|
|
11
|
-
*
|
|
12
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
13
|
-
* @returns {any | undefined} The value of the plugin state or undefined if the plugin is not registered.
|
|
14
|
-
*/
|
|
15
|
-
export type TreeViewRootSelectorForOptionalPlugin<TSignature extends TreeViewAnyPluginSignature> = <TSignatures extends [], TOptionalSignatures extends [TSignature]>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TSignature['state'][keyof TSignature['state']] | undefined;
|
|
16
|
-
export type TreeViewSelector<TState, TArgs, TResult> = (state: TState, args: TArgs) => TResult;
|
|
17
|
-
/**
|
|
18
|
-
* Method wrapping reselect's createSelector to provide caching for tree view instances.
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
export declare const createSelector: CreateSelectorFunction;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createSelector = void 0;
|
|
7
|
-
var _reselect = require("reselect");
|
|
8
|
-
const reselectCreateSelector = (0, _reselect.createSelectorCreator)({
|
|
9
|
-
memoize: _reselect.lruMemoize,
|
|
10
|
-
memoizeOptions: {
|
|
11
|
-
maxSize: 1,
|
|
12
|
-
equalityCheck: Object.is
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
const cache = new WeakMap();
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on a required plugin.
|
|
19
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
20
|
-
* @returns {any | undefined} The value of the plugin state.
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Type of a selector that take the whole tree view state as input and returns a value based on an optional plugin.
|
|
25
|
-
*
|
|
26
|
-
* @param {TreeViewState} state The state of the Tree View.
|
|
27
|
-
* @returns {any | undefined} The value of the plugin state or undefined if the plugin is not registered.
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Method wrapping reselect's createSelector to provide caching for tree view instances.
|
|
32
|
-
*
|
|
33
|
-
*/
|
|
34
|
-
const createSelector = (...createSelectorArgs) => {
|
|
35
|
-
const selector = (state, selectorArgs) => {
|
|
36
|
-
const cacheKey = state.cacheKey;
|
|
37
|
-
|
|
38
|
-
// If there is no cache for the current tree view instance, create one.
|
|
39
|
-
let cacheForCurrentTreeViewInstance = cache.get(cacheKey);
|
|
40
|
-
if (!cacheForCurrentTreeViewInstance) {
|
|
41
|
-
cacheForCurrentTreeViewInstance = new Map();
|
|
42
|
-
cache.set(cacheKey, cacheForCurrentTreeViewInstance);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// If there is a cached selector, execute it.
|
|
46
|
-
const cachedSelector = cacheForCurrentTreeViewInstance.get(createSelectorArgs);
|
|
47
|
-
if (cachedSelector) {
|
|
48
|
-
return cachedSelector(state, selectorArgs);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Otherwise, create a new selector and cache it and execute it.
|
|
52
|
-
const fn = reselectCreateSelector(...createSelectorArgs);
|
|
53
|
-
cacheForCurrentTreeViewInstance.set(createSelectorArgs, fn);
|
|
54
|
-
return fn(state, selectorArgs);
|
|
55
|
-
};
|
|
56
|
-
return selector;
|
|
57
|
-
};
|
|
58
|
-
exports.createSelector = createSelector;
|