All files / src/lib assetHelper.ts

4.76% Statements 1/21
0% Branches 0/6
0% Functions 0/8
5% Lines 1/20
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    3x                                                                                    
import {IPageLibAsset} from "./types";
 
export class AssetHelper {
  static loadJs(asset: IPageLibAsset): Promise<any> | null {
    let loader: Promise<any> | null = null;
    const scriptTag = document.createElement('script');
    scriptTag.type = 'text/javascript';
    scriptTag.attributes['puzzle-asset'] = asset.name;
    scriptTag.src = asset.link;
    scriptTag.defer = asset.defer || false;
 
    if (!asset.defer) {
      loader = new Promise((resolve, reject) => {
        scriptTag.onload = () => {
          resolve();
        };
      });
    }
 
    window.document.body.appendChild(scriptTag);
 
    return loader;
  }
 
  static loadJsSeries(scripts: IPageLibAsset[]) {
    for (let i = 0, p: any = Promise.resolve(); i < scripts.length; i++) {
      p = p.then(_ => new Promise(resolve => {
          const assetLoading = AssetHelper.loadJs(scripts[i]);
          if (!assetLoading) {
            resolve();
          } else {
            assetLoading.then(() => {
              resolve();
            });
          }
        }
      ));
    }
  }
 
  static loadCSS() {
 
  }
}