UNPKG

@antv/s2

Version:

effective spreadsheet render core lib

43 lines 1.71 kB
import { isArray, isEmpty, isEqual, isString, mergeWith, uniq } from 'lodash'; import { DEFAULT_DATA_CONFIG } from '../common/constant/dataConfig'; import { DEFAULT_OPTIONS } from '../common/constant/options'; export const customMerge = (...objects) => { const customize = (origin, updated) => { if (isArray(origin) && isArray(updated)) { return updated; } }; const args = [...objects, customize]; return mergeWith({}, ...args); }; const uniqueFields = (fields) => { const keys = ['rows', 'columns', 'values']; const result = keys.reduce((r, key) => { const list = fields[key]; const unique = uniq(list); if (!isEqual(unique, list)) { // eslint-disable-next-line no-console console.warn(`fields.${key}:[${list}] should be unique`); } r[key] = unique; return r; }, {}); return Object.assign(Object.assign({}, fields), result); }; export const setupDataConfig = (...dataConfig) => { var _a; const mergedDataCfg = customMerge(DEFAULT_DATA_CONFIG, ...dataConfig); // fields 去重 mergedDataCfg.fields = uniqueFields(mergedDataCfg.fields); // 自定义树和数值为空的场景, 关闭 数值置于列头 const isCustomRows = (_a = mergedDataCfg.fields.rows) === null || _a === void 0 ? void 0 : _a.some((field) => !isString(field)); const isEmptyValues = isEmpty(mergedDataCfg.fields.values); if (isCustomRows || isEmptyValues) { mergedDataCfg.fields.valueInCols = false; } return mergedDataCfg; }; export const setupOptions = (...options) => { return customMerge(DEFAULT_OPTIONS, ...options); }; //# sourceMappingURL=merge.js.map