summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/lib/utils/load_script.js.es6
blob: 351d96530eddfef9d41d5e6e3bb6a7192fb4344d (plain)
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
(() => {
  const global = window.gl || (window.gl = {});

  class LoadScript {
    static load(source, id = '') {
      if (!source) return Promise.reject('source url must be defined');
      if (id && document.querySelector(`#${id}`)) return Promise.reject('script id already exists');
      return new Promise((resolve, reject) => this.appendScript(source, id, resolve, reject));
    }

    static appendScript(source, id, resolve, reject) {
      const scriptElement = document.createElement('script');
      scriptElement.type = 'text/javascript';
      if (id) scriptElement.id = id;
      scriptElement.onload = resolve;
      scriptElement.onerror = reject;
      scriptElement.src = source;

      document.body.appendChild(scriptElement);
    }
  }

  global.LoadScript = LoadScript;

  return global.LoadScript;
})();