var osdCsp = JSON.parse(document.querySelector('osd-csp').getAttribute('data')); window.__osdStrictCsp__ = osdCsp.strictCsp; window.__osdThemeTag__ = "{{themeTag}}"; window.__osdPublicPath__ = {{publicPathMap}}; window.__osdBundles__ = {{osdBundlesLoaderSource}} if (window.__osdStrictCsp__ && window.__osdCspNotEnforced__) { var legacyBrowserError = document.getElementById('osd_legacy_browser_error'); legacyBrowserError.style.display = 'flex'; } else { if (!window.__osdCspNotEnforced__ && window.console) { window.console.log("^ A single error about an inline script not firing due to content security policy is expected!"); } var loadingMessage = document.getElementById('osd_loading_message'); loadingMessage.style.display = 'flex'; window.onload = function () { function failure() { // make subsequent calls to failure() noop failure = function () {}; var err = document.createElement('h1'); err.style['color'] = 'white'; err.style['font-family'] = 'monospace'; err.style['text-align'] = 'center'; err.style['background'] = '#F44336'; err.style['padding'] = '25px'; err.innerText = document.querySelector('[data-error-message]').dataset.errorMessage; document.body.innerHTML = err.outerHTML; } var stylesheetTarget = document.querySelector('head meta[name="add-styles-here"]') function loadStyleSheet(url, cb) { var dom = document.createElement('link'); dom.rel = 'stylesheet'; dom.type = 'text/css'; dom.href = url; dom.addEventListener('error', failure); dom.addEventListener('load', cb); document.head.insertBefore(dom, stylesheetTarget); } var scriptsTarget = document.querySelector('head meta[name="add-scripts-here"]') function loadScript(url, cb) { var dom = document.createElement('script'); {{!-- NOTE: async = false is used to trigger async-download/ordered-execution as outlined here: https://www.html5rocks.com/en/tutorials/speed/script-loading/ --}} dom.async = false; dom.src = url; dom.addEventListener('error', failure); dom.addEventListener('load', cb); document.head.insertBefore(dom, scriptsTarget); } function load(urls, cb) { var pending = urls.length; urls.forEach(function (url) { var innerCb = function () { pending = pending - 1; if (pending === 0 && typeof cb === 'function') { cb(); } } if (typeof url !== 'string') { load(url, innerCb); } else if (url.slice(-4) === '.css') { loadStyleSheet(url, innerCb); } else { loadScript(url, innerCb); } }); } load([ {{#each jsDependencyPaths}} '{{this}}', {{/each}} ], function () { __osdBundles__.get('entry/core/public').__osdBootstrap__(); load([ {{#each styleSheetPaths}} '{{this}}', {{/each}} ]); }); } }