UNPKG

sketch-json-parse

Version:

sketch-json解析

47 lines (46 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isHaveBlock = void 0; // 判断是横向还是纵向排列 // 只有满足同级下所有的元素都是纵向才认为是纵向排列, 否则都认为是横向排列 const isBlock = (data) => { data = [...data].sort((a, b) => a.structure.x - b.structure.x); for (var i = 1; i < data.length; i++) { //计算的值误差范围,x轴没有交集就不符合纵向排列 if (+data[i].structure.x - data[i - 1].structure.width - data[i - 1].structure.x > 0) { // 表示的是横向排列的 return false; } } return true; }; exports.default = isBlock; // 默认都走纵向排列,当多元素存在非纵向,再考虑去横向排列 const isHaveBlock = (data) => { let flag = false; if (Array.isArray(data) && data.length > 1) { let dataTemp = JSON.parse(JSON.stringify(data)); dataTemp = dataTemp.sort((a, b) => a.structure.y - b.structure.y); for (let i = 0; i < dataTemp.length; i++) { const item = dataTemp[i]; flag = false; for (let j = 0; j < dataTemp.length; j++) { if (i === j) { continue; } const itemJ = dataTemp[j]; if ((item.structure.x <= itemJ.structure.x && itemJ.structure.x < item.structure.x + item.structure.width) || (itemJ.structure.x <= item.structure.x && item.structure.x < itemJ.structure.x + itemJ.structure.width)) { flag = true; } } if (!flag) { break; } } } return flag; }; exports.isHaveBlock = isHaveBlock;