{"version":3,"sources":["App.js","serviceWorker.js","index.js","logo.png","logo-main.png"],"names":["querystring","require","getPathFromUrl","url","split","getHostname","parsed","parse","window","location","search","console","log","hostname","fqdn","host","App","props","redirect","e","state","selectValue","value","show","document","URL","href","origins","getOrigins","bind","setOrigins","notify","createShowQueue","packageJSON","name","version","fetch","config","originsURL","then","response","json","catch","this","setState","options","originCount","Object","keys","length","defaultHostname","notifyColour","background","text","className","src","logo","alt","logoMain","onChange","onClick","Component","Boolean","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.e834f632.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\n\r\n// import components\r\nimport VirtualizedSelect from 'react-virtualized-select';\r\nimport Notifications, {notify} from 'react-notify-toast';\r\nimport Favicon from 'react-favicon';\r\n\r\n// import image assets\r\nimport logo from './logo.png';\r\nimport logoMain from './logo-main.png';\r\n\r\n// import style sheets\r\nimport './App.css';\r\nimport 'react-select/dist/react-select.css';\r\nimport 'react-virtualized-select/styles.css';\r\n\r\n// import config json\r\nimport packageJSON from '../package.json';\r\nimport config from './App.js.config.json';\r\n\r\n//const originsURL = 'https://assets.asosservices.com/landingpage/origins.json'\r\n\r\n// Instantiate query-string package\r\nconst querystring = require('query-string');\r\n\r\n// Parse the full URL to strip off query string parameters and return just the path\r\nfunction getPathFromUrl(url) {\r\n return url.split(\"?\")[0];\r\n}\r\n\r\n// Parse the URL and return the hostname we're served under\r\nfunction getHostname(){\r\n const parsed = querystring.parse(window.location.search);\r\n if ('hostname' in parsed) {\r\n console.log('parsed query string:', window.location.search, 'to use a domain of:', parsed.hostname);\r\n return parsed.hostname;\r\n } else {\r\n const fqdn = window.location.host;\r\n //const arrFqdn = fqdn.split('.');\r\n //const topdomain = arrFqdn[0];\r\n console.log('Parsed:', window.location.host, 'to use domain of:', fqdn);\r\n //return topdomain;\r\n return fqdn;\r\n }\r\n}\r\n\r\nclass App extends Component {\r\n\r\n // Initialise state\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectValue: '',\r\n origins : {}\r\n };\r\n\r\n // Bind Origins\r\n this.getOrigins = this.getOrigins.bind(this);\r\n this.setOrigins = this.setOrigins.bind(this);\r\n\r\n // Create Notification queue, where notification message are placed\r\n this.show = notify.createShowQueue();\r\n\r\n console.log(packageJSON.name, 'version', packageJSON.version);\r\n }\r\n\r\n // Issue HTTP GET request to external origins json resource\r\n getOrigins() {\r\n fetch(config.originsURL)\r\n .then(response => response.json())\r\n .then(origins => this.setOrigins(origins))\r\n .catch(e => console.log(e));\r\n }\r\n\r\n setOrigins(origins) {\r\n this.setState({ origins });\r\n }\r\n\r\n componentDidMount() {\r\n this.getOrigins();\r\n }\r\n\r\n // redirect the browser\r\n redirect = (e) => {\r\n console.log('button clicked', this.state.selectValue.value);\r\n\r\n if (this.state.selectValue === '') {\r\n console.log('No environment selected');\r\n } else {\r\n this.show('Opening: ' + getPathFromUrl(document.URL) + '?x-site-origin=' + this.state.selectValue.value, 'success', 4000);\r\n console.log('The following x-site-origin will be used:', this.state.selectValue.value);\r\n // window.location.href will reuse the same browser tab/window\r\n // window.location.href = getPathFromUrl(document.URL) + '?x-site-origin=' + this.state.selectValue.value;\r\n // window.open will open a new browser tab/window\r\n // window.open(getPathFromUrl(document.URL) + '?x-site-origin=' + this.state.selectValue.value);\r\n\r\n //Launch URL\r\n window.location.href = getPathFromUrl(document.URL) + '?x-site-origin=' + this.state.selectValue.value;\r\n }\r\n }\r\n\r\n render() {\r\n // Get the hostname portion of the FQDN being used\r\n var hostname = getHostname();\r\n // Return only the json array of origins for the hostname\r\n var options = {};\r\n\r\n\r\n // Check if our json contains origin entries for the hostname\r\n if (this.state.origins[hostname]) {\r\n // We've got something, so an array with the hostname exists. Now count its elements\r\n const originCount = Object.keys(this.state.origins[hostname]).length;\r\n console.log('There are ' + originCount + ' origins configured for ' + hostname);\r\n // Make sure we've got at least one entry in the hostname's array\r\n if (originCount > 0) {\r\n // Return only the json array of origins for the hostname\r\n options = this.state.origins[hostname];\r\n } else {\r\n // The origin array for the hostname is empty, so use the default hostname\r\n options = this.state.origins[config.defaultHostname];\r\n }\r\n } else {\r\n // An array for the hostname doesn't exist, so uae the default hostname\r\n options = this.state.origins[config.defaultHostname];\r\n }\r\n\r\n let notifyColour = { background: '#FFFFFF', text: \"#23b9e7\" };\r\n\r\n return (\r\n
\r\n Select an environment, or start typing to filter the options\r\n\r\n
\r\n\r\n \r\n\r\n\r\n \r\n
\r\n\r\n