UNPKG

d-render

Version:

基于 Element Plus 二次封装的数据驱动渲染组件库 - 表单、搜索表单、表格配置化渲染

42 lines (39 loc) 1.19 kB
import { getFieldValue, isEmpty, isArray } from '@d-render/shared'; const resolveRowKeyGetter = (rowKey) => { if (typeof rowKey === "function") return rowKey; if (typeof rowKey === "string" && rowKey) return (row) => getFieldValue(row, rowKey); return void 0; }; const createRowMatcher = (model, rowKeyGetter) => { const refSet = new Set(model); if (!rowKeyGetter) return (row) => refSet.has(row); const keySet = /* @__PURE__ */ new Set(); model.forEach((item) => { const key = rowKeyGetter(item); if (!isEmpty(key)) keySet.add(key); }); return (row) => { if (refSet.has(row)) return true; const key = rowKeyGetter(row); return !isEmpty(key) && keySet.has(key); }; }; const flattenTreeRows = (data = [], treeProps) => { const childrenKey = treeProps == null ? void 0 : treeProps.children; if (!childrenKey) return data; return data.reduce((acc, row) => { acc.push(row); const children = getFieldValue(row, childrenKey); if (isArray(children)) { acc.push(...flattenTreeRows(children, treeProps)); } return acc; }, []); }; export { createRowMatcher, flattenTreeRows, resolveRowKeyGetter };