UNPKG

sketch-json-parse

Version:

sketch-json解析

51 lines (50 loc) 2.33 kB
"use strict"; 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;