sketch-json-parse
Version:
sketch-json解析
47 lines (46 loc) • 1.81 kB
JavaScript
;
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;