{"version":3,"sources":["webpack:///webpack/bootstrap 1f27f8e27586611f6214","webpack:///./src/index.js","webpack:///./~/custom-event-polyfill/custom-event-polyfill.js"],"names":["spinnerLocation","xhrResponse","containersCache","getDispatcherElement","dispatcherDataAttribute","dispatcherElementSelector","element","document","querySelector","generatedElement","createElement","setAttribute","scripts","getElementsByTagName","currentScriptPath","length","src","split","join","EVENTS","ERROR_LOADING_WIDGET","REFRESH_WIDGET","WidgetLoaderClass","dispatcherElement","eventName","detail","evt","CustomEvent","dispatchEvent","callback","addEventListener","removeEventListener","fn","e","name","version","container","path","spinner","options","language","console","error","containersById","containerNodes","Object","prototype","toString","call","window","sparta","widgetLoader","push","forEach","currentContainer","dest","getElementById","querySelectorAll","pub","generateStyleSheet","widgetXHR","containers","style","styles","id","type","stylesSheet","styleSheet","cssText","appendChild","createTextNode","head","classList","add","xhrFunc","responseText","wasCached","innerHTML","initArray","moduleArray","dataset","module","indexOf","require","moduleRef","bootstrap","widget","default","init","JSON","stringify","height","backgroundImage","myScripts","slice","item","skipBabelPolyFill","newElem","parentNode","removeChild","xhrReq","XMLHttpRequest","LANG_PATH","toLowerCase","WIDGET_PATH","self","open","onreadystatechange","readyState","status","send"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1f27f8e27586611f6214","\nimport 'custom-event-polyfill';\n\n// spinnerLocation will store a reference to our spinner's GIF file\nlet spinnerLocation;\nlet xhrResponse;\nlet containersCache;\n\n/**\n * @method getDispatcherElement\n * @description checks to see if DispatcherElement exists and creates it if necessary\n * @returns Node\n */\nfunction getDispatcherElement() {\n /**\n * @const dispatcherDataAttribute\n * @description data attribute that our DispatcherElement will have\n */\n const dispatcherDataAttribute = 'sparta-event-dispatcher';\n\n /**\n * @const dispatcherElementSelector\n * @description selector that will be used to determine if our DispatcherElement already exists\n */\n const dispatcherElementSelector = `[data-${dispatcherDataAttribute}]`;\n\n /**\n * @const element\n * @description selected DispatcherElement from document\n */\n const element = document.querySelector(dispatcherElementSelector);\n\n // if DispatcherElement does not yet exist\n if (!element) {\n /**\n * @const generatedElement\n * @description created element to become our DispatcherElement\n */\n const generatedElement = document.createElement('div');\n\n // set our DispatcherElement data attribute\n generatedElement.setAttribute(`data-${dispatcherDataAttribute}`, true);\n\n // get current script path and use it to produce relevant spinner path\n const scripts = document.getElementsByTagName('script');\n\n let currentScriptPath = scripts[scripts.length - 1].src.split('/');\n\n currentScriptPath[currentScriptPath.length - 1] = 'loading.gif';\n\n spinnerLocation = currentScriptPath.join('/');\n\n return generatedElement;\n }\n\n // return selected DispatcherElement element\n return element;\n}\n\nconst EVENTS = {\n ERROR_LOADING_WIDGET: \"errorLoadingWidget\",\n REFRESH_WIDGET: \"refreshWidget\"\n}\n\n/**\n * @class WidgetLoader\n * @description class for our WidgetLoader that will initialize widgets and facilitate communication between widget and page\n */\nclass WidgetLoaderClass {\n /**\n * @method constructor\n * @description initializes a new instance of WidgetLoader and makes sure our DispatcherElement exists\n */\n constructor() {\n this.dispatcherElement = getDispatcherElement();\n }\n\n /**\n * @method pub\n * @description creates and dispatches a native CustomEvent on our DispatcherElement\n * @param {String} eventName the event name to dispatch\n * @param {*} [detail={}] the event data to attach to the event.detail parameter\n */\n pub(eventName, detail = {}) {\n /**\n * @const evt\n * @description native CustomEvent to dispatch\n */\n const evt = new CustomEvent(eventName, { detail });\n\n // dispatch our CustomEvent from our DispatcherElement\n this.dispatcherElement.dispatchEvent(evt);\n }\n\n /**\n * @method sub\n * @description attaches an event listener to our DispatcherElement\n * @param {String} eventName the event name to listen for\n * @param {Function} callback the event handler to fire\n */\n sub(eventName, callback) {\n // add event listener to DispatcherElement\n this.dispatcherElement.addEventListener(eventName, callback);\n }\n\n /**\n * @method unsub\n * @description allows subscriber to unsubscribe from event\n * @param {String} eventName the event name to listen for\n * @param {Function} callback the event handler to fire\n */\n unsub(eventName, callback) {\n this.dispatcherElement.removeEventListener(eventName, callback);\n }\n\n /**\n * @method once\n * @description allows subscriber to listen to one instance of event and then unsub\n * @param {String} eventName the event name to listen for\n * @param {Function} callback the event handler to fire\n */\n once(eventName, callback) {\n const fn = (e) => {\n this.dispatcherElement.removeEventListener(eventName, fn);\n\n callback(e);\n };\n\n this.dispatcherElement.addEventListener(eventName, fn);\n }\n\n /**\n * @method load\n * @description loads a widget into the specified container\n * @param {Object} Config object, must contain keys 'name, version, container, path', optional spinner Boolean value\n */\n load({ name, version, container, path, spinner, options = {}, language='en' }) {\n if (!name || !version || !container) {\n console.error('invalid config object passed to widget loader');\n return false;\n }\n\n let containersById = [];\n let containerNodes = [];\n\n // check if loading widget in multiple places\n if (Object.prototype.toString.call(container) === \"[object Array]\") {\n window.sparta.widgetLoader[name] = {[version]:{}};\n containersById = container;\n } else {\n containersById.push(container);\n }\n\n // loop over the containers, check if they exist and load as appropriate\n containersById.forEach((currentContainer) => {\n // window.sparta.widgetLoader[name][version][currentContainer] = {loaded:false};\n\n // get Node for widget container\n const dest = document.getElementById(currentContainer);\n\n // if widget container does not exist\n if (!dest) {\n console.error('widget container destination does not exist');\n return false;\n }\n\n containerNodes.push(dest);\n })\n\n // refresh widget if it exists, otherwise load it\n if (document.querySelectorAll('[data-sparta-container=\"' + name + '\"][data-version=\"' + version + '\"]').length > 0) {\n this.pub(EVENTS.REFRESH_WIDGET, {name:name, version:version, container:containerNodes});\n } else {\n this.generateStyleSheet(containerNodes, spinner);\n this.widgetXHR(containerNodes, path, name, version, options, language);\n }\n }\n\n /**\n * @method generatedStyleSheet\n * @description add stylesheet for loading states so we don't need another HTTP request\n * @param {Array} containers array of widget container Nodes\n * @param {Boolean} [spinner=true] should we use default spinner\n */\n generateStyleSheet(containers, spinner = true) {\n containers.forEach((dest) => {\n // generate stylesheet for loading\n const style = document.createElement('style');\n\n let styles = `\n #${dest.id} > [data-sparta-container].sparta-widget-loading,\n #${dest.id} > [data-sparta-container].sparta-widget-loading > .sparta-widget {\n visibility: hidden;\n height: 100%;\n widht: 100%;\n }\n `;\n\n // if we are supposed to show our spinner, add a style to the widget container\n if (spinner) {\n styles += `\n #${dest.id}.sparta-widget-loading {\n height: 100%;\n background-image: url('${spinnerLocation}');\n background-repeat: no-repeat;\n background-position: center center;\n }\n `;\n }\n\n // add stylesheet to page\n style.type = 'text/css';\n style.id = `${dest.id}-sparta-widget-style-sheet`;\n\n if (style.stylesSheet) {\n style.styleSheet.cssText = styles;\n } else {\n style.appendChild(document.createTextNode(styles));\n }\n\n document.head.appendChild(style);\n\n dest.classList.add('sparta-widget-loading');\n })\n }\n\n /**\n * @method widgetXHR\n * @description loads widget via AJAX request\n * @param {Array} containers array of widget container Nodes\n * @param {String} path where to load the widget from\n * @param {String} name the name of the widget\n * @param {String} version the version number of the widget to load\n * @param {String} language the language to attempt to load (en default)\n */\n widgetXHR(containers, path, name, version, options, language) {\n function xhrFunc(responseText, containersCache, wasCached) {\n if (wasCached) {\n containersCache.forEach((currentContainer) => {\n currentContainer.innerHTML = responseText;\n });\n\n const initArray = [];\n const moduleArray = document.querySelectorAll('[data-component=\"module\"]');\n moduleArray.forEach((element) => {\n if (element.dataset.module.indexOf('module') !== -1) {\n const dataset = element.dataset;\n initArray.push(window.sparta.require[name][version].require(`modules/${dataset.moduleRef}/${dataset.version}/js/${dataset.module}`));\n }\n });\n\n const bootstrap = window.sparta.require[name][version].require('global/sparta-bootstrap-utility');\n const widget = window.sparta.require[name][version].require(`modules/${name}/${version}/js/${name}`);\n initArray.push(widget);\n bootstrap.default.init(initArray, { name, version });\n } else {\n // place HTML in all containers\n containers.forEach((currentContainer) => {\n currentContainer.innerHTML = responseText;\n });\n\n // grab the last item and load the JS into that\n let dest = containers[containers.length - 1];\n\n // add options into meta data for bootstrapper\n dest.querySelector(\"[data-sparta-widget]\").setAttribute(\"data-sparta-options\", JSON.stringify(options));\n\n // remove loader\n dest.style.height = 'auto';\n dest.style.backgroundImage = '';\n\n // get all script tags so we can make the scripts load\n let myScripts = [].slice.call(dest.querySelectorAll('script'));\n // iterate through scripts\n myScripts.forEach((item) => {\n // skip babel polyfill\n if (options.skipBabelPolyFill && item.src.indexOf(\"babel-polyfill.js\") !== -1) {\n return;\n }\n\n // generate new script element\n let newElem = document.createElement('script');\n\n // depending on script type\n if (item.src) {\n // update src attribute\n newElem.src = item.src;\n } else {\n // inject code into script innerHTML\n newElem.innerHTML = item.innerHTML;\n }\n\n // add script tag to widget container\n dest.appendChild(newElem);\n\n // remove original script node (ie10 does not support item.remove())\n item.parentNode.removeChild(item);\n });\n }\n }\n\n if (xhrResponse) {\n xhrFunc(xhrResponse, containersCache, true);\n return;\n }\n\n const xhrReq = new XMLHttpRequest();\n // xhrReq.withCredentials = true;\n\n const LANG_PATH = (!language || language.toLowerCase() === \"en\") ? \"\" : `${language.toLowerCase()}/`;\n const WIDGET_PATH = `${path}/spa/widgets/${name}/${version}/${LANG_PATH}index.html`;\n const self = this;\n\n // execute AJAX request\n xhrReq.open('GET', WIDGET_PATH);\n\n xhrReq.onreadystatechange = function () {\n if (this.readyState === 4) {\n if (this.status !== 200) {\n console.error('unable to load widget:', WIDGET_PATH, this.status);\n\n containers.forEach((dest) => {\n dest.innerHTML = 'unable to load widget';\n self.pub(EVENTS.ERROR_LOADING_WIDGET, {widget:{name:name, version:version, path:path, container:dest}, xhrReq:this});\n });\n } else {\n xhrResponse = this.responseText;\n containersCache = containers;\n xhrFunc(this.responseText, containersCache, false);\n }\n }\n };\n\n xhrReq.send();\n }\n}\n\nif (!(window.sparta && window.sparta.widgetLoader)) {\n const widgetLoader = new WidgetLoaderClass();\n\n window.sparta = window.sparta || {};\n\n window.sparta.widgetLoader = widgetLoader;\n\n document.dispatchEvent(new CustomEvent('spartaLoaderLoaded'));\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/custom-event-polyfill/custom-event-polyfill.js\n// module id = 1\n// module chunks = 0"],"sourceRoot":""}