UNPKG

sketch-json-parse

Version:

sketch-json解析

57 lines (56 loc) 2.36 kB
"use strict"; 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); };