sketch-json-parse
Version:
sketch-json解析
51 lines (50 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// border position计算到图层的frame中,获取真实定位数据 0:中间 1:内边 2:外边
const handleBorderCoordinate = (layers, parentLayer) => {
const groupEqualFlag = (parentLayer === null || parentLayer === void 0 ? void 0 : parentLayer._class) === "group" &&
layers.length === 1 &&
parentLayer.frame.width === layers[0].frame.width &&
parentLayer.frame.height === layers[0].frame.height;
layers = layers.map((layer) => {
if (layer.style && layer.style.borders && layer._class != "artboard") {
let borderList = layer.style.borders.filter((item) => item.isEnabled);
// 只处理一层border的情况
// if (borderList.length == 1) {
if (borderList.length == 1) {
let borderStyle = borderList[0];
if (layer._class === "shapePath") {
layer.frame.height = borderStyle.thickness;
}
else if (borderStyle.position == 0) {
// 中间边框
let w = borderStyle.thickness / 2;
layer.frame.width += borderStyle.thickness;
layer.frame.height += borderStyle.thickness;
layer.frame.x -= w;
layer.frame.y -= w;
}
else if (borderStyle.position == 2) {
// 外边框
let w = borderStyle.thickness;
layer.frame.width += w * 2;
layer.frame.height += w * 2;
layer.frame.x -= w;
layer.frame.y -= w;
}
}
if (groupEqualFlag) {
parentLayer.frame = Object.assign(Object.assign({}, parentLayer.frame), { width: layer.frame.width, height: layer.frame.height, x: parentLayer.frame.x + layer.frame.x, y: parentLayer.frame.y + layer.frame.y });
layer.frame.x = 0;
layer.frame.y = 0;
}
}
// 递归
if (Array.isArray(layer.layers)) {
layer.layers = handleBorderCoordinate(layer.layers, layer);
}
return layer;
});
return layers;
};
exports.default = handleBorderCoordinate;