Blame view

天文台pc/tianwentai-ui/node_modules/react-style-singleton/dist/es2015/singleton.js 1.26 KB
bc518174   王天杨   提交两个项目文件
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
  import { getNonce } from 'get-nonce';
  function makeStyleTag() {
      if (!document)
          return null;
      var tag = document.createElement('style');
      tag.type = 'text/css';
      var nonce = getNonce();
      if (nonce) {
          tag.setAttribute('nonce', nonce);
      }
      return tag;
  }
  function injectStyles(tag, css) {
      // @ts-ignore
      if (tag.styleSheet) {
          // @ts-ignore
          tag.styleSheet.cssText = css;
      }
      else {
          tag.appendChild(document.createTextNode(css));
      }
  }
  function insertStyleTag(tag) {
      var head = document.head || document.getElementsByTagName('head')[0];
      head.appendChild(tag);
  }
  export var stylesheetSingleton = function () {
      var counter = 0;
      var stylesheet = null;
      return {
          add: function (style) {
              if (counter == 0) {
                  if ((stylesheet = makeStyleTag())) {
                      injectStyles(stylesheet, style);
                      insertStyleTag(stylesheet);
                  }
              }
              counter++;
          },
          remove: function () {
              counter--;
              if (!counter && stylesheet) {
                  stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);
                  stylesheet = null;
              }
          },
      };
  };