UNPKG

sketch-json-parse

Version:

sketch-json解析

80 lines (79 loc) 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleSortDslPosition = void 0; const handleLayer_1 = require("./handleLayer"); const handleCascading_1 = require("./handleCascading"); const recombine_1 = require("./recombine"); const handleRow_1 = require("./handleRow"); const styleFix_1 = require("./styleFix"); /** * 处理单层图层结构 */ exports.default = (dsl, notBranchNames, effectRuleNames) => { // 默认只处理一次蒙层分割 let { baseJson, cascadingJson } = (0, handleCascading_1.default)(dsl[0], effectRuleNames); // fs.writeFileSync('./code_dsl_90.json',JSON.stringify(dsl,null,2)); // 通过分割后按照单图层依次处理 [baseJson, ...cascadingJson] = [baseJson, ...cascadingJson].map((dsl, ind) => { if (dsl.length === 0) { return []; } // 格式化 // dsl = formatData(dsl); // 结构处理 if (effectRuleNames.dialog.filter((t) => dsl[0].name.toLocaleLowerCase().includes(t.toLocaleLowerCase())).length > 0 && ind !== 0) { dsl = [dsl[0], ...dsl[0].children]; dsl[0].children = []; } // 重新处理层级嵌套关系结构 dsl = (0, recombine_1.default)(dsl); // 行列处理,实现children每级的布局结构分行分列 dsl = (0, handleRow_1.default)(dsl, notBranchNames); // 处理冗余结构 dsl = (0, handleLayer_1.default)(dsl); // fs.writeFileSync('./code_dsl_97.json',JSON.stringify(dsl,null,2)); // 样式修正处理 dsl = (0, styleFix_1.default)(dsl); return dsl; }); // fs.writeFileSync('./code_dsl_98.json',JSON.stringify(baseJson,null,2)); // 将蒙层容器设置为绝对定位 if (Array.isArray(cascadingJson) && cascadingJson.length > 0) { // 弹窗 cascadingJson = cascadingJson .map((t) => t[0]) .filter((t) => !!t) .map((item) => { item["isPosition"] = true; return item; }); if (!baseJson[0].children) { baseJson[0].children = []; } baseJson[0].children = [...baseJson[0].children, ...cascadingJson]; } return baseJson; }; // 图层排序y,x const handleSortDslPosition = (layers) => { // 同列不重叠上下交换,同行左右交换-不重叠 layers.sort((layerA, layerB) => { if (layerA.structure.y + layerA.structure.height < layerB.structure.y) { return -1; } else if (layerA.structure.x + layerA.structure.width < layerB.structure.x && layerA.structure.y + layerA.structure.height > layerB.structure.y && layerA.structure.y < layerB.structure.y + layerB.structure.height) { return -1; } return 0; }); for (let i = 0; i < layers.length; i++) { if (Array.isArray(layers[i].children)) { layers[i].children = (0, exports.handleSortDslPosition)(layers[i].children); } } return layers; }; exports.handleSortDslPosition = handleSortDslPosition;