(function () {
  var cssChunks = ["https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/css/navigation-wgl.manifest.css"];
  var jsChunks = ["https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/js/navigation-wgl.app.js","https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/js/navigation-wgl.core.vendor.navigation-wgl.js","https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/js/navigation-wgl.polyfills.navigation-wgl.js","https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/js/navigation-wgl.runtime.js","https://assets.macysassets.com/app/navigation-wgl/2.258.0/app/navigation-wgl/static/js/navigation-wgl.vendor.common.navigation-wgl.js"];

  function setEnvProps() {
    window.__NAVIGATION__ENV_PROPS__ = {
      brand: 'mcom',
      hostlink: 'https://www.macys.com',
      assethost: 'https://assets.macysassets.com'
    };
  }

  function addTeleportedDiv() {
    if (!document.getElementById('teleported')) {
      var teleported = document.createElement('div');
      teleported.id = 'teleported';
      document.body.prepend(teleported);
    }
  }

  function preloadAsset(url, type) {
    var link = window.document.createElement('link');

    if (type === 'script') {
      link.crossorigin = 'anonymous';
    }

    link.rel = 'preload';
    link.href = url;
    link.as = type;
    
    if (type === 'style') {
      link.addEventListener('load', function(e) {
        e.target.rel = 'stylesheet';
      }, { once: true });
    }
    
    window.document.head.appendChild(link);
  }
  
  function preloadAssets() {
    cssChunks.forEach(function (chunk) {
      preloadAsset(chunk, 'style');
    });
    jsChunks.forEach(function (chunk) {
      preloadAsset(chunk, 'script');
    });
  }

  function loadNav() {
    var addRuntimeScript = function (chunkUrl) {
      var script = window.document.createElement('script');
      script.crossorigin = 'anonymous';
      script.src = chunkUrl;
      script.defer = true;
      window.document.body.appendChild(script);
    };
    var onDomReady = function () {
      addTeleportedDiv();
      jsChunks.forEach(addRuntimeScript);
    };

    window.__LOAD_NAVIGATION_SCRIPTS__ = onDomReady;
    window.dispatchEvent(new CustomEvent('__NAVIGATION_CSR_SCRIPT_LOADED__'));

    setEnvProps();
    document.addEventListener('DOMContentLoaded', onDomReady, { once: true });
  }

  preloadAssets();
  loadNav();
})();
