tdesign-react
Version:
TDesign Component for React
294 lines (288 loc) • 10.3 kB
JavaScript
/**
* tdesign v1.16.2
* (c) 2025 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var slicedToArray = require('../../_chunks/dep-5cb0d66d.js');
var React = require('react');
var treeStore = require('../../_chunks/dep-7b4afbb1.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-542bd26e.js');
require('../../_chunks/dep-737b8bd8.js');
require('../../_chunks/dep-0fe55884.js');
require('../../_chunks/dep-b325182b.js');
require('../../_chunks/dep-831bdf33.js');
require('mitt');
require('../../_chunks/dep-12fef349.js');
require('../../_chunks/dep-e88f025c.js');
require('../../_chunks/dep-a7fe58de.js');
require('../../_chunks/dep-05f87b98.js');
require('../../_chunks/dep-d41e2be3.js');
require('../../_chunks/dep-5dd1b13c.js');
require('../../_chunks/dep-bdafd287.js');
require('../../_chunks/dep-eb2203ae.js');
require('../../_chunks/dep-4ce0670e.js');
require('../../_chunks/dep-3448f35f.js');
require('../../_chunks/dep-3332ad6f.js');
require('../../_chunks/dep-98783318.js');
require('../../_chunks/dep-967e785f.js');
require('../../_chunks/dep-5c8525ea.js');
require('../../_chunks/dep-fc884a8e.js');
require('../../_chunks/dep-7659797a.js');
require('../../_chunks/dep-0398d4b6.js');
require('../../_chunks/dep-008b21d4.js');
require('../../_chunks/dep-9193eded.js');
require('../../_chunks/dep-4d300b8f.js');
require('../../_chunks/dep-50a2eaa5.js');
require('../../_chunks/dep-3b256bc0.js');
require('../../_chunks/dep-b6a3ada9.js');
require('../../_chunks/dep-735cd5b9.js');
require('../../_chunks/dep-c38245dc.js');
require('../../_chunks/dep-54a7e129.js');
require('../../_chunks/dep-7f4d0687.js');
require('../../_chunks/dep-a1e3e59b.js');
require('../../_chunks/dep-c6904081.js');
require('../../_chunks/dep-56f56356.js');
require('../../_chunks/dep-c89d3d1e.js');
require('../../_chunks/dep-474eb386.js');
require('../../_chunks/dep-afe817f9.js');
require('../../_chunks/dep-e018b522.js');
require('../../_chunks/dep-b23d5e45.js');
require('../../_chunks/dep-f0b4efe7.js');
require('../../_chunks/dep-002bcd4b.js');
require('../../_chunks/dep-2ad01263.js');
require('../../_chunks/dep-24ab8f68.js');
require('../../_chunks/dep-6ea1b49c.js');
require('../../_chunks/dep-bb3e9667.js');
require('../../_chunks/dep-b7bd245a.js');
require('../../_chunks/dep-22771603.js');
require('../../_chunks/dep-24a8304d.js');
require('../../_chunks/dep-b304bc94.js');
require('../../_chunks/dep-693d541f.js');
require('../../_chunks/dep-8053f7e1.js');
require('../../_chunks/dep-4f4b2eb1.js');
require('../../_chunks/dep-0fc2b225.js');
require('../../_chunks/dep-0b70c7ec.js');
require('../../_chunks/dep-b5fda651.js');
require('../../_chunks/dep-908ffaed.js');
require('../../_chunks/dep-a76ede3e.js');
require('../../hooks/useIsFirstRender.js');
require('../../hooks/useLayoutEffect.js');
require('../../_chunks/dep-e0735b5f.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