.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / autoprefixer / lib / old-selector.js
1 "use strict";
2
3 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
5 var OldSelector = function () {
6     function OldSelector(selector, prefix) {
7         _classCallCheck(this, OldSelector);
8
9         this.prefix = prefix;
10         this.prefixed = selector.prefixed(this.prefix);
11         this.regexp = selector.regexp(this.prefix);
12
13         this.prefixeds = selector.possible().map(function (x) {
14             return [selector.prefixed(x), selector.regexp(x)];
15         });
16
17         this.unprefixed = selector.name;
18         this.nameRegexp = selector.regexp();
19     }
20
21     /**
22      * Is rule a hack without unprefixed version bottom
23      */
24
25
26     OldSelector.prototype.isHack = function isHack(rule) {
27         var index = rule.parent.index(rule) + 1;
28         var rules = rule.parent.nodes;
29
30         while (index < rules.length) {
31             var before = rules[index].selector;
32             if (!before) {
33                 return true;
34             }
35
36             if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
37                 return false;
38             }
39
40             var some = false;
41             for (var _iterator = this.prefixeds, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
42                 var _ref2;
43
44                 if (_isArray) {
45                     if (_i >= _iterator.length) break;
46                     _ref2 = _iterator[_i++];
47                 } else {
48                     _i = _iterator.next();
49                     if (_i.done) break;
50                     _ref2 = _i.value;
51                 }
52
53                 var _ref = _ref2;
54                 var string = _ref[0];
55                 var regexp = _ref[1];
56
57                 if (before.indexOf(string) !== -1 && before.match(regexp)) {
58                     some = true;
59                     break;
60                 }
61             }
62
63             if (!some) {
64                 return true;
65             }
66
67             index += 1;
68         }
69
70         return true;
71     };
72
73     /**
74      * Does rule contain an unnecessary prefixed selector
75      */
76
77
78     OldSelector.prototype.check = function check(rule) {
79         if (rule.selector.indexOf(this.prefixed) === -1) {
80             return false;
81         }
82         if (!rule.selector.match(this.regexp)) {
83             return false;
84         }
85         if (this.isHack(rule)) {
86             return false;
87         }
88         return true;
89     };
90
91     return OldSelector;
92 }();
93
94 module.exports = OldSelector;