tdesign-react
Version:
TDesign Component for React
298 lines (292 loc) • 10.4 kB
JavaScript
/**
* tdesign v1.16.6
* (c) 2026 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var slicedToArray = require('../../_chunks/dep-3281986a.js');
var React = require('react');
var treeStore = require('../../_chunks/dep-40b2051d.js');
var hooks_useUpdateLayoutEffect = require('../../hooks/useUpdateLayoutEffect.js');
var hooks_usePrevious = require('../../hooks/usePrevious.js');
var hooks_usePersistFn = require('../../hooks/usePersistFn.js');
var cloneDeep = require('../../_chunks/dep-400d026f.js');
require('../../_chunks/dep-54373955.js');
require('../../_chunks/dep-ef5bfcf1.js');
require('../../_chunks/dep-1f6c39e3.js');
require('../../_chunks/dep-90a93885.js');
require('../../_chunks/dep-5eada4cb.js');
require('mitt');
require('../../_chunks/dep-54528cd4.js');
require('../../_chunks/dep-05097eca.js');
require('../../_chunks/dep-33be2db8.js');
require('../../_chunks/dep-989c8b4a.js');
require('../../_chunks/dep-ed99b2c6.js');
require('../../_chunks/dep-fa647529.js');
require('../../_chunks/dep-adec3cbe.js');
require('../../_chunks/dep-a8d5081a.js');
require('../../_chunks/dep-4748ebeb.js');
require('../../_chunks/dep-615c149d.js');
require('../../_chunks/dep-0173c82c.js');
require('../../_chunks/dep-8663a5c9.js');
require('../../_chunks/dep-50349518.js');
require('../../_chunks/dep-8c9795f9.js');
require('../../_chunks/dep-723e29d6.js');
require('../../_chunks/dep-0bd8b970.js');
require('../../_chunks/dep-d7d7df54.js');
require('../../_chunks/dep-7809b92f.js');
require('../../_chunks/dep-73ef2133.js');
require('../../_chunks/dep-cae1e5aa.js');
require('../../_chunks/dep-c9025587.js');
require('../../_chunks/dep-80f72db2.js');
require('../../_chunks/dep-1f8c969d.js');
require('../../_chunks/dep-d24b94bc.js');
require('../../_chunks/dep-66bd7fa8.js');
require('../../_chunks/dep-454836ac.js');
require('../../_chunks/dep-18ca5cd9.js');
require('../../_chunks/dep-116af952.js');
require('../../_chunks/dep-285580c8.js');
require('../../_chunks/dep-854a3020.js');
require('../../_chunks/dep-081faea2.js');
require('../../_chunks/dep-9d3b1a05.js');
require('../../_chunks/dep-403f5edf.js');
require('../../_chunks/dep-6478e7e3.js');
require('../../_chunks/dep-0b97e212.js');
require('../../_chunks/dep-0652d2a6.js');
require('../../_chunks/dep-91b467dd.js');
require('../../_chunks/dep-3facd669.js');
require('../../_chunks/dep-9721faba.js');
require('../../_chunks/dep-1c011250.js');
require('../../_chunks/dep-cb9114ad.js');
require('../../_chunks/dep-f6a777ad.js');
require('../../_chunks/dep-8e51ca2b.js');
require('../../_chunks/dep-4c4d8eee.js');
require('../../_chunks/dep-d1f369bc.js');
require('../../_chunks/dep-2bd15884.js');
require('../../_chunks/dep-d1066fe4.js');
require('../../_chunks/dep-202d6c73.js');
require('../../_chunks/dep-16d185a8.js');
require('../../_chunks/dep-9cb996db.js');
require('../../_chunks/dep-18c47660.js');
require('../../_chunks/dep-19cf95d7.js');
require('../../_chunks/dep-1a7ce20e.js');
require('../../_chunks/dep-e63bc1f4.js');
require('../../_chunks/dep-825f3fca.js');
require('../../_chunks/dep-0cf6dbad.js');
require('../../hooks/useIsFirstRender.js');
require('../../hooks/useLayoutEffect.js');
require('../../_chunks/dep-2bbded38.js');
function useStore(props, refresh) {
var storeRef = React.useRef(null);
var _useState = React.useState(false),
_useState2 = slicedToArray._slicedToArray(_useState, 2),
filterChanged = _useState2[0],
toggleFilterChanged = _useState2[1];
var _useState3 = React.useState(null),
_useState4 = slicedToArray._slicedToArray(_useState3, 2),
prevExpanded = _useState4[0],
changePrevExpanded = _useState4[1];
var data = props.data,
keys = props.keys,
expandAll = props.expandAll,
expandParent = props.expandParent,
expanded = props.expanded,
expandLevel = props.expandLevel,
expandMutex = props.expandMutex,
activable = props.activable,
activeMultiple = props.activeMultiple,
actived = props.actived,
disabled = props.disabled,
disableCheck = props.disableCheck,
draggable = props.draggable,
checkable = props.checkable,
value = props.value,
checkStrictly = props.checkStrictly,
load = props.load,
lazy = props.lazy,
valueMode = props.valueMode,
filter = props.filter,
_onLoad = props.onLoad,
indeterminate = props.indeterminate,
setTreeIndeterminate = props.setTreeIndeterminate,
_props$allowFoldNodeO = props.allowFoldNodeOnFilter,
allowFoldNodeOnFilter = _props$allowFoldNodeO === void 0 ? false : _props$allowFoldNodeO;
var preFilter = hooks_usePrevious["default"](filter);
React.useEffect(function () {
if (!allowFoldNodeOnFilter) return;
toggleFilterChanged(JSON.stringify(preFilter) !== JSON.stringify(filter));
}, [filter, allowFoldNodeOnFilter]);
var expandFilterPath = function expandFilterPath() {
if (!allowFoldNodeOnFilter || !filterChanged) return;
toggleFilterChanged(false);
var store2 = storeRef.current;
if (props.filter) {
if (!prevExpanded) changePrevExpanded(store2.getExpanded());
var pathValues = [];
var allNodes = store2.getNodes();
allNodes.forEach(function (node) {
if (node.vmIsLocked) {
pathValues.push(node.value);
}
});
store2.setExpanded(pathValues);
} else if (prevExpanded) {
store2.replaceExpanded(prevExpanded);
changePrevExpanded(null);
}
};
var handleUpdate = hooks_usePersistFn.usePersistFn(function () {
expandFilterPath();
refresh();
});
var getExpandedArr = function getExpandedArr(arr, store2) {
var expandedMap = /* @__PURE__ */new Map();
arr.forEach(function (val) {
expandedMap.set(val, true);
if (expandParent) {
var node = store2.getNode(val);
node === null || node === void 0 || node.getParents().forEach(function (tn) {
expandedMap.set(tn.value, true);
});
}
});
return Array.from(expandedMap.keys());
};
var createStore = function createStore() {
var store2 = new treeStore.TreeStore({
keys: keys,
activable: activable,
activeMultiple: activeMultiple,
checkable: checkable,
checkStrictly: checkStrictly,
expandAll: expandAll,
expandLevel: expandLevel,
expandMutex: expandMutex,
expandParent: expandParent,
disabled: disabled,
disableCheck: disableCheck,
draggable: draggable,
load: load,
lazy: lazy,
valueMode: valueMode,
filter: filter,
onLoad: function onLoad(info) {
var node = info.node;
_onLoad === null || _onLoad === void 0 || _onLoad({
node: node.getModel()
});
},
onUpdate: handleUpdate,
allowFoldNodeOnFilter: allowFoldNodeOnFilter
});
var list = cloneDeep.cloneDeep(data);
if (!Array.isArray(list)) {
list = [];
}
store2.append(list);
store2.refreshNodes();
if (Array.isArray(value)) {
store2.setChecked(value);
}
if (Array.isArray(expanded)) {
var expandedArr = getExpandedArr(expanded, store2);
store2.setExpanded(expandedArr);
}
if (Array.isArray(actived)) {
store2.setActived(actived);
}
store2.refreshNodes();
return store2;
};
if (!storeRef.current) {
storeRef.current = createStore();
}
var store = storeRef.current;
hooks_useUpdateLayoutEffect["default"](function () {
if (data && Array.isArray(data)) {
var expanded2 = store.getExpanded();
var checked = store.getChecked();
var actived2 = store.getActived();
store.removeAll();
store.append(data);
store.setChecked(checked);
store.setActived(actived2);
store.setExpanded(expanded2);
}
}, [data, store]);
hooks_useUpdateLayoutEffect["default"](function () {
store.setConfig({
keys: keys,
expandAll: expandAll,
expandLevel: expandLevel,
expandMutex: expandMutex,
expandParent: expandParent,
activable: activable,
activeMultiple: activeMultiple,
disabled: disabled,
disableCheck: disableCheck,
checkable: checkable,
draggable: draggable,
checkStrictly: checkStrictly,
load: load,
lazy: lazy,
valueMode: valueMode
});
store.refreshState();
}, [activable, activeMultiple, checkStrictly, draggable, checkable, disabled, disableCheck, expandAll, expandLevel, expandMutex, expandParent, keys, lazy, load, store, valueMode]);
hooks_useUpdateLayoutEffect["default"](function () {
if (expandAll) {
var valueList = store.getNodes().filter(function (node) {
return Array.isArray(node.children) && node.children.length;
}).map(function (node) {
return node.value;
});
store.setExpanded(valueList);
} else {
store.replaceExpanded(prevExpanded);
changePrevExpanded(null);
}
}, [store, expandAll]);
hooks_useUpdateLayoutEffect["default"](function () {
if (Array.isArray(value)) {
store.replaceChecked(value);
var checkedValue = store.getCheckedNodes().map(function (v) {
return v.data[(keys === null || keys === void 0 ? void 0 : keys.value) || "value"];
});
var indeterminateConflict = checkedValue.filter(function (v) {
return indeterminate.includes(v);
});
if (indeterminateConflict.length) {
setTreeIndeterminate(indeterminate.filter(function (v) {
return !indeterminateConflict.includes(v);
}));
}
}
}, [store, value, data]);
hooks_useUpdateLayoutEffect["default"](function () {
if (Array.isArray(expanded)) {
var expandedArr = getExpandedArr(expanded, store);
store.replaceExpanded(expandedArr);
}
}, [expanded, store]);
hooks_useUpdateLayoutEffect["default"](function () {
if (Array.isArray(actived)) {
store.replaceActived(actived);
}
}, [actived, store]);
hooks_useUpdateLayoutEffect["default"](function () {
if (Array.isArray(indeterminate)) {
store.replaceIndeterminate(indeterminate);
}
}, [indeterminate, store, data]);
hooks_useUpdateLayoutEffect["default"](function () {
store.setConfig({
filter: filter
});
store.updateAll();
}, [filter, store]);
return storeRef.current;
}
exports.useStore = useStore;
//# sourceMappingURL=useStore.js.map