sketch-json-parse
Version:
sketch-json解析
66 lines (65 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.tagsEveryIncludes = exports.transSketchColor = exports.precisionControl = exports.getEnabledFill = exports.calculateRGB = exports.isAlignCenter = void 0;
/**
* @description 两个图层进行比较,判断图层layerB是否在layerA中间的位置
* @param {Layer} layerA
* @param {Layer} layerB
* @returns {boolean}
*/
const isAlignCenter = (layerA, layerB) => {
return Math.abs((layerA.frame.x + layerA.frame.width / 2) - (layerB.frame.x + layerB.frame.width / 2)) <= 5;
};
exports.isAlignCenter = isAlignCenter;
/**
* @description 颜色值转换
* @param {number} color 颜色
* @returns {number}
*/
const calculateRGB = (color) => {
return Math.round(color * 255);
};
exports.calculateRGB = calculateRGB;
// 判断是否包含可用的 fill
const getEnabledFill = (layer) => {
var _a;
if ((_a = layer.style) === null || _a === void 0 ? void 0 : _a.fills) {
return layer.style.fills.filter((item) => item.isEnabled).pop();
}
return undefined;
};
exports.getEnabledFill = getEnabledFill;
/**
* 精度控制
* @param data 需要处理的数据
* @param num 精度 eg. 0.1 0.01
*/
const precisionControl = (data, num = 1) => {
const len = Math.round(1 / num).toString().length - 1;
return +((Math.round(data / num) * num).toFixed(len));
};
exports.precisionControl = precisionControl;
/**
* @description 转换sketch中的color => rgba值
* @param {*} { red, green, blue, alpha }
*/
const transSketchColor = ({ red, green, blue, alpha, swatchID }) => ({
red: (0, exports.calculateRGB)(red),
green: (0, exports.calculateRGB)(green),
blue: (0, exports.calculateRGB)(blue),
alpha: (0, exports.precisionControl)(alpha, 0.01),
swatchID
});
exports.transSketchColor = transSketchColor;
// 标记包含情况判断
const tagsEveryIncludes = (sourceList, targetList) => {
return targetList.some((target) => {
if (Array.isArray(sourceList)) {
return sourceList
.map((t) => t.toLocaleLowerCase())
.includes(target.toLocaleLowerCase());
}
return sourceList.toLocaleLowerCase().includes(target.toLocaleLowerCase());
});
};
exports.tagsEveryIncludes = tagsEveryIncludes;