{"version":3,"sources":["serviceWorkerRegistration.ts","reportWebVitals.ts","ResponsiveDrawer.tsx","pages/tools/PixelDensityCalc.tsx","index.tsx"],"names":["isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","catch","error","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","drawerWidth","useStyles","makeStyles","theme","createStyles","root","display","drawer","breakpoints","up","width","flexShrink","appBar","marginLeft","menuButton","marginRight","spacing","toolbar","mixins","drawerPaper","content","flexGrow","padding","activeMenuItem","borderRight","ResponsiveDrawer","props","classes","useTheme","React","useState","mobileOpen","setMobileOpen","handleDrawerToggle","className","Divider","List","ListItem","component","NavLink","to","activeClassName","exact","button","ListItemText","primary","CssBaseline","AppBar","position","Toolbar","IconButton","color","edge","onClick","Typography","variant","noWrap","Hidden","mdUp","implementation","Drawer","anchor","direction","open","onClose","paper","ModalProps","keepMounted","smDown","children","calcPixelDensity","resHorizontal","resVertical","diagonal","Math","sqrt","pow","Home","lazy","About","HttpStatus404","ReactDOM","render","StrictMode","fallback","path","setResHorizontal","setResVertical","setDiagonal","pixelDensity","setPixelDensity","useEffect","style","rowGap","TextField","label","value","type","inputMode","onChange","event","parseInt","target","parseFloat","toFixed","InputProps","readOnly","document","getElementById","URL","process","href","origin","addEventListener","fetch","headers","response","contentType","get","status","indexOf","ready","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"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","file":"static/js/main.0f586cdf.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://cra.link/PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://cra.link/PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\",\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React, { FC } from \"react\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InboxIcon from \"@material-ui/icons/MoveToInbox\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport MailIcon from \"@material-ui/icons/Mail\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport {\n makeStyles,\n useTheme,\n Theme,\n createStyles,\n} from \"@material-ui/core/styles\";\nimport { NavLink } from \"react-router-dom\";\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n },\n drawer: {\n [theme.breakpoints.up(\"md\")]: {\n width: drawerWidth,\n flexShrink: 0,\n },\n },\n appBar: {\n [theme.breakpoints.up(\"md\")]: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n },\n },\n menuButton: {\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(\"md\")]: {\n display: \"none\",\n },\n },\n // necessary for content to be below app bar\n toolbar: theme.mixins.toolbar,\n drawerPaper: {\n width: drawerWidth,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n },\n activeMenuItem: {\n borderRight: \"5px solid #3f51b5\",\n \"&:hover\": {\n borderRight: \"5px solid #3f51b5\",\n },\n },\n }),\n);\n\ntype DrawerProps = {};\n\nconst ResponsiveDrawer: FC = props => {\n const classes = useStyles();\n const theme = useTheme();\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n const handleDrawerToggle = () => {\n setMobileOpen(!mobileOpen);\n };\n\n const drawer = (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n\n return (\n
\n \n \n \n \n \n \n \n {\"poly.tools\"}\n \n \n \n \n
\n
\n {props.children}\n
\n
\n );\n};\n\nexport default ResponsiveDrawer;\n","import { TextField } from \"@material-ui/core\";\nimport { useEffect, useState } from \"react\";\n\nconst calcPixelDensity = (\n resHorizontal: number,\n resVertical: number,\n diagonal: number,\n) => {\n return (\n Math.sqrt(Math.pow(resHorizontal, 2) + Math.pow(resVertical, 2)) / diagonal\n );\n};\n\nexport const PixelDensityCalc = () => {\n const [resHorizontal, setResHorizontal] = useState(1920);\n const [resVertical, setResVertical] = useState(1080);\n const [diagonal, setDiagonal] = useState(24);\n\n const [pixelDensity, setPixelDensity] = useState(\n calcPixelDensity(resHorizontal, resVertical, diagonal),\n );\n\n useEffect(() => {\n setPixelDensity(calcPixelDensity(resHorizontal, resVertical, diagonal));\n }, [resHorizontal, resVertical, diagonal]);\n\n return (\n <>\n

Pixel density calculator

\n\n
\n setResHorizontal(parseInt(event.target.value, 10))}\n />\n setResVertical(parseInt(event.target.value, 10))}\n />\n setDiagonal(parseFloat(event.target.value))}\n />\n \n
\n \n );\n};\n","import React, { Suspense } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport * as serviceWorkerRegistration from \"./serviceWorkerRegistration\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { BrowserRouter, Switch, Route } from \"react-router-dom\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport ResponsiveDrawer from \"./ResponsiveDrawer\";\nimport { PixelDensityCalc } from \"./pages/tools/PixelDensityCalc\";\nimport \"./index.css\";\n\nconst Home = React.lazy(() => import(\"./pages/Home\"));\nconst About = React.lazy(() => import(\"./pages/About\"));\nconst HttpStatus404 = React.lazy(() => import(\"./pages/HttpStatus404\"));\n\nReactDOM.render(\n \n \n \n \n Loading...
}>\n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\"),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.register();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}