sketch-json-parse
Version:
sketch-json解析
57 lines (56 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniqueId = void 0;
const parseText_1 = require("./parseText");
const parseStructure_1 = require("./parseStructure");
const parseStyle_1 = require("./parseStyle");
const parseImage_1 = require("./parseImage");
const handleSortPosition_1 = require("./handleSortPosition");
const filterGroupLayer_1 = require("./filterGroupLayer");
// import * as fs from 'fs';
const uniqueId = () => {
return Math.random().toString(32).slice(2, 8);
};
exports.uniqueId = uniqueId;
const _parseDSL = (sketchData) => {
const dsl = [];
sketchData.forEach((layer) => {
let dslLayer = {
componentName: 'Container',
id: layer.do_objectID,
name: layer.name,
symbolName: layer.symbolName || '',
groupBreadcrumb: layer.groupBreadcrumb || [],
zIndex: layer.zIndex,
hasClippingMask: layer.hasClippingMask,
parentId: layer.parentId,
_class: layer._class,
};
dslLayer.panel = layer.panel;
dslLayer.structure = Object.assign(Object.assign({}, dslLayer.structure), (0, parseStructure_1.default)(layer));
dslLayer.style = Object.assign(Object.assign({}, dslLayer.style), (0, parseStyle_1.default)(layer));
dslLayer = (0, parseText_1.default)(dslLayer, layer);
// 图片处理
dslLayer = (0, parseImage_1.default)(dslLayer, layer);
dslLayer.rotation = layer.rotation;
if (dslLayer.componentName !== 'Text' && Array.isArray(layer.layers)) {
dslLayer.children = _parseDSL(layer.layers);
}
dsl.push(dslLayer);
});
return dsl;
};
exports.default = (sketchData, isFilterLayer, effectRuleNames) => {
const layers = [];
for (let i = 0; i < sketchData.length; i++) {
const layer = sketchData[i];
layer.groupBreadcrumb = [{ id: layer.do_objectID, name: layer.name }];
if (layer.layers) {
layer.layers = (0, handleSortPosition_1.default)(layer.layers);
// 去掉分组,扁平化图层
layer.layers = (0, filterGroupLayer_1.default)(layer.layers, [], [{ id: layer.do_objectID, name: layer.name }], { num: 0 }, isFilterLayer, effectRuleNames);
}
layers.push(layer);
}
return _parseDSL(layers);
};