summaryrefslogtreecommitdiff
path: root/node_modules/csso/lib/replace/property/background.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/csso/lib/replace/property/background.js')
-rw-r--r--node_modules/csso/lib/replace/property/background.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/node_modules/csso/lib/replace/property/background.js b/node_modules/csso/lib/replace/property/background.js
new file mode 100644
index 00000000..847a8cff
--- /dev/null
+++ b/node_modules/csso/lib/replace/property/background.js
@@ -0,0 +1,50 @@
+import { List } from 'css-tree';
+
+export default 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 List().fromArray(newValue);
+};