You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.2 KiB
54 lines
1.2 KiB
'use strict'; |
|
|
|
const cssTree = require('css-tree'); |
|
|
|
function compressBackground(node) { |
|
function flush() { |
|
if (!buffer.length) { |
|
buffer.unshift( |
|
{ |
|
type: 'Number', |
|
loc: null, |
|
value: '0' |
|
}, |
|
{ |
|
type: 'Number', |
|
loc: null, |
|
value: '0' |
|
} |
|
); |
|
} |
|
|
|
newValue.push.apply(newValue, buffer); |
|
|
|
buffer = []; |
|
} |
|
|
|
let newValue = []; |
|
let buffer = []; |
|
|
|
node.children.forEach((node) => { |
|
if (node.type === 'Operator' && node.value === ',') { |
|
flush(); |
|
newValue.push(node); |
|
return; |
|
} |
|
|
|
// remove defaults |
|
if (node.type === 'Identifier') { |
|
if (node.name === 'transparent' || |
|
node.name === 'none' || |
|
node.name === 'repeat' || |
|
node.name === 'scroll') { |
|
return; |
|
} |
|
} |
|
|
|
buffer.push(node); |
|
}); |
|
|
|
flush(); |
|
node.children = new cssTree.List().fromArray(newValue); |
|
} |
|
|
|
module.exports = compressBackground;
|
|
|