Blame view

node_modules/csso/lib/compressor/restructure/2-mergeAtrule.js 839 Bytes
aaac7fed   liuqimichale   add
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
  var walkRulesRight = require('../../utils/walk.js').rulesRight;
  
  function isMediaRule(node) {
      return node.type === 'Atrule' && node.name === 'media';
  }
  
  function processAtrule(node, item, list) {
      if (!isMediaRule(node)) {
          return;
      }
  
      var prev = item.prev && item.prev.data;
  
      if (!prev || !isMediaRule(prev)) {
          return;
      }
  
      // merge @media with same query
      if (node.expression.id === prev.expression.id) {
          prev.block.rules.appendList(node.block.rules);
          prev.info = {
              primary: prev.info,
              merged: node.info
          };
          list.remove(item);
      }
  };
  
  module.exports = function rejoinAtrule(ast) {
      walkRulesRight(ast, function(node, item, list) {
          if (node.type === 'Atrule') {
              processAtrule(node, item, list);
          }
      });
  };