188c88e8eSopenharmony_ciconst { DEVICE_LEVEL } = require('../../lite/lite-enum') 288c88e8eSopenharmony_ci 388c88e8eSopenharmony_ci/** 488c88e8eSopenharmony_ci * rules: 588c88e8eSopenharmony_ci * - abc-def -> abcDef 688c88e8eSopenharmony_ci * - -abc-def -> AbcDef 788c88e8eSopenharmony_ci * 888c88e8eSopenharmony_ci * @param {string} value 988c88e8eSopenharmony_ci * @return {string} 1088c88e8eSopenharmony_ci */ 1188c88e8eSopenharmony_ciexports.hyphenedToCamelCase = function hyphenedToCamelCase(value) { 1288c88e8eSopenharmony_ci return value.replace(/(?<!-)-([a-z])/g, function(s, m) { 1388c88e8eSopenharmony_ci return m.toUpperCase() 1488c88e8eSopenharmony_ci }) 1588c88e8eSopenharmony_ci} 1688c88e8eSopenharmony_ci 1788c88e8eSopenharmony_ci/** 1888c88e8eSopenharmony_ci * rules: 1988c88e8eSopenharmony_ci * - abcDef -> abc-def 2088c88e8eSopenharmony_ci * - AbcDef -> -abc-def 2188c88e8eSopenharmony_ci * 2288c88e8eSopenharmony_ci * @param {string} value 2388c88e8eSopenharmony_ci * @return {string} 2488c88e8eSopenharmony_ci */ 2588c88e8eSopenharmony_ciexports.camelCaseToHyphened = function camelCaseToHyphened(value) { 2688c88e8eSopenharmony_ci return value.replace(/([A-Z])/g, function(s, m) { 2788c88e8eSopenharmony_ci if (typeof m === 'string') { 2888c88e8eSopenharmony_ci return '-' + m.toLowerCase() 2988c88e8eSopenharmony_ci } 3088c88e8eSopenharmony_ci return m 3188c88e8eSopenharmony_ci }) 3288c88e8eSopenharmony_ci} 3388c88e8eSopenharmony_ci 3488c88e8eSopenharmony_ciexports.isValidValue = function isValidValue(value) { 3588c88e8eSopenharmony_ci return "number" == typeof value || "string" == typeof value 3688c88e8eSopenharmony_ci} 3788c88e8eSopenharmony_ci 3888c88e8eSopenharmony_ci/** 3988c88e8eSopenharmony_ci * rules: 4088c88e8eSopenharmony_ci * assign abbreviated values to expanded attributes 4188c88e8eSopenharmony_ci * margin:1px 2px -> marginTop:1px;marginRight:2px;marginBottom:1px;marginLeft:2px; 4288c88e8eSopenharmony_ci * 4388c88e8eSopenharmony_ci * @param {obejct} object 4488c88e8eSopenharmony_ci * @param {string} value 4588c88e8eSopenharmony_ci * @param {obejct} spliceName 4688c88e8eSopenharmony_ci */ 4788c88e8eSopenharmony_ciexports.splitAttr = function (object, value, spliceName) { 4888c88e8eSopenharmony_ci const values = value.toString().trim().split(/(?<!\+|\-|\*|\/|\,)\s+(?!\+|\-|\*|\/|\,)/) 4988c88e8eSopenharmony_ci if (values) { 5088c88e8eSopenharmony_ci switch (values.length) { 5188c88e8eSopenharmony_ci case 1: 5288c88e8eSopenharmony_ci spliceName.forEach(function (item) { 5388c88e8eSopenharmony_ci object[item] = values[0] 5488c88e8eSopenharmony_ci }) 5588c88e8eSopenharmony_ci break 5688c88e8eSopenharmony_ci case 2: 5788c88e8eSopenharmony_ci spliceName.forEach(function (item, index) { 5888c88e8eSopenharmony_ci object[item] = index % 2 ? values[1] : values[0] 5988c88e8eSopenharmony_ci }) 6088c88e8eSopenharmony_ci break 6188c88e8eSopenharmony_ci case 3: 6288c88e8eSopenharmony_ci spliceName.forEach(function (item, index) { 6388c88e8eSopenharmony_ci object[item] = index % 2 ? values[1] : values[index] 6488c88e8eSopenharmony_ci }) 6588c88e8eSopenharmony_ci break 6688c88e8eSopenharmony_ci default: 6788c88e8eSopenharmony_ci spliceName.forEach(function (item, index) { 6888c88e8eSopenharmony_ci object[item] = values[index] 6988c88e8eSopenharmony_ci }) 7088c88e8eSopenharmony_ci } 7188c88e8eSopenharmony_ci } 7288c88e8eSopenharmony_ci} 7388c88e8eSopenharmony_ci 7488c88e8eSopenharmony_ciconst RICH_SPLECIAL_ATTR = { 7588c88e8eSopenharmony_ci MARGIN: 'margin', 7688c88e8eSopenharmony_ci PADDING: 'padding', 7788c88e8eSopenharmony_ci BORDER: 'border', 7888c88e8eSopenharmony_ci BORDER_WIDTH: 'borderWidth', 7988c88e8eSopenharmony_ci BORDER_COLOR: 'borderColor', 8088c88e8eSopenharmony_ci BORDER_STYLE: 'borderStyle', 8188c88e8eSopenharmony_ci BORDER_RADIUS: 'borderRadius', 8288c88e8eSopenharmony_ci BORDER_BOTTOM: 'borderBottom', 8388c88e8eSopenharmony_ci BORDER_RIGHT: 'borderRight', 8488c88e8eSopenharmony_ci BORDER_LEFT: 'borderLeft', 8588c88e8eSopenharmony_ci BORDER_TOP: 'borderTop', 8688c88e8eSopenharmony_ci GRID_GAP: 'gridGap', 8788c88e8eSopenharmony_ci BOX_SHADOW: 'boxShadow', 8888c88e8eSopenharmony_ci ANIMATION: 'animation' 8988c88e8eSopenharmony_ci} 9088c88e8eSopenharmony_ci 9188c88e8eSopenharmony_ciconst LITE_SPLECIAL_ATTR = { 9288c88e8eSopenharmony_ci MARGIN: 'margin', 9388c88e8eSopenharmony_ci PADDING: 'padding', 9488c88e8eSopenharmony_ci BORDER_WIDTH: 'borderWidth', 9588c88e8eSopenharmony_ci BORDER_COLOR: 'borderColor' 9688c88e8eSopenharmony_ci} 9788c88e8eSopenharmony_ci 9888c88e8eSopenharmony_ci/** 9988c88e8eSopenharmony_ci * Special style attributes that need to be expanded 10088c88e8eSopenharmony_ci * 10188c88e8eSopenharmony_ci */ 10288c88e8eSopenharmony_ciexports.SPLECIAL_ATTR = process.env.DEVICE_LEVEL === DEVICE_LEVEL.LITE ? LITE_SPLECIAL_ATTR : RICH_SPLECIAL_ATTR 103