保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
"use strict";
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
 
var _postcss = _interopRequireDefault(require("postcss"));
 
var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
function nodeIsInsensitiveAttribute(node) {
  return node.type === 'attribute' && node.insensitive;
}
 
function selectorHasInsensitiveAttribute(selector) {
  return selector.some(nodeIsInsensitiveAttribute);
}
 
function transformString(strings, charPos, string) {
  var char = string.charAt(charPos);
 
  if (char === '') {
    return strings;
  }
 
  var newStrings = strings.map(function (x) {
    return x + char;
  });
  var upperChar = char.toLocaleUpperCase();
 
  if (upperChar !== char) {
    newStrings = newStrings.concat(strings.map(function (x) {
      return x + upperChar;
    }));
  }
 
  return transformString(newStrings, charPos + 1, string);
}
 
function createSensitiveAtributes(attribute) {
  var attributes = transformString([''], 0, attribute.value);
  return attributes.map(function (x) {
    var newAttribute = attribute.clone({
      spaces: {
        after: attribute.spaces.after,
        before: attribute.spaces.before
      },
      insensitive: false
    });
    newAttribute.setValue(x);
    return newAttribute;
  });
}
 
function createNewSelectors(selector) {
  var newSelectors = [_postcssSelectorParser.default.selector()];
  selector.walk(function (node) {
    if (!nodeIsInsensitiveAttribute(node)) {
      newSelectors.forEach(function (newSelector) {
        newSelector.append(node.clone());
      });
      return;
    }
 
    var sensitiveAttributes = createSensitiveAtributes(node);
    var newSelectorsWithSensitiveAttributes = [];
    sensitiveAttributes.forEach(function (newNode) {
      newSelectors.forEach(function (newSelector) {
        var newSelectorWithNewNode = newSelector.clone();
        newSelectorWithNewNode.append(newNode);
        newSelectorsWithSensitiveAttributes.push(newSelectorWithNewNode);
      });
    });
    newSelectors = newSelectorsWithSensitiveAttributes;
  });
  return newSelectors;
}
 
function transform(selectors) {
  var newSelectors = [];
  selectors.each(function (selector) {
    if (selectorHasInsensitiveAttribute(selector)) {
      newSelectors = newSelectors.concat(createNewSelectors(selector));
      selector.remove();
    }
  });
 
  if (newSelectors.length) {
    newSelectors.forEach(function (newSelector) {
      return selectors.append(newSelector);
    });
  }
}
 
var caseInsensitiveRegExp = /i(\s*\/\*[\W\w]*?\*\/)*\s*\]/;
 
var _default = _postcss.default.plugin('postcss-attribute-case-insensitive', function () {
  return function (css) {
    css.walkRules(caseInsensitiveRegExp, function (rule) {
      rule.selector = (0, _postcssSelectorParser.default)(transform).processSync(rule.selector);
    });
  };
});
 
exports.default = _default;