Skip to content

Commit 0c34fa8

Browse files
authored
Merge pull request #17 from gucong3000/unprefixSelector
fix #16
2 parents 60c6410 + 8263abd commit 0c34fa8

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

lib/unprefixSelector.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
'use strict';
22
const util = require('./util');
33
const removeExtraSelector = util.removeExtra(/(.+?)(?:\s*,\s*\1)+/gm);
4-
const PSEUDO_MAP = {
5-
'input-placeholder': '::placeholder',
6-
'placeholder': '::placeholder',
7-
'full-screen': ':fullscreen',
8-
};
9-
4+
const pseudoClasses = require('pseudo-classes')();
5+
const pseudoElements = require('pseudo-elements')();
106
const parser = require('postcss-selector-parser');
7+
118
function unprefixSelector (selector) {
129
let fixed;
1310
selector = parser(function unprefixSelector (selectors) {
@@ -16,9 +13,19 @@ function unprefixSelector (selector) {
1613
if (!value) {
1714
return;
1815
}
19-
fixed = true;
2016
const pseudo = value[2].toLowerCase();
21-
selector.value = PSEUDO_MAP[pseudo] || (value[1] + pseudo);
17+
if (pseudoClasses.indexOf(pseudo) >= 0) {
18+
selector.value = ':' + pseudo;
19+
} else if (pseudoElements.indexOf(pseudo) >= 0) {
20+
selector.value = '::' + pseudo;
21+
} else if (/^(?:input-)?placeholder$/.test(pseudo)) {
22+
selector.value = '::placeholder';
23+
} else if (/^full-?screen$/.test(pseudo)) {
24+
selector.value = ':fullscreen';
25+
} else {
26+
return;
27+
}
28+
fixed = true;
2229
});
2330
}).process(selector);
2431

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
"known-css-properties": "^0.1.0",
99
"normalize-range": "^0.1.2",
1010
"postcss": "^6.0.1",
11-
"postcss-value-parser": "^3.3.0"
11+
"postcss-selector-parser": "^2.2.3",
12+
"postcss-value-parser": "^3.3.0",
13+
"pseudo-classes": "^1.0.0",
14+
"pseudo-elements": "^1.0.0"
1215
},
1316
"description": "Unprefixes vendor prefixes in legacy CSS.",
1417
"devDependencies": {
@@ -63,5 +66,5 @@
6366
"pretest": "eslint .",
6467
"test": "mocha --no-timeouts"
6568
},
66-
"version": "2.0.1"
69+
"version": "2.1.0"
6770
}

test/fixtures/selectors.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,6 @@ input:-moz-placeholder, input::placeholder {
4949
a[data-foo=":-webkit-full-screen"] {
5050

5151
}
52+
53+
.class::-webkit-scrollbar {
54+
}

test/fixtures/selectors.out.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,6 @@ input::placeholder {
2727
a[data-foo=":-webkit-full-screen"] {
2828

2929
}
30+
31+
.class::-webkit-scrollbar {
32+
}

0 commit comments

Comments
 (0)