UNPKG

sketch-json-parse

Version:

sketch-json解析

95 lines (94 loc) 3.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getImgFileUrl = exports.generateMargin = exports.generateBorderRadius = exports.generateProperty = exports.generateColor = void 0; const generateColor = ({ red = '', green = '', blue = '', alpha = 1, } = {}) => { return `rgba(${red}, ${green}, ${blue}, ${alpha})`; }; exports.generateColor = generateColor; // border处理 const generateProperty = (obj) => { let rst = {}; if (Object.prototype.toString.call(obj) !== "[object Object]") return rst; let keys = Object.keys(obj); if (!keys || !keys.length) return rst; const isObjValEqual = (obj1, obj2) => { let isEqual = true; let objItem = Object.keys(obj1); for (let i = 0; i < objItem.length; i++) { if (objItem[i] == 'color') { if (obj1.color.alpha != obj2.color.alpha || obj1.color.red != obj2.color.red || obj1.color.blue != obj2.color.blue || obj1.color.green != obj2.color.green) { isEqual = false; } } else { if (obj1[objItem[i]] != obj2[objItem[i]]) { isEqual = false; break; } } } return isEqual; }; // 判断四个方向的值都是一样的 if (keys.length == 4 && isObjValEqual(obj.top, obj.bottom) && isObjValEqual(obj.left, obj.right) && isObjValEqual(obj.top, obj.left)) { let { width, color, style } = obj.left; rst.border = `${width}px ${style} ${(0, exports.generateColor)(color)}`; } else { for (let key of keys) { // top right bottom left if (obj[key] != undefined) { let { width, color, style } = obj[key]; rst[`border-${key}`] = `${width}px ${style} ${(0, exports.generateColor)(color)}`; } } } return rst; }; exports.generateProperty = generateProperty; // border-radius处理 const generateBorderRadius = (obj) => { if (typeof obj == 'string') return obj; if (typeof obj == 'object') { let values = Object.values(obj); if (!values.length || (!values[0] && !values[1] && !values[2] && !values[3])) return ''; if (values.length == 4 && new Set(values).size === 1) { return typeof obj.topLeft === 'string' ? obj.topLeft : `${obj.topLeft}px`; } return `${obj.topLeft}px ${obj.topRight}px ${obj.bottomRight}px ${obj.bottomLeft}px`; } }; exports.generateBorderRadius = generateBorderRadius; // margin、padding处理 const generateMargin = (obj) => { if (typeof obj == 'string') return obj; if (typeof obj == 'object') { let values = Object.values(obj); if (!values.length) return ''; if (values.length == 4 && new Set(values).size == 1) { return `${obj.top}px`; } return `${obj.top}px ${obj.right}px ${obj.bottom}px ${obj.left}px`; } }; exports.generateMargin = generateMargin; const getImgFileUrl = (svg) => { // 创建一个 Blob 对象 var blob = new Blob([decodeURI(svg)], { type: "charset=utf-8" }); // 创建一个 File 对象 var file = new File([blob], "hello.svg"); console.log('file', file); }; exports.getImgFileUrl = getImgFileUrl;