{"version":3,"file":"wmn-umbraco.min.js","mappings":"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","sources":["webpack://wmn-umbraco/./node_modules/axios/index.js","webpack://wmn-umbraco/./node_modules/axios/lib/adapters/xhr.js","webpack://wmn-umbraco/./node_modules/axios/lib/axios.js","webpack://wmn-umbraco/./node_modules/axios/lib/cancel/Cancel.js","webpack://wmn-umbraco/./node_modules/axios/lib/cancel/CancelToken.js","webpack://wmn-umbraco/./node_modules/axios/lib/cancel/isCancel.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/Axios.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/InterceptorManager.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/buildFullPath.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/createError.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/dispatchRequest.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/enhanceError.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/mergeConfig.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/settle.js","webpack://wmn-umbraco/./node_modules/axios/lib/core/transformData.js","webpack://wmn-umbraco/./node_modules/axios/lib/defaults.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/bind.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/buildURL.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/combineURLs.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/cookies.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://wmn-umbraco/./node_modules/axios/lib/helpers/spread.js","webpack://wmn-umbraco/./node_modules/axios/lib/utils.js","webpack://wmn-umbraco/./node_modules/findandreplacedomtext/src/findAndReplaceDOMText.js","webpack://wmn-umbraco/webpack/bootstrap","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_n-icons.js","webpack://wmn-umbraco/./node_modules/tfwm-cookies/build/dist/lib/index.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_cookies.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_header.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_journeyPlanner.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_journeyPlannerWidget.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_toggleHomepageTabs.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/index.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_dismissEmergencyBanner.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_generateStickyPageContents.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_generateNavCardLinks.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_table.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_findATimetable.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_footer.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmn-umbraco.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/polyfills/_details.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/polyfills/index.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/polyfills/_ie11-forEach.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/polyfills/_includes.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_icons.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/index.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_accordion.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/wmnds-components/_buyATicket.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_generateHeadingIds.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_showSwiftLoginBar.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_replaceSwiftBySvg.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_gridSpaceController.js","webpack://wmn-umbraco/./App_Plugins/wmn/assets/website/js/custom/_hashtagExpandingAccordion.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * findAndReplaceDOMText v 0.4.6\n * @author James Padolsey http://james.padolsey.com\n * @license http://unlicense.org/UNLICENSE\n *\n * Matches the text of a DOM node against a regular expression\n * and replaces each match (or node-separated portions of the match)\n * in the specified element.\n */\n (function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals\n root.findAndReplaceDOMText = factory();\n }\n }(this, function factory() {\n\n\tvar PORTION_MODE_RETAIN = 'retain';\n\tvar PORTION_MODE_FIRST = 'first';\n\n\tvar doc = document;\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction escapeRegExp(s) {\n\t\treturn String(s).replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n\t}\n\n\tfunction exposed() {\n\t\t// Try deprecated arg signature first:\n\t\treturn deprecated.apply(null, arguments) || findAndReplaceDOMText.apply(null, arguments);\n\t}\n\n\tfunction deprecated(regex, node, replacement, captureGroup, elFilter) {\n\t\tif ((node && !node.nodeType) && arguments.length <= 2) {\n\t\t\treturn false;\n\t\t}\n\t\tvar isReplacementFunction = typeof replacement == 'function';\n\n\t\tif (isReplacementFunction) {\n\t\t\treplacement = (function(original) {\n\t\t\t\treturn function(portion, match) {\n\t\t\t\t\treturn original(portion.text, match.startIndex);\n\t\t\t\t};\n\t\t\t}(replacement));\n\t\t}\n\n\t\t// Awkward support for deprecated argument signature (<0.4.0)\n\t\tvar instance = findAndReplaceDOMText(node, {\n\n\t\t\tfind: regex,\n\n\t\t\twrap: isReplacementFunction ? null : replacement,\n\t\t\treplace: isReplacementFunction ? replacement : '$' + (captureGroup || '&'),\n\n\t\t\tprepMatch: function(m, mi) {\n\n\t\t\t\t// Support captureGroup (a deprecated feature)\n\n\t\t\t\tif (!m[0]) throw 'findAndReplaceDOMText cannot handle zero-length matches';\n\n\t\t\t\tif (captureGroup > 0) {\n\t\t\t\t\tvar cg = m[captureGroup];\n\t\t\t\t\tm.index += m[0].indexOf(cg);\n\t\t\t\t\tm[0] = cg;\n\t\t\t\t}\n\n\t\t\t\tm.endIndex = m.index + m[0].length;\n\t\t\t\tm.startIndex = m.index;\n\t\t\t\tm.index = mi;\n\n\t\t\t\treturn m;\n\t\t\t},\n\t\t\tfilterElements: elFilter\n\t\t});\n\n\t\texposed.revert = function() {\n\t\t\treturn instance.revert();\n\t\t};\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * findAndReplaceDOMText\n\t *\n\t * Locates matches and replaces with replacementNode\n\t *\n\t * @param {Node} node Element or Text node to search within\n\t * @param {RegExp} options.find The regular expression to match\n\t * @param {String|Element} [options.wrap] A NodeName, or a Node to clone\n\t * @param {String} [options.wrapClass] A classname to append to the wrapping element\n\t * @param {String|Function} [options.replace='$&'] What to replace each match with\n\t * @param {Function} [options.filterElements] A Function to be called to check whether to\n\t *\tprocess an element. (returning true = process element,\n\t *\treturning false = avoid element)\n\t */\n\tfunction findAndReplaceDOMText(node, options) {\n\t\treturn new Finder(node, options);\n\t}\n\n\texposed.NON_PROSE_ELEMENTS = {\n\t\tbr:1, hr:1,\n\t\t// Media / Source elements:\n\t\tscript:1, style:1, img:1, video:1, audio:1, canvas:1, svg:1, map:1, object:1,\n\t\t// Input elements\n\t\tinput:1, textarea:1, select:1, option:1, optgroup: 1, button:1\n\t};\n\n\texposed.NON_CONTIGUOUS_PROSE_ELEMENTS = {\n\n\t\t// Elements that will not contain prose or block elements where we don't\n\t\t// want prose to be matches across element borders:\n\n\t\t// Block Elements\n\t\taddress:1, article:1, aside:1, blockquote:1, dd:1, div:1,\n\t\tdl:1, fieldset:1, figcaption:1, figure:1, footer:1, form:1, h1:1, h2:1, h3:1,\n\t\th4:1, h5:1, h6:1, header:1, hgroup:1, hr:1, main:1, nav:1, noscript:1, ol:1,\n\t\toutput:1, p:1, pre:1, section:1, ul:1,\n\t\t// Other misc. elements that are not part of continuous inline prose:\n\t\tbr:1, li: 1, summary: 1, dt:1, details:1, rp:1, rt:1, rtc:1,\n\t\t// Media / Source elements:\n\t\tscript:1, style:1, img:1, video:1, audio:1, canvas:1, svg:1, map:1, object:1,\n\t\t// Input elements\n\t\tinput:1, textarea:1, select:1, option:1, optgroup:1, button:1,\n\t\t// Table related elements:\n\t\ttable:1, tbody:1, thead:1, th:1, tr:1, td:1, caption:1, col:1, tfoot:1, colgroup:1\n\n\t};\n\n\texposed.NON_INLINE_PROSE = function(el) {\n\t\treturn hasOwn.call(exposed.NON_CONTIGUOUS_PROSE_ELEMENTS, el.nodeName.toLowerCase());\n\t};\n\n\t// Presets accessed via `options.preset` when calling findAndReplaceDOMText():\n\texposed.PRESETS = {\n\t\tprose: {\n\t\t\tforceContext: exposed.NON_INLINE_PROSE,\n\t\t\tfilterElements: function(el) {\n\t\t\t\treturn !hasOwn.call(exposed.NON_PROSE_ELEMENTS, el.nodeName.toLowerCase());\n\t\t\t}\n\t\t}\n\t};\n\n\texposed.Finder = Finder;\n\n\t/**\n\t * Finder -- encapsulates logic to find and replace.\n\t */\n\tfunction Finder(node, options) {\n\n\t\tvar preset = options.preset && exposed.PRESETS[options.preset];\n\n\t\toptions.portionMode = options.portionMode || PORTION_MODE_RETAIN;\n\n\t\tif (preset) {\n\t\t\tfor (var i in preset) {\n\t\t\t\tif (hasOwn.call(preset, i) && !hasOwn.call(options, i)) {\n\t\t\t\t\toptions[i] = preset[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.node = node;\n\t\tthis.options = options;\n\n\t\t// Enable match-preparation method to be passed as option:\n\t\tthis.prepMatch = options.prepMatch || this.prepMatch;\n\n\t\tthis.reverts = [];\n\n\t\tthis.matches = this.search();\n\n\t\tif (this.matches.length) {\n\t\t\tthis.processMatches();\n\t\t}\n\n\t}\n\n\tFinder.prototype = {\n\n\t\t/**\n\t\t * Searches for all matches that comply with the instance's 'match' option\n\t\t */\n\t\tsearch: function() {\n\n\t\t\tvar match;\n\t\t\tvar matchIndex = 0;\n\t\t\tvar offset = 0;\n\t\t\tvar regex = this.options.find;\n\t\t\tvar textAggregation = this.getAggregateText();\n\t\t\tvar matches = [];\n\t\t\tvar self = this;\n\n\t\t\tregex = typeof regex === 'string' ? RegExp(escapeRegExp(regex), 'g') : regex;\n\n\t\t\tmatchAggregation(textAggregation);\n\n\t\t\tfunction matchAggregation(textAggregation) {\n\t\t\t\tfor (var i = 0, l = textAggregation.length; i < l; ++i) {\n\n\t\t\t\t\tvar text = textAggregation[i];\n\n\t\t\t\t\tif (typeof text !== 'string') {\n\t\t\t\t\t\t// Deal with nested contexts: (recursive)\n\t\t\t\t\t\tmatchAggregation(text);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (regex.global) {\n\t\t\t\t\t\twhile (match = regex.exec(text)) {\n\t\t\t\t\t\t\tmatches.push(self.prepMatch(match, matchIndex++, offset));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (match = text.match(regex)) {\n\t\t\t\t\t\t\tmatches.push(self.prepMatch(match, 0, offset));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toffset += text.length;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn matches;\n\n\t\t},\n\n\t\t/**\n\t\t * Prepares a single match with useful meta info:\n\t\t */\n\t\tprepMatch: function(match, matchIndex, characterOffset) {\n\n\t\t\tif (!match[0]) {\n\t\t\t\tthrow new Error('findAndReplaceDOMText cannot handle zero-length matches');\n\t\t\t}\n\n\t\t\tmatch.endIndex = characterOffset + match.index + match[0].length;\n\t\t\tmatch.startIndex = characterOffset + match.index;\n\t\t\tmatch.index = matchIndex;\n\n\t\t\treturn match;\n\t\t},\n\n\t\t/**\n\t\t * Gets aggregate text within subject node\n\t\t */\n\t\tgetAggregateText: function() {\n\n\t\t\tvar elementFilter = this.options.filterElements;\n\t\t\tvar forceContext = this.options.forceContext;\n\n\t\t\treturn getText(this.node);\n\n\t\t\t/**\n\t\t\t * Gets aggregate text of a node without resorting\n\t\t\t * to broken innerText/textContent\n\t\t\t */\n\t\t\tfunction getText(node) {\n\n\t\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t\treturn [node.data];\n\t\t\t\t}\n\n\t\t\t\tif (elementFilter && !elementFilter(node)) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tvar txt = [''];\n\t\t\t\tvar i = 0;\n\n\t\t\t\tif (node = node.firstChild) do {\n\n\t\t\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t\t\ttxt[i] += node.data;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar innerText = getText(node);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tforceContext &&\n\t\t\t\t\t\tnode.nodeType === Node.ELEMENT_NODE &&\n\t\t\t\t\t\t(forceContext === true || forceContext(node))\n\t\t\t\t\t) {\n\t\t\t\t\t\ttxt[++i] = innerText;\n\t\t\t\t\t\ttxt[++i] = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (typeof innerText[0] === 'string') {\n\t\t\t\t\t\t\t// Bridge nested text-node data so that they're\n\t\t\t\t\t\t\t// not considered their own contexts:\n\t\t\t\t\t\t\t// I.e. ['some', ['thing']] -> ['something']\n\t\t\t\t\t\t\ttxt[i] += innerText.shift();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (innerText.length) {\n\t\t\t\t\t\t\ttxt[++i] = innerText;\n\t\t\t\t\t\t\ttxt[++i] = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (node = node.nextSibling);\n\n\t\t\t\treturn txt;\n\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Steps through the target node, looking for matches, and\n\t\t * calling replaceFn when a match is found.\n\t\t */\n\t\tprocessMatches: function() {\n\n\t\t\tvar matches = this.matches;\n\t\t\tvar node = this.node;\n\t\t\tvar elementFilter = this.options.filterElements;\n\n\t\t\tvar startPortion,\n\t\t\t\tendPortion,\n\t\t\t\tinnerPortions = [],\n\t\t\t\tcurNode = node,\n\t\t\t\tmatch = matches.shift(),\n\t\t\t\tatIndex = 0, // i.e. nodeAtIndex\n\t\t\t\tmatchIndex = 0,\n\t\t\t\tportionIndex = 0,\n\t\t\t\tdoAvoidNode,\n\t\t\t\tnodeStack = [node];\n\n\t\t\tout: while (true) {\n\n\t\t\t\tif (curNode.nodeType === Node.TEXT_NODE) {\n\n\t\t\t\t\tif (!endPortion && curNode.length + atIndex >= match.endIndex) {\n\t\t\t\t\t\t// We've found the ending\n\t\t\t\t\t\t// (Note that, in the case of a single portion, it'll be an\n\t\t\t\t\t\t// endPortion, not a startPortion.)\n\t\t\t\t\t\tendPortion = {\n\t\t\t\t\t\t\tnode: curNode,\n\t\t\t\t\t\t\tindex: portionIndex++,\n\t\t\t\t\t\t\ttext: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex),\n\n\t\t\t\t\t\t\t// If it's the first match (atIndex==0) we should just return 0\n\t\t\t\t\t\t\tindexInMatch: atIndex === 0 ? 0 : atIndex - match.startIndex,\n\n\t\t\t\t\t\t\tindexInNode: match.startIndex - atIndex,\n\t\t\t\t\t\t\tendIndexInNode: match.endIndex - atIndex,\n\t\t\t\t\t\t\tisEnd: true\n\t\t\t\t\t\t};\n\n\t\t\t\t\t} else if (startPortion) {\n\t\t\t\t\t\t// Intersecting node\n\t\t\t\t\t\tinnerPortions.push({\n\t\t\t\t\t\t\tnode: curNode,\n\t\t\t\t\t\t\tindex: portionIndex++,\n\t\t\t\t\t\t\ttext: curNode.data,\n\t\t\t\t\t\t\tindexInMatch: atIndex - match.startIndex,\n\t\t\t\t\t\t\tindexInNode: 0 // always zero for inner-portions\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!startPortion && curNode.length + atIndex > match.startIndex) {\n\t\t\t\t\t\t// We've found the match start\n\t\t\t\t\t\tstartPortion = {\n\t\t\t\t\t\t\tnode: curNode,\n\t\t\t\t\t\t\tindex: portionIndex++,\n\t\t\t\t\t\t\tindexInMatch: 0,\n\t\t\t\t\t\t\tindexInNode: match.startIndex - atIndex,\n\t\t\t\t\t\t\tendIndexInNode: match.endIndex - atIndex,\n\t\t\t\t\t\t\ttext: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex)\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tatIndex += curNode.data.length;\n\n\t\t\t\t}\n\n\t\t\t\tdoAvoidNode = curNode.nodeType === Node.ELEMENT_NODE && elementFilter && !elementFilter(curNode);\n\n\t\t\t\tif (startPortion && endPortion) {\n\n\t\t\t\t\tcurNode = this.replaceMatch(match, startPortion, innerPortions, endPortion);\n\n\t\t\t\t\t// processMatches has to return the node that replaced the endNode\n\t\t\t\t\t// and then we step back so we can continue from the end of the\n\t\t\t\t\t// match:\n\n\t\t\t\t\tatIndex -= (endPortion.node.data.length - endPortion.endIndexInNode);\n\n\t\t\t\t\tstartPortion = null;\n\t\t\t\t\tendPortion = null;\n\t\t\t\t\tinnerPortions = [];\n\t\t\t\t\tmatch = matches.shift();\n\t\t\t\t\tportionIndex = 0;\n\t\t\t\t\tmatchIndex++;\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tbreak; // no more matches\n\t\t\t\t\t}\n\n\t\t\t\t} else if (\n\t\t\t\t\t!doAvoidNode &&\n\t\t\t\t\t(curNode.firstChild || curNode.nextSibling)\n\t\t\t\t) {\n\t\t\t\t\t// Move down or forward:\n\t\t\t\t\tif (curNode.firstChild) {\n\t\t\t\t\t\tnodeStack.push(curNode);\n\t\t\t\t\t\tcurNode = curNode.firstChild;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurNode = curNode.nextSibling;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Move forward or up:\n\t\t\t\twhile (true) {\n\t\t\t\t\tif (curNode.nextSibling) {\n\t\t\t\t\t\tcurNode = curNode.nextSibling;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurNode = nodeStack.pop();\n\t\t\t\t\tif (curNode === node) {\n\t\t\t\t\t\tbreak out;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Reverts ... TODO\n\t\t */\n\t\trevert: function() {\n\t\t\t// Reversion occurs backwards so as to avoid nodes subsequently\n\t\t\t// replaced during the matching phase (a forward process):\n\t\t\tfor (var l = this.reverts.length; l--;) {\n\t\t\t\tthis.reverts[l]();\n\t\t\t}\n\t\t\tthis.reverts = [];\n\t\t},\n\n\t\tprepareReplacementString: function(string, portion, match) {\n\t\t\tvar portionMode = this.options.portionMode;\n\t\t\tif (\n\t\t\t\tportionMode === PORTION_MODE_FIRST &&\n\t\t\t\tportion.indexInMatch > 0\n\t\t\t) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tstring = string.replace(/\\$(\\d+|&|`|')/g, function($0, t) {\n\t\t\t\tvar replacement;\n\t\t\t\tswitch(t) {\n\t\t\t\t\tcase '&':\n\t\t\t\t\t\treplacement = match[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '`':\n\t\t\t\t\t\treplacement = match.input.substring(0, match.startIndex);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '\\'':\n\t\t\t\t\t\treplacement = match.input.substring(match.endIndex);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treplacement = match[+t] || '';\n\t\t\t\t}\n\t\t\t\treturn replacement;\n\t\t\t});\n\n\t\t\tif (portionMode === PORTION_MODE_FIRST) {\n\t\t\t\treturn string;\n\t\t\t}\n\n\t\t\tif (portion.isEnd) {\n\t\t\t\treturn string.substring(portion.indexInMatch);\n\t\t\t}\n\n\t\t\treturn string.substring(portion.indexInMatch, portion.indexInMatch + portion.text.length);\n\t\t},\n\n\t\tgetPortionReplacementNode: function(portion, match) {\n\n\t\t\tvar replacement = this.options.replace || '$&';\n\t\t\tvar wrapper = this.options.wrap;\n\t\t\tvar wrapperClass = this.options.wrapClass;\n\n\t\t\tif (wrapper && wrapper.nodeType) {\n\t\t\t\t// Wrapper has been provided as a stencil-node for us to clone:\n\t\t\t\tvar clone = doc.createElement('div');\n\t\t\t\tclone.innerHTML = wrapper.outerHTML || new XMLSerializer().serializeToString(wrapper);\n\t\t\t\twrapper = clone.firstChild;\n\t\t\t}\n\n\t\t\tif (typeof replacement == 'function') {\n\t\t\t\treplacement = replacement(portion, match);\n\t\t\t\tif (replacement && replacement.nodeType) {\n\t\t\t\t\treturn replacement;\n\t\t\t\t}\n\t\t\t\treturn doc.createTextNode(String(replacement));\n\t\t\t}\n\n\t\t\tvar el = typeof wrapper == 'string' ? doc.createElement(wrapper) : wrapper;\n\n \t\t\tif (el && wrapperClass) {\n\t\t\t\tel.className = wrapperClass;\n\t\t\t}\n\n\t\t\treplacement = doc.createTextNode(\n\t\t\t\tthis.prepareReplacementString(\n\t\t\t\t\treplacement, portion, match\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tif (!replacement.data) {\n\t\t\t\treturn replacement;\n\t\t\t}\n\n\t\t\tif (!el) {\n\t\t\t\treturn replacement;\n\t\t\t}\n\n\t\t\tel.appendChild(replacement);\n\n\t\t\treturn el;\n\t\t},\n\n\t\treplaceMatch: function(match, startPortion, innerPortions, endPortion) {\n\n\t\t\tvar matchStartNode = startPortion.node;\n\t\t\tvar matchEndNode = endPortion.node;\n\n\t\t\tvar precedingTextNode;\n\t\t\tvar followingTextNode;\n\n\t\t\tif (matchStartNode === matchEndNode) {\n\n\t\t\t\tvar node = matchStartNode;\n\n\t\t\t\tif (startPortion.indexInNode > 0) {\n\t\t\t\t\t// Add `before` text node (before the match)\n\t\t\t\t\tprecedingTextNode = doc.createTextNode(node.data.substring(0, startPortion.indexInNode));\n\t\t\t\t\tnode.parentNode.insertBefore(precedingTextNode, node);\n\t\t\t\t}\n\n\t\t\t\t// Create the replacement node:\n\t\t\t\tvar newNode = this.getPortionReplacementNode(\n\t\t\t\t\tendPortion,\n\t\t\t\t\tmatch\n\t\t\t\t);\n\n\t\t\t\tnode.parentNode.insertBefore(newNode, node);\n\n\t\t\t\tif (endPortion.endIndexInNode < node.length) { // ?????\n\t\t\t\t\t// Add `after` text node (after the match)\n\t\t\t\t\tfollowingTextNode = doc.createTextNode(node.data.substring(endPortion.endIndexInNode));\n\t\t\t\t\tnode.parentNode.insertBefore(followingTextNode, node);\n\t\t\t\t}\n\n\t\t\t\tnode.parentNode.removeChild(node);\n\n\t\t\t\tthis.reverts.push(function() {\n\t\t\t\t\tif (precedingTextNode === newNode.previousSibling) {\n\t\t\t\t\t\tprecedingTextNode.parentNode.removeChild(precedingTextNode);\n\t\t\t\t\t}\n\t\t\t\t\tif (followingTextNode === newNode.nextSibling) {\n\t\t\t\t\t\tfollowingTextNode.parentNode.removeChild(followingTextNode);\n\t\t\t\t\t}\n\t\t\t\t\tnewNode.parentNode.replaceChild(node, newNode);\n\t\t\t\t});\n\n\t\t\t\treturn newNode;\n\n\t\t\t} else {\n\t\t\t\t// Replace matchStartNode -> [innerMatchNodes...] -> matchEndNode (in that order)\n\n\n\t\t\t\tprecedingTextNode = doc.createTextNode(\n\t\t\t\t\tmatchStartNode.data.substring(0, startPortion.indexInNode)\n\t\t\t\t);\n\n\t\t\t\tfollowingTextNode = doc.createTextNode(\n\t\t\t\t\tmatchEndNode.data.substring(endPortion.endIndexInNode)\n\t\t\t\t);\n\n\t\t\t\tvar firstNode = this.getPortionReplacementNode(\n\t\t\t\t\tstartPortion,\n\t\t\t\t\tmatch\n\t\t\t\t);\n\n\t\t\t\tvar innerNodes = [];\n\n\t\t\t\tfor (var i = 0, l = innerPortions.length; i < l; ++i) {\n\t\t\t\t\tvar portion = innerPortions[i];\n\t\t\t\t\tvar innerNode = this.getPortionReplacementNode(\n\t\t\t\t\t\tportion,\n\t\t\t\t\t\tmatch\n\t\t\t\t\t);\n\t\t\t\t\tportion.node.parentNode.replaceChild(innerNode, portion.node);\n\t\t\t\t\tthis.reverts.push((function(portion, innerNode) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tinnerNode.parentNode.replaceChild(portion.node, innerNode);\n\t\t\t\t\t\t};\n\t\t\t\t\t}(portion, innerNode)));\n\t\t\t\t\tinnerNodes.push(innerNode);\n\t\t\t\t}\n\n\t\t\t\tvar lastNode = this.getPortionReplacementNode(\n\t\t\t\t\tendPortion,\n\t\t\t\t\tmatch\n\t\t\t\t);\n\n\t\t\t\tmatchStartNode.parentNode.insertBefore(precedingTextNode, matchStartNode);\n\t\t\t\tmatchStartNode.parentNode.insertBefore(firstNode, matchStartNode);\n\t\t\t\tmatchStartNode.parentNode.removeChild(matchStartNode);\n\n\t\t\t\tmatchEndNode.parentNode.insertBefore(lastNode, matchEndNode);\n\t\t\t\tmatchEndNode.parentNode.insertBefore(followingTextNode, matchEndNode);\n\t\t\t\tmatchEndNode.parentNode.removeChild(matchEndNode);\n\n\t\t\t\tthis.reverts.push(function() {\n\t\t\t\t\tprecedingTextNode.parentNode.removeChild(precedingTextNode);\n\t\t\t\t\tfirstNode.parentNode.replaceChild(matchStartNode, firstNode);\n\t\t\t\t\tfollowingTextNode.parentNode.removeChild(followingTextNode);\n\t\t\t\t\tlastNode.parentNode.replaceChild(matchEndNode, lastNode);\n\t\t\t\t});\n\n\t\t\t\treturn lastNode;\n\t\t\t}\n\t\t}\n\n\t};\n\n\treturn exposed;\n\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import * as findAndReplaceDOMText from 'findandreplacedomtext'; // https://github.com/padolsey/findAndReplaceDOMText\n\nconst nIcons = () => {\n // Convert a html string into an actual HTML node\n const convertHtmlStringToNode = (htmlString) =>\n document.createRange().createContextualFragment(htmlString).firstChild;\n\n const convertStringToNode = (string) => {\n const textWithoutN = string.substring(1); // Chop the first character from our string (the 'n') as it will be replaced with an icon\n // HTML/SVG of icon we will use\n const svgIcon = `\n \n N-Network icon\n A hexagon with the letter 'n' inside of it.\n \n `;\n // Then replace our found text with 'n' icon and text without 'n'\n const htmlString = `${svgIcon}${textWithoutN}`;\n\n return convertHtmlStringToNode(htmlString);\n };\n\n const replaceNText = () => {\n const wordsToReplace = /(nNetwork|nTicket|nTrain|nBus)/; // Pipe in any words that we should replace the 'n' with the SVG 'n' icon (not case sensitive)\n const bodyEle = document.querySelector('body');\n\n // Read https://github.com/padolsey/findAndReplaceDOMText on how this works\n findAndReplaceDOMText(bodyEle, {\n preset: 'prose',\n find: new RegExp(wordsToReplace, 'gi'),\n replace: (_portion, match) => convertStringToNode(match[0]),\n });\n };\n\n // START HERE\n replaceNText();\n};\n\nexport default nIcons;\n","var g=\"production\";var a=(e,o,t)=>{let n=g||\"developement\",r=\"tfwm.org.uk\",c=new Date;c.setTime(c.getTime()+t*24*60*60*1e3);let s=`expires=${c.toUTCString()}`,p=n===\"development\"?\"domain=localhost\":`domain=.${r}`;document.cookie=`${e}=${o};${s};${p};path=/`},l=e=>{let o=`${e}=`,t=document.cookie.split(\";\");for(let n=0;n{d&&(d.style.display=\"none\")},y=()=>{d&&(d.style.display=\"block\")};var i=()=>{if(!l(\"cookies-policy\"))return null;let e=l(\"cookies-policy\");return e?JSON.parse(e):null},_=e=>{var n,r,c;let o=e.querySelectorAll(\".wmnds-fe-checkboxes__input\"),t=[(n=i())==null?void 0:n.essential,(r=i())==null?void 0:r.functional,(c=i())==null?void 0:c.performance];if(o)for(let s=0;s{let e=document.querySelector(\".wmnds-cookies-manager__preferences\");!e||(f(),_(e))},k=(e,o,t)=>{let n={essential:e,functional:o,performance:t};a(\"cookies-policy\",JSON.stringify(n),181),u()};var E=()=>function(e,o,t,n,r){e[n]=e[n]||[],e[n].push({\"gtm.start\":new Date().getTime(),event:\"gtm.js\"});var c=o.getElementsByTagName(t)[0],s=o.createElement(t),p=n!=\"dataLayer\"?\"&l=\"+n:\"\";s.async=!0,s.src=\"https://www.googletagmanager.com/gtm.js?id=\"+r+p,c.parentNode.insertBefore(s,c)}(window,document,\"script\",\"dataLayer\",\"GTM-NVSWZS\"),C=E;var P=()=>{let e=i();if(!e)return;let o=document.querySelectorAll('script[data-cookiescript=\"accepted\"][type=\"plain/text\"]');e.performance&&C(),!(!e||!o.length)&&o.forEach(t=>{var r;let{cookiecategory:n}=t.dataset;if(n&&e[n]){let c=document.createElement(\"script\");t.src&&(c.src=t.src),c.innerHTML=t.innerHTML;let s=new DocumentFragment;s.appendChild(c),(r=t.parentNode)==null||r.insertBefore(s,t),t.remove()}return t})},m=P;var h=()=>{k(!0,!0,!0),a(\"cookies-preference\",!0,181),m(),f()},j=e=>{e.key!==\" \"&&e.key!==\"Enter\"&&e.key!==\"Spacebar\"||(e.preventDefault(),h())},S=()=>{let e=window.frameElement&&window.frameElement.nodeName===\"IFRAME\",o=document.querySelector(\".wmnds-cookies-banner__accept-all-cookies\");e||o===null||(o.addEventListener(\"click\",h),o.addEventListener(\"keydown\",j))},w=S;var N=()=>{document.cookie.split(\";\").forEach(o=>{let t=o.trim();!t.startsWith(\"_\")||(document.cookie=`${t}=; expires=Thu, 01 Jan 1970 00:00:00 UTC;`)})},B=e=>!!l(e),L=()=>{let e=document.querySelector(\".wmnds-cookies-manager__success-message\");if(!e)return;let o=e.querySelector(\".wmnds-cookies-manager__previous-page a\");if(e.style.display=\"block\",!o)return;let{referrer:t}=document;(t===\"\"||t===window.location.href)&&o.parentElement?o.parentElement.style.display=\"none\":o.href=t},v=(e,o)=>{e.preventDefault();let t=n=>{var r;return(r=o.querySelector(`.wmnds-fe-checkboxes__input[name=\"${n}-cookies\"]`))==null?void 0:r.checked};t(\"performance\")||N(),k(t(\"essential\"),t(\"functional\"),t(\"performance\")),a(\"cookies-preference\",!0,181),L(),m()},M=()=>{B(\"cookies-preference\")||(y(),k(!0,!1,!1)),u()},b=()=>{window.frameElement&&window.frameElement.nodeName===\"IFRAME\"||M();let o=document.querySelector(\".wmnds-cookies-manager__form\");o&&o.addEventListener(\"submit\",t=>v(t,o))},x=b;export{w as cookieBanner,m as cookiePolicyLogic,i as getCookiePolicy,x as manageCookies};\n","import { cookieBanner, manageCookies, cookiePolicyLogic } from 'tfwm-cookies';\n\n// Wait until everything is loaded\nconst cookiesJS = () => {\n cookieBanner();\n manageCookies();\n cookiePolicyLogic();\n};\n\nexport default cookiesJS;\n","const headerJs = () => {\n // get mega menu elements\n const megaMenus = document.querySelectorAll('.wmnds-mega-menu');\n\n const mobileMenu = window.matchMedia('(max-width: 767px)');\n\n /*\n Mega menu helper functions\n */\n\n // getMenuLink returns a specified menu link from a specified array\n // currentIndex = index of the link that is currently focused\n // array = array to move through\n // direction = next, prev,\n const getMenuLink = (currentIndex, array, direction) => {\n let menuLink = null;\n if (array) {\n if (direction === 'prev') {\n // return previous link in specified array if there is one else return null;\n menuLink = array[currentIndex - 1] ? array[currentIndex - 1] : null;\n } else if (direction === 'next') {\n // return next link in specified array if there is one else return null;\n menuLink = array[currentIndex + 1] ? array[currentIndex + 1] : null;\n } else {\n // return link with same index in specified array;\n menuLink = array[currentIndex] ? array[currentIndex] : array[array.length - 1];\n }\n }\n return menuLink;\n };\n\n // takes a menu element and allows moving between focus via tabbing/arrows\n const setKeyboardNavigation = (subMenuContainer, subMenuQuery, onFirst, onLast) => {\n // array of all links in menu container\n const allLinksArray = [];\n\n // use specified query to select all submenus\n const subMenus = subMenuContainer.querySelectorAll(subMenuQuery);\n\n subMenus.forEach((subMenu, subMenuIndex) => {\n const thisSubMenuLinks = subMenu.querySelectorAll('a');\n\n // add list of all links in this container to an array\n allLinksArray.push(thisSubMenuLinks);\n\n // add event listener to each link with key logic\n thisSubMenuLinks.forEach((link, linkIndex) => {\n link.addEventListener('keydown', (e) => {\n // if not escape\n if (e.keyCode !== 27) {\n e.stopPropagation();\n if (e.keyCode === 39) {\n // right arrow - go to link of same index in next menu list\n e.preventDefault();\n const nextMenuLink = getMenuLink(linkIndex, allLinksArray[subMenuIndex + 1]);\n if (nextMenuLink) nextMenuLink.focus();\n } else if (e.keyCode === 37) {\n // left arrow - go to link of same index in previous menu list\n e.preventDefault();\n const prevMenuLink = getMenuLink(linkIndex, allLinksArray[subMenuIndex - 1]);\n if (prevMenuLink) prevMenuLink.focus();\n } else if (e.keyCode === 40 || (e.keyCode === 9 && !e.shiftKey)) {\n // down arrow or tab - go to next link in current menu list\n e.preventDefault();\n // if next link doesn't exist try next menu first item else return null\n const nextLink = getMenuLink(linkIndex, thisSubMenuLinks, 'next')\n ? getMenuLink(linkIndex, thisSubMenuLinks, 'next')\n : getMenuLink(-1, allLinksArray[subMenuIndex + 1], 'next');\n\n if (nextLink) {\n nextLink.focus();\n } else if (onLast) {\n onLast();\n }\n } else if (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9)) {\n // up arrow or shift + tab - go to previous item in current menu list\n e.preventDefault();\n const prevMenu = allLinksArray[subMenuIndex - 1];\n let prevLink = null;\n if (prevMenu || linkIndex > 0) {\n prevLink = getMenuLink(linkIndex, thisSubMenuLinks, 'prev')\n ? getMenuLink(linkIndex, thisSubMenuLinks, 'prev')\n : getMenuLink(prevMenu.length, prevMenu, 'prev');\n }\n if (prevLink) {\n prevLink.focus();\n } else if (onFirst) {\n onFirst();\n }\n }\n }\n });\n });\n });\n };\n\n megaMenus.forEach((menu) => {\n const clearActiveListItems = () => {\n // remove active classes from other list items\n menu.querySelectorAll('.wmnds-mega-menu__primary-menu-item').forEach((menuItem) => {\n menuItem.classList.remove('active');\n });\n };\n\n // handle setting the active class on menu and list items\n const setMenuActive = (element, active = true, onCloseFocusElement) => {\n if (active) {\n menu.classList.add('active');\n clearActiveListItems();\n // add active class to current item\n element.classList.add('active');\n } else {\n menu.classList.remove('active');\n element.classList.remove('active');\n // set focus on menu close\n\n if (onCloseFocusElement) onCloseFocusElement.focus();\n }\n };\n\n // mobile nav function\n function handleMobileMenu(mq) {\n if (mq.matches) {\n const mobileToggle = menu.querySelector('.wmnds-mega-menu__mobile-toggle');\n const headerEl = menu.parentNode.parentNode;\n\n const topLevelMenuBtn = menu.querySelectorAll('.wmnds-mega-menu__link-arrow-icon-btn');\n const searchBtn = menu.querySelector('.wmnds-mega-menu__search-btn');\n // object to see which menu/menu level is open\n const mobileMenuIsOpen = { menu: false, primary: false, search: false };\n\n // handle mobile menu toggle\n mobileToggle.addEventListener('click', () => {\n mobileMenuIsOpen.menu = !mobileMenuIsOpen.menu;\n if (mobileMenuIsOpen.menu) {\n mobileMenuIsOpen.search = false;\n headerEl.classList.remove('wmnds-header--search-open');\n headerEl.classList.add('wmnds-header--mega-menu-open');\n document.querySelector('html').classList.add('mobile-menu-open');\n } else {\n headerEl.classList.remove(\n 'wmnds-header--mega-menu-open',\n 'wmnds-header--mega-menu-submenu-open'\n );\n document.querySelector('html').classList.remove('mobile-menu-open');\n }\n });\n\n if (searchBtn) {\n searchBtn.addEventListener('click', () => {\n mobileMenuIsOpen.search = !mobileMenuIsOpen.search;\n if (mobileMenuIsOpen.search) {\n mobileMenuIsOpen.menu = false;\n headerEl.classList.remove(\n 'wmnds-header--mega-menu-open',\n 'wmnds-header--mega-menu-submenu-open'\n );\n document.querySelector('html').classList.remove('mobile-menu-open');\n headerEl.classList.add('wmnds-header--search-open');\n } else {\n headerEl.classList.remove('wmnds-header--search-open');\n }\n });\n }\n\n // handle sub menu open/close\n topLevelMenuBtn.forEach((menuBtn) => {\n const handleSubMenus = () => {\n mobileMenuIsOpen.primary = !mobileMenuIsOpen.primary;\n const targetListItem = menuBtn.parentNode;\n if (mobileMenuIsOpen.primary) {\n targetListItem.classList.add('open');\n targetListItem.querySelector('.wmnds-mega-menu__sub-menu-link').focus();\n headerEl.classList.add('wmnds-header--mega-menu-submenu-open');\n } else {\n targetListItem.classList.remove('open');\n headerEl.classList.remove('wmnds-header--mega-menu-submenu-open');\n }\n };\n menuBtn.previousElementSibling.addEventListener('click', handleSubMenus);\n menuBtn.addEventListener('click', handleSubMenus);\n });\n\n // mobile collapse for third level menus\n const collapseMenus = menu.querySelectorAll(\n '.wmnds-mega-menu__sub-menu-item .wmnds-mega-menu__collapse-toggle'\n );\n collapseMenus.forEach((collapseToggle) => {\n const handleThirdLevelMenus = () => {\n const panel = collapseToggle.nextElementSibling;\n collapseToggle.classList.toggle('open');\n if (panel.style.maxHeight) {\n panel.style.maxHeight = null;\n } else {\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n }\n };\n if (\n collapseToggle.previousElementSibling &&\n collapseToggle.previousElementSibling.tagName !== 'A'\n ) {\n collapseToggle.previousElementSibling.addEventListener('click', handleThirdLevelMenus);\n }\n collapseToggle.addEventListener('click', handleThirdLevelMenus);\n });\n }\n }\n // end mobile nav function\n\n // init mobile nav function\n handleMobileMenu(mobileMenu);\n mobileMenu.addListener(handleMobileMenu);\n\n const topLevelLinks = menu.querySelectorAll('.wmnds-mega-menu__primary-menu-link');\n let menuDelay = false;\n let enterTimeOut;\n let leaveTimeOut;\n const delayTime = 300;\n\n // handle events within each top level list item\n topLevelLinks.forEach((topLevelLink, topLevelLinkIndex) => {\n // return list item parent of the current link if it exists else return the link\n const topLevelListItem =\n topLevelLink.parentNode.tagName === 'LI' ||\n topLevelLink.parentNode.className.includes('wmnds-mega-menu__search')\n ? topLevelLink.parentNode\n : topLevelLink;\n\n const subMenuLinks = topLevelListItem.querySelectorAll('.wmnds-mega-menu__sub-menu-link');\n\n // check if level 3 menus are present, if so add modifier class\n const hasSubmenuChildren =\n topLevelListItem.querySelectorAll('.wmnds-mega-menu__sub-menu-child-menu').length !== 0;\n if (hasSubmenuChildren) {\n topLevelListItem.querySelectorAll('.wmnds-mega-menu__sub-menu').forEach((subMenu) => {\n subMenu.classList.add('wmnds-mega-menu__sub-menu--has-child-menus');\n });\n }\n\n const openSubMenu = (e) => {\n // check if list item has a mega menu\n if (topLevelListItem.querySelectorAll('.wmnds-mega-menu__container').length) {\n e.preventDefault();\n // remove keyFocus to allow menu to show\n setMenuActive(topLevelListItem, true);\n // focus first menu item\n if (topLevelListItem.contains(subMenuLinks[0])) {\n subMenuLinks[0].focus();\n } else if (topLevelListItem.querySelector('.wmnds-search-bar__input')) {\n topLevelListItem.querySelector('.wmnds-search-bar__input').focus();\n }\n }\n };\n\n const handleKeydown = (e, key) => {\n e.stopPropagation();\n // if key pressed is enter, space bar or down arrow\n if (key === 13 || key === 32 || key === 40) {\n // enter\n // check if link exists\n if (key === 13) {\n if (!topLevelLink.tagName === 'a' || !topLevelLink.getAttribute('href')) {\n openSubMenu(e);\n }\n } else {\n openSubMenu(e);\n }\n } else if (key === 37) {\n // left arrow\n const prevLink = getMenuLink(topLevelLinkIndex, topLevelLinks, 'prev');\n if (prevLink) prevLink.focus();\n } else if (key === 39) {\n // right arrow\n const nextLink = getMenuLink(topLevelLinkIndex, topLevelLinks, 'next');\n if (nextLink) nextLink.focus();\n } else if (key === 27) {\n // if escape pressed\n setMenuActive(topLevelListItem, false, topLevelLink);\n }\n };\n\n // if top level link doesn't have a mega-menu child add class to menu to hide overlay when hovered\n // has to be added/removed on mouseover to cover menus that have a mix of items with/without mega menus\n const isTopLevelWithMenu = topLevelListItem.querySelectorAll('.wmnds-mega-menu__container')\n .length;\n\n if (isTopLevelWithMenu) {\n topLevelLink.addEventListener('mouseover', () => {\n if (!menuDelay) {\n // if no menuDelay is active just open the menu\n setMenuActive(topLevelListItem);\n } else {\n // if menuDelay is active, clear all timeouts and start a new one\n clearTimeout(enterTimeOut);\n clearTimeout(leaveTimeOut);\n\n enterTimeOut = setTimeout(() => {\n // enter timeout completed, open menu and kill delay\n menuDelay = false;\n setMenuActive(topLevelListItem);\n }, delayTime);\n }\n });\n topLevelListItem\n .querySelector('.wmnds-mega-menu__container')\n .addEventListener('mouseover', () => {\n if (menuDelay) {\n // if container is rehovered before timeout is done, clear all timeouts kill the delay\n clearTimeout(enterTimeOut);\n clearTimeout(leaveTimeOut);\n menuDelay = false;\n }\n });\n topLevelListItem.addEventListener('mouseleave', () => {\n menuDelay = true;\n // leave timeout is active\n leaveTimeOut = setTimeout(() => {\n // leave timeout completed, close menu\n setMenuActive(topLevelListItem, false);\n menuDelay = false;\n }, delayTime);\n });\n\n topLevelListItem.addEventListener('blur', setMenuActive(topLevelListItem, false));\n }\n\n topLevelListItem.addEventListener('keydown', (e) => {\n if (e.target.nodeName === 'INPUT') return;\n handleKeydown(e, e.keyCode);\n });\n\n // top lvl link event listeners\n topLevelLink.addEventListener('focus', (e) => {\n e.preventDefault();\n setMenuActive(topLevelListItem, false);\n clearActiveListItems();\n });\n topLevelLink.addEventListener('mousedown', (e) => {\n // prevent link focus on click\n e.preventDefault();\n });\n\n // set up keyboard navigation for sub menu links\n const subMenuContainer = topLevelListItem.querySelector('.wmnds-mega-menu__sub-menu');\n\n if (subMenuContainer) {\n setKeyboardNavigation(\n subMenuContainer,\n '.wmnds-mega-menu__sub-menu-item',\n // what to do on first link\n () => topLevelLink.focus(),\n // what to do on last link\n () => {\n setMenuActive(topLevelListItem, false);\n if (getMenuLink(topLevelLinkIndex, topLevelLinks, 'next')) {\n getMenuLink(topLevelLinkIndex, topLevelLinks, 'next').focus();\n }\n }\n );\n }\n });\n\n // set up keyboard navigation for search menu links\n const searchMenuContainer = menu.querySelector('.wmnds-search-container');\n if (searchMenuContainer) {\n setKeyboardNavigation(\n searchMenuContainer,\n '.wmnds-search-list',\n // what to do on first link\n () => menu.querySelector('.wmnds-search-bar__input').focus(),\n // what to do on last link\n () =>\n setMenuActive(\n menu.querySelector('.wmnds-mega-menu__search'),\n false,\n menu.querySelector('.wmnds-mega-menu__search-btn')\n )\n );\n }\n });\n\n // Force submit search with ENTER\n document.querySelector('.wmnds-search-bar__btn').addEventListener('keydown', (event) => {\n // Number 13 is the \"Enter\" key on the keyboard\n if (event.keyCode === 13) {\n event.preventDefault();\n // Trigger the button element with a click\n event.target.click();\n }\n });\n};\n\nexport default headerJs;\n","/* eslint-disable no-unused-vars */\n/* eslint-disable global-require */\n/* eslint-disable no-param-reassign */\nconst journeyPlannerJS = () => {\n // Constants\n const loadingClass = 'wmnds-is--loading';\n const openClass = 'wmnds-is--open';\n const axios = require('axios');\n let axiosCancelToken;\n let axiosSource;\n\n let currentComponent;\n let checkAvailableSlotsTimeout;\n let slot;\n\n const validateBeforeSubmit = (e) => {\n const bus = document.forms.jphome.useBus.checked;\n const train = document.forms.jphome.useTrain.checked;\n const tram = document.forms.jphome.useTram.checked;\n\n if (!bus && !train && !tram) {\n document.forms.jphome.useBus.checked = true;\n document.forms.jphome.useTrain.checked = true;\n document.forms.jphome.useTram.checked = true;\n }\n };\n\n const expandComponent = (e) => {\n e.target.closest('.wmnds-journey-planner').classList.toggle(openClass);\n e.target.closest('.wmnds-journey-planner__submit').classList.toggle('wmnds-m-t-lg');\n const button = e.target.tagName === 'BUTTON' ? e.target : e.target.closest('button');\n if (button.innerText === 'Add details') {\n button.innerHTML = `\n Hide details\n \n \n `;\n } else {\n button.innerHTML = `\n Add details\n \n \n `;\n }\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n const debounce = (func, wait, immediate) => {\n let timeout;\n // eslint-disable-next-line func-names\n return function (...args) {\n // eslint-disable-next-line func-names\n const later = function () {\n timeout = null;\n if (!immediate) func(...args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func(...args);\n };\n };\n\n const updateSelectedLocation = (e) => {\n const input = e.target.parentElement.parentElement.querySelector('input');\n input.value = e.target.title;\n // Remove suggestions\n e.target.parentNode.remove();\n };\n\n const updateSelectedLocationToCurrentLocation = (e) => {\n const showPosition = (position) => {\n const input = e.target.parentElement.parentElement.querySelector('input');\n input.value = `${position.coords.latitude},${position.coords.longitude}`;\n // Remove suggestions\n e.target.parentNode.remove();\n };\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(showPosition);\n } else {\n console.error('Geolocation is not supported by this browser.');\n }\n };\n\n const startLoading = (target) => target.parentNode.classList.add(loadingClass);\n const stopLoading = (target) => target.parentNode.classList.remove(loadingClass);\n\n const cleanSuggestions = (target) => {\n const suggestionsList = target.parentNode.parentNode.querySelector(\n '.wmnds-autocomplete-suggestions'\n );\n if (suggestionsList) {\n suggestionsList.remove();\n }\n };\n\n const addAutocompleteSuggestions = (element, results) => {\n // Remove suggestions if they exist\n cleanSuggestions(element);\n\n // Create a new list element\n const suggestionsList = document.createElement('ul');\n suggestionsList.classList.add('wmnds-autocomplete-suggestions');\n\n // Add first option that is not part of the API results\n const currentLocationSuggestion = document.createElement('li');\n currentLocationSuggestion.classList.add('wmnds-autocomplete-suggestions__li', 'bg-default');\n currentLocationSuggestion.innerHTML = 'Use current location';\n currentLocationSuggestion.title = 'Use current location';\n currentLocationSuggestion.tabIndex = 0;\n currentLocationSuggestion.ariaPressed = false;\n currentLocationSuggestion.addEventListener('click', updateSelectedLocationToCurrentLocation);\n currentLocationSuggestion.addEventListener('onKeyUp', updateSelectedLocationToCurrentLocation);\n suggestionsList.appendChild(currentLocationSuggestion);\n\n results.forEach((result) => {\n const suggestion = document.createElement('li');\n suggestion.classList.add('wmnds-autocomplete-suggestions__li');\n suggestion.innerHTML = result.address;\n suggestion.title = result.attributes.ShortLabel;\n suggestion.tabIndex = 0;\n suggestion.ariaPressed = false;\n suggestion.addEventListener('click', updateSelectedLocation);\n suggestion.addEventListener('onKeyUp', updateSelectedLocation);\n\n // Append the sugestion that we just created and edited to the list\n suggestionsList.appendChild(suggestion);\n });\n // Stop the loading spinner\n stopLoading(element);\n // Display the results\n element.parentNode.parentNode.append(suggestionsList);\n };\n\n const getRequestFromAPI = (url, APIKey, element) => {\n axios\n .get(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': APIKey,\n },\n cancelToken: axiosSource.token,\n })\n .then(function handleSuccess(response) {\n addAutocompleteSuggestions(element, response.data.candidates);\n })\n .catch(function handleError(error) {\n stopLoading(element);\n })\n .then(function handleAnyState() {\n // always executed\n });\n };\n\n const shouldKeyEventTriggerAutocomplete = (keyboardEvent) => {\n const { key } = keyboardEvent;\n if (!key || key.length > 1) return false;\n const regex = new RegExp('[a-zA-Z0-9]', 'g'); // check if alphanumeric\n return regex.test(key);\n };\n\n const refreshCancelToken = () => {\n if (axiosSource) axiosSource.cancel();\n axiosCancelToken = axios.CancelToken;\n axiosSource = axiosCancelToken.source();\n };\n\n const autocomplete = (e) => {\n // activates the loading spin\n startLoading(e.target);\n\n // treat input value as it was part of an url eg:\tb1+2aa\n const query = e.target.value;\n if (!query.trim() && !shouldKeyEventTriggerAutocomplete(e)) {\n cleanSuggestions(e.target);\n stopLoading(e.target);\n return;\n }\n\n refreshCancelToken();\n const key = encodeURI(query);\n const APIKey = 'e0c1216f818a41be8d528ac1d4f7ebfd';\n const url = `https://wmca-api-portal-staging.azure-api.net/arcgis/rest/services/World/GeocodeServer/findAddressCandidates?singleLine=${key}&f=pjson`;\n\n // hit the API to get the results\n getRequestFromAPI(url, APIKey, e.target);\n };\n\n const debounceAutocomplete = debounce(autocomplete, 600);\n\n const checkAndUpdateFormat = (val) => {\n if (val < 10) {\n return `0${val}`;\n }\n return val;\n };\n\n const findFirstAvailableSlot = () => {\n // Find the first slot available\n const today = new Date();\n let h = today.getHours();\n let m = today.getMinutes();\n if (parseInt(m, 10) >= 45) {\n h += 1;\n m = 0;\n } else {\n m = (Math.ceil(m / 15) * 15) % 60;\n }\n const timeslot = `${h}:${checkAndUpdateFormat(m)}`;\n return timeslot;\n };\n\n const disableAllOptionsBeforeNow = (firstAvailableSlot) => {\n let timeSlots;\n if (currentComponent.classList.contains('wmnds-journey-planner__when')) {\n timeSlots = currentComponent.querySelectorAll(\n \".wmnds-fe-dropdown__select[name='SelectedJourneyTime'] option\"\n );\n } else {\n timeSlots = currentComponent\n .closest('.wmnds-journey-planner')\n .querySelectorAll(\n \".wmnds-journey-planner__when .wmnds-fe-dropdown__select[name='SelectedJourneyTime'] option\"\n );\n }\n\n // Disable all the slots that preceeds the first available slot and mark as select the next available slot\n let isAvailable = false;\n timeSlots.forEach((timeSlot) => {\n if (isAvailable) {\n return;\n }\n if (timeSlot.value === firstAvailableSlot) {\n timeSlot.selected = 'selected';\n isAvailable = true;\n return;\n }\n timeSlot.disabled = 'disabled';\n });\n\n // If the selected option is now disabled (in the past), it'll change it to \"now\" (first option)\n const timeDropdown = currentComponent.querySelector(\n \".wmnds-fe-dropdown__select[name='SelectedJourneyTime']\"\n );\n\n const selectedOption = timeDropdown.options[timeDropdown.selectedIndex];\n if (selectedOption && selectedOption.disabled) {\n timeDropdown.selectedIndex += 1;\n if (timeDropdown.selectedIndex > timeDropdown.options.length) {\n timeDropdown.selectedIndex = 0;\n }\n }\n };\n\n const checkIfFirstSlotChanged = () => {\n // Run every minute and check is the first available slot is still the same one.\n // If so, do nothing. If not, disabled the options that are in the past.\n const newSlot = findFirstAvailableSlot();\n if (newSlot !== slot) {\n disableAllOptionsBeforeNow(newSlot);\n slot = newSlot;\n }\n };\n\n const updateTimeOptions = (component = currentComponent) => {\n const day = component.querySelector(\".wmnds-fe-dropdown__select[name='day']\").value;\n if (day === 'today') {\n slot = findFirstAvailableSlot();\n disableAllOptionsBeforeNow(slot);\n // Run every minute and check is the first available slot is still the same one.\n // If so, do nothing. If not, disabled the options that are in the past.\n checkAvailableSlotsTimeout = setInterval(checkIfFirstSlotChanged, 60000);\n } else {\n // if day == tomorrow then we want to have all slots enabled\n clearInterval(checkAvailableSlotsTimeout);\n let slots;\n if (component.classList.contains('wmnds-journey-planner__when')) {\n slots = component.querySelectorAll(\n \".wmnds-fe-dropdown__select[name='SelectedJourneyTime'] option\"\n );\n } else {\n slots = component\n .closest('.wmnds-journey-planner__when')\n .querySelectorAll(\".wmnds-fe-dropdown__select[name='SelectedJourneyTime'] option\");\n }\n\n // Enable all the slots\n slots.forEach((singleSlot) => {\n singleSlot.disabled = false;\n });\n }\n };\n\n const handleDayChange = (e) => {\n updateTimeOptions(e.target.parentNode);\n };\n\n const switchFromAndTo = (e) => {\n const inputs = e.target.parentNode.parentNode.parentNode.querySelectorAll(\n \"input[name='Origin'], input[name='Destination']\"\n );\n const a = inputs[0].value;\n const b = inputs[1].value;\n [inputs[0].value, inputs[1].value] = [b, a];\n };\n\n const init = () => {\n // Add event listener to the autocomplete fields\n const autocompleteElements = currentComponent.querySelectorAll(\n \"input[name='Origin'], input[name='Destination']\"\n );\n autocompleteElements.forEach((autocompleteElement) => {\n autocompleteElement.addEventListener('keyup', debounceAutocomplete);\n });\n\n // Add event listener to switch from and to values\n const switchBtn = currentComponent.querySelector('.wmnds-journey-planner__switch');\n switchBtn.addEventListener('click', switchFromAndTo);\n\n // Update time options based on the day selected and current datetime\n updateTimeOptions(currentComponent.querySelector('.wmnds-journey-planner__when'));\n\n // Add event listener to travel day\n const day = currentComponent.querySelector(\n '.wmnds-journey-planner__when .wmnds-fe-dropdown__select[name=\"day\"]'\n );\n day.addEventListener('change', handleDayChange);\n\n // Add event listener to add details button - the first one\n const addDetailsBtn = currentComponent.querySelector(\n '.wmnds-journey-planner__submit button.wmnds-btn'\n );\n addDetailsBtn.addEventListener('click', expandComponent);\n\n // Add event listener to submit button\n currentComponent\n .querySelector('.wmnds-journey-planner__form')\n .addEventListener('submit', validateBeforeSubmit);\n };\n\n const components = document.querySelectorAll('.wmnds-journey-planner');\n components.forEach((component) => {\n currentComponent = component;\n init();\n });\n};\n\nexport default journeyPlannerJS;\n","/* eslint-disable no-unused-vars */\n/* eslint-disable global-require */\n/* eslint-disable no-param-reassign */\nconst journeyPlannerWidgetJS = () => {\n // Constants\n const activeClass = 'wmnds-is--active';\n const loadingClass = 'wmnds-is--loading';\n const openClass = 'wmnds-is--open';\n const axios = require('axios');\n let axiosCancelToken;\n let axiosSource;\n\n let selectAllMode = true;\n let leaveMode = true;\n\n let currentWidget;\n let checkAvailableSlotsTimeout;\n let slot;\n\n const expandWhenArea = (e) => {\n e.target.parentNode.parentNode.parentNode.classList.add(openClass);\n };\n const expandWidget = (e) => {\n e.target.closest('.wmnds-journey-planner-widget').classList.add(openClass);\n };\n\n const expandHowArea = (e) => {\n const howArea = e.target.parentNode.parentNode.parentNode;\n howArea.classList.add(openClass);\n // guarantees that there are not selected options when the area is expanded\n howArea.querySelectorAll(\"input[type='checkbox']:checked\").forEach((modeInput) => {\n modeInput.checked = false;\n });\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n const debounce = (func, wait, immediate) => {\n let timeout;\n // eslint-disable-next-line func-names\n return function (...args) {\n // eslint-disable-next-line func-names\n const later = function () {\n timeout = null;\n if (!immediate) func(...args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func(...args);\n };\n };\n\n const updateSelectedLocation = (e) => {\n const input = e.target.parentElement.parentElement.querySelector('input');\n input.value = e.target.title;\n // Remove suggestions\n e.target.parentNode.remove();\n };\n\n const updateSelectedLocationToCurrentLocation = (e) => {\n const showPosition = (position) => {\n const input = e.target.parentElement.parentElement.querySelector('input');\n input.value = `${position.coords.latitude},${position.coords.longitude}`;\n // Remove suggestions\n e.target.parentNode.remove();\n };\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(showPosition);\n } else {\n console.error('Geolocation is not supported by this browser.');\n }\n };\n\n const startLoading = (target) => target.parentNode.classList.add(loadingClass);\n const stopLoading = (target) => target.parentNode.classList.remove(loadingClass);\n\n const cleanSuggestions = (target) => {\n const suggestionsList = target.parentNode.parentNode.querySelector(\n '.wmnds-autocomplete-suggestions'\n );\n if (suggestionsList) {\n suggestionsList.remove();\n }\n };\n\n const addAutocompleteSuggestions = (element, results) => {\n // Remove suggestions if they exist\n cleanSuggestions(element);\n\n // Create a new list element\n const suggestionsList = document.createElement('ul');\n suggestionsList.classList.add('wmnds-autocomplete-suggestions');\n\n // Add first option that is not part of the API results\n const currentLocationSuggestion = document.createElement('li');\n currentLocationSuggestion.classList.add('wmnds-autocomplete-suggestions__li', 'bg-default');\n currentLocationSuggestion.innerHTML = 'Use current location';\n currentLocationSuggestion.title = 'Use current location';\n currentLocationSuggestion.tabIndex = 0;\n currentLocationSuggestion.ariaPressed = false;\n currentLocationSuggestion.addEventListener('click', updateSelectedLocationToCurrentLocation);\n currentLocationSuggestion.addEventListener('onKeyUp', updateSelectedLocationToCurrentLocation);\n suggestionsList.appendChild(currentLocationSuggestion);\n\n results.forEach((result) => {\n const suggestion = document.createElement('li');\n suggestion.classList.add('wmnds-autocomplete-suggestions__li');\n suggestion.innerHTML = result.address;\n suggestion.title = result.address;\n suggestion.tabIndex = 0;\n suggestion.ariaPressed = false;\n suggestion.addEventListener('click', updateSelectedLocation);\n suggestion.addEventListener('onKeyUp', updateSelectedLocation);\n\n // Append the sugestion that we just created and edited to the list\n suggestionsList.appendChild(suggestion);\n });\n // Stop the loading spinner\n stopLoading(element);\n // Display the results\n element.parentNode.parentNode.append(suggestionsList);\n };\n\n const getRequestFromAPI = (url, APIKey, element) => {\n axios\n .get(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': APIKey,\n },\n cancelToken: axiosSource.token,\n })\n .then(function handleSuccess(response) {\n addAutocompleteSuggestions(element, response.data.candidates);\n })\n .catch(function handleError(error) {\n stopLoading(element);\n console.log(error);\n })\n .then(function handleAnyState() {\n // always executed\n });\n };\n\n const shouldKeyEventTriggerAutocomplete = (keyboardEvent) => {\n const { key } = keyboardEvent;\n if (!key || key.length > 1) return false;\n const regex = new RegExp('[a-zA-Z0-9]', 'g'); // check if alphanumeric\n return regex.test(key);\n };\n\n const refreshCancelToken = () => {\n if (axiosSource) axiosSource.cancel();\n axiosCancelToken = axios.CancelToken;\n axiosSource = axiosCancelToken.source();\n };\n\n const autocomplete = (e) => {\n // activates the loading spin\n startLoading(e.target);\n\n // treat input value as it was part of an url eg:\tb1+2aa\n const query = e.target.value;\n if (!query.trim() && !shouldKeyEventTriggerAutocomplete(e)) {\n cleanSuggestions(e.target);\n stopLoading(e.target);\n return;\n }\n\n refreshCancelToken();\n const key = encodeURI(query);\n const APIKey = 'e0c1216f818a41be8d528ac1d4f7ebfd';\n const url = `https://wmca-api-portal-staging.azure-api.net/arcgis/rest/services/World/GeocodeServer/findAddressCandidates?singleLine=${key}&f=pjson`;\n\n // hit the API to get the results\n getRequestFromAPI(url, APIKey, e.target);\n };\n\n const debounceAutocomplete = debounce(autocomplete, 600);\n\n const toggleMode = (e) => {\n // in case user clicks over the icon, finds the nearest button element\n const button = e.target.tagName !== 'BUTTON' ? e.target.closest('.wmnds-btn--mode') : e.target;\n const input = button.previousElementSibling;\n\n // if there is any alternative mode selected at this point, remove it\n const altCheckedInput = button.parentNode.parentNode.querySelector(\n \"input[type='radio']:checked\"\n );\n if (altCheckedInput) {\n altCheckedInput.checked = false;\n altCheckedInput.nextElementSibling.classList.remove(activeClass);\n }\n\n // toggle the button\n input.checked = !input.checked;\n button.classList.toggle(activeClass);\n };\n\n const updateAlternativeOptions = (altInputs) => {\n let oneAltModeSelected = false;\n altInputs.forEach((altInput) => {\n if (altInput.checked) {\n altInput.nextElementSibling.classList.add(activeClass);\n oneAltModeSelected = true;\n } else {\n altInput.nextElementSibling.classList.remove(activeClass);\n }\n });\n\n if (oneAltModeSelected) {\n // Choosing an alternative travel mode will reset the main travel modes choices\n altInputs[0].parentNode.parentNode\n .querySelectorAll('input[type=\"checkbox\"]:checked')\n .forEach((modeInput) => {\n const modeBtn = modeInput.nextElementSibling;\n modeBtn.classList.remove(activeClass);\n modeInput.checked = false;\n });\n }\n };\n\n const updateRadioInput = (e) => {\n // in case user clicks over the icon, finds the nearest button element\n const button = e.target.tagName !== 'BUTTON' ? e.target.closest('.wmnds-btn--mode') : e.target;\n const input = button.previousElementSibling;\n\n // check the clicked option\n input.checked = true;\n\n // update the alternate modes\n const altInputs = input.parentNode.parentNode.querySelectorAll(\"input[type='radio']\");\n updateAlternativeOptions(altInputs);\n };\n\n const checkAndUpdateFormat = (val) => {\n if (val < 10) {\n return `0${val}`;\n }\n return val;\n };\n\n const findFirstAvailableSlot = () => {\n // Find the first slot available\n const today = new Date();\n let h = today.getHours();\n let m = today.getMinutes();\n if (parseInt(m, 10) >= 45) {\n h += 1;\n m = 0;\n } else {\n m = (Math.ceil(m / 15) * 15) % 60;\n }\n const timeslot = `${h}:${checkAndUpdateFormat(m)}`;\n return timeslot;\n };\n\n const disableAllOptionsBeforeNow = (firstAvailableSlot) => {\n const timeSlots = currentWidget.querySelectorAll(\n \".wmnds-fe-dropdown__select[name='SelectedJourneyTime'] option\"\n );\n // Disable all the slots that preceeds the first available slot and mark as select the next available slot\n let isAvailable = false;\n timeSlots.forEach((timeSlot) => {\n if (isAvailable) {\n return;\n }\n if (timeSlot.value === firstAvailableSlot) {\n timeSlot.selected = 'selected';\n isAvailable = true;\n return;\n }\n timeSlot.disabled = 'disabled';\n });\n\n // If the selected option is now disabled (in the past), it'll change it to the next slot\n const timeDropdown = currentWidget.querySelector(\n \".wmnds-fe-dropdown__select[name='SelectedJourneyTime']\"\n );\n const selectedOption = timeDropdown.options[timeDropdown.selectedIndex];\n if (selectedOption && selectedOption.disabled) {\n timeDropdown.selectedIndex += 1;\n if (timeDropdown.selectedIndex >= timeDropdown.options.length) {\n timeDropdown.selectedIndex = 0;\n }\n }\n };\n\n const checkIfFirstSlotChanged = () => {\n // Run every minute and check is the first available slot is still the same one.\n // If so, do nothing. If not, disabled the options that are in the past.\n const newSlot = findFirstAvailableSlot();\n if (newSlot !== slot) {\n disableAllOptionsBeforeNow(newSlot);\n slot = newSlot;\n }\n };\n\n const updateTimeOptions = (parentEl = currentWidget) => {\n const day = parentEl.querySelector(\".wmnds-fe-dropdown__select[name='day']\").value;\n if (day === 'today') {\n slot = findFirstAvailableSlot();\n disableAllOptionsBeforeNow(slot);\n // Run every minute and check is the first available slot is still the same one.\n // If so, do nothing. If not, disabled the options that are in the past.\n checkAvailableSlotsTimeout = setInterval(checkIfFirstSlotChanged, 60000);\n } else {\n // if day == tomorrow then we want to have all slots enabled\n clearInterval(checkAvailableSlotsTimeout);\n\n const slots = document.querySelectorAll('[name=SelectedJourneyTime]');\n const slotsValues = [...slots[0].options];\n\n slotsValues.forEach((singleSlot) => {\n singleSlot.disabled = false;\n });\n }\n };\n\n const handleDayChange = (e) => {\n updateTimeOptions(e.target.parentNode);\n };\n\n const toggleBetweenLeaveAndArrive = (e) => {\n const title = e.target.parentElement.nextElementSibling;\n if (title.tagName !== 'H4') return;\n const input = title.nextElementSibling;\n if (leaveMode) {\n e.target.innerHTML = 'Leave time';\n title.innerHTML = 'Arrive';\n title.id = 'arrive';\n input.value = 'Arriving';\n } else {\n e.target.innerHTML = 'Arrival time';\n title.innerHTML = 'Leave';\n title.id = 'leave';\n input.value = 'Leaving';\n }\n leaveMode = !leaveMode;\n };\n\n const selectAllorSelectNone = (e) => {\n e.target.parentNode.parentNode\n .querySelectorAll('input[type=\"checkbox\"]')\n .forEach((modeInput) => {\n const modeBtn = modeInput.nextElementSibling;\n if (selectAllMode && !modeInput.classList.contains(activeClass)) {\n modeBtn.classList.add(activeClass);\n modeInput.checked = !modeInput.checked;\n } else if (!selectAllMode && modeInput.classList.contains(activeClass)) {\n modeBtn.classList.remove(activeClass);\n modeInput.checked = !modeInput.checked;\n }\n });\n e.target.innerHTML = selectAllMode ? 'Select None' : 'Select all';\n selectAllMode = !selectAllMode;\n };\n\n const switchFromAndTo = (e) => {\n const inputs = e.target.parentNode.parentNode.parentNode.querySelectorAll(\n \"input[name='Origin'], input[name='Destination']\"\n );\n const a = inputs[0].value;\n const b = inputs[1].value;\n [inputs[0].value, inputs[1].value] = [b, a];\n };\n\n const init = () => {\n // Add event listener to the autocomplete fields\n const autocompleteElements = currentWidget.querySelectorAll(\n \"input[name='Origin'], input[name='Destination']\"\n );\n autocompleteElements.forEach((autocompleteElement) => {\n if (autocompleteElement.name === 'Origin') {\n autocompleteElement.addEventListener('click', expandWidget);\n }\n autocompleteElement.addEventListener('keyup', debounceAutocomplete);\n });\n\n // Add event listener to switch from and to values\n const switchBtn = currentWidget.querySelector('.wmnds-journey-planner-widget__switch');\n switchBtn.addEventListener('click', switchFromAndTo);\n\n // Add event listener to the buttons that expand the \"when\" and \"how\" area\n const whenController = currentWidget.querySelector(\n '.wmnds-journey-planner-widget__when--collapsed button'\n );\n const howController = currentWidget.querySelector(\n '.wmnds-journey-planner-widget__how--collapsed button'\n );\n whenController.addEventListener('click', expandWhenArea);\n howController.addEventListener('click', expandHowArea);\n\n // Update time options based on the day selected and current datetime\n updateTimeOptions();\n\n // Add event listener to travel day\n const day = currentWidget.querySelector(\n '.wmnds-journey-planner-widget__when .wmnds-fe-dropdown__select[name=\"day\"]'\n );\n day.addEventListener('change', handleDayChange);\n\n // Add even listener to controllers inside \"when\" area - change arrive / leave\n const whenControllerButton = currentWidget.querySelector(\n '.wmnds-journey-planner-widget__when-controller button'\n );\n whenControllerButton.addEventListener('click', toggleBetweenLeaveAndArrive);\n\n // Add even listener to controllers inside \"how\" area - select all\n const howControllerButton = currentWidget.querySelector(\n '.wmnds-journey-planner-widget__how-controller button'\n );\n howControllerButton.addEventListener('click', selectAllorSelectNone);\n\n // Add event listeners to the main travel mode buttons: bus, train and tram\n const mainTravelModeInputs = currentWidget.querySelectorAll(\n '.wmnds-journey-planner-widget__how input[type=\"checkbox\"]'\n );\n mainTravelModeInputs.forEach((travelModeInput) =>\n // travelModeInput.addEventListener('change', updateMainModeOptions);\n travelModeInput.nextElementSibling.addEventListener('click', toggleMode)\n );\n\n // Add event listeners to the alternative travel mode buttons: walk and cycle\n const altTravelModeInputs = currentWidget.querySelectorAll(\n '.wmnds-journey-planner-widget__how input[type=\"radio\"]'\n );\n altTravelModeInputs.forEach((altTravelModeInput) => {\n altTravelModeInput.nextElementSibling.addEventListener('click', updateRadioInput);\n });\n };\n\n const widgets = document.querySelectorAll('.wmnds-journey-planner-widget');\n widgets.forEach((widget) => {\n currentWidget = widget;\n init();\n });\n};\n\nexport default journeyPlannerWidgetJS;\n","const createTabElements = (jph, bth) => {\n const homepageTabs = document.querySelector('.wmnds-homepage-tabs');\n\n // First tab - JPH = Journey planner homepage\n const inputForJPH = document.createElement('input');\n inputForJPH.classList.add('wmnds-homepage-tabs__input', 'wmnds-screenreaders-only');\n inputForJPH.checked = 'checked';\n inputForJPH.type = 'radio';\n inputForJPH.value = 'Plan a journey';\n inputForJPH.name = 'WidgetType';\n inputForJPH.id = 'journey-planner';\n inputForJPH.ariaLabel = 'Plan a journey';\n\n const labelForJPH = document.createElement('label');\n labelForJPH.classList.add('wmnds-homepage-tabs__label');\n labelForJPH.htmlFor = 'journey-planner';\n labelForJPH.innerHTML = 'Plan a journey';\n\n // Second tab - BTH = Buy a ticket homepage\n const inputForBTH = document.createElement('input');\n inputForBTH.classList.add('wmnds-homepage-tabs__input', 'wmnds-screenreaders-only');\n inputForBTH.type = 'radio';\n inputForBTH.value = 'Buy a ticket';\n inputForBTH.name = 'WidgetType';\n inputForBTH.id = 'buy-a-ticket';\n inputForBTH.ariaLabel = 'Buy a ticket';\n\n const labelForBTH = document.createElement('label');\n labelForBTH.classList.add('wmnds-homepage-tabs__label');\n labelForBTH.htmlFor = 'buy-a-ticket';\n labelForBTH.innerHTML = 'Buy a ticket';\n\n // add tabs (input+label) to homepageTabs\n // remaining logic (selecting tab, showing/hiding widgets and h2, ..) is done with css\n homepageTabs.appendChild(inputForJPH);\n homepageTabs.appendChild(labelForJPH);\n homepageTabs.appendChild(inputForBTH);\n homepageTabs.appendChild(labelForBTH);\n\n // move widgets into homepageTabs div\n homepageTabs.appendChild(jph);\n homepageTabs.appendChild(bth);\n};\n\nconst enableHomepageTabs = () => {\n // only runs if .wmnds-homepage-tabs div doesn't , in that case it will create it\n if (document.querySelector('.wmnds-homepage-tabs') == null) {\n const newDiv = document.createElement('div');\n newDiv.classList.add('wmnds-homepage-tabs');\n document.querySelector('main').prepend(newDiv);\n\n const jph = document.querySelector('.wmnds-journey-planner');\n const bth = document.querySelector('.wmnds-buy-a-ticket');\n if (jph && bth) {\n createTabElements(jph, bth);\n }\n }\n};\n\nconst disableHomepageTabs = () => {\n const jph = document.querySelector('.wmnds-homepage-tabs > .wmnds-journey-planner');\n const bth = document.querySelector('.wmnds-homepage-tabs > .wmnds-buy-a-ticket');\n // only runs if .wmnds-homepage-tabs exists, that will be deleted after enter this if statement\n if (jph && bth) {\n const jphOriginalParent = document.querySelector(\n 'main > .wmnds-col-1 > div.wmnds-grid > div > div > div'\n );\n const bthOriginalParent = document.querySelector(\n 'main > .wmnds-col-1 > div.wmnds-grid > div + div > div > div'\n );\n jphOriginalParent.appendChild(jph);\n bthOriginalParent.appendChild(bth);\n document.querySelector('.wmnds-homepage-tabs').remove();\n }\n};\n\nconst updateHomepageTabsStatus = () => {\n if (window.screen.width < 768) {\n enableHomepageTabs();\n return;\n }\n disableHomepageTabs();\n};\n\nconst toggleHomepageTabs = () => {\n // if homepage\n if (window.location.pathname === '/') {\n updateHomepageTabsStatus();\n window.addEventListener('resize', updateHomepageTabsStatus);\n } else {\n window.removeEventListener('resize', updateHomepageTabsStatus);\n }\n};\n\nexport default toggleHomepageTabs;\n","import generateHeadingIds from './_generateHeadingIds';\nimport generateNavCardLinks from './_generateNavCardLinks';\nimport generateStickyPageContents from './_generateStickyPageContents';\nimport showSwiftLoginBar from './_showSwiftLoginBar';\nimport replaceSwiftBySvg from './_replaceSwiftBySvg';\nimport dismissEmergencyBanner from './_dismissEmergencyBanner';\nimport gridSpaceController from './_gridSpaceController';\nimport toggleHomepageTabs from './_toggleHomepageTabs';\nimport hashtagExpandingAccordion from './_hashtagExpandingAccordion';\n\nconst customJS = () => {\n generateHeadingIds();\n generateNavCardLinks();\n generateStickyPageContents();\n showSwiftLoginBar();\n replaceSwiftBySvg();\n dismissEmergencyBanner();\n gridSpaceController();\n toggleHomepageTabs();\n hashtagExpandingAccordion();\n};\n\nexport default customJS;\n","/* eslint-disable no-param-reassign */\nconst dismissEmergencyBanner = () => {\n const emergencyBanners = document.querySelectorAll('.wmnds-banner-container--emergency');\n\n const dismissBanner = (e) => {\n // gets information about the banner that was dismissed\n const emergencyBanner = e.target.closest('.wmnds-banner-container--emergency');\n const emergencyBannerTitle = emergencyBanner.querySelector('h2').innerText;\n const emergencyBannerType = emergencyBanner.querySelector('h2').dataset.id;\n\n // hides the banner\n emergencyBanner.style.display = 'none';\n\n // if global emergency banner type\n if (emergencyBannerType === 'global-emergency-banner-title') {\n localStorage.setItem('global-emergency-banner', emergencyBannerTitle);\n }\n\n // if page emergency banner type\n else {\n // if local storage variable already exist, add this page and title to the banners list\n const initialState = {\n banners: JSON.parse(localStorage.getItem('page-emergency-banner')) || [],\n };\n initialState.banners.push({ title: emergencyBannerTitle, page: window.location.href });\n localStorage.setItem('page-emergency-banner', JSON.stringify(initialState));\n }\n };\n\n emergencyBanners.forEach((emergencyBanner) => {\n // getting the details of this emergency banner\n const emergBannerHeading = emergencyBanner.querySelector('h2');\n let title = emergBannerHeading.innerText;\n while (title.charAt(0) === ' ') {\n title = title.slice(1);\n }\n const type = emergBannerHeading.dataset.id;\n\n // if it is an global emergency banner\n if (type === 'global-emergency-banner-title') {\n // search for global-emergency-banner-title var on local storage\n const localTitle = localStorage.getItem('global-emergency-banner');\n\n // if there is a var with that name and its value is equal to this emergency banner title that means that this user has already dismiss this emergency banner so it won't be shown again\n // which means that banner only shows if there are no local vars with that name or if localTitle exist but has a different title\n if (!localTitle || (localTitle && !title.includes(localTitle))) {\n emergencyBanner.style.display = 'block';\n // remove old emergency banner from local storage\n localStorage.removeItem('global-emergency-banner');\n // add event listeners to close\n emergencyBanner\n .querySelector('.wmnds-banner-container__emergency-close')\n .addEventListener('click', dismissBanner);\n }\n }\n\n // if it is an page specific emergency banner\n else if (type === 'page-emergency-banner-title') {\n // seacrh for page-emergency-banner-title var on local storage\n const localObject = JSON.parse(localStorage.getItem('page-emergency-banner'));\n\n // if it doesn't find the var it means that that any page emergency banner was dismissed and then banner will appear\n // or this page and this banner title is not on that list and then banner will appear\n if (\n !localObject ||\n (localObject &&\n localObject.banners.filter(\n (pageBanner) => pageBanner.title === title && pageBanner.page === window.location.href\n ).length === 0)\n ) {\n emergencyBanner.style.display = 'block';\n // if we are showing a different banner for a specific page we can remove the previous banner for this page as it is an old one\n const updatedBanners = localObject.banners.filter(\n (banner) => banner.page !== window.location.href\n );\n localStorage.setItem('page-emergency-banner', JSON.stringify(updatedBanners));\n // add event listeners to close\n emergencyBanner\n .querySelector('.wmnds-banner-container__emergency-close')\n .addEventListener('click', dismissBanner);\n }\n }\n });\n};\n\nexport default dismissEmergencyBanner;\n","const generateStickyPageContents = () => {\n const contents = document.querySelector('.wmnds-page-contents');\n if (contents !== null) {\n const contentsParent = contents.closest('.wmnds-third-1-3');\n contentsParent.classList.add('wmnds-sticky');\n }\n};\n\nexport default generateStickyPageContents;\n","const generateNavCardLinks = () => {\n const uls = document.querySelectorAll('.js-auto-page-content');\n\n if (uls && uls.length > 0) {\n uls.forEach((ul) => {\n const titles = document.querySelectorAll(\n '.wmnds-grid div>h2:not(h2[class]), .wmnds-grid div>h3:not(h3[class]), .wmnds-grid div>ol>li.h2, .wmnds-grid div>ul>li.h2'\n );\n titles.forEach((title) => {\n // creating the list item and anchor to add to the list\n const node = document.createElement('li');\n node.classList.add('wmnds-content-card__list-item');\n const link = document.createElement('a');\n link.href = `#${title.id}`;\n link.innerText = title.tagName === 'LI' ? title.childNodes[0].textContent : title.innerText;\n node.appendChild(link);\n ul.appendChild(node);\n });\n });\n }\n};\n\nexport default generateNavCardLinks;\n","const tableJS = () => {\n const tables = document.querySelectorAll('.wmnds-table');\n\n const getTableHeadChildren = (table) => {\n const tHeadChildren = table.querySelectorAll('thead tr > *'); // Using querySelectorAll as it has a fallback of an empty node list. Using children returns HTMLCollection which we can't forEach through.\n\n return tHeadChildren; // Return node list\n };\n\n const iterateTables = (table) => {\n const theadChildren = getTableHeadChildren(table); // Get all children from thead section\n\n if (!theadChildren.length) return table.classList.add('wmnds-table--without-header'); // If no headers found, add without-header class\n\n // Otherwise...\n\n // If our node list is greater than 1, then there are headers\n const tRows = table.querySelectorAll('tbody > tr'); // Get all table rows in our table body section\n\n return tRows.forEach((tRow) => {\n const cells = tRow.querySelectorAll('td'); // Get all cells within our row\n\n // Loop through each cell within our row...\n cells.forEach((cell, i) => {\n const newCell = cell; // Map to new var to avoid mutating original\n const tHeadText = theadChildren[i].innerText; // Map the index of the cell to the index of the header we want as it will be in the same column of the table\n newCell.dataset.header = tHeadText; // Change the data-header on our cell to the header text so it appears on mobile\n });\n });\n };\n\n // START HERE\n if (tables.length) tables.forEach(iterateTables);\n};\n\nexport default tableJS;\n","const findATimetableJS = () => {\n const findATimetableComponents = document.querySelectorAll('.wmnds-find-a-timetable-widget');\n const toggleOpenClass = (e) => {\n e.target.closest('.wmnds-find-a-timetable-widget').classList.toggle('wmnds-is--open');\n };\n\n const onSubmitForm = (e) => {\n e.preventDefault();\n const data = new FormData(e.target);\n const queryString = new URLSearchParams(data).toString();\n window.location.href = `https://www.tfwm.org.uk/plan-your-journey/find-a-timetable/#/?${queryString}`;\n };\n\n findATimetableComponents.forEach((findATimetableComponent) => {\n findATimetableComponent\n .querySelector('div.wmnds-btn.wmnds-btn--mode')\n .addEventListener('click', toggleOpenClass);\n findATimetableComponent\n .querySelector('.wmnds-find-a-timetable-widget__form')\n .addEventListener('submit', onSubmitForm);\n });\n};\n\nexport default findATimetableJS;\n","const footerJs = () => {\n const collapseMenus = document.querySelectorAll('.wmnds-collapse-heading');\n\n const handleMobileFooter = () => {\n const windowWidth = window.innerWidth;\n\n if (windowWidth < 768) {\n collapseMenus.forEach((collapseToggle) => {\n let toggleActive = false;\n const panel = document.getElementById(collapseToggle.getAttribute('aria-controls'));\n\n const handleToggle = () => {\n if (toggleActive) {\n collapseToggle.setAttribute('aria-expanded', 'true');\n panel.style.maxHeight = `${panel.scrollHeight}px`;\n } else {\n collapseToggle.setAttribute('aria-expanded', 'false');\n panel.style.maxHeight = null;\n }\n };\n\n handleToggle();\n\n collapseToggle.addEventListener('click', () => {\n toggleActive = !toggleActive;\n handleToggle();\n });\n });\n }\n };\n // init mobile nav function\n handleMobileFooter();\n window.addEventListener('resize', handleMobileFooter);\n};\n\nexport default footerJs;\n","import polyfills from './polyfills';\nimport wmndsComponents from './wmnds-components';\nimport customJS from './custom';\n\nwindow.addEventListener('DOMContentLoaded', polyfills(), wmndsComponents(), customJS());\n","/*\nDetails Element Polyfill 2.4.0\nCopyright © 2019 Javan Makhmali\n */\n\nconst details = () => {\n 'use strict';\n var element = document.createElement('details');\n var elementIsNative =\n typeof HTMLDetailsElement != 'undefined' && element instanceof HTMLDetailsElement;\n var support = {\n open: 'open' in element || elementIsNative,\n toggle: 'ontoggle' in element,\n };\n var styles =\n '\\ndetails, summary {\\n display: block;\\n}\\ndetails:not([open]) > *:not(summary) {\\n display: none;\\n}\\nsummary::before {\\n content: \"►\";\\n padding-right: 0.3rem;\\n font-size: 0.6rem;\\n cursor: default;\\n}\\n[open] > summary::before {\\n content: \"▼\";\\n}\\n';\n var _ref = [],\n forEach = _ref.forEach,\n slice = _ref.slice;\n if (!support.open) {\n polyfillStyles();\n polyfillProperties();\n polyfillToggle();\n polyfillAccessibility();\n }\n if (support.open && !support.toggle) {\n polyfillToggleEvent();\n }\n function polyfillStyles() {\n document.head.insertAdjacentHTML('afterbegin', '');\n }\n function polyfillProperties() {\n var prototype = document.createElement('details').constructor.prototype;\n var setAttribute = prototype.setAttribute,\n removeAttribute = prototype.removeAttribute;\n var open = Object.getOwnPropertyDescriptor(prototype, 'open');\n Object.defineProperties(prototype, {\n open: {\n get: function get() {\n if (this.tagName == 'DETAILS') {\n return this.hasAttribute('open');\n } else {\n if (open && open.get) {\n return open.get.call(this);\n }\n }\n },\n set: function set(value) {\n if (this.tagName == 'DETAILS') {\n return value ? this.setAttribute('open', '') : this.removeAttribute('open');\n } else {\n if (open && open.set) {\n return open.set.call(this, value);\n }\n }\n },\n },\n setAttribute: {\n value: function value(name, _value) {\n var _this = this;\n var call = function call() {\n return setAttribute.call(_this, name, _value);\n };\n if (name == 'open' && this.tagName == 'DETAILS') {\n var wasOpen = this.hasAttribute('open');\n var result = call();\n if (!wasOpen) {\n var summary = this.querySelector('summary');\n if (summary) summary.setAttribute('aria-expanded', true);\n triggerToggle(this);\n }\n return result;\n }\n return call();\n },\n },\n removeAttribute: {\n value: function value(name) {\n var _this2 = this;\n var call = function call() {\n return removeAttribute.call(_this2, name);\n };\n if (name == 'open' && this.tagName == 'DETAILS') {\n var wasOpen = this.hasAttribute('open');\n var result = call();\n if (wasOpen) {\n var summary = this.querySelector('summary');\n if (summary) summary.setAttribute('aria-expanded', false);\n triggerToggle(this);\n }\n return result;\n }\n return call();\n },\n },\n });\n }\n function polyfillToggle() {\n onTogglingTrigger(function (element) {\n element.hasAttribute('open')\n ? element.removeAttribute('open')\n : element.setAttribute('open', '');\n });\n }\n function polyfillToggleEvent() {\n if (window.MutationObserver) {\n new MutationObserver(function (mutations) {\n forEach.call(mutations, function (mutation) {\n var target = mutation.target,\n attributeName = mutation.attributeName;\n if (target.tagName == 'DETAILS' && attributeName == 'open') {\n triggerToggle(target);\n }\n });\n }).observe(document.documentElement, {\n attributes: true,\n subtree: true,\n });\n } else {\n onTogglingTrigger(function (element) {\n var wasOpen = element.getAttribute('open');\n setTimeout(function () {\n var isOpen = element.getAttribute('open');\n if (wasOpen != isOpen) {\n triggerToggle(element);\n }\n }, 1);\n });\n }\n }\n function polyfillAccessibility() {\n setAccessibilityAttributes(document);\n if (window.MutationObserver) {\n new MutationObserver(function (mutations) {\n forEach.call(mutations, function (mutation) {\n forEach.call(mutation.addedNodes, setAccessibilityAttributes);\n });\n }).observe(document.documentElement, {\n subtree: true,\n childList: true,\n });\n } else {\n document.addEventListener('DOMNodeInserted', function (event) {\n setAccessibilityAttributes(event.target);\n });\n }\n }\n function setAccessibilityAttributes(root) {\n findElementsWithTagName(root, 'SUMMARY').forEach(function (summary) {\n var details = findClosestElementWithTagName(summary, 'DETAILS');\n summary.setAttribute('aria-expanded', details.hasAttribute('open'));\n if (!summary.hasAttribute('tabindex')) summary.setAttribute('tabindex', '0');\n if (!summary.hasAttribute('role')) summary.setAttribute('role', 'button');\n });\n }\n function eventIsSignificant(event) {\n return !(\n event.defaultPrevented ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n event.target.isContentEditable\n );\n }\n function onTogglingTrigger(callback) {\n addEventListener(\n 'click',\n function (event) {\n if (eventIsSignificant(event)) {\n if (event.which <= 1) {\n var element = findClosestElementWithTagName(event.target, 'SUMMARY');\n if (element && element.parentNode && element.parentNode.tagName == 'DETAILS') {\n callback(element.parentNode);\n }\n }\n }\n },\n false\n );\n addEventListener(\n 'keydown',\n function (event) {\n if (eventIsSignificant(event)) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n var element = findClosestElementWithTagName(event.target, 'SUMMARY');\n if (element && element.parentNode && element.parentNode.tagName == 'DETAILS') {\n callback(element.parentNode);\n event.preventDefault();\n }\n }\n }\n },\n false\n );\n }\n function triggerToggle(element) {\n var event = document.createEvent('Event');\n event.initEvent('toggle', false, false);\n element.dispatchEvent(event);\n }\n function findElementsWithTagName(root, tagName) {\n return (root.tagName == tagName ? [root] : []).concat(\n typeof root.getElementsByTagName == 'function'\n ? slice.call(root.getElementsByTagName(tagName))\n : []\n );\n }\n function findClosestElementWithTagName(element, tagName) {\n if (typeof element.closest == 'function') {\n return element.closest(tagName);\n } else {\n while (element) {\n if (element.tagName == tagName) {\n return element;\n } else {\n element = element.parentNode;\n }\n }\n }\n }\n};\n\nexport default details;\n","import details from './_details';\nimport forEach from './_ie11-forEach';\nimport includes from './_includes';\n\nconst polyfills = () => {\n details();\n forEach();\n includes();\n};\n\nexport default polyfills;\n","const forEach = () => {\n // missing forEach on NodeList for IE11\n if (window.NodeList && !NodeList.prototype.forEach) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n};\n\nexport default forEach;\n","const includes = () => {\n if (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n 'use strict';\n\n if (search instanceof RegExp) {\n throw TypeError('first argument must not be a RegExp');\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n};\n\nexport default includes;\n","const icons = () => {\n if (!document.querySelectorAll('.wmnds-hidden-icons').length) {\n // Ajax SVG in, SVGS are referenced in app (Icon component)\n const ajax = new XMLHttpRequest();\n ajax.open(\n 'GET',\n 'https://cloudcdn.wmca.org.uk/tfwmassets/ds/2.4.2/img/wmnds-icons.min.svg',\n true\n );\n ajax.send();\n ajax.onload = () => {\n const div = document.createElement('div');\n div.classList.add('wmnds-hidden-icons');\n div.style.display = 'none';\n div.innerHTML = ajax.responseText;\n document.body.insertBefore(div, document.body.childNodes[0]);\n };\n }\n};\n\nexport default icons;\n","// Run icon logic first; as components are dependant on them\nimport icons from './_icons';\nimport nIcons from './_n-icons';\n// Then run everything else\nimport accordions from './_accordion';\nimport cookies from './_cookies';\nimport footer from './_footer';\nimport header from './_header';\nimport findATimetable from './_findATimetable';\nimport buyATicket from './_buyATicket';\nimport journeyPlanner from './_journeyPlanner';\nimport journeyPlannerWidget from './_journeyPlannerWidget';\nimport table from './_table';\n\nconst wmndsComponents = () => {\n icons();\n nIcons();\n accordions();\n cookies();\n footer();\n header();\n findATimetable();\n buyATicket();\n journeyPlanner();\n journeyPlannerWidget();\n table();\n};\n\nexport default wmndsComponents;\n","const accordionsJS = () => {\n const accordions = document.querySelectorAll('.wmnds-accordion');\n\n accordions.forEach((accordion) => {\n const accordionBtn = accordion.querySelector('.wmnds-accordion__summary-wrapper');\n\n const toggleAccordion = () => {\n if (accordion.classList.contains('wmnds-is--open')) {\n accordion.classList.remove('wmnds-is--open');\n accordionBtn.setAttribute('aria-expanded', false);\n } else {\n accordion.classList.add('wmnds-is--open');\n accordionBtn.setAttribute('aria-expanded', true);\n }\n };\n\n accordionBtn.addEventListener('click', toggleAccordion);\n });\n};\n\nexport default accordionsJS;\n","const buyATicketJS = () => {\n const onSubmitForm = (e) => {\n e.preventDefault();\n const data = new FormData(e.target);\n let queryString = new URLSearchParams(data).toString();\n queryString = queryString.replace('useBus=', '');\n queryString = queryString.replace('useTrain=', '');\n queryString = queryString.replace('useTram=', '');\n window.location.href = `https://ticketsearch.tfwm.org.uk/#/?${queryString}`;\n };\n\n const buyATicketComponents = document.querySelectorAll('.wmnds-buy-a-ticket');\n\n buyATicketComponents.forEach((buyATicketComponent) => {\n buyATicketComponent.addEventListener('submit', onSubmitForm);\n });\n};\n\nexport default buyATicketJS;\n","const generateHeadingsIds = () => {\n // get all the titles inside RTE\n const titles = document.querySelectorAll(\n '.wmnds-grid div>h2:not(h2[class]), .wmnds-grid div>ol>li.h2, .wmnds-grid div>h3:not(h3[class]), .wmnds-grid div>h4:not(h4[class]), .wmnds-grid div>h5:not(h5[class]), .wmnds-grid div>h6:not(h6[class])'\n );\n\n titles.forEach((title) => {\n const newTitle = title;\n // generating and adding an id to the title\n const id = title.innerText.replace(/\\s+/g, '-').toLowerCase();\n newTitle.id = id;\n\n return newTitle; // TODO: Check to make sure this still works\n });\n};\n\nexport default generateHeadingsIds;\n","const showSwiftLoginBar = () => {\n // check if this page has indication to have Swift login bar\n const showLoginBar = document.querySelector('.js-show-swift-login-bar') !== null;\n if (showLoginBar) {\n document.querySelector('.wmnds-sign-in').style.display = 'block';\n }\n};\n\nexport default showSwiftLoginBar;\n","const replaceSwiftBySvg = () => {\n // check if this page has purple banners\n const purpleBannerTitle = document.querySelector('.wmnds-branded-banner h1') !== null;\n if (purpleBannerTitle) {\n const title = document.querySelector('.wmnds-branded-banner h1');\n const swiftSVG = `\n Swift\n \n `;\n const titleHTML = title.innerHTML.replace(/Swift/i, swiftSVG);\n title.innerHTML = titleHTML;\n }\n};\n\nexport default replaceSwiftBySvg;\n","const gridSpaceController = () => {\n const gridAreas = document.querySelectorAll('main>.wmnds-grid>div');\n gridAreas.forEach((gridArea) => {\n if (\n gridArea.querySelector('.wmnds-component') &&\n gridArea.querySelector('.wmnds-component').classList.contains('wmnds-rte')\n ) {\n gridArea.querySelector('.wmnds-component').classList.add('isFirstInThisPageArea');\n }\n });\n};\n\nexport default gridSpaceController;\n","const hashtagExpandingAccordion = () => {\n if (window.location.hash !== '') {\n const element = document.querySelector(window.location.hash);\n if (element && element.parentNode && element.parentNode.classList.contains('wmnds-accordion')) {\n element.parentNode.classList.add('wmnds-is--open');\n if (element.previousSibling) {\n element.previousSibling.ariaExpanded = true;\n }\n const topPos = element.parentNode.getBoundingClientRect().top + window.pageYOffset;\n window.scrollTo({\n top: topPos, // scroll so that the element is at the top of the view\n behavior: 'smooth', // smooth scroll\n });\n }\n }\n};\n\nexport default hashtagExpandingAccordion;\n"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","status","responseURL","indexOf","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","prototype","extend","axios","create","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","interceptors","arguments","chain","interceptor","unshift","fulfilled","rejected","push","length","shift","getUri","replace","handlers","use","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","error","Error","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","concat","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","call","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","JSON","stringify","parse","maxContentLength","maxBodyLength","thisArg","args","Array","i","apply","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","trim","substr","callback","arr","getPrototypeOf","isFunction","obj","l","hasOwnProperty","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","result","assignValue","a","b","str","stripBOM","content","charCodeAt","factory","PORTION_MODE_RETAIN","PORTION_MODE_FIRST","doc","hasOwn","exposed","deprecated","findAndReplaceDOMText","regex","node","replacement","captureGroup","elFilter","nodeType","original","isReplacementFunction","portion","text","startIndex","find","wrap","prepMatch","m","mi","cg","index","endIndex","filterElements","revert","options","Finder","preset","PRESETS","portionMode","reverts","matches","processMatches","NON_PROSE_ELEMENTS","br","hr","script","style","img","video","audio","canvas","svg","map","object","input","textarea","select","option","optgroup","button","NON_CONTIGUOUS_PROSE_ELEMENTS","address","article","aside","blockquote","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","main","nav","noscript","ol","output","p","pre","section","ul","li","summary","dt","details","rp","rt","rtc","table","tbody","thead","th","tr","td","caption","col","tfoot","colgroup","NON_INLINE_PROSE","el","nodeName","prose","forceContext","matchIndex","offset","textAggregation","getAggregateText","self","String","matchAggregation","global","exec","characterOffset","elementFilter","getText","Node","TEXT_NODE","txt","firstChild","innerText","ELEMENT_NODE","nextSibling","startPortion","endPortion","doAvoidNode","innerPortions","curNode","atIndex","portionIndex","nodeStack","out","substring","indexInMatch","indexInNode","endIndexInNode","isEnd","replaceMatch","pop","prepareReplacementString","string","$0","t","getPortionReplacementNode","wrapper","wrapperClass","wrapClass","clone","innerHTML","outerHTML","XMLSerializer","serializeToString","createTextNode","className","appendChild","precedingTextNode","followingTextNode","matchStartNode","matchEndNode","parentNode","insertBefore","newNode","removeChild","previousSibling","replaceChild","firstNode","innerNodes","innerNode","lastNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","bodyEle","querySelector","_portion","textWithoutN","htmlString","createRange","createContextualFragment","o","setTime","getTime","s","toUTCString","n","r","d","f","display","u","querySelectorAll","essential","functional","performance","checked","_","k","event","getElementsByTagName","async","src","cookiecategory","dataset","DocumentFragment","j","preventDefault","x","frameElement","startsWith","referrer","parentElement","L","cookieBanner","manageCookies","cookiePolicyLogic","megaMenus","mobileMenu","matchMedia","getMenuLink","currentIndex","array","direction","menuLink","setKeyboardNavigation","subMenuContainer","subMenuQuery","onFirst","onLast","allLinksArray","subMenu","subMenuIndex","thisSubMenuLinks","link","linkIndex","keyCode","stopPropagation","nextMenuLink","focus","prevMenuLink","shiftKey","nextLink","prevMenu","prevLink","menu","clearActiveListItems","menuItem","classList","setMenuActive","element","onCloseFocusElement","add","handleMobileMenu","mq","mobileToggle","headerEl","topLevelMenuBtn","searchBtn","mobileMenuIsOpen","primary","menuBtn","handleSubMenus","targetListItem","previousElementSibling","collapseToggle","handleThirdLevelMenus","panel","nextElementSibling","toggle","maxHeight","scrollHeight","tagName","addListener","enterTimeOut","leaveTimeOut","topLevelLinks","menuDelay","topLevelLink","topLevelLinkIndex","topLevelListItem","includes","subMenuLinks","clearTimeout","setTimeout","getAttribute","contains","openSubMenu","handleKeydown","searchMenuContainer","click","axiosCancelToken","axiosSource","currentComponent","checkAvailableSlotsTimeout","slot","func","loadingClass","require","validateBeforeSubmit","bus","forms","jphome","useBus","train","useTrain","tram","useTram","expandComponent","closest","updateSelectedLocation","title","updateSelectedLocationToCurrentLocation","geolocation","getCurrentPosition","position","coords","latitude","longitude","console","stopLoading","cleanSuggestions","suggestionsList","debounceAutocomplete","query","keyboardEvent","shouldKeyEventTriggerAutocomplete","encodeURI","APIKey","get","results","currentLocationSuggestion","tabIndex","ariaPressed","suggestion","attributes","ShortLabel","append","addAutocompleteSuggestions","candidates","catch","getRequestFromAPI","findFirstAvailableSlot","today","getHours","getMinutes","parseInt","Math","ceil","disableAllOptionsBeforeNow","firstAvailableSlot","timeSlots","isAvailable","timeSlot","selected","disabled","timeDropdown","selectedOption","selectedIndex","checkIfFirstSlotChanged","newSlot","updateTimeOptions","component","setInterval","clearInterval","singleSlot","handleDayChange","switchFromAndTo","inputs","autocompleteElement","currentWidget","activeClass","openClass","selectAllMode","leaveMode","expandWhenArea","expandWidget","expandHowArea","howArea","modeInput","log","toggleMode","altCheckedInput","updateRadioInput","altInputs","oneAltModeSelected","altInput","toggleBetweenLeaveAndArrive","selectAllorSelectNone","modeBtn","widget","whenController","howController","travelModeInput","altTravelModeInput","init","updateHomepageTabsStatus","screen","width","newDiv","prepend","jph","bth","homepageTabs","inputForJPH","type","ariaLabel","labelForJPH","htmlFor","inputForBTH","labelForBTH","createTabElements","enableHomepageTabs","jphOriginalParent","bthOriginalParent","disableHomepageTabs","emergencyBanners","dismissBanner","contents","uls","tables","findATimetableComponents","toggleOpenClass","onSubmitForm","collapseMenus","handleMobileFooter","removeAttribute","elementIsNative","HTMLDetailsElement","support","_ref","setAccessibilityAttributes","root","findElementsWithTagName","findClosestElementWithTagName","hasAttribute","eventIsSignificant","defaultPrevented","ctrlKey","metaKey","isContentEditable","onTogglingTrigger","which","triggerToggle","createEvent","initEvent","dispatchEvent","head","insertAdjacentHTML","getOwnPropertyDescriptor","defineProperties","set","_value","_this","wasOpen","_this2","MutationObserver","mutations","mutation","addedNodes","observe","documentElement","subtree","childList","attributeName","isOpen","NodeList","start","ajax","onload","body","childNodes","icons","nIcons","accordion","accordionBtn","innerWidth","toggleActive","getElementById","handleToggle","queryString","findATimetableComponent","buyATicketComponent","buyATicket","journeyPlanner","journeyPlannerWidget","theadChildren","getTableHeadChildren","tRow","cell","newCell","tHeadText","newTitle","textContent","titleHTML","replaceSwiftBySvg","emergencyBanner","emergencyBannerTitle","emergencyBannerType","localStorage","setItem","initialState","banners","getItem","page","emergBannerHeading","localTitle","removeItem","localObject","pageBanner","updatedBanners","banner","gridArea","removeEventListener","ariaExpanded","topPos","getBoundingClientRect","top","pageYOffset","scrollTo","behavior","hashtagExpandingAccordion"],"sourceRoot":""}