@antv/s2
Version:
effective spreadsheet render core lib
49 lines • 2.06 kB
JavaScript
;
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