react-vtree
Version:
React component for efficiently rendering large tree structures
41 lines (37 loc) • 1.09 kB
JavaScript
export const identity = value => value;
export const createRecord = (data, {
opennessState
}, {
recomputeTree
}) => {
var _opennessState;
const record = {
data,
isOpen: (_opennessState = opennessState == null ? void 0 : opennessState[data.id]) != null ? _opennessState : data.isOpenByDefault,
toggle() {
record.isOpen = !record.isOpen;
return recomputeTree({
refreshNodes: record.isOpen
});
}
};
return record;
};
export const shouldUpdateRecords = ({
opennessState,
useDefaultOpenness = false
}) => !!opennessState || useDefaultOpenness;
export const updateRecord = (record, recordId, {
opennessState,
useDefaultOpenness = false
}) => {
var _opennessState2;
record.isOpen = useDefaultOpenness ? record.data.isOpenByDefault : (_opennessState2 = opennessState == null ? void 0 : opennessState[recordId]) != null ? _opennessState2 : record.isOpen;
};
export const updateRecordOnNewData = (record, {
useDefaultOpenness = false
}) => {
if (useDefaultOpenness) {
record.isOpen = record.data.isOpenByDefault;
}
};