UNPKG

@antv/s2

Version:

effective spreadsheet render core lib

49 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupOptions = exports.setupDataConfig = exports.customMerge = void 0; const lodash_1 = require("lodash"); const dataConfig_1 = require("../common/constant/dataConfig"); const options_1 = require("../common/constant/options"); const customMerge = (...objects) => { const customize = (origin, updated) => { if ((0, lodash_1.isArray)(origin) && (0, lodash_1.isArray)(updated)) { return updated; } }; const args = [...objects, customize]; return (0, lodash_1.mergeWith)({}, ...args); }; exports.customMerge = customMerge; const uniqueFields = (fields) => { const keys = ['rows', 'columns', 'values']; const result = keys.reduce((r, key) => { const list = fields[key]; const unique = (0, lodash_1.uniq)(list); if (!(0, lodash_1.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); }; const setupDataConfig = (...dataConfig) => { var _a; const mergedDataCfg = (0, exports.customMerge)(dataConfig_1.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) => !(0, lodash_1.isString)(field)); const isEmptyValues = (0, lodash_1.isEmpty)(mergedDataCfg.fields.values); if (isCustomRows || isEmptyValues) { mergedDataCfg.fields.valueInCols = false; } return mergedDataCfg; }; exports.setupDataConfig = setupDataConfig; const setupOptions = (...options) => { return (0, exports.customMerge)(options_1.DEFAULT_OPTIONS, ...options); }; exports.setupOptions = setupOptions; //# sourceMappingURL=merge.js.map