@antv/s2
Version:
effective spreadsheet render core lib
48 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveId = exports.generateId = exports.resolveNillString = exports.generateNillString = void 0;
const lodash_1 = require("lodash");
const constant_1 = require("../../common/constant");
/**
* 维值转为字符串时, 如果是null/undefined, 则添加标记, 便于转回来.
* null/undefined => "$$null$$/$$undefined$$"
*/
const generateNillString = (value) => {
if ((0, lodash_1.isUndefined)(value)) {
return constant_1.UNDEFINED_SYMBOL_ID;
}
if ((0, lodash_1.isNull)(value)) {
return constant_1.NULL_SYMBOL_ID;
}
return String(value);
};
exports.generateNillString = generateNillString;
/**
* 维值如果含有空值标记, 则转换为 null/undefined.
* "$$null$$/$$undefined$$"" => null/undefined
*/
const resolveNillString = (value) => {
if (value === constant_1.NULL_SYMBOL_ID) {
return null;
}
if (value === constant_1.UNDEFINED_SYMBOL_ID) {
return undefined;
}
return value;
};
exports.resolveNillString = resolveNillString;
const generateId = (...ids) => {
return ids.map(exports.generateNillString).join(constant_1.NODE_ID_SEPARATOR);
};
exports.generateId = generateId;
const resolveId = (id = '') => {
return id.split(constant_1.NODE_ID_SEPARATOR).reduce((result, current) => {
if (current === constant_1.ROOT_NODE_ID) {
return result;
}
result.push((0, exports.resolveNillString)(current));
return result;
}, []);
};
exports.resolveId = resolveId;
//# sourceMappingURL=generate-id.js.map