{"version":3,"sources":["logo.svg","LauncherButtonModule.jsx","Home.jsx","hooks/index.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","LauncherButtonModule","props","label","clickLink","className","Fragment","src","onClick","window","open","CoverImg","styled","img","minWidth","Vignette","div","Home","useState","activeDiv","setactiveDiv","setminWidth","tepcpaper","tepcpashmina","appConfig","setAppConfig","useEffect","xhr","XMLHttpRequest","responseType","onload","status","response","console","log","send","innerWidth","eventName","handler","element","savedHandler","useRef","current","addEventListener","eventListener","event","removeEventListener","useEventListener","imageClickFunc","onMouseLeave","alt","link","onMouseOver","imageUrl","App","Boolean","location","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.db7b453f.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.ee7cd8ed.svg\";","import React from \"react\";\r\n\r\nconst LauncherButtonModule = props => {\r\n const { label, clickLink, className } = props;\r\n const btnClickFunc = () => {\r\n window.open(clickLink, \"_blank\");\r\n };\r\n return (\r\n \r\n
\r\n \r\n {label}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LauncherButtonModule;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport LauncherButtonModule from \"./LauncherButtonModule\";\r\nimport { useEventListener } from \"./hooks\";\r\n\r\nconst CoverImg = styled.img`\r\n /* min-width: ${props => props.minWidth}px; */\r\n width: auto;\r\n height: 100%;\r\n`;\r\nconst Vignette = styled.div`\r\n background: linear-gradient(\r\n 180deg,\r\n rgba(0, 0, 0, 0) 0%,\r\n rgba(0, 0, 0, 0.6) 100%\r\n );\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 1;\r\n top: 0;\r\n`;\r\nconst Home = props => {\r\n const [activeDiv, setactiveDiv] = useState(0);\r\n const [minWidth, setminWidth] = useState(0);\r\n const [appConfig, setAppConfig] = useState({\r\n tepcpaper: {},\r\n tepcpashmina: {}\r\n });\r\n // const handleMouseOver = id => {\r\n // if (id === \"paperLauncher\") {\r\n // setactiveDiv(1);\r\n // } else {\r\n // setactiveDiv(2);\r\n // }\r\n // };\r\n\r\n useEffect(() => {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\"GET\", \"explorug-launcher-config.json\", true);\r\n xhr.responseType = \"json\";\r\n xhr.onload = function() {\r\n var status = xhr.status;\r\n if (status === 200) {\r\n setAppConfig(xhr.response);\r\n } else {\r\n console.log(status);\r\n }\r\n };\r\n\r\n xhr.send();\r\n setminWidth(window.innerWidth * 0.6);\r\n }, []);\r\n\r\n useEventListener(\"resize\", () => {\r\n setminWidth(window.innerWidth * 0.6);\r\n });\r\n\r\n const explorugHome = () => {\r\n window.open(\"https://www.explorug.com\", \"_blank\");\r\n };\r\n\r\n const imageClickFunc = (clickLink) => {\r\n window.open(clickLink, \"_blank\");\r\n };\r\n\r\n return (\r\n \r\n
setactiveDiv(0)}>\r\n \r\n
\r\n \"circle\"\r\n \r\n Explorug for Handicrafts features customizable\r\n
designs visualized on custom Nepali products.\r\n
\r\n
\r\n \r\n \r\n
\r\n setactiveDiv(1)}\r\n onClick={()=>imageClickFunc(appConfig.tepcpaper.link)}\r\n >\r\n \r\n \r\n {/*
\r\n\r\n
*/}\r\n {/* */}\r\n
\r\n
\r\n
\r\n setactiveDiv(2)}\r\n onClick={()=>imageClickFunc(appConfig.tepcpashmina.link)}\r\n >\r\n \r\n \r\n {/*
\r\n\r\n
*/}\r\n {/* */}\r\n
\r\n \r\n {/*
\r\n
\r\n
*/}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { useState, useEffect, useRef } from \"react\";\r\n\r\nexport function useWindowSize() {\r\n const isClient = typeof window === \"object\";\r\n\r\n function getSize() {\r\n return {\r\n width: isClient ? window.innerWidth : undefined,\r\n height: isClient ? window.innerHeight : undefined\r\n };\r\n }\r\n\r\n const [windowSize, setWindowSize] = useState(getSize);\r\n\r\n useEffect(() => {\r\n if (!isClient) {\r\n return false;\r\n }\r\n\r\n function handleResize() {\r\n setWindowSize(getSize());\r\n }\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [getSize, isClient]); // Empty array ensures that effect is only run on mount and unmount\r\n\r\n return windowSize;\r\n}\r\nexport function useEventListener(eventName, handler, element = window) {\r\n // Create a ref that stores handler\r\n const savedHandler = useRef();\r\n\r\n // Update ref.current value if handler changes.\r\n // This allows our effect below to always get latest handler ...\r\n // ... without us needing to pass it in effect deps array ...\r\n // ... and potentially cause effect to re-run every render.\r\n useEffect(() => {\r\n savedHandler.current = handler;\r\n }, [handler]);\r\n\r\n useEffect(\r\n () => {\r\n // Make sure element supports addEventListener\r\n // On \r\n const isSupported = element && element.addEventListener;\r\n if (!isSupported) return;\r\n\r\n // Create event listener that calls handler function stored in ref\r\n const eventListener = event => savedHandler.current(event);\r\n\r\n // Add event listener\r\n element.addEventListener(eventName, eventListener);\r\n\r\n // Remove event listener on cleanup\r\n return () => {\r\n element.removeEventListener(eventName, eventListener);\r\n };\r\n },\r\n [eventName, element] // Re-run if eventName or element changes\r\n );\r\n};","import React from \"react\";\r\nimport logo from \"./logo.svg\";\r\nimport \"./App.css\";\r\nimport Home from \"./Home\";\r\n\r\nfunction App() {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}