Outlook_Addin_LLM/node_modules/@fluentui/react-tree/lib/hooks/useControllableOpenItems.js

20 lines
718 B
JavaScript

import { useControllableState } from '@fluentui/react-utilities';
import * as React from 'react';
import { ImmutableSet } from '../utils/ImmutableSet';
/**
* @internal
*/ export function useControllableOpenItems(props) {
return useControllableState({
state: React.useMemo(()=>props.openItems && ImmutableSet.from(props.openItems), [
props.openItems
]),
defaultState: props.defaultOpenItems && (()=>ImmutableSet.from(props.defaultOpenItems)),
initialState: ImmutableSet.empty
});
}
/**
* @internal
*/ export function createNextOpenItems(data, previousOpenItems) {
return data.open ? previousOpenItems.add(data.value) : previousOpenItems.delete(data.value);
}