ze-react-component-library
Version:
ZeroETP React Component Library
200 lines (162 loc) • 5.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ZETreeFilterContext = exports.useZETreeFilter = exports.loopTree = void 0;
require("antd/lib/message/style");
var _message2 = _interopRequireDefault(require("antd/lib/message"));
var _react = require("react");
var _nanoid = require("nanoid");
var _useService = _interopRequireDefault(require("../hooks/useService"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var __assign = void 0 && (void 0).__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {
to[j] = from[i];
}
return to;
};
var loopTree = function loopTree(arr, id, formatItem, matchRule) {
return arr.map(function (d) {
if (matchRule ? matchRule(d, id) : d.id === id) {
return formatItem(d);
} else {
if (d.children) {
var children = loopTree(d.children, id, formatItem, matchRule);
if ((children === null || children === void 0 ? void 0 : children.length) >= 2) {
return __assign(__assign({}, d), {
children: children
});
}
return __assign({}, children[0]);
}
return d;
}
}).filter(function (f) {
return f !== null;
});
};
exports.loopTree = loopTree;
var useZETreeFilter = function useZETreeFilter(_a) {
var value = _a.value,
initialValue = _a.initialValue,
onChange = _a.onChange,
conditions = _a.conditions,
maxCount = _a.maxCount,
itemInitialProps = _a.itemInitialProps;
var _b = (0, _react.useState)([]),
data = _b[0],
setData = _b[1];
var actualValue = loopTree(value || data, "", function (item) {
return __assign(__assign({}, item), {
props: __assign(__assign({}, item.props), itemInitialProps)
});
}, function (item) {
return !item.children;
});
var actualChange = function actualChange(v) {
setData(v);
onChange === null || onChange === void 0 ? void 0 : onChange(v);
};
var onAdd = function onAdd(parentId, extraProps, mode) {
var newItem = {
id: (0, _nanoid.nanoid)(),
props: __assign(__assign({}, itemInitialProps), extraProps)
};
var firstItem = actualValue[0];
var id;
if (parentId) {
id = parentId;
} else if (firstItem) {
id = firstItem.id;
}
if (!firstItem) {
actualChange([newItem]);
} else {
var newData = loopTree(actualValue, id, function (item) {
var _a, _b;
if (item.children) {
var arr = __spreadArray([], item.children);
var lastItem = item.children[item.children.length - 1];
if (mode === "drop" && lastItem && !((_a = lastItem.props) === null || _a === void 0 ? void 0 : _a.value) && !lastItem.children) {
newItem.disableActions = lastItem.disableActions;
newItem.disabled = lastItem.disabled;
newItem.resetOnDelete = lastItem.resetOnDelete;
arr.pop();
}
return __assign(__assign({}, item), {
children: __spreadArray(__spreadArray([], arr), [newItem])
});
}
return {
id: (0, _nanoid.nanoid)(),
condition: (_b = conditions === null || conditions === void 0 ? void 0 : conditions[0]) === null || _b === void 0 ? void 0 : _b.value,
children: [__assign({}, item), newItem]
};
});
actualChange(newData);
}
};
var onUpdate = function onUpdate(id, changedProps) {
actualChange(loopTree(actualValue, id, function (item) {
return changedProps ? __assign(__assign({}, item), {
props: __assign(__assign({}, item.props), changedProps)
}) : item;
}));
};
var onRemove = function onRemove(id) {
actualChange(loopTree(actualValue, id, function () {
return null;
}));
};
var onReset = function onReset(id) {
actualChange(loopTree(actualValue, id, function (item) {
return __assign(__assign({}, item), {
props: itemInitialProps
});
}));
};
var onSwitch = function onSwitch(id, newCondition) {
actualChange(loopTree(actualValue, id, function (item) {
return __assign(__assign({}, item), {
condition: newCondition
});
}));
};
var onRootAdd = function onRootAdd(extraProps, mode) {
var _a, _b, _c;
if (!maxCount || !((_a = actualValue[0]) === null || _a === void 0 ? void 0 : _a.children) && actualValue.length < maxCount || ((_b = actualValue[0]) === null || _b === void 0 ? void 0 : _b.children) && actualValue[0].children.length < maxCount) {
onAdd((_c = actualValue[0]) === null || _c === void 0 ? void 0 : _c.id, extraProps, mode);
} else {
_message2.default.error("\u6700\u591A\u65B0\u589E" + maxCount + "\u4E2A");
}
};
(0, _react.useEffect)(function () {
if (initialValue && !value) {
actualChange(initialValue);
}
}, []);
return {
data: actualValue,
onAdd: onAdd,
onRemove: onRemove,
onReset: onReset,
onRootAdd: onRootAdd,
onSwitch: onSwitch,
onUpdate: onUpdate
};
};
exports.useZETreeFilter = useZETreeFilter;
var ZETreeFilterContext = (0, _useService.default)(useZETreeFilter);
exports.ZETreeFilterContext = ZETreeFilterContext;