Blame view

node_modules/svgo/plugins/addAttributesToSVGElement.js 1.34 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  'use strict';
  
  exports.type = 'full';
  
  exports.active = false;
  
  exports.description = 'adds attributes to an outer <svg> element';
  
  var ENOCLS = 'Error in plugin "addAttributesToSVGElement": absent parameters.\n\
  It should have a list of classes in "attributes" or one "attribute".\n\
  Config example:\n\n\
  \
  plugins:\n\
  - addAttributesToSVGElement:\n\
      attribute: "mySvg"\n\n\
  \
  plugins:\n\
  - addAttributesToSVGElement:\n\
      attributes: ["mySvg", "size-big"]\n';
  
  /**
   * Add attributes to an outer <svg> element. Example config:
   *
   * plugins:
   * - addAttributesToSVGElement:
   *     attribute: 'data-icon'
   *
   * plugins:
   * - addAttributesToSVGElement:
   *     attributes: ['data-icon', 'data-disabled']
   *
   * @author April Arcus
   */
  exports.fn = function(data, params) {
      if (!params || !(Array.isArray(params.attributes) && params.attributes.some(String) || params.attribute)) {
          console.error(ENOCLS);
          return data;
      }
  
      var attributes = params.attributes || [ params.attribute ],
          svg = data.content[0];
  
      if (svg.isElem('svg')) {
          attributes.forEach(function (attribute) {
              if (!svg.hasAttr(attribute)) {
                  svg.addAttr({
                      name: attribute,
                      prefix: '',
                      local: attribute
                  });
              }
          });
      }
  
      return data;
  
  };