UNPKG

@antv/f6-ui

Version:

UI system for @antv/f6

174 lines (142 loc) 5.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerAttr = registerAttr; exports.parseAttr = parseAttr; var _parser = require("../utils/parser"); var attributesMap = {}; function registerAttr(attr, parser) { if (!attr) return; var arr = attr; if (!Array.isArray(arr)) arr = [arr]; arr.forEach(function (attr) { if (typeof parser === 'function') { attributesMap[attr] = parser; } else { attributesMap[attr] = _parser.typeParser; } }); } var boxParser = function boxParser(type, value) { var style = {}; var arr = value.split(/\s/g).filter(function (s) { return s !== ''; }); if (arr.length === 1 && !isNaN(arr[0])) { style["" + type] = Number(arr[0]); } if (arr.length === 2) { !isNaN(Number(arr[0])) && (style[type + "Bottom"] = style[type + "Top"] = Number(arr[0])); !isNaN(Number(arr[1])) && (style[type + "Left"] = style[type + "Right"] = Number(arr[1])); } if (arr.length === 3) { !isNaN(Number(arr[0])) && (style[type + "Top"] = Number(arr[0])); !isNaN(Number(arr[1])) && (style[type + "Left"] = style[type + "Right"] = Number(arr[1])); !isNaN(Number(arr[2])) && (style[type + "Bottom"] = Number(arr[2])); } if (arr.length === 4) { !isNaN(Number(arr[0])) && (style[type + "Top"] = Number(arr[0])); !isNaN(Number(arr[1])) && (style[type + "Right"] = Number(arr[1])); !isNaN(Number(arr[2])) && (style[type + "Bottom"] = Number(arr[2])); !isNaN(Number(arr[3])) && (style[type + "Left"] = Number(arr[3])); } return style; }; var borderRadiusParser = function borderRadiusParser(value) { var style = {}; var arr = value.split(/\s/g).filter(function (s) { return s !== ''; }); if (arr.length === 1 && !isNaN(arr[0])) { style["borderTopLeftRadius"] = Number(arr[0]); style["borderTopRightRadius"] = Number(arr[0]); style["borderBottomRightRadius"] = Number(arr[0]); style["borderBottomLeftRadius"] = Number(arr[0]); } if (arr.length === 2) { !isNaN(Number(arr[0])) && (style["borderTopLeftRadius"] = style["borderBottomRightRadius"] = Number(arr[0])); !isNaN(Number(arr[2])) && (style["borderBottomLeftRadius"] = style["borderTopRightRadius"] = Number(arr[1])); } if (arr.length === 3) { !isNaN(Number(arr[0])) && (style["borderTopLeftRadius"] = Number(arr[0])); !isNaN(Number(arr[1])) && (style["borderBottomLeftRadius"] = style["borderTopRightRadius"] = Number(arr[1])); !isNaN(Number(arr[2])) && (style["borderBottomRightRadius"] = Number(arr[2])); } if (arr.length === 4) { !isNaN(Number(arr[0])) && (style["borderTopLeftRadius"] = Number(arr[0])); !isNaN(Number(arr[1])) && (style["borderTopRightRadius"] = Number(arr[1])); !isNaN(Number(arr[2])) && (style["borderBottomRightRadius"] = Number(arr[2])); !isNaN(Number(arr[3])) && (style["borderBottomLeftRadius"] = Number(arr[3])); } return style; }; var backgroundParser = function backgroundParser(value) { var style = {}; var arr = value.split(/\s/g).filter(function (s) { return s !== ''; }); for (var _i = 0, arr_1 = arr; _i < arr_1.length; _i++) { value = arr_1[_i]; if ((0, _parser.isColor)(value)) { style['backgroundColor'] = value; } else if (value === null || value === void 0 ? void 0 : value.startsWith('url')) { var match = value.match(/url\((.+?)\)/); match && (style['backgroundImage'] = match[1]); } } return style; }; var borders = ['solid', 'dashed']; var borderParser = function borderParser(value) { var style = {}; var arr = value.split(/\s/g).filter(function (s) { return s !== ''; }); for (var _i = 0, arr_2 = arr; _i < arr_2.length; _i++) { var value_1 = arr_2[_i]; if (!isNaN(Number(value_1))) { style['borderWidth'] = Number(value_1); } else if ((0, _parser.isColor)(value_1)) { style['borderColor'] = value_1; } else if (borders.includes(value_1)) { style['borderStyle'] = value_1; } } return style; }; var shadowParser = function shadowParser(value) { var style = {}; var arr = value.split(/\s/g).filter(function (s) { return s !== ''; }); var propers = ['shadowOffsetX', 'shadowOffsetY', 'shadowBlur', 'shadowColor']; while (arr.length) { var value_2 = arr.shift(); if (!isNaN(Number(value_2))) { var key = propers.shift(); style[key] = Number(value_2); continue; } else if ((0, _parser.isColor)(value_2)) { style['shadowColor'] = value_2; } } return style; }; registerAttr('padding', boxParser.bind(null, 'padding')); registerAttr('margin', boxParser.bind(null, 'margin')); registerAttr('border-radius', borderRadiusParser); registerAttr('border', borderParser); registerAttr('background', backgroundParser); registerAttr(['box-shadow', 'text-shadow'], shadowParser); function parseAttr(key, value) { if (attributesMap[key]) { return attributesMap[key](value); } try { return (0, _parser.typeParser)(value); } catch (e) { console.error(e); return value; } }