{"version":3,"file":"app.js","sources":["../src/utils/ui-module-helper.js","../src/utils/fluid-imports.js","../src/utils/dependency-sets.js","../src/utils/asset-loader.js","../src/utils/asset-url-service.js","../src/utils/manifest-data-constructor.js","../src/utils/override-state.js","../src/utils/location-helpers.js","../src/state-handlers/404.js","../src/app.js","../node_modules/unfetch/dist/unfetch.es.js","../src/utils/event-bus.js","../src/utils/override-footer.js","../src/utils/set-asset-url-handler.js"],"sourcesContent":["\r\nexport function getUiModDetails(url) {\r\n\tconst urlValue = getModUrlValue(url);\r\n\tconst {manifest} = window.ss.env;\r\n\t// default details to return if our lookup fails for any reason\r\n\tconst details = {\r\n\t\tisValid: false,\r\n\t\tisUniversal: false,\r\n\t\tbootstrapName: null,\r\n\t\tproductId: null,\r\n\t\turlValue,\r\n\t};\r\n\r\n\t// no module is defined\r\n\tif (urlValue == null || manifest == null) { return details; }\r\n\tif (urlValue.length === 0) { return details; }\r\n\r\n\t// calculate universal module name (so we can get for it)\r\n\tconst productId = urlValue.split('-')[0];\r\n\tconst universalModName = urlValue.replace(productId, 'universal');\r\n\r\n\t// manifest entries for module and universal module variant\r\n\tconst modMani = manifest[urlValue];\r\n\tconst uniMani = manifest[universalModName];\r\n\r\n\t// check for exact match as well as universal module\r\n\tconst isUniversal = uniMani != null;\r\n\tconst isValid = modMani != null || uniMani != null;\r\n\r\n\tObject.assign(details, {\r\n\t\tbootstrapName: (isUniversal ? universalModName : urlValue),\r\n\t\tisValid, isUniversal, productId\r\n\t});\r\n\r\n\treturn details;\r\n};\r\n\r\nexport function getModUrlValue(url = window.location.href) {\r\n\tconst loc = window.document.createElement('a');\r\n\tloc.setAttribute('href', url);\r\n\tlet routePath = loc.pathname;\r\n\tif (process.env.IDP === 'morpheus') {\r\n\t\tconst routePaths = loc.pathname.split('/');\r\n\t\troutePath = routePaths.length > 3 && routePaths[3] ? `${routePaths[2].split(':')[0]}-${routePaths[3]}` : '';\r\n\t\treturn routePath;\r\n\t}\r\n\tvar match = routePath.match(/^\\/?([\\w-]*)/i);\r\n\tif (match != null && match.length === 2) {\r\n\t\treturn match[1];\r\n\t} else {\r\n\t\treturn '';\r\n\t}\r\n}\r\n","import {loadAsset} from './asset-loader';\r\nimport {getUiModDetails} from './ui-module-helper';\r\n\r\nconst moduleRegistry = new Map(); // url -> module\r\nconst uiModuleFluidMap = new Map(); // uiModuleName -> {assetName: module}\r\n\r\nconst psFuncSeries = funcArr => funcArr.reduce(\r\n\t(p, next) => p.then(next),\r\n\tPromise.resolve()\r\n);\r\n\r\nconst outstandingLoadRequests = {};\r\nwindow.define = mod => {\r\n\tconst payload = mod();\r\n\tconst {version, name, stylesheet} = payload;\r\n\tif (outstandingLoadRequests[`${version}/${name}`] == null) {\r\n\t\tthrow Error(`FLUID LOAD ERR: ${version}/${name} could not be mapped`);\r\n\t}\r\n\tconst {url, key, resolve} = outstandingLoadRequests[`${version}/${name}`];\r\n\tif (stylesheet != null) {\r\n\t\tconst styleUrl = `${url.substr(0, url.lastIndexOf('/'))}/${stylesheet}`;\r\n\t\tloadAsset('css', styleUrl);\r\n\t}\r\n\tmoduleRegistry.set(url, payload);\r\n\tconst cmptMap = uiModuleFluidMap.get(getUiModDetails().bootstrapName);\r\n\tcmptMap[key] = payload;\r\n\tresolve();\r\n\tdelete outstandingLoadRequests[`${version}/${name}`];\r\n};\r\n\r\nexport function loadFluidImports(list) {\r\n\tconst mod = getUiModDetails();\r\n\tconst cmptMap = {};\r\n\tuiModuleFluidMap.set(mod.bootstrapName, cmptMap);\r\n\r\n\t// location components which are loaded using different names\r\n\tconst hasDuplicates = (v, i, a) => a.indexOf(v) !== i;\r\n\tconst cmptUrlList = list.flatMap(\r\n\t\tv => Object.entries(v.components).map(\r\n\t\t\t([, c]) => `${v.location}/${c.version}/${c.name}`\r\n\t\t)\r\n\t);\r\n\tif (cmptUrlList.some(hasDuplicates)) {\r\n\t\tconst dupCmpt = cmptUrlList.find((v, i, a) => a.indexOf(v) !== i);\r\n\t\tthrow Error(`FLUID LOAD ERR: A component by any other name, stinks. (DUPLICATE: ${dupCmpt})`);\r\n\t}\r\n\r\n\treturn psFuncSeries(list.map(imp => () => {\r\n\t\tconst {location: loc, components} = imp;\r\n\t\tconst imports = Object.entries(components)\r\n\t\t\t.map(([key, value]) => Object.assign(value, {\r\n\t\t\t\tkey, url: `${loc}/${value.version}/${value.name}.js`\r\n\t\t\t}))\r\n\t\t\t.filter(i => {\r\n\t\t\t\t// if the module has been previously loaded, get it from the registry\r\n\t\t\t\tif (moduleRegistry.has(i.url)) {\r\n\t\t\t\t\tcmptMap[i.key] = moduleRegistry.get(i.url);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\r\n\t\t// create promises that let us know once each component has been\r\n\t\t// registered with the AMD loader.\r\n\t\tconst loadRequestsComplete = Promise.all(\r\n\t\t\timports.map(i => new Promise((resolve, reject) => {\r\n\t\t\t\toutstandingLoadRequests[`${i.version}/${i.name}`] = Object.assign({resolve}, i);\r\n\t\t\t}))\r\n\t\t);\r\n\r\n\t\t// load the assets and wait for them to be registered (10 second timeout)\r\n\t\treturn Promise.all(imports.map(i => loadAsset('js', i.url)))\r\n\t\t\t.then(() => Promise.race([\r\n\t\t\t\tloadRequestsComplete,\r\n\t\t\t\tnew Promise((r, reject) => setTimeout(reject, 10000, Error('timeout')))\r\n\t\t\t]));\r\n\t}));\r\n};\r\n\r\nexport function getFluidImports() {\r\n\tconst moduleName = getUiModDetails().bootstrapName;\r\n\tif (!uiModuleFluidMap.has(moduleName)) {\r\n\t\tthrow Error(`No FluidImports for \"${moduleName}\"`);\r\n\t}\r\n\treturn uiModuleFluidMap.get(moduleName);\r\n}\r\n","import unfetch from 'unfetch';\r\n\r\nconst loadedDepSets = {};\r\nlet fwBaseUrl;\r\n\r\nexport function buildDependencyGraph(modDepSets, modFwName) {\r\n\tif (fwBaseUrl == null) {\r\n\t\tconst { frameworks } = window.ss.env;\r\n\t\tfwBaseUrl = frameworks[modFwName];\r\n\t}\r\n\tlet depGraphData = [];\r\n\treturn Promise.all(\r\n\t\tmodDepSets.map(dsName => loadGraph(dsName, depGraphData))\r\n\t).then(() => {\r\n\t\tconst assetGroups = [];\r\n\t\tconst depSetCfgToUrls = (acc, g) => {\r\n\t\t\tacc.push(`${fwBaseUrl}/dependency-sets/${g.name}.js`);\r\n\t\t\tif (g.styles) {\r\n\t\t\t\tacc.push(`${fwBaseUrl}/dependency-sets/${g.name}.css`);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t};\r\n\t\twhile (!!depGraphData.length) {\r\n\t\t\tconst group = depGraphData.filter(d => d.waitingOn.length === 0);\r\n\t\t\tif (group.length === 0) {\r\n\t\t\t\tthrow Error(`Circular dependency found: ${group.map(g => g.name).join(', ')}`);\r\n\t\t\t}\r\n\t\t\tassetGroups.push(group.reduce(depSetCfgToUrls, []));\r\n\t\t\tconst groupAssets = group.map(a => a.name);\r\n\t\t\tdepGraphData = depGraphData\r\n\t\t\t\t.filter(d => !group.includes(d))\r\n\t\t\t\t.map(d => Object.assign(d, {\r\n\t\t\t\t\twaitingOn: d.waitingOn.filter(wo => !groupAssets.includes(wo))\r\n\t\t\t\t}));\r\n\t\t}\r\n\t\treturn assetGroups;\r\n\t});\r\n}\r\n\r\n// adds dependency graph data to state\r\nfunction loadGraph(dsName, depGraphData) {\r\n\tif (loadedDepSets.hasOwnProperty(dsName)) {return Promise.resolve();}\r\n\tif (depGraphData.find(e => e.name === dsName) != null) { return Promise.resolve(); }\r\n\treturn unfetch(`${fwBaseUrl}/dependency-sets/${dsName}.json`)\r\n\t\t.then(res => res.json())\r\n\t\t.then(res => {\r\n\t\t\tif (depGraphData.find(e => e.name === dsName) != null) { return Promise.resolve(); }\r\n\r\n\t\t\tloadedDepSets[dsName] = res;\r\n\t\t\tconst {dependencySets = [], styles} = res;\r\n\t\t\tconst waitingOn = dependencySets\r\n\t\t\t\t.filter(name => !loadedDepSets.hasOwnProperty(name));\r\n\r\n\t\t\tdepGraphData.push({name: dsName, waitingOn, styles: !!styles});\r\n\t\t\tif (waitingOn.length) {\r\n\t\t\t\treturn Promise.all(\r\n\t\t\t\t\twaitingOn.map(name => loadGraph(name, depGraphData))\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n}\r\n","import unfetch from 'unfetch';\r\nimport * as eventBus from './event-bus';\r\nimport {loadFluidImports} from './fluid-imports';\r\nimport {buildDependencyGraph} from './dependency-sets';\r\n\r\nconst $doc = window.document;\r\nconst $container = $doc.getElementById('framework-container');\r\nconst $uiModuleStyles = $doc.getElementById('ui-module-styles');\r\nlet envConfigLoaded = false;\r\nlet currentFramework = null;\r\n\r\nconst psFuncSeries = funcArr => funcArr.reduce(\r\n\t(p, next) => p.then(next),\r\n\tPromise.resolve()\r\n);\r\n\r\nconst assetBaseUrls = { url: '', jsdelivr: 'https://cdn.jsdelivr.net' };\r\nconst assetCfgToUrls = (cfg, basePaths) => cfg.resources.reduce((acc, r, i, a) => {\r\n\tconst basePath = basePaths[cfg.source];\r\n\tif (cfg.source === 'jsdelivr') {\r\n\t\tif (acc.length === 0) {\r\n\t\t\tacc.push(`${basePath}`);\r\n\t\t\tif (a.length > 1) { acc[0] += '/combine'; }\r\n\t\t}\r\n\t\tacc[0] += (i === 0 ? '/' : ',');\r\n\t\tacc[0] += r;\r\n\t} else {\r\n\t\tacc.push(`${basePath}/${r}`);\r\n\t}\r\n\treturn acc;\r\n}, []);\r\n\r\nexport function loadEnvConfig() {\r\n\tif (envConfigLoaded !== false) { return; }\r\n\tenvConfigLoaded = true;\r\n\tloadScript(`${window.ss.env.tools['env-config']}/env-config-bootstrap.js`);\r\n}\r\n\r\nexport function getManifestEntry(mod) {\r\n\tconst { manifest } = window.ss.env;\r\n\tconst overrideUrl = localStorage.getItem(`assets.uiModules.${mod.bootstrapName}`);\r\n\tconst isLegacyLocalDev = overrideUrl && overrideUrl.startsWith('https://localhost:3100');\r\n\tconst codeSuffix = isLegacyLocalDev ? '.compiled' : '';\r\n\treturn (\r\n\t\toverrideUrl != null\r\n\t\t? {\r\n\t\t\tpath: {\r\n\t\t\t\tapp: `${overrideUrl}/app${codeSuffix}.js`,\r\n\t\t\t\tcss: `${overrideUrl}/app${codeSuffix}.css`,\r\n\t\t\t\trouteData: `${overrideUrl}/route-data.js`,\r\n\t\t\t\tconfig: `${overrideUrl}/ui-module-config.json`,\r\n\t\t\t}\r\n\t\t}\r\n\t\t: manifest[mod.bootstrapName]\r\n\t);\r\n}\r\n\r\nexport function loadUiModuleAssets(mod) {\r\n\tconst manifestEntry = getManifestEntry(mod);\r\n\tlet modFwName, modDepSets, modFluidImports; //modConfig\r\n\r\n\treturn getUiModuleConfig(manifestEntry)\r\n\t\t.then(uiModCfg => {\r\n\t\t\t// modConfig = uiModCfg;\r\n\t\t\tmodFwName = uiModCfg.framework || 'angularjs';\r\n\t\t\tmodDepSets = uiModCfg.dependencySets || [];\r\n\t\t\tmodFluidImports = uiModCfg.fluidImports || [];\r\n\t\t})\r\n\t\t.then(() => Promise.all([\r\n\t\t\tbuildDependencyGraph(modDepSets, modFwName),\r\n\t\t\tloadFluidImports(modFluidImports),\r\n\t\t\tloadFrameworkAssets(modFwName)\r\n\t\t]))\r\n\t\t.then(([assetGroups]) => psFuncSeries(\r\n\t\t\tassetGroups.map(g => () => Promise.all(g.map(\r\n\t\t\t\turl => loadAsset(url.split('.').slice(-1)[0], url)\r\n\t\t\t)))\r\n\t\t))\r\n\t\t.then(() => {\r\n\t\t\tif (manifestEntry == null) { return; }\r\n\t\t\t$uiModuleStyles.setAttribute('href', manifestEntry.path.css);\r\n\t\t\treturn loadAsset('js', manifestEntry.path.app);\r\n\t\t})\r\n\t\t.then(() => eventBus.fire('ui-module-activate', mod));\r\n}\r\n\r\nexport function getUiModuleConfig(mani) {\r\n\tif (mani == null) {\r\n\t\treturn Promise.resolve({\r\n\t\t\tframework: 'angularjs',\r\n\t\t\tdependencySets: []\r\n\t\t});\r\n\t}\r\n\tif (mani && mani.config) {\r\n\t\treturn Promise.resolve(mani.config);\r\n\t} else {\r\n\t\treturn unfetch(`${mani.path.config}`).then(res => res.json());\r\n\t}\r\n}\r\n\r\nexport function loadFrameworkAssets(fwName) {\r\n\tif (currentFramework === fwName) { return Promise.resolve(); }\r\n\tconst { frameworks } = window.ss.env;\r\n\tconst fwBaseUrl = frameworks[fwName];\r\n\twindow.ss.env.fwBaseUrl = fwBaseUrl;\r\n\treturn unfetch(`${fwBaseUrl}/framework.json`)\r\n\t\t.then(res => res.json())\r\n\t\t.then(fw => psFuncSeries(fw.assets.map((bundle, i) => {\r\n\t\t\treturn () => Promise.all(bundle.map(a => {\r\n\t\t\t\tconst assetUrls = assetCfgToUrls(a, Object.assign({}, assetBaseUrls, {build: fwBaseUrl}));\r\n\t\t\t\treturn Promise.all(assetUrls.map(url => loadAsset(a.type, url)));\r\n\t\t\t}));\r\n\t\t})))\r\n\t\t.then(() => {currentFramework = fwName;});\r\n}\r\n\r\nconst loadedAssets = [];\r\nexport function loadAsset(type, url) {\r\n\tif (loadedAssets.includes(url)) { return Promise.resolve(); }\r\n\tloadedAssets.push(url);\r\n\r\n\tif (type === 'css') {\r\n\t\treturn loadStylesheet(url);\r\n\t} else if (type === 'js') {\r\n\t\treturn loadScript(url);\r\n\t} else if (type === 'html') {\r\n\t\treturn loadMarkup(url);\r\n\t}\r\n}\r\n\r\nexport function loadMarkup(url) {\r\n\treturn unfetch(url)\r\n\t\t.then(res => res.text())\r\n\t\t.then(html => $container.innerHTML += html);\r\n}\r\n\r\nexport function loadScript(url, attrs = {}) {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tconst scriptAttrs = Object.assign({\r\n\t\t\t'charset': 'utf-8',\r\n\t\t\t'type': 'text/javascript'\r\n\t\t}, attrs);\r\n\t\tconst el = injectTag('script', scriptAttrs);\r\n\t\tel.onload = () => resolve();\r\n\t\tel.onerror = () => reject();\r\n\t\tel.src = url;\r\n\t});\r\n}\r\n\r\nexport function loadStylesheet(url, attrs = {}) {\r\n\tconst linkAttrs = Object.assign({\r\n\t\t'href': url, 'charset': 'utf-8',\r\n\t\t'rel': 'stylesheet', 'media': 'all'\r\n\t}, attrs);\r\n\tinjectTag('link', linkAttrs);\r\n\treturn Promise.resolve();\r\n}\r\n\r\nfunction injectTag(tagName, attrs, target) {\r\n\tconst el = $doc.createElement(tagName);\r\n\tObject.keys(attrs).forEach(attr => el.setAttribute(attr, attrs[attr]));\r\n\t$doc.body.appendChild(el);\r\n\treturn el;\r\n}\r\n","import assetManifest from '../asset-manifest.json';\r\n\r\nexport const frameworks = processOverrides('frameworks');\r\nexport const uiModules = processOverrides('uiModules');\r\nexport const tools = processOverrides('tools');\r\n\r\nfunction processOverrides(type) {\r\n\t// spin over the Zeit hosted assets and apply any overrides that are\r\n\t// found in localStorage\r\n\r\n\tconst env = window.localStorage.getItem('env') || 'production';\r\n\r\n\t// The use of release candidate urls is on by default. Should only be off if\r\n\t// explicitly set to the value \"false\". Configurable in Storm.\r\n\r\n\tconst useRcUrls = window.localStorage.getItem('storm.settings.useReleaseCandidates') !== 'false';\r\n\r\n\tconst assetObj = assetManifest[type];\r\n\treturn Object.keys(assetObj).reduce((acc, k) => {\r\n\t\tconst assetOverride = window.localStorage.getItem(`assets.${type}.${k}`);\r\n\t\tif (assetOverride === acc[k]) {\r\n\t\t\t// if the override value is the same as the original value\r\n\t\t\t// remove the override\r\n\t\t\twindow.localStorage.removeItem(`assets.${type}.${k}`);\r\n\t\t} else if (assetOverride != null) {\r\n\t\t\t// if the override value is not null, apply the override\r\n\t\t\tacc[k] = assetOverride;\r\n\t\t} else if (env !== 'production' && useRcUrls) {\r\n\t\t\t// if the environment is not production (lower environments) we\r\n\t\t\t// should load all FL CDN assets from their release candidate url.\r\n\t\t\t// a release candidate url is the lower environment static url\r\n\t\t\tacc[k] = acc[k].replace(\r\n\t\t\t\t'sidekick.uitools.frontlineeducation.com',\r\n\t\t\t\t'sidekick.uitoolsawsstage.flqa.net'\r\n\t\t\t);\r\n\t\t\tif (process.env.IDP === 'morpheus') {\r\n\t\t\t\tacc[k] = acc[k].replace(\r\n\t\t\t\t\t'angularjs.uitools.frontlineeducation.com',\r\n\t\t\t\t\tprocess.env.ANGULAR_FW_PATH\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tacc[k] = acc[k].replace(\r\n\t\t\t\t\t'angularjs.uitools.frontlineeducation.com',\r\n\t\t\t\t\t'angularjs.uitoolsawsstage.flqa.net'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else if (process.env.IDP === 'morpheus') {\r\n\t\t\tacc[k] = acc[k].replace(\r\n\t\t\t\t'angularjs.uitools.frontlineeducation.com',\r\n\t\t\t\tprocess.env.ANGULAR_FW_PATH\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn acc;\r\n\t}, assetObj);\r\n}\r\n","export default function (manifestV1, uiModuleAssets) {\r\n\tconst {moduleBasePath} = window.buildConfig;\r\n\tconst uiModPrefix = 'assets.uiModules.';\r\n\treturn Object.assign(\r\n\t\t{},\r\n\t\t// sets up manifest data for ui-modules that have overrides but aren't\r\n\t\t// officially setup in Jarvis yet.\r\n\t\tObject.keys(localStorage)\r\n\t\t\t.filter(k => k.startsWith(uiModPrefix))\r\n\t\t\t.map(k => k.slice(uiModPrefix.length))\r\n\t\t\t.reduce((acc, k) => Object.assign(acc, {[k]: {notRegistered: true}}), {}),\r\n\t\t// mutate manifestV1 into manifestV2\r\n\t\tObject.keys(manifestV1).reduce((acc, modKey) => {\r\n\t\t\tconst mData = manifestV1[modKey];\r\n\t\t\treturn Object.assign(acc, {\r\n\t\t\t\t[modKey]: {\r\n\t\t\t\t\tpath: {\r\n\t\t\t\t\t\tapp: `${moduleBasePath}/${mData.location}app.js`,\r\n\t\t\t\t\t\tcss: `${moduleBasePath}/${mData.location}app.css`,\r\n\t\t\t\t\t\trouteData: `${moduleBasePath}/${mData.location}route-data.js`,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tconfig: mData.config\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, {}),\r\n\t\t// construct manifestV2 data from Zeit locations data\r\n\t\tObject.keys(uiModuleAssets).reduce((acc, modName) => {\r\n\t\t\tconst modBaseUrl = uiModuleAssets[modName];\r\n\t\t\treturn Object.assign(acc, {\r\n\t\t\t\t[modName]: {\r\n\t\t\t\t\tpath: {\r\n\t\t\t\t\t\tapp: `${modBaseUrl}/app.js`,\r\n\t\t\t\t\t\tcss: `${modBaseUrl}/app.css`,\r\n\t\t\t\t\t\trouteData: `${modBaseUrl}/route-data.js`,\r\n\t\t\t\t\t\tconfig: `${modBaseUrl}/ui-module-config.json`,\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, {})\r\n\t);\r\n};\r\n","\r\nexport function applyOverrideState(stateObj) {\r\n\t// clear out existing overrides\r\n\tObject.keys(localStorage)\r\n\t\t.filter(k => k === 'env' || k.startsWith('buildConfig.') || k.startsWith('assets.'))\r\n\t\t.forEach(k => localStorage.removeItem(k));\r\n\r\n\t// apply the override state\r\n\tObject.keys(stateObj)\r\n\t\t.forEach(k => localStorage.setItem(k, stateObj[k]));\r\n\r\n\t// copy manifest data from localStorage (for ng-framework)\r\n\tconst localManifest = localStorage.getItem('manifest');\r\n\tif (localManifest != null) {\r\n\t\tsessionStorage.setItem('manifest', localManifest);\r\n\t} else {\r\n\t\tsessionStorage.removeItem('manifest');\r\n\t}\r\n}\r\n","\r\nexport function getQueryParamValue(name) {\r\n\tconst re = new RegExp(`(?:&|(\\\\?))${name}=([\\\\w%@:*+-./]*)`);\r\n\tconst result = window.location.search.match(re);\r\n\tif (result != null) {\r\n\t\treturn window.decodeURIComponent(result[2]);\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nexport function removeQueryParam(name) {\r\n\tconst re = new RegExp(`(?:&|(\\\\?))${name}=([\\\\w%@:*+-./]*)`);\r\n\tconst redirectUrl = window.location.href // ec-dashboard/?paramName=stage¤tOrg=20001\r\n\t\t.replace(re, '$1') // => ec-dashboard/?¤tOrg=20001\r\n\t\t.replace(/(\\?)&/g, '$1') // => ec-dashboard/?currentOrg=20001\r\n\t\t.replace(/\\?$/, ''); // ec-dashboard/? => ec-dashboard/\r\n\r\n\tif (window.history && window.history.replaceState) {\r\n\t\twindow.history.replaceState('', document.title, redirectUrl);\r\n\t} else {\r\n\t\twindow.location.href = redirectUrl;\r\n\t}\r\n}\r\n","/* globals sidekick */\r\n\r\nimport * as eventBus from '../utils/event-bus';\r\n\r\nconst $404 = document.getElementById('page-error-404');\r\n\r\neventBus.on('page-error-404', function () {\r\n\t$404.style.display = '';\r\n\tsidekick.events.emit('pick-org-app.abort');\r\n\tsidekick.events.emit('header.visible', false);\r\n\tsidekick.events.emit('nav.visible', false);\r\n\tconst routeNotFound = window.location.href;\r\n\tconst removeRouteChangeListener = eventBus.on('route-change', function (to, from) {\r\n\t\tif (from === routeNotFound && to !== routeNotFound) {\r\n\t\t\tsidekick.events.emit('header.visible', true);\r\n\t\t\tsidekick.events.emit('nav.visible', true);\r\n\t\t\t$404.style.display = 'none';\r\n\t\t\tremoveRouteChangeListener();\r\n\t\t}\r\n\t});\r\n});\r\n","import unfetch from 'unfetch';\r\nimport { loadUiModuleAssets, loadEnvConfig, loadAsset } from './utils/asset-loader';\r\nimport { getFluidImports } from './utils/fluid-imports';\r\nimport * as assets from './utils/asset-url-service';\r\nimport * as eventBus from './utils/event-bus';\r\nimport makeManifestData from './utils/manifest-data-constructor';\r\nimport { getUiModDetails } from './utils/ui-module-helper';\r\nimport { showOverrideFooter } from './utils/override-footer';\r\nimport { applyOverrideState } from './utils/override-state';\r\nimport handleSetAssetUrl from './utils/set-asset-url-handler';\r\nimport { getQueryParamValue, removeQueryParam } from './utils/location-helpers';\r\nimport './state-handlers/404';\r\n\r\nconst logIt = (args = [], type = 'log') => { console && console[type] && console[type](...args) }; // eslint-disable-line\r\nconst _warn = (...args) => logIt(args, 'warn');\r\nconst _error = (...args) => logIt(args, 'error');\r\nconst _log = (...args) => logIt(args, 'log');\r\nconst isOfType = (val, type) => (\r\n\tObject.prototype.toString.apply(val).split(' ')[1].slice(0, -1).toLowerCase() === type.toLowerCase()\r\n);\r\n\r\nconst overrideState = {};\r\nconst overrideFooterState = {env: null, assets: {}, buildConfig: null};\r\n\r\nconst createAlterFunc = (key, subject = 'OVERRIDE') => ({\r\n\t'⚙️ SETTINGS ⚙️': '',\r\n\tget [`REMOVE_${subject}`]() {\r\n\t\twindow.localStorage.removeItem(key);\r\n\t\twindow.location.reload();\r\n\t\treturn '...REMOVED!';\r\n\t}\r\n});\r\n\r\nconst sidekickPromise = Promise.all([\r\n\tloadAsset('css', `${assets.tools.sidekick}/sidekick.css`),\r\n\tloadAsset('js', `${assets.tools.sidekick}/sidekick.js`)\r\n]).then(() => {\r\n\twindow.sidekick.init({\r\n\t\taddOpenSans: false,\r\n\t\taddSidekickCss: false,\r\n\t\tcleanCache: (/^\\/select\\/?$/i).test(window.location.pathname)\r\n\t});\r\n});\r\n\r\nhandleSetAssetUrl();\r\n\r\nconst envConfig = getQueryParamValue('envConfig');\r\nif (envConfig != null) {\r\n\twindow.localStorage.setItem('env', envConfig);\r\n\tremoveQueryParam('envConfig');\r\n}\r\n\r\n// time to decide how to bootstrap\r\nlet envName = window.localStorage.getItem('env');\r\n\r\n// if the environment has not been overridden and we are not on a production domain\r\n// we default the environment to \"fc_qa\" or \"pg_qa\" if the host is supersuitawsqa\r\n// and the UI module being hit is an \"ec\" or 'pd' and otherwise to \"fc_qa\" for QA\r\n// and otherwise stage.\r\nif (envName == null && !window.location.host.endsWith('.frontlineeducation.com') && process.env.IDP !== 'morpheus') {\r\n\twindow.localStorage.setItem('env', 'stage');\r\n\tif (window.location.host.startsWith('supersuitawsqa')) {\r\n\t\twindow.localStorage.setItem('env', 'fc_qa');\r\n\t\tif (window.location.pathname.startsWith('/pd-')) {\r\n\t\t\twindow.localStorage.setItem('env', 'pg_qa');\r\n\t\t}\r\n\t}\r\n\tif (window.location.host.startsWith('supersuitawsdev')) {\r\n\t\twindow.localStorage.setItem('env', 'fc_dev');\r\n\t}\r\n\twindow.location.reload();\r\n}\r\n\r\nif(envName == null && process.env.IDP === 'morpheus') {\r\n\twindow.localStorage.setItem('env', process.env.ENV_NAME);\r\n\twindow.location.reload();\r\n}\r\n\r\n// if we have an environment override\r\nif (envName != null && envName !== 'production') {\r\n\toverrideFooterState.env = envName;\r\n\toverrideState.env = envName;\r\n\tconst isUrlRe = /^(https?:|\\/\\/)/;\r\n\tconst envConfigUrl = (isUrlRe.test(envName) ? envName : `${process.env.BASE_URL}/env-configs/${envName}.json`);\r\n\t// go get the config file for the overridden environment\r\n\t// and apply it prior to bootstrapping\r\n\tunfetch(envConfigUrl)\r\n\t\t.then(res => res.json())\r\n\t\t.then(envCfg => window.buildConfig = envCfg)\r\n\t\t.then(() => {\r\n\t\t\t_warn(`ENVIRONMENT CONFIG: ${envName}`);\r\n\t\t\tgoBootstrap();\r\n\t\t})\r\n\t\t.catch(err => {\r\n\t\t\tif (err.message === 'Unexpected token < in JSON at position 0') {\r\n\t\t\t\t_error(`MISSING ENVIRONMENT CONFIG: \"${envName}\" `, createAlterFunc('env', 'ENVIRONMENT'));\r\n\t\t\t} else {\r\n\t\t\t\t_error('ENVIRONMENT CONFIG ERROR', err);\r\n\t\t\t}\r\n\t\t});\r\n} else {\r\n\t// no environment override to apply, go ahead and bootstrap\r\n\tgoBootstrap();\r\n}\r\n\r\nfunction goBootstrap() {\r\n\t// copy the buildConfig so we can know what has been overridden later\r\n\twindow.buildConfigOrig = JSON.parse(JSON.stringify(window.buildConfig));\r\n\r\n\tconst buildConfigOverrides = Object.keys(window.localStorage)\r\n\t\t.filter(k => k.startsWith('buildConfig.'));\r\n\toverrideFooterState.buildConfig = buildConfigOverrides.length;\r\n\tbuildConfigOverrides.forEach(envKey => {\r\n\t\t\tconst attrPath = envKey.substr(12).split('.');\r\n\t\t\tconst attrValue = window.localStorage.getItem(envKey);\r\n\t\t\toverrideState[envKey] = attrValue;\r\n\t\t\tconst overrideResult = attrPath.reduce((obj, key) => {\r\n\t\t\t\tif (obj == null) { return null; }\r\n\t\t\t\tif (isOfType(obj[key], 'object')) {\r\n\t\t\t\t\treturn obj[key];\r\n\t\t\t\t} else if (obj[key] != null) {\r\n\t\t\t\t\tobj[key] = attrValue;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}, window.buildConfig);\r\n\t\t\tif (overrideResult == null || isOfType(overrideResult, 'object')) {\r\n\t\t\t\t_error('INVALID OVERRIDE:', `${envKey} = \"${attrValue}\"`);\r\n\t\t\t} else {\r\n\t\t\t\t_warn(`${envKey.split('.').join(' 〉')} 〉\"${attrValue}\" `, createAlterFunc(envKey));\r\n\t\t\t}\r\n\t\t});\r\n\twindow.buildConfigData = JSON.parse(JSON.stringify(window.buildConfig));\r\n\r\n\tconst {moduleBasePath} = window.buildConfig;\r\n\r\n\t// define SuperSuit global\r\n\twindow.ss = window.ss || {};\r\n\twindow.ss.env = Object.assign({}, assets);\r\n\twindow.ss.events = eventBus;\r\n\r\n\t// notify developer via console about overridden asset locations\r\n\tObject.keys(window.localStorage)\r\n\t\t.filter(k => k.startsWith('assets.'))\r\n\t\t.forEach(envKey => {\r\n\t\t\tconst [assetType, assetKey] = envKey.substr(7).split('.');\r\n\t\t\tconst assetValue = window.localStorage.getItem(envKey);\r\n\t\t\t_warn(`${assetType} 〉${assetKey} 〉\"${assetValue}\" `, createAlterFunc(envKey));\r\n\t\t\toverrideFooterState.assets[assetType] = overrideFooterState.assets[assetType] || 0;\r\n\t\t\toverrideFooterState.assets[assetType] += 1;\r\n\t\t\toverrideState[envKey] = assetValue;\r\n\t\t});\r\n\r\n\tshowOverrideFooter(overrideFooterState);\r\n\tlet focused = true;\r\n\twindow.addEventListener('focus', () => {focused = true; applyOverrideState(overrideState);});\r\n\twindow.addEventListener('blur', () => focused = false);\r\n\twindow.addEventListener('contextmenu', () => (!focused && applyOverrideState(overrideState)));\r\n\r\n\tconst killPreLoader = () => window.document.getElementById('pre-loader').style.display = 'none';\r\n\twindow.ss.util = { killPreLoader, getFluidImports, loadEnvConfig };\r\n\r\n\tPromise.all([unfetch(`${moduleBasePath}/manifest.json`), sidekickPromise])\r\n\t\t.then(([res]) => res.json())\r\n\t\t.then(manifestV1 => makeManifestData(manifestV1, assets.uiModules))\r\n\t\t.then(manifest => {\r\n\t\t\twindow.ss.env.manifest = manifest;\r\n\t\t\tconst mod = getUiModDetails();\r\n\r\n\t\t\t// important auto-redirects\r\n\t\t\tconst loc = window.location;\r\n\t\t\t// default url should be /select/\r\n\t\t\tif (mod.urlValue === '') { loc.pathname = '/select/'; return; }\r\n\t\t\t// path /ui-module should be /ui-module/\r\n\t\t\tif (loc.pathname === `/${mod.urlValue}`) { loc.pathname += '/'; return; }\r\n\r\n\t\t\tif (!mod.isValid) {\r\n\t\t\t\t_warn(`module [${mod.urlValue}] not found`);\r\n\t\t\t} else {\r\n\t\t\t\t_log(`hooking up module ${mod.bootstrapName}`);\r\n\t\t\t}\r\n\t\t\treturn loadUiModuleAssets(mod);\r\n\t\t})\r\n\t\t.then(() => {\r\n\t\t\teventBus.on('route-change', (to, from) => {\r\n\t\t\t\tconst toMod = getUiModDetails(to);\r\n\t\t\t\tconst fromMod = getUiModDetails(from);\r\n\t\t\t\tif (toMod.bootstrapName !== fromMod.bootstrapName) {\r\n\t\t\t\t\teventBus.fire('ui-module-deactivate', fromMod);\r\n\t\t\t\t\tloadUiModuleAssets(toMod);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\twindow.document.addEventListener('keypress', evt => {\r\n\t\tconst {keyCode, which, ctrlKey, shiftKey} = evt;\r\n\t\tconst isActionKey = (which === 5 || keyCode === 5);\r\n\t\tconst hasModifiers = (ctrlKey && shiftKey);\r\n\t\tif (isActionKey && hasModifiers) { loadEnvConfig(); }\r\n\t}, {once: true});\r\n\r\n\t// fluid-components snooty hookup\r\n\tif (window.location.hostname === 'localhost') {\r\n\t\twindow.sessionStorage.setItem('snooty', `${process.env.BASE_URL}/fluid-components/snooty.min.js`);\r\n\t}\r\n}\r\n","var index = typeof fetch=='function' ? fetch.bind() : function(url, options) {\n\toptions = options || {};\n\treturn new Promise( function (resolve, reject) {\n\t\tvar request = new XMLHttpRequest();\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\tfor (var i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\trequest.onload = function () {\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.send(options.body || null);\n\n\t\tfunction response() {\n\t\t\tvar keys = [],\n\t\t\t\tall = [],\n\t\t\t\theaders = {},\n\t\t\t\theader;\n\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (m, key, value) {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theader = headers[key];\n\t\t\t\theaders[key] = header ? (header + \",\" + value) : value;\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\t\tstatus: request.status,\n\t\t\t\tstatusText: request.statusText,\n\t\t\t\turl: request.responseURL,\n\t\t\t\tclone: response,\n\t\t\t\ttext: function () { return Promise.resolve(request.responseText); },\n\t\t\t\tjson: function () { return Promise.resolve(request.responseText).then(JSON.parse); },\n\t\t\t\tblob: function () { return Promise.resolve(new Blob([request.response])); },\n\t\t\t\theaders: {\n\t\t\t\t\tkeys: function () { return keys; },\n\t\t\t\t\tentries: function () { return all; },\n\t\t\t\t\tget: function (n) { return headers[n.toLowerCase()]; },\n\t\t\t\t\thas: function (n) { return n.toLowerCase() in headers; }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n};\n\nexport default index;\n//# sourceMappingURL=unfetch.es.js.map\n","const handlers = {};\r\nconst lastEventCache = {}; // map of last data emitted for each event (for greedy event handlers)\r\n\r\nconst off = (evtName, callback) => {\r\n\thandlers[evtName] = handlers[evtName] || []; // ensure we have an array\r\n\tif (callback == null) {\r\n\t\t// off('evt') deregisters all callbacks\r\n\t\thandlers[evtName] = [];\r\n\t} else {\r\n\t\t// off('evt', cb) deregisters a specific callback\r\n\t\thandlers[evtName] = handlers[evtName].filter(cb => cb !== callback);\r\n\t}\r\n};\r\n\r\nexport const on = (evtName, callback, config = {}) => {\r\n\thandlers[evtName] = handlers[evtName] || []; // ensure we have an array\r\n\t// save once state to handler\r\n\tcallback.$once = !!config.once;\r\n\t// register a callback with this event\r\n\thandlers[evtName].push(callback);\r\n\t// apply the last args fired if greedy\r\n\tif (!!config.greedy && lastEventCache[evtName]) {\r\n\t\tcallback.apply(null, lastEventCache[evtName]);\r\n\t}\r\n\t// return a deregistration function\r\n\treturn () => off(evtName, callback);\r\n};\r\n\r\nexport const once = (evtName, callback, config = {}) =>\r\n\ton(evtName, callback, Object.assign({}, config, {once: true}));\r\n\r\nexport const fire = (evtName, ...args) => {\r\n\thandlers[evtName] = handlers[evtName] || []; // ensure we have an array\r\n\t// cache the args (data) for this call\r\n\tlastEventCache[evtName] = args;\r\n\t// fire all callbacks registered with this evt\r\n\thandlers[evtName].forEach(cb => {\r\n\t\tcb.apply(null, args);\r\n\t\t// deregister once-fired handler\r\n\t\tif (cb.$once) {\r\n\t\t\toff(evtName, cb);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n\r\n// // USAGE\r\n// console.clear();\r\n// const deregister = on('some-event', data => console.log(data));\r\n// fire('some-event', {some: 'data'});\r\n// deregister();\r\n// fire('some-event', {some: 'data2'});\r\n","import { loadEnvConfig } from './asset-loader';\r\n\r\nexport const showOverrideFooter = ({env, assets, buildConfig}) => {\r\n\tif (env == null && Object.keys(assets).length === 0 && !buildConfig) { return; }\r\n\tconst $el = window.document.getElementById('override-footer');\r\n\tconst assetKeys = Object.keys(assets);\r\n\tconst assetText = (\r\n\t\tassetKeys.length\r\n\t\t? ` | ${assetKeys.map(k => `${k}: ${assets[k]}`).join(' | ')}`\r\n\t\t: ''\r\n\t);\r\n\tconst buildConfigText = (!!buildConfig\r\n\t\t? ` | env variables: ${buildConfig}`\r\n\t\t: ''\r\n\t);\r\n\t$el.innerText = `env: ${env || 'production'}${assetText}${buildConfigText}`;\r\n\t$el.style.display = '';\r\n\t$el.addEventListener('click', loadEnvConfig, {once: true});\r\n};\r\n","import {getQueryParamValue, removeQueryParam} from './location-helpers';\r\n\r\nexport default function handleSetAssetUrl () {\r\n\tconst assetValue = getQueryParamValue('setAsset');\r\n\r\n\tif (assetValue != null) {\r\n\t\tconst [key, value] = assetValue.split('|>');\r\n\t\tconst hasKeyAndValue = !!(key && key.startsWith('assets.') && value);\r\n\t\tconst validDomainSuffixes = [\r\n\t\t\t/\\.app\\.frontlineeducation\\.com$/,\r\n\t\t\t/\\.frontlineeducation\\.com$/,\r\n\t\t\t/\\.frontline-ed\\.vercel\\.app$/,\r\n\t\t\t/\\.frontline-ed\\.now\\.sh$/,\r\n\t\t\t/\\.cdn1\\.frontlineeducation\\.com$/,\r\n\t\t\t/\\/\\/localhost:\\d{4,4}$/\r\n\t\t];\r\n\t\tconst valueIsValidUrl = (\r\n\t\t\t(/^https?:/).test(value)\r\n\t\t\t&& validDomainSuffixes.some(suffixRe => suffixRe.test(value))\r\n\t\t);\r\n\t\tif (hasKeyAndValue && valueIsValidUrl) {\r\n\t\t\twindow.localStorage.setItem(key, value);\r\n\t\t}\r\n\t\tremoveQueryParam('setAsset');\r\n\t}\r\n}\r\n"],"names":["getUiModDetails","url","urlValue","getModUrlValue","manifest","window","ss","env","details","length","productId","split","universalModName","replace","modMani","uniMani","isUniversal","assign","location","href","loc","document","createElement","setAttribute","routePath","pathname","match","loadFluidImports","list","mod","cmptMap","set","bootstrapName","cmptUrlList","flatMap","Object","entries","v","components","map","c","version","name","some","i","a","indexOf","dupCmpt","find","Error","psFuncSeries","imp","imports","key","value","filter","moduleRegistry","has","get","loadRequestsComplete","Promise","all","resolve","loadAsset","then","race","r","reject","setTimeout","getFluidImports","moduleName","uiModuleFluidMap","buildDependencyGraph","modDepSets","modFwName","fwBaseUrl","frameworks","depGraphData","loadGraph","dsName","assetGroups","depSetCfgToUrls","acc","g","push","styles","group","d","waitingOn","join","reduce","groupAssets","includes","wo","loadedDepSets","hasOwnProperty","e","unfetch","res","json","dependencySets","loadEnvConfig","envConfigLoaded","tools","getManifestEntry","overrideUrl","localStorage","getItem","isLegacyLocalDev","startsWith","codeSuffix","loadUiModuleAssets","manifestEntry","modFluidImports","getUiModuleConfig","uiModCfg","framework","fluidImports","loadFrameworkAssets","slice","path","css","app","eventBus","mani","config","fwName","currentFramework","fw","assets","bundle","assetUrls","assetCfgToUrls","assetBaseUrls","build","type","loadedAssets","loadStylesheet","loadScript","loadMarkup","text","$container","innerHTML","html","attrs","scriptAttrs","el","injectTag","onload","onerror","src","linkAttrs","tagName","$doc","keys","forEach","attr","body","appendChild","processOverrides","useRcUrls","assetObj","assetManifest","k","assetOverride","removeItem","manifestV1","uiModuleAssets","moduleBasePath","buildConfig","notRegistered","modKey","mData","modName","modBaseUrl","applyOverrideState","stateObj","setItem","localManifest","getQueryParamValue","re","RegExp","result","search","decodeURIComponent","removeQueryParam","redirectUrl","history","replaceState","title","goBootstrap","buildConfigOrig","JSON","parse","stringify","buildConfigOverrides","attrPath","envKey","substr","attrValue","overrideResult","obj","isOfType","createAlterFunc","buildConfigData","events","assetType","assetKey","assetValue","overrideFooterState","focused","addEventListener","overrideState","util","killPreLoader","getElementById","style","display","sidekickPromise","makeManifestData","isValid","to","from","toMod","fromMod","keyCode","evt","which","ctrlKey","shiftKey","isActionKey","once","hostname","sessionStorage","index","fetch","bind","options","response","header","headers","request","getAllResponseHeaders","m","toLowerCase","ok","status","statusText","responseURL","clone","responseText","blob","Blob","n","XMLHttpRequest","open","method","setRequestHeader","withCredentials","credentials","send","handlers","lastEventCache","off","evtName","callback","cb","on","$once","greedy","apply","fire","args","Map","funcArr","p","next","outstandingLoadRequests","define","payload","stylesheet","styleUrl","lastIndexOf","$uiModuleStyles","jsdelivr","cfg","basePaths","resources","basePath","source","uiModules","showOverrideFooter","$el","assetKeys","assetText","buildConfigText","innerText","$404","emit","routeNotFound","removeRouteChangeListener","logIt","console","_warn","_error","_log","val","prototype","toString","subject","reload","sidekick","init","test","handleSetAssetUrl","hasKeyAndValue","validDomainSuffixes","valueIsValidUrl","suffixRe","envConfig","envName","host","endsWith","isUrlRe","envConfigUrl","process","envCfg","catch","err","message"],"mappings":"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"}