{"version":3,"sources":["styles/theme.js","helpers/format-date.js","helpers/sort-items-by-iso-date.js","components/LocaleSelect.jsx","serviceWorker.js","components/Auth.jsx","components/Title.jsx","index.js","helpers/get-query-parameters.js","l10n/da.js","l10n/en.js","l10n/index.js","hooks/use-locale.js","helpers/query.js","constants/index.js","media/logo.svg","media/logo-compact.svg","media/kortomatic-logo.svg","media/multidroner-logo.svg","media/multidroner-logo-negative.svg","helpers/logos.js","hooks/use-input.js","hooks/use-local-storage.js","helpers/locale.js","helpers/user-context.js","components/Logo.jsx"],"names":["palette","primary","main","grey","secondary","formatDate","date","locale","defaultLocale","dateObj","Date","getTimeFromISODate","Intl","DateTimeFormat","format","dateString","Error","dateSplit","split","length","map","Number","year","month","sortItemsByISODate","s1","s2","LocaleSelect","useLocale","strings","locales","setLocale","useState","anchorEl","setAnchorEl","handleClose","title","labels","language","aria-label","aria-controls","aria-haspopup","onClick","event","currentTarget","ml","id","keepMounted","open","Boolean","onClose","localeEntry","key","disabled","selected","toUpperCase","window","location","hostname","match","_HASH","sha1","localStorage","removeItem","postFetch","endpoint","body","options","Promise","resolve","reject","fetch","method","JSON","stringify","then","catch","reason","captureException","SERVER_ERROR","checkCredentials","userEndpoint","a","response","json","users","INVALID_CREDENTIALS","useStyles","makeStyles","theme","root","backgroundColor","overflow","fieldWrapper","flexGrow","versionCaption","marginLeft","spacing","marginRight","loadingIndicator","margin","marginTop","urlHasSlug","hash","includes","test","Auth","props","isOpen","setIsOpen","getQueryParameters","ptoken","authFlows","CHANGE_PASSWORD","SIGN_IN","activeFlow","setFlow","errorMessage","setErrorMessage","hasAttempted","setHasAttempted","showInputs","setShowInputs","isLoading","setIsLoading","newPasswordProps","useInput","inputRef","useRef","onKeyUp","e","value","trim","passwordProps","current","focus","every","handleSubmit","useEffect","messages","repeatedPasswordDifferent","usernameProps","REQUEST_PASSWORD_CHANGE","rememberMeProps","v","useLocalStorage","getItem","user","setUser","classes","token","handleServerUser","Token","un","pw","errors","serverUser","onAuthenticated","URL","href","searchParams","get","requestPasswordChangeEndpoint","email","clientPath","origin","pathname","r","text","PASSWORD_CHANGE_REQUESTED","finally","changePasswordEndpoint","pToken","password","PasswordChanged","PASSWORD_CHANGED","isCanceled","verifyingToken","checkPTokenEndpoint","pTokenValid","INVALID_LINK","App","app","fallback","LinearProgress","color","Provider","onChange","target","history","pushState","document","reload","Dialog","className","fullWidth","PaperProps","elevation","style","borderRadius","border","maxWidth","BackdropComponent","disableBackdropClick","disableEscapeKeyDown","aria-labelledby","DialogContent","Collapse","in","textAlign","padding","logo","Typography","variant","gutterBottom","welcomeTo","appTitle","version","Box","p","howToResetPassword","Object","keys","flow","error","helper","filter","message","DialogContentText","loginDescription","Grid","container","alignItems","item","TextField","helperText","autoFocus","label","type","newPassword","repeatPassword","anErrorOccured","FormControlLabel","control","Checkbox","rememberMe","FormHelperText","DialogActions","justifyContent","Button","component","forgotPassword","goBack","CircularProgress","size","some","x","continue","changePassword","signIn","Title","logos","getConfig","name","SentryInit","dsn","release","pkg","environment","process","addEventListener","console","AsyncApp","lazy","config","setConfig","ReactDOM","render","ThemeProvider","createMuiTheme","localeStrings","Logo","logoType","negative","Endpoints","requestPasswordChange","checkPToken","getElementById","navigator","serviceWorker","ready","registration","unregister","entries","reduce","obj","inputNewPassword","today","permanentBaseLayers","sizeSmall","sizeMedium","sizeLarge","print","settings","retry","resetPrintArea","printComplete","labelSize","limitPassed","selectPrintArea","fillOpacity","printFailed","printSettings","loading","generatingPrint","zoomLevel","scale","filename","downloafPDF","viewPDF","signOut","username","archive","welcome","yourProjects","archivedProjects","layerSelects","shapes","marker","rectangle","polyline","polygon","lastChanged","drawLayer","addLabel","uploadPhoto","markerIcon","bufferRadius","allProjects","delete","edit","editFeature","cancelEdits","applyEdits","savePDF","cancel","close","chooseContentAndLayers","applyLayerModalChanges","OverlayLayers","BaseLayers","ViewModes","TRANSPARENCY_MODE","SIDE_BY_SIDE_MODE","appearance","measurements","measurementLabels","area","bufferArea","perimiter","diameter","leafletDraw","numeric","delimiters","thousands","decimal","draw","toolbar","actions","finish","undo","buttons","circle","circlemarker","handlers","tooltip","start","radius","cont","end","simpleshape","save","clearAll","editDisabled","remove","removeDisabled","subtext","leafletZoomHome","zoomInTitle","zoomOutTitle","zoomHomeTitle","en","da","useContext","LocaleContext","query","string","encodeURIComponent","_config","nowRoot","azureRoot","objToQuery","projects","project","projectSlugOrID","beforeEndpoint","projectID","afterEndpoint","ticket","printStatusEndpoint","exif","exifURL","capture","LabelSizes","small","labelKey","baseSize","hideAtZoom","medium","large","_extends","assign","i","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref2","createElement","d","_ref3","_ref","svgRef","y","viewBox","enableBackground","xmlSpace","ref","ForwardRef","forwardRef","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","transform","cx","cy","rx","ry","width","height","ddk","ddkLogo","logoNegative","url","kortomatic","kortomaticLogo","multidroner","multidronerLogo","multidronerLogoNegative","defaultValue","parser","setValue","useId","initialValue","clearOnClose","storageMethod","parse","log","storedValue","setStoredValue","valueToStore","Function","setItem","dayjs","extend","dayjsRelativeTime","createContext","LocaleProvider","children","cc","join","useMemo","formatRelativeTime","epoch","isNotToday","isBefore","startOf","fromNow","UserContext","useUser","counter","displayedLogo","disableLogoLink","imgProps","useTheme","matchesSmall","useMediaQuery","breakpoints","up","fillColor","rel","display","dangerouslySetInnerHTML","__html"],"mappings":"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","file":"static/js/main.4bb7d25d.chunk.js","sourcesContent":["import 'typeface-roboto'\r\nimport { grey } from '@material-ui/core/colors'\r\n\r\nexport default {\r\n palette: {\r\n primary: {\r\n main: grey[900],\r\n },\r\n secondary: {\r\n main: '#3D5A65',\r\n },\r\n },\r\n}\r\n","import { getTimeFromISODate } from './sort-items-by-iso-date'\r\nimport { defaultLocale } from '../l10n'\r\n\r\nconst formatDate = (date, { locale = defaultLocale }) => {\r\n if (typeof date === 'string' || typeof date === 'number') {\r\n const dateObj =\r\n typeof date === 'number' ? new Date(date) : getTimeFromISODate(date)\r\n return new Intl.DateTimeFormat(locale).format(dateObj)\r\n } else return false\r\n}\r\n\r\nexport default formatDate\r\n","export const getTimeFromISODate = dateString => {\r\n if (dateString === 1) return new Date()\r\n else if (dateString === 0) return new Date(0)\r\n else if (!dateString) throw Error('no date specified')\r\n const dateSplit = dateString.split('-')\r\n if (dateSplit.length !== 3)\r\n throw Error(\r\n `invalid date, should be ISO date: YYYY-MM-DD or null for old, received: ${dateString}`\r\n )\r\n if (dateSplit[0].length !== 4)\r\n throw Error('year should be of the format YYYY')\r\n if (dateSplit[1].length !== 2) throw Error('month should be of the format MM')\r\n if (dateSplit[2].length !== 2) throw Error('date should be of the format DD')\r\n const [year, month, date] = dateString.split('-').map(Number)\r\n return new Date(year, month - 1, date)\r\n}\r\n\r\nconst sortItemsByISODate = (s1, s2) => {\r\n return getTimeFromISODate(s2.date) - getTimeFromISODate(s1.date)\r\n}\r\n\r\nexport default sortItemsByISODate\r\n","import React, { useState } from 'react'\r\nimport useLocale from '../hooks/use-locale'\r\nimport { Menu, MenuItem, Button, Tooltip, Box } from '@material-ui/core'\r\nimport LanguageIcon from '@material-ui/icons/Language'\r\n\r\nfunction LocaleSelect() {\r\n const { strings, locale, locales, setLocale } = useLocale()\r\n const [anchorEl, setAnchorEl] = useState(null)\r\n\r\n function handleClick(event) {\r\n setAnchorEl(event.currentTarget)\r\n }\r\n\r\n function handleClose() {\r\n setAnchorEl(null)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {locale}\r\n \r\n \r\n \r\n {locales.map(localeEntry => (\r\n {\r\n setLocale(localeEntry)\r\n handleClose()\r\n }\r\n })}>\r\n {localeEntry.toUpperCase()}\r\n \r\n ))}\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nexport default LocaleSelect\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 http://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.1/8 is 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 http://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 http://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 .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 {\r\n Button,\r\n Checkbox,\r\n CircularProgress,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n FormControlLabel,\r\n Grid,\r\n TextField,\r\n Typography,\r\n LinearProgress,\r\n Collapse,\r\n Box,\r\n FormHelperText,\r\n DialogContentText\r\n} from '@material-ui/core'\r\n\r\nimport { makeStyles } from '@material-ui/styles'\r\nimport SignInIcon from '@material-ui/icons/LockOpen'\r\nimport React, { useState, useEffect, Suspense, useRef } from 'react'\r\nimport sha1 from 'sha1'\r\nimport { SERVER_ERROR, INVALID_CREDENTIALS } from '../constants'\r\nimport UserContext from './../helpers/user-context'\r\nimport getQueryParameters from '../helpers/get-query-parameters'\r\nimport useInput from '../hooks/use-input'\r\nimport useLocalStorage from '../hooks/use-local-storage'\r\nimport useLocale from '../hooks/use-locale'\r\nimport { captureException } from '@sentry/core'\r\nimport { authFlows } from '../constants'\r\nimport LocaleSelect from './LocaleSelect'\r\n\r\nwindow._HASH = sha1\r\nwindow.localStorage.removeItem('pass')\r\n\r\nconst postFetch = (endpoint, { body = null, ...options } = {}) =>\r\n new Promise((resolve, reject) => {\r\n fetch(endpoint, {\r\n method: 'post',\r\n ...options,\r\n ...(body ? { body: JSON.stringify(body) } : {})\r\n })\r\n .then(resolve)\r\n .catch(reason => {\r\n captureException(reason)\r\n reject(SERVER_ERROR)\r\n })\r\n })\r\n\r\nconst checkCredentials = async (userEndpoint, body) => {\r\n const users = await postFetch(userEndpoint(), {\r\n body\r\n }).then(response => response.json())\r\n if (!users || users.length === 0) {\r\n throw INVALID_CREDENTIALS\r\n } else {\r\n return users[0]\r\n }\r\n}\r\n\r\n// const checkCredentials = (userEndpoint, body) => {\r\n// return new Promise((resolve, reject) => {\r\n// postFetch(userEndpoint(), {\r\n// body\r\n// })\r\n// .then(response => response.json())\r\n// .then(users => {\r\n// if (!users || users.length === 0) {\r\n// reject(INVALID_CREDENTIALS)\r\n// } else {\r\n// resolve(users[0])\r\n// }\r\n// })\r\n// })\r\n// }\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n backgroundColor: 'white',\r\n overflow: 'hidden'\r\n },\r\n fieldWrapper: {\r\n flexGrow: 1\r\n },\r\n versionCaption: {\r\n marginLeft: theme.spacing(2),\r\n marginRight: theme.spacing(2)\r\n },\r\n loadingIndicator: {\r\n margin: theme.spacing(1)\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(1)\r\n },\r\n marginRight: {\r\n marginRight: theme.spacing(1)\r\n }\r\n}))\r\n\r\nconst urlHasSlug =\r\n window.location.hash.length > 0 &&\r\n window.location.hash.includes('/project/') &&\r\n window.location.hash.split('/')[2] &&\r\n /^[a-zA-Z]/.test(window.location.hash.split('/')[2])\r\n\r\nfunction Auth(props) {\r\n const { strings } = useLocale()\r\n const [isOpen, setIsOpen] = useState(true)\r\n const [activeFlow, setFlow] = useState(() =>\r\n getQueryParameters().ptoken ? authFlows.CHANGE_PASSWORD : authFlows.SIGN_IN\r\n )\r\n\r\n const [errorMessage, setErrorMessage] = useState(null)\r\n const [hasAttempted, setHasAttempted] = useState(false)\r\n const [showInputs, setShowInputs] = useState(true)\r\n const [isLoading, setIsLoading] = useState(false)\r\n\r\n const newPasswordProps = {\r\n ...useInput(''),\r\n inputRef: useRef(),\r\n onKeyUp: function handleKeyUpNewPassword(e) {\r\n if (e.key === 'Enter') {\r\n if (newPasswordProps.value.trim().length > 0)\r\n passwordProps.inputRef.current &&\r\n // @ts-ignore\r\n passwordProps.inputRef.current.focus()\r\n }\r\n }\r\n }\r\n\r\n const passwordProps = {\r\n ...useInput(''),\r\n inputRef: useRef(),\r\n onKeyUp: function handleKeyUpPass(e) {\r\n if (e.key === 'Enter') {\r\n if (\r\n (passwordProps.value.length > 0 &&\r\n activeFlow !== authFlows.CHANGE_PASSWORD) ||\r\n [passwordProps, newPasswordProps].every(\r\n ({ value: { length } }) =>\r\n length > 0 &&\r\n passwordProps.value.trim() === newPasswordProps.value.trim()\r\n )\r\n ) {\r\n handleSubmit()\r\n }\r\n }\r\n }\r\n }\r\n useEffect(() => {\r\n if (\r\n [passwordProps.value, newPasswordProps.value].every(\r\n ({ length }) => length > 0\r\n ) &&\r\n activeFlow === authFlows.CHANGE_PASSWORD\r\n ) {\r\n if (passwordProps.value.trim() === newPasswordProps.value.trim()) {\r\n setErrorMessage(null)\r\n setHasAttempted(false)\r\n } else {\r\n setErrorMessage(strings.messages.repeatedPasswordDifferent)\r\n setHasAttempted(true)\r\n }\r\n }\r\n }, [passwordProps.value, newPasswordProps.value, activeFlow])\r\n\r\n const usernameProps = {\r\n ...useInput(''),\r\n inputRef: useRef(),\r\n onKeyUp: function handleKeyUpUser(e) {\r\n if (e.key === 'Enter') {\r\n if (activeFlow === authFlows.REQUEST_PASSWORD_CHANGE) handleSubmit()\r\n else if (usernameProps.value.trim().length > 0)\r\n passwordProps.inputRef.current &&\r\n // @ts-ignore\r\n passwordProps.inputRef.current.focus()\r\n }\r\n }\r\n }\r\n const rememberMeProps = useInput(false, v => Boolean(v))\r\n\r\n const [user, setUser] = useLocalStorage(\r\n 'user',\r\n null,\r\n !rememberMeProps.value && !window.localStorage.getItem('user')\r\n )\r\n\r\n const classes = useStyles(props)\r\n\r\n const signOut = () => {\r\n setUser(null)\r\n setIsOpen(true)\r\n setIsOpen(false)\r\n usernameProps.onChange({ target: { value: '' } })\r\n passwordProps.onChange({ target: { value: '' } })\r\n rememberMeProps.onChange({ target: { value: false } })\r\n setHasAttempted(false)\r\n setIsLoading(false)\r\n setErrorMessage(null)\r\n\r\n window.history.pushState({}, window.document.title, './')\r\n window.location.reload()\r\n }\r\n useEffect(() => {\r\n if (getQueryParameters().token) {\r\n handleServerUser({\r\n Token: getQueryParameters().token\r\n })\r\n } else {\r\n if (user && typeof user === 'object') {\r\n handleServerUser(user)\r\n }\r\n\r\n if (usernameProps.value.trim()) {\r\n setIsOpen(false)\r\n checkCredentials(props.endpoint, {\r\n un: usernameProps.value.trim(),\r\n pw: passwordProps.value.trim()\r\n })\r\n .then(handleServerUser)\r\n .catch(e => {\r\n if (e === SERVER_ERROR) setUser(null)\r\n setIsOpen(true)\r\n setErrorMessage(strings.errors[e])\r\n })\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n const handleServerUser = serverUser => {\r\n setIsOpen(false)\r\n setUser(serverUser)\r\n setIsLoading(false)\r\n if (typeof props.onAuthenticated === 'function')\r\n props.onAuthenticated(serverUser)\r\n }\r\n const handleSubmit = () => {\r\n setIsLoading(true)\r\n const hash = new URL(window.location.href).searchParams.get('pass')\r\n ? new URL(window.location.href).searchParams.get('pass')\r\n : sha1(passwordProps.value.trim())\r\n\r\n const submitters = {\r\n [authFlows.SIGN_IN]: () =>\r\n checkCredentials(props.endpoint, {\r\n un: usernameProps.value.trim(),\r\n pw: hash\r\n }).then(user => handleServerUser(user)),\r\n [authFlows.REQUEST_PASSWORD_CHANGE]: () =>\r\n postFetch(props.requestPasswordChangeEndpoint(), {\r\n body: {\r\n email: usernameProps.value.trim(),\r\n clientPath: window.location.origin + window.location.pathname\r\n }\r\n })\r\n .then(r => r.text())\r\n .then(() => setFlow(authFlows.PASSWORD_CHANGE_REQUESTED))\r\n .finally(() => {\r\n setIsLoading(false)\r\n }),\r\n [authFlows.CHANGE_PASSWORD]: () =>\r\n postFetch(props.changePasswordEndpoint(), {\r\n body: {\r\n pToken: getQueryParameters().ptoken,\r\n clientPath: window.location.origin + window.location.pathname,\r\n password: sha1(newPasswordProps.value.trim())\r\n }\r\n })\r\n .then(r => r.json())\r\n .then(({ PasswordChanged }) => {\r\n if (!PasswordChanged) {\r\n setHasAttempted(true)\r\n setErrorMessage(strings.errors[SERVER_ERROR])\r\n } else {\r\n setFlow(authFlows.PASSWORD_CHANGED)\r\n }\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n const submitPromise = submitters[activeFlow]()\r\n\r\n submitPromise.catch(e => {\r\n setIsOpen(true)\r\n setHasAttempted(true)\r\n setIsLoading(false)\r\n setErrorMessage(strings.errors[e])\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n let isCanceled = false\r\n\r\n if (getQueryParameters().ptoken) {\r\n setIsLoading(true)\r\n setShowInputs(false)\r\n setErrorMessage(strings.messages.verifyingToken)\r\n postFetch(props.checkPTokenEndpoint(), {\r\n body: {\r\n pToken: getQueryParameters().ptoken,\r\n clientPath: window.location.origin + window.location.pathname\r\n }\r\n })\r\n .then(r => r.json())\r\n .then(({ pTokenValid }) => {\r\n if (!isCanceled) {\r\n if (pTokenValid) {\r\n setShowInputs(true)\r\n setErrorMessage(null)\r\n } else {\r\n setFlow(authFlows.INVALID_LINK)\r\n setErrorMessage(' ')\r\n return\r\n }\r\n }\r\n })\r\n .finally(() => setIsLoading(false))\r\n }\r\n return () => {\r\n isCanceled = true\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n const App = props.app\r\n return user || urlHasSlug || getQueryParameters().token ? (\r\n }>\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n
{props.logo}
\r\n \r\n {strings.labels.welcomeTo}\r\n \r\n {strings.appTitle}\r\n \r\n v{props.version}\r\n \r\n \r\n
\r\n \r\n \r\n {strings.messages.howToResetPassword}\r\n \r\n \r\n {Object.keys(authFlows)\r\n .map(flow => [\r\n flow,\r\n errorMessage !== null && strings.messages[flow].error\r\n ? strings.messages[flow].error\r\n : strings.messages[flow].helper\r\n ])\r\n .filter(([, message]) => Boolean(message))\r\n .map(([flow, message]) => (\r\n \r\n \r\n {message}\r\n \r\n \r\n ))}\r\n \r\n \r\n {strings.labels.loginDescription}\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\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {...rememberMeProps}\r\n label={strings.labels.rememberMe}\r\n />\r\n \r\n \r\n \r\n {hasAttempted ? errorMessage || strings.labels.anErrorOccured : ''}\r\n \r\n
\r\n \r\n \r\n {\r\n setShowInputs(true)\r\n setErrorMessage(null)\r\n setHasAttempted(null)\r\n passwordProps.onChange({ target: { value: '' } })\r\n newPasswordProps.onChange({ target: { value: '' } })\r\n passwordProps.onChange({ target: { value: '' } })\r\n setShowInputs(true)\r\n switch (activeFlow) {\r\n case authFlows.PASSWORD_CHANGED:\r\n case authFlows.REQUEST_PASSWORD_CHANGE:\r\n case authFlows.PASSWORD_CHANGE_REQUESTED:\r\n setFlow(authFlows.SIGN_IN)\r\n return\r\n\r\n case authFlows.SIGN_IN:\r\n setFlow(authFlows.REQUEST_PASSWORD_CHANGE)\r\n return\r\n\r\n default:\r\n setErrorMessage(strings.labels.anErrorOccured)\r\n captureException(new Error('unhandled state'))\r\n throw Error('unhandled state')\r\n }\r\n }\r\n })}>\r\n {activeFlow === authFlows.SIGN_IN\r\n ? strings.labels.forgotPassword\r\n : strings.labels.goBack}\r\n \r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n \r\n x.length === 0)\r\n : activeFlow === authFlows.CHANGE_PASSWORD\r\n ? [\r\n newPasswordProps.value.trim(),\r\n passwordProps.value.trim()\r\n ].some(x => x.length === 0) ||\r\n isLoading ||\r\n errorMessage !== null\r\n : true\r\n }>\r\n {activeFlow === authFlows.SIGN_IN && (\r\n \r\n )}\r\n {activeFlow === authFlows.REQUEST_PASSWORD_CHANGE\r\n ? strings.labels.continue\r\n : activeFlow === authFlows.CHANGE_PASSWORD\r\n ? strings.labels.changePassword\r\n : strings.labels.signIn}\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 Auth\r\n","import { useEffect } from 'react'\r\nimport useLocale from '../hooks/use-locale'\r\nimport logos from '../helpers/logos'\r\nimport { getConfig } from '../constants'\r\n\r\nfunction Title() {\r\n const { strings } = useLocale()\r\n\r\n useEffect(() => {\r\n document.title = `${strings.appTitle} - ${logos[getConfig().logo].name}`\r\n })\r\n\r\n return null\r\n}\r\n\r\nexport default Title\r\n","import { createMuiTheme } from '@material-ui/core'\r\nimport { ThemeProvider } from '@material-ui/styles'\r\nimport React, { lazy } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport './index.css'\r\nimport * as serviceWorker from './serviceWorker'\r\nimport theme from './styles/theme'\r\nimport Auth from './components/Auth'\r\nimport { Endpoints, setConfig, getConfig } from './constants'\r\nimport pkg from './../package.json'\r\nimport localeStrings, { defaultLocale, locales } from './l10n'\r\nimport Logo from './components/Logo'\r\nimport { init as SentryInit, captureException } from '@sentry/browser'\r\nimport { LocaleProvider } from './helpers/locale'\r\nimport logos from './helpers/logos'\r\nimport Title from './components/Title'\r\n\r\nif (process.env.NODE_ENV === 'production')\r\n SentryInit({\r\n dsn: 'https://d1631fa6ad3a40a9935524c48481d4c5@sentry.io/1421412',\r\n release: pkg.version,\r\n environment: process.env.NODE_ENV,\r\n })\r\n\r\nwindow.addEventListener('unhandledrejection', (e) => {\r\n console.error('unhandledrejection')\r\n captureException(e.reason)\r\n})\r\n\r\nconst AsyncApp = lazy(() => import('./App'))\r\n\r\nfetch('config.json')\r\n .then((r) => r.json())\r\n .then((config) => setConfig(config))\r\n .then(() =>\r\n ReactDOM.render(\r\n \r\n \r\n \r\n <Auth\r\n app={AsyncApp}\r\n logo={<Logo logoType=\"light\" negative={true} />}\r\n endpoint={Endpoints.user}\r\n requestPasswordChangeEndpoint={Endpoints.requestPasswordChange}\r\n changePasswordEndpoint={Endpoints.changePassword}\r\n checkPTokenEndpoint={Endpoints.checkPToken}\r\n version={pkg.version}\r\n />\r\n </LocaleProvider>\r\n </ThemeProvider>,\r\n document.getElementById('root')\r\n )\r\n )\r\n\r\nserviceWorker.unregister()\r\n","const getQueryParameters = () => {\r\n return [...new URL(window.location).searchParams.entries()].reduce(\r\n (obj, [key, value]) => ({ ...obj, [key]: value }),\r\n {}\r\n )\r\n}\r\n\r\nexport default getQueryParameters\r\n","import {\r\n ViewModes,\r\n authFlows,\r\n INVALID_CREDENTIALS,\r\n SERVER_ERROR\r\n} from '../constants'\r\n\r\nexport default {\r\n appTitle: 'Ortomatic',\r\n messages: {\r\n '404': 'Siden blev ikke fundet, eller også har du ikke adgang til den.',\r\n howToResetPassword:\r\n 'For at nulstille din adgangskode, indtast din email adresse',\r\n repeatedPasswordDifferent: 'Adgangskoderne er ikke ens. ',\r\n inputNewPassword: 'Indtast din nye adgangskode',\r\n verifyingToken: 'Verificerer...',\r\n [authFlows.SIGN_IN]: {},\r\n [authFlows.CHANGE_PASSWORD]: {\r\n helper: 'Indtast din nye adgangskode'\r\n },\r\n [authFlows.PASSWORD_CHANGED]: {\r\n helper:\r\n 'Adgangskoden blev skiftet. Du kan nu logge ind med den nye adgangskode'\r\n },\r\n [authFlows.PASSWORD_CHANGE_REQUESTED]: {\r\n helper:\r\n 'Vi har sendt dig en mail med et link til at nulstille dit password. Hvis du ikke kan finde mailen, så kig i mappen med spam eller uønsket post.'\r\n },\r\n [authFlows.REQUEST_PASSWORD_CHANGE]: {\r\n helper: 'Indtast din nye adgangskode'\r\n },\r\n [authFlows.INVALID_LINK]: {\r\n error: 'Ugyldigt link'\r\n }\r\n },\r\n today: 'I dag',\r\n labels: {\r\n permanentBaseLayers: ['Vejkort (OSM)', 'Vejkort (SDFE)', 'Satellit (SDFE)'],\r\n sizeSmall: 'Lille',\r\n sizeMedium: 'Normal',\r\n sizeLarge: 'Stor',\r\n print: 'Udskriv',\r\n language: 'Sprog',\r\n settings: 'Indstillinger',\r\n goBack: 'Tilbage',\r\n changePassword: 'Skift adgangskode',\r\n newPassword: 'Ny adgangskode',\r\n repeatPassword: 'Gentag adgangskode',\r\n forgotPassword: 'Glemt adgangskode?',\r\n email: 'E-mail',\r\n continue: 'Fortsæt',\r\n format: 'Filformat',\r\n retry: 'Forsøg igen',\r\n resetPrintArea: 'Nulstil',\r\n printComplete: 'oprettet',\r\n labelSize: 'Etiketstørrelse',\r\n limitPassed: 'Grænse for printområde overskredet',\r\n selectPrintArea: 'Vælg printområde i kortet ved at justere firkanten.',\r\n fillOpacity: 'Gennemsigtighed',\r\n printFailed: 'Oprettelse af PDF mislykkedes',\r\n printSettings: 'Printindstillinger',\r\n loading: 'Indlæser',\r\n generatingPrint: 'Opretter',\r\n size: 'Størrelse',\r\n zoomLevel: 'Zoomniveau',\r\n scale: 'Skalering',\r\n filename: 'Filnavn',\r\n downloafPDF: 'Download',\r\n viewPDF: 'Vis PDF',\r\n welcomeTo: 'Velkommen til',\r\n signIn: 'Log ind',\r\n signOut: 'Log ud',\r\n rememberMe: 'Husk mig',\r\n username: 'Brugernavn',\r\n password: 'Adgangskode',\r\n archive: 'Arkiv',\r\n welcome: 'Velkommen',\r\n yourProjects: 'Dine projekter',\r\n archivedProjects: 'Arkiverede projekter',\r\n layerSelects: ['Venstre lag', 'Højre lag'],\r\n shapes: {\r\n label: 'Etiket',\r\n marker: 'ikon',\r\n rectangle: 'polygon',\r\n polyline: 'linje',\r\n polygon: 'polygon'\r\n },\r\n lastChanged: 'Sidst ændret',\r\n drawLayer: 'Tegningslag',\r\n addLabel: 'Indsæt etiket',\r\n uploadPhoto: 'Upload billede',\r\n markerIcon: 'Ikon',\r\n bufferRadius: 'Radius',\r\n allProjects: 'Alle projekter',\r\n color: 'Farve',\r\n delete: 'Slet',\r\n edit: 'Rediger',\r\n selected: 'valgt',\r\n editFeature: 'Flyt',\r\n cancelEdits: 'Fortryd ændringer',\r\n applyEdits: 'Anvend',\r\n savePDF: 'Gem PDF',\r\n cancel: 'Fortryd',\r\n title: 'Titel',\r\n close: 'Luk',\r\n chooseContentAndLayers: 'Visning',\r\n applyLayerModalChanges: 'Anvend ændringer',\r\n OverlayLayers: 'Lag',\r\n BaseLayers: 'Underlag',\r\n [ViewModes.TRANSPARENCY_MODE]: 'Gennemsigtig',\r\n [ViewModes.SIDE_BY_SIDE_MODE]: 'Side om side',\r\n compareLayers: 'Sammenlign lag',\r\n selectVisibleLayers: 'Vælg lag',\r\n view: 'Vis',\r\n swapLayers: 'Byt om på lag',\r\n clickToEditLabel: 'Klik for at ændre etiket',\r\n displayBaseLayers: 'Dronefotos',\r\n displayPermanentBaseLayers: 'Baggrundskort',\r\n revision: 'Historik',\r\n namePDF: 'Navngiv',\r\n anErrorOccured: 'Der opstod en fejl',\r\n featureProperties: {\r\n appearance: 'Udseende',\r\n measurements: 'Beregninger'\r\n },\r\n reload: 'Genindlæs',\r\n goHome: 'Gå til forsiden',\r\n details: 'Detaljer',\r\n undo: 'Fortryd',\r\n redo: 'Annuler fortryd',\r\n version: 'Version'\r\n },\r\n measurementLabels: {\r\n area: 'Areal',\r\n bufferArea: 'Areal med buffer',\r\n length: 'Længde',\r\n perimiter: 'Omkreds',\r\n diameter: 'Diameter'\r\n },\r\n errors: {\r\n [INVALID_CREDENTIALS]: 'Forkert brugernavn eller adgangskode',\r\n [SERVER_ERROR]: 'Kunne ikke forbinde til serveren'\r\n },\r\n leafletDraw: {\r\n format: {\r\n numeric: {\r\n delimiters: {\r\n thousands: '.',\r\n decimal: ','\r\n }\r\n }\r\n },\r\n draw: {\r\n toolbar: {\r\n actions: {\r\n title: 'Annuller tegning',\r\n text: 'Annuller'\r\n },\r\n finish: {\r\n title: 'Afslut tegning',\r\n text: 'Afslut'\r\n },\r\n undo: {\r\n title: 'Slet sidst tegnede punkt',\r\n text: 'Slet sidste punkt'\r\n },\r\n buttons: {\r\n polyline: 'Tegn linje',\r\n polygon: 'Tegn polygon',\r\n rectangle: 'Tegn firkant',\r\n circle: 'Tegn cirkel',\r\n marker: 'Indsæt ikon',\r\n circlemarker: 'Tegn cirkelmarkør'\r\n }\r\n },\r\n handlers: {\r\n circle: {\r\n tooltip: {\r\n start: 'Klik og træk for at tegne cirkel.'\r\n },\r\n radius: 'Radius'\r\n },\r\n circlemarker: {\r\n tooltip: {\r\n start: 'Klik på kortet for at placere cirkelmarkør.'\r\n }\r\n },\r\n marker: {\r\n tooltip: {\r\n start: 'Klik på kortet for at placere ikon.'\r\n }\r\n },\r\n polygon: {\r\n tooltip: {\r\n start: 'Klik for at starte tegning af figur.',\r\n cont: 'Klik for at fortsætte tegning af figur.',\r\n end: 'Klik første punkt for at lukke denne figur.'\r\n }\r\n },\r\n polyline: {\r\n error:\r\n '<strong>Fejl:</strong> Figurens kanter må ikke krydse hinanden!',\r\n tooltip: {\r\n start: 'Klik for at starte tegning af linje.',\r\n cont: 'Klik for at fortsætte tegning af linje.',\r\n end: 'Klik sidste punkt for at færdiggøre linje.'\r\n }\r\n },\r\n rectangle: {\r\n tooltip: {\r\n start: 'Klik og træk for at tegne firkant.'\r\n }\r\n },\r\n simpleshape: {\r\n tooltip: {\r\n end: 'Slip musen for at færdiggøre tegning.'\r\n }\r\n }\r\n }\r\n },\r\n edit: {\r\n toolbar: {\r\n actions: {\r\n save: {\r\n title: 'Gem ændringer',\r\n text: 'Gem'\r\n },\r\n cancel: {\r\n title: 'Annuller redigering, fjerner alle ændringer',\r\n text: 'Annuller'\r\n },\r\n clearAll: {\r\n title: 'Ryd alle lag',\r\n text: 'Ryd alt'\r\n }\r\n },\r\n buttons: {\r\n edit: 'Rediger lag',\r\n editDisabled: 'Ingen lag at redigere',\r\n remove: 'Slet lag',\r\n removeDisabled: 'Ingen lag kan redigeres'\r\n }\r\n },\r\n handlers: {\r\n edit: {\r\n tooltip: {\r\n text: 'Træk i håndtag eller ikoner for at redigere.',\r\n subtext: 'Klik på Anvend for at gemme ændringer.'\r\n }\r\n },\r\n remove: {\r\n tooltip: {\r\n text: 'Klik på en funktion for at fjerne den.'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n leafletZoomHome: {\r\n zoomInTitle: 'Zoom ind',\r\n zoomOutTitle: 'Zoom ud',\r\n zoomHomeTitle: 'Hjem (mellemrum)'\r\n }\r\n}\r\n","import {\r\n ViewModes,\r\n authFlows,\r\n INVALID_CREDENTIALS,\r\n SERVER_ERROR\r\n} from './../constants'\r\n\r\nexport default {\r\n appTitle: 'Ortomatic',\r\n messages: {\r\n '404': 'The page was either not found or you do not have access to it.',\r\n howToResetPassword:\r\n 'To reset your password please enter your email address.',\r\n repeatedPasswordDifferent: 'Passwords do not match',\r\n inputNewPassword: 'Enter your new password',\r\n verifyingToken: 'Verifying ...',\r\n [authFlows.SIGN_IN]: {},\r\n [authFlows.CHANGE_PASSWORD]: {\r\n helper: 'Enter your new password'\r\n },\r\n [authFlows.PASSWORD_CHANGED]: {\r\n helper: 'Password changed. You can now sign in with your new password'\r\n },\r\n [authFlows.PASSWORD_CHANGE_REQUESTED]: {\r\n helper:\r\n 'An email has been sent to you with a link to change password. If you cannot find the email, see if it ended up in your spam folder.'\r\n },\r\n [authFlows.REQUEST_PASSWORD_CHANGE]: {\r\n // helper: 'Enter your new password'\r\n },\r\n [authFlows.INVALID_LINK]: {\r\n error: 'Invalid link'\r\n }\r\n },\r\n today: 'Today',\r\n labels: {\r\n permanentBaseLayers: [\r\n 'Streetmap (OSM)',\r\n 'Streetmap (SDFE)',\r\n 'Satellite (SDFE)'\r\n ],\r\n sizeSmall: 'Small',\r\n sizeMedium: 'Medium',\r\n sizeLarge: 'Large',\r\n print: 'Print',\r\n language: 'Language',\r\n settings: 'Settings',\r\n goBack: 'Go back',\r\n changePassword: 'Change password',\r\n newPassword: 'New password',\r\n repeatPassword: 'Repeat password',\r\n forgotPassword: 'Forgot password?',\r\n email: 'E-mail',\r\n continue: 'Continue',\r\n format: 'File format',\r\n retry: 'Try again',\r\n resetPrintArea: 'Reset',\r\n printComplete: 'created',\r\n labelSize: 'Label size',\r\n limitPassed: 'Limit for print area exceeded',\r\n selectPrintArea: 'Select print area in the map by adjusting the rectangle.',\r\n fillOpacity: 'Opacity',\r\n printFailed: 'PDF creation failed',\r\n printSettings: 'Print settings',\r\n loading: 'Loading',\r\n generatingPrint: 'Generating',\r\n size: 'Size',\r\n zoomLevel: 'Zoom level',\r\n scale: 'Scale',\r\n filename: 'File name',\r\n downloafPDF: 'Download',\r\n viewPDF: 'Show PDF',\r\n welcomeTo: 'Welcome to',\r\n signIn: 'Login',\r\n signOut: 'Sign out',\r\n rememberMe: 'Remember me',\r\n username: 'Username',\r\n password: 'Password',\r\n archive: 'Archive',\r\n welcome: 'Welcome',\r\n yourProjects: 'Your projects',\r\n archivedProjects: 'Archived projects',\r\n layerSelects: ['Left layer', 'Right layer'],\r\n shapes: {\r\n label: 'Label',\r\n marker: 'icon',\r\n rectangle: 'polygon',\r\n polyline: 'line',\r\n polygon: 'polygon'\r\n },\r\n lastChanged: 'Last changed',\r\n drawLayer: 'Drawing layer',\r\n addLabel: 'Add label',\r\n uploadPhoto: 'Upload picture',\r\n markerIcon: 'Icon',\r\n bufferRadius: 'Radius',\r\n allProjects: 'All projects',\r\n color: 'Color',\r\n delete: 'Delete',\r\n edit: 'Edit',\r\n selected: 'selected',\r\n editFeature: 'Move',\r\n cancelEdits: 'Undo changes',\r\n applyEdits: 'Apply',\r\n savePDF: 'Save PDF',\r\n cancel: 'Cancel',\r\n title: 'Title',\r\n close: 'Close',\r\n chooseContentAndLayers: 'View',\r\n applyLayerModalChanges: 'Apply Changes',\r\n OverlayLayers: 'Layer',\r\n BaseLayers: 'Base layers',\r\n [ViewModes.TRANSPARENCY_MODE]: 'Transparency',\r\n [ViewModes.SIDE_BY_SIDE_MODE]: 'Side-by-side',\r\n compareLayers: 'Compare layers',\r\n selectVisibleLayers: 'Choose layers',\r\n view: 'Show',\r\n swapLayers: 'Swap layers',\r\n clickToEditLabel: 'Click to change label',\r\n displayBaseLayers: 'Drone pictures',\r\n displayPermanentBaseLayers: 'Background map',\r\n revision: 'History',\r\n namePDF: 'Name',\r\n anErrorOccured: 'An error occured',\r\n featureProperties: {\r\n appearance: 'Appearence',\r\n measurements: 'Calculations'\r\n },\r\n reload: 'Reload',\r\n goHome: 'Go to frontpage',\r\n details: 'Details',\r\n undo: 'Undo',\r\n redo: 'Redo',\r\n version: 'Version'\r\n },\r\n measurementLabels: {\r\n area: 'Area',\r\n bufferArea: 'Area with buffer',\r\n length: 'Length',\r\n perimiter: 'Perimiter',\r\n diameter: 'Diameter'\r\n },\r\n errors: {\r\n [INVALID_CREDENTIALS]: 'Invalid username or password',\r\n [SERVER_ERROR]: 'Cannot connect to server'\r\n },\r\n leafletDraw: {\r\n draw: {\r\n toolbar: {\r\n actions: {\r\n title: 'Cancel drawing',\r\n text: 'Cancel'\r\n },\r\n finish: {\r\n title: 'Finish drawing',\r\n text: 'Finish'\r\n },\r\n undo: {\r\n title: 'Delete last point drawn',\r\n text: 'Delete last point'\r\n },\r\n buttons: {\r\n polyline: 'Draw a polyline',\r\n polygon: 'Draw a polygon',\r\n rectangle: 'Draw a rectangle',\r\n circle: 'Draw a circle',\r\n marker: 'Draw a marker',\r\n circlemarker: 'Draw a circlemarker'\r\n }\r\n },\r\n handlers: {\r\n circle: {\r\n tooltip: {\r\n start: 'Click and drag to draw circle.'\r\n },\r\n radius: 'Radius'\r\n },\r\n circlemarker: {\r\n tooltip: {\r\n start: 'Click map to place circle marker.'\r\n }\r\n },\r\n marker: {\r\n tooltip: {\r\n start: 'Click map to place marker.'\r\n }\r\n },\r\n polygon: {\r\n tooltip: {\r\n start: 'Click to start drawing shape.',\r\n cont: 'Click to continue drawing shape.',\r\n end: 'Click first point to close this shape.'\r\n }\r\n },\r\n polyline: {\r\n error: '<strong>Error:</strong> shape edges cannot cross!',\r\n tooltip: {\r\n start: 'Click to start drawing line.',\r\n cont: 'Click to continue drawing line.',\r\n end: 'Click last point to finish line.'\r\n }\r\n },\r\n rectangle: {\r\n tooltip: {\r\n start: 'Click and drag to draw rectangle.'\r\n }\r\n },\r\n simpleshape: {\r\n tooltip: {\r\n end: 'Release mouse to finish drawing.'\r\n }\r\n }\r\n }\r\n },\r\n edit: {\r\n toolbar: {\r\n actions: {\r\n save: {\r\n title: 'Save changes',\r\n text: 'Save'\r\n },\r\n cancel: {\r\n title: 'Cancel editing, discards all changes',\r\n text: 'Cancel'\r\n },\r\n clearAll: {\r\n title: 'Clear all layers',\r\n text: 'Clear All'\r\n }\r\n },\r\n buttons: {\r\n edit: 'Edit layers',\r\n editDisabled: 'No layers to edit',\r\n remove: 'Delete layers',\r\n removeDisabled: 'No layers to delete'\r\n }\r\n },\r\n handlers: {\r\n edit: {\r\n tooltip: {\r\n text: 'Drag handles or markers to edit features.',\r\n subtext: 'Click cancel to undo changes.'\r\n }\r\n },\r\n remove: {\r\n tooltip: {\r\n text: 'Click on a feature to remove.'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n leafletZoomHome: {\r\n zoomInTitle: 'Zoom in',\r\n zoomOutTitle: 'Zoom out',\r\n zoomHomeTitle: 'Home (spacebar)'\r\n }\r\n}\r\n","import da from './da'\r\nimport en from './en'\r\n\r\nconst localeStrings = {\r\n en,\r\n da\r\n}\r\n\r\nexport const locales = Object.keys(localeStrings)\r\nexport const defaultLocale = locales[0]\r\n\r\nexport default localeStrings\r\n","import { useContext } from 'react'\r\nimport { LocaleContext } from '../helpers/locale'\r\n\r\nfunction useLocale() {\r\n return useContext(LocaleContext)\r\n}\r\n\r\nexport default useLocale\r\n","function query(query) {\r\n return Object.entries(query).reduce((string, [key, value]) => {\r\n return `${string}${string === '?' ? '' : '&'}${key}=${encodeURIComponent(\r\n value\r\n )}`\r\n }, '?')\r\n}\r\n\r\nexport default query\r\n","import pkg from './../../package.json'\r\nimport objToQuery from './../helpers/query.js'\r\n\r\nlet config\r\n\r\nexport const setConfig = (_config) => {\r\n config = _config\r\n}\r\n\r\nexport function getConfig() {\r\n return config\r\n}\r\n\r\nconst nowRoot =\r\n window.location.origin === 'https://apps.dronekompagniet.dk'\r\n ? 'https://ortomatic.now.sh'\r\n : window.location.origin\r\n\r\nexport const newEndpoints = {\r\n nowRoot,\r\n}\r\n\r\nexport const Endpoints = {\r\n nowRoot,\r\n user: () =>\r\n `${getConfig().azureRoot}${getConfig().user}${objToQuery({\r\n v: pkg.version,\r\n })}`,\r\n requestPasswordChange: () =>\r\n `${getConfig().azureRoot}${getConfig().requestPasswordChange}${objToQuery({\r\n v: pkg.version,\r\n })}`,\r\n changePassword: () =>\r\n `${getConfig().azureRoot}${getConfig().changePassword}${objToQuery({\r\n v: pkg.version,\r\n })}`,\r\n checkPToken: () =>\r\n `${getConfig().azureRoot}${getConfig().checkPToken}${objToQuery({\r\n v: pkg.version,\r\n })}`,\r\n projects: (query) =>\r\n `${getConfig().azureRoot}${getConfig().projects}${objToQuery({\r\n v: pkg.version,\r\n ...query,\r\n })}`,\r\n project: (projectSlugOrID, query) =>\r\n `${getConfig().azureRoot}${\r\n getConfig().project\r\n }/${projectSlugOrID}${objToQuery({\r\n v: pkg.version,\r\n ...query,\r\n })}`,\r\n\r\n // TODO: Activate when API is ready\r\n\r\n beforeEndpoint: (projectID, query) =>\r\n `${getConfig().azureRoot}/v3/media/${projectID}${objToQuery({\r\n v: pkg.version,\r\n ...query,\r\n })}`,\r\n\r\n afterEndpoint: (ticket, query) =>\r\n `${getConfig().azureRoot}/v3/media-done/${encodeURIComponent(\r\n ticket\r\n )}${objToQuery({\r\n v: pkg.version,\r\n ...query,\r\n })}`,\r\n\r\n printStatusEndpoint: (token, { projectID }) =>\r\n `${getConfig().azureRoot}/vnext/print/${projectID}${objToQuery({\r\n v: pkg.version,\r\n token,\r\n })}`,\r\n\r\n // Lambdas\r\n exif: () => `${nowRoot}/exif`,\r\n exifURL: () => `${nowRoot}/lambdas/src/exif-url`,\r\n capture: () =>\r\n process.env.NODE_ENV === 'development'\r\n ? `http://localhost:1000`\r\n : `${nowRoot}/lambdas/src/capture`,\r\n}\r\n\r\nexport const INVALID_CREDENTIALS = 'INVALID_CREDENTIALS'\r\nexport const SERVER_ERROR = 'SERVER_ERROR'\r\n\r\nexport const ViewModes = {\r\n TRANSPARENCY_MODE: 'TRANSPARENCY_MODE',\r\n SIDE_BY_SIDE_MODE: 'SIDE_BY_SIDE_MODE',\r\n}\r\n\r\nexport const authFlows = {\r\n SIGN_IN: 'SIGN_IN',\r\n REQUEST_PASSWORD_CHANGE: 'REQUEST_PASSWORD_CHANGE',\r\n PASSWORD_CHANGE_REQUESTED: 'PASSWORD_CHANGE_REQUESTED',\r\n CHANGE_PASSWORD: 'CHANGE_PASSWORD',\r\n PASSWORD_CHANGED: 'PASSWORD_CHANGED',\r\n INVALID_LINK: 'INVALID_LINK',\r\n}\r\n\r\nconst sizeUnit = 12\r\n\r\nexport const LabelSizes = {\r\n small: {\r\n labelKey: 'sizeSmall',\r\n baseSize: sizeUnit,\r\n hideAtZoom: 20,\r\n },\r\n medium: {\r\n labelKey: 'sizeMedium',\r\n baseSize: 1.5 * sizeUnit,\r\n hideAtZoom: 19,\r\n },\r\n large: {\r\n labelKey: 'sizeLarge',\r\n baseSize: 2 * sizeUnit,\r\n hideAtZoom: 18,\r\n },\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M255,122.7c-4.5-5-30.9-36.1-45.2-52.7c14.5-17.3,41.6-49.1,46.4-54.1c8-8.6-0.9-15.9-8.9-15.9 c-3.9,0-0.9,0-5.7,0c-5,0-9.1,4.3-9.1,4.3l-39.5,45.5l0,0c-3.4,4.1-6.1,2.7-6.1-0.5V13.4c0,0-0.9-13.4-13.4-13.4H13.6 C0.9,0,0.2,13.4,0.2,13.4L0,128.4c0,0,1.6,10.9,13.6,10.9h159.5c12.3,0,13.6-10.9,13.6-10.9v-38c0.5-2.7,3-3.6,6.1,0.2v-0.2 l39.5,45.2c0,0,4.1,4.3,9.1,4.3c5,0,3.9,0,8,0C256.4,140.2,264.1,132.9,255,122.7z M79.1,95.2c-8.2,24.5-28,24.8-39.5,24.8 c-5.5,0-5.5,0-9.1,0c-5.7,0-6.4-5-6.4-5l-0.2-89.1c0,0,0.5-6.1,6.1-6.1c2,0-0.5,0,2.7,0c17,0,36.6,0.2,45.9,28 C84.1,63.2,84.1,79.8,79.1,95.2z M160.7,95.2c-7.5,24.3-28,24.8-39.5,24.8c-5.5,0-5.5,0-9.1,0c-5.7,0-6.4-5-6.4-5l-0.2-89.1 c0,0,0.5-6.1,6.1-6.1c2,0-0.5,0,2.7,0c17,0,36.4,0,45.9,28.2C165.7,63.2,165.4,79.8,160.7,95.2z\"\n});\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M317.7,88.4h-13.4V51.1h14.1c13.2,0,20.7,7.3,20.7,18.4C338.9,80.9,331.4,88.4,317.7,88.4z M317.7,58.6h-3.9 v22h4.3c6.8,0,11.1-3.4,11.1-10.9C329.3,62,325.4,58.6,317.7,58.6z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M370.7,88.4l-2.7-8h-13.9l-2.7,8H342l13.2-37.3H367l13,37.3C380,88.4,370.7,88.4,370.7,88.4z M356.1,73h9.8 l-4.8-14.5L356.1,73z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M420,51.1v37.7h-10l-15.7-24.5v24.1h-8.9V51.1h10.2l15.5,24.3V51.1H420z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M447,78c0-2.5-2.7-3.2-7.7-4.8c-5.5-1.4-12-4.1-12-11.4c0-6.8,5-11.6,14.3-11.6c5.9,0,10.5,1.4,13.9,3.2 l-1.8,7.7c-3.9-2-8.2-3.2-12-3.2c-3.2,0-5,1.1-5,3.2c0,2.5,3.4,3.4,8,4.5c5.7,1.6,11.6,4.1,11.6,11.4c0,7-5.5,12-15.2,12 c-5.5,0-10.9-1.4-14.3-3.4l1.8-8c3.9,2,8.2,3.4,12.7,3.4C444.5,81.4,447,80.2,447,78z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M485.7,51.1h10.9l-14.8,18.2l15,19.1h-11.4L473.2,72l0,0v16.4h-9.5V51.1h9.5v16.4l0,0L485.7,51.1z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M527,88.4h-13.4V51.1h14.1c13.2,0,20.7,7.3,20.7,18.4C548.4,80.9,540.7,88.4,527,88.4z M527.3,58.6h-4.1v22 h4.3c6.8,0,11.1-3.4,11.1-10.9C538.8,62,535,58.6,527.3,58.6z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M555.4,88.4V51.1h15c10,0,15,4.5,15,11.8c0,5-2.7,8.9-7.7,10.7l9.5,14.8h-10.7l-7.5-12.5l-4.3,0.5v12.3h-9.3 V88.4z M575.9,63.4c0-3.2-2.3-5-7-5h-4.1v10.5l4.8-0.2C573.6,68.9,575.9,67,575.9,63.4z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M610.7,89.3c-11.1,0-19.5-6.8-19.5-19.5c0-11.8,8.4-19.5,19.5-19.5s19.5,6.8,19.5,19.3 C630.4,81.4,622,89.3,610.7,89.3z M610.7,57.7c-6.4,0-10,4.8-10,11.8c0,7,3.6,12,10,12c6.4,0,10-4.8,10-11.8 C620.9,62.7,617.2,57.7,610.7,57.7z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M672.5,51.1v37.7h-10l-15.7-24.5v24.1h-8.9V51.1h10.2l15.5,24.3V51.1H672.5z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M681.3,51.1h27.3v7.7h-18v7H705v7.5h-14.3v7.3h18v7.7h-27.3V51.1z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M749.7,51.1h10.9l-14.8,18.2l15,19.1h-11.4L737.2,72l0,0v16.4h-9.5V51.1h9.5v16.4l0,0L749.7,51.1z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M781.6,89.3c-11.1,0-19.5-6.8-19.5-19.5c0-11.8,8.4-19.5,19.5-19.5c11.1,0,19.5,6.8,19.5,19.3 C801.1,81.4,792.7,89.3,781.6,89.3z M781.6,57.7c-6.4,0-10,4.8-10,11.8c0,7,3.6,12,10,12c6.4,0,10-4.8,10-11.8 C791.6,62.7,787.9,57.7,781.6,57.7z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M835,87.7h-10.2l-8.2-28.2l-0.2,28.6h-8.9l1.4-37.3h13.4l7.7,28l7.7-28h13.2l1.4,37.3h-9.1V59.5L835,87.7z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M873.6,77.5H870v10.7h-9.5v-37h13.9c10.5,0,15.9,5.2,15.9,13C890.2,72.7,884.3,77.5,873.6,77.5z M873.6,58.6 h-3.9v11.6h3.9c5,0,7.3-2,7.3-5.9C880.9,60.5,878.4,58.6,873.6,58.6z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M919.5,88.4l-2.7-8h-13.9l-2.7,8h-9.3l13.2-37.3h11.8l13,37.3C928.8,88.4,919.5,88.4,919.5,88.4z M905,73h9.8 L910,58.4L905,73z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M951.6,89.3c-11.8,0-20-7-20-19.3s8-19.8,20-19.8c4.8,0,10.5,0.9,14.1,3.2l-3,8c-3.6-2-7-3.2-10.7-3.2 c-6.8,0-10.9,4.3-10.9,11.4c0,7.5,3.6,11.8,10.9,11.8c2,0,4.3-0.5,5.9-1.1v-5.5h-9.1v-7.5h17.7v18.4C962.2,88,957,89.3,951.6,89.3z \"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M1009.1,51.1v37.7h-10l-15.7-24.5v24.1h-8.9V51.1h10.2l15.5,24.3V51.1H1009.1z\"\n}), React.createElement(\"path\", {\n className: \"svg-ddk-logo-text\",\n d: \"M1017.9,51.1h9.5v37.3h-9.5V51.1z\"\n}));\n\nvar SvgLogo = function SvgLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n className: \"svg-ddk-logo-root\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 1072.5 140\",\n style: {\n enableBackground: \"new 0 0 1072.5 140\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), React.createElement(\"title\", null, title), _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo.7f88e063.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M255,122.7c-4.5-5-30.9-36.1-45.2-52.7c14.5-17.3,41.6-49.1,46.4-54.1c8-8.6-0.9-15.9-8.9-15.9c-3.9,0-0.9,0-5.7,0 c-5,0-9.1,4.3-9.1,4.3L193,49.8l0,0c-3.4,4.1-6.1,2.7-6.1-0.5V13.4c0,0-0.9-13.4-13.4-13.4H13.6C0.9,0,0.2,13.4,0.2,13.4L0,128.4 c0,0,1.6,10.9,13.6,10.9h159.5c12.3,0,13.6-10.9,13.6-10.9v-38c0.5-2.7,3-3.6,6.1,0.2v-0.2l39.5,45.2c0,0,4.1,4.3,9.1,4.3s3.9,0,8,0 C256.4,140.2,264.1,132.9,255,122.7z M79.1,95.2c-8.2,24.5-28,24.8-39.5,24.8c-5.5,0-5.5,0-9.1,0c-5.7,0-6.4-5-6.4-5l-0.2-89.1 c0,0,0.5-6.1,6.1-6.1c2,0-0.5,0,2.7,0c17,0,36.6,0.2,45.9,28C84.1,63.2,84.1,79.8,79.1,95.2z M160.7,95.2 c-7.5,24.3-28,24.8-39.5,24.8c-5.5,0-5.5,0-9.1,0c-5.7,0-6.4-5-6.4-5l-0.2-89.1c0,0,0.5-6.1,6.1-6.1c2,0-0.5,0,2.7,0 c17,0,36.4,0,45.9,28.2C165.7,63.2,165.4,79.8,160.7,95.2z\"\n});\n\nvar SvgLogoCompact = function SvgLogoCompact(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n className: \"svg-ddk-logo-root\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 259.3 140\",\n style: {\n enableBackground: \"new 0 0 259.3 140\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), React.createElement(\"title\", null, title), _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgLogoCompact, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logo-compact.cde721b4.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M160.75,291.29H134.09l-57-88.19L59.55,217.51v73.78H36.05V106.58h23.5v92.35l15.29-21.22,57.1-71.13h26.41l-65.7,80.48Z\"\n});\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M400.69,215v76.31h-23.5V106.58h45q33.61,0,49.66,13t16,39.42a54.38,54.38,0,0,1-3.09,19.2,45.76,45.76,0,0,1-8.22,14.09,47.89,47.89,0,0,1-11.68,9.79,79.91,79.91,0,0,1-13.52,6.45l50.28,82.75H474L429.62,215Zm0-20h20.72a73.28,73.28,0,0,0,19.33-2.21,34,34,0,0,0,13.07-6.57,25.25,25.25,0,0,0,7.46-10.87,45,45,0,0,0,2.33-15.22A40.65,40.65,0,0,0,461,144.73a24.56,24.56,0,0,0-7.83-10.36,33.78,33.78,0,0,0-13.26-5.87,86.49,86.49,0,0,0-19-1.83H400.69Z\"\n});\n\nvar _ref4 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M581.1,291.29H557.48v-164H504.67V106.58H633.79V127.3H581.1Z\"\n});\n\nvar _ref5 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M804.73,198.68a138.78,138.78,0,0,1-5.12,38.91,84.93,84.93,0,0,1-15.22,30.07A67.94,67.94,0,0,1,759.31,287q-15,6.83-34.56,6.83-20.58,0-35.69-6.83a66,66,0,0,1-25-19.33q-9.93-12.5-14.72-30.13a148.65,148.65,0,0,1-4.8-39.1,147.3,147.3,0,0,1,4.8-39,81.3,81.3,0,0,1,14.78-29.88,66.64,66.64,0,0,1,25.14-19.14q15.16-6.75,35.76-6.76,19.57,0,34.43,6.76a68.12,68.12,0,0,1,24.95,19.2,84.44,84.44,0,0,1,15.22,30A139.15,139.15,0,0,1,804.73,198.68Zm-135.31,0a135.12,135.12,0,0,0,3.28,31.14,67.86,67.86,0,0,0,10,23.5,44.71,44.71,0,0,0,17.18,14.79q10.43,5.11,24.82,5.11t24.83-5.11a44.71,44.71,0,0,0,17.18-14.79,66.09,66.09,0,0,0,9.92-23.5,140,140,0,0,0,3.16-31.14,140,140,0,0,0-3.16-31.21,65.7,65.7,0,0,0-9.85-23.31,44.84,44.84,0,0,0-17.06-14.65q-10.37-5.11-24.76-5.12t-24.89,5.12a45.59,45.59,0,0,0-17.31,14.65,65.93,65.93,0,0,0-10.11,23.31A135.07,135.07,0,0,0,669.42,198.68Z\"\n});\n\nvar _ref6 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M914.47,291.29l-56-161.72h-1q.75,9.36,1.26,18.57.5,8,.82,16.74t.32,16V291.29H838.16V106.58H873l52.05,150.6h.76l52.3-150.6H1013V291.29h-23.5V179.22c0-4.37.09-9.39.26-15s.38-11,.63-16.17q.5-9,.88-18.2h-1L933.8,291.29Z\"\n});\n\nvar _ref7 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M1171.45,291.29l-20.22-57.23h-68.85l-20.47,57.23h-23.75L1106,105.82h21.48l68,185.47Zm-27.67-78.08-18.7-53.57c-.51-1.51-1.12-3.37-1.83-5.56s-1.46-4.55-2.21-7.07-1.52-5.16-2.28-7.9-1.47-5.41-2.15-8q-.88,3.91-2,8.08c-.76,2.78-1.51,5.46-2.27,8s-1.5,4.92-2.21,7.07-1.33,3.94-1.83,5.37L1090,213.21Z\"\n});\n\nvar _ref8 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M1258.88,291.29h-23.63v-164h-52.81V106.58h129.12V127.3h-52.68Z\"\n});\n\nvar _ref9 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M1391.54,291.29h-67V278.4l21.73-5.18V124.64l-21.73-5.18V106.58h67v12.88l-21.73,5.18V273.22l21.73,5.18Z\"\n});\n\nvar _ref10 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M1499.56,124.64a57.41,57.41,0,0,0-24.51,5.12,52.2,52.2,0,0,0-18.76,14.72,68.81,68.81,0,0,0-12,23.37,105.38,105.38,0,0,0-4.24,31.08,121.75,121.75,0,0,0,3.73,31.65A64,64,0,0,0,1455,253.89a48.08,48.08,0,0,0,18.57,14.41q11.12,4.92,26,4.92a99.3,99.3,0,0,0,21.35-2.21q10.11-2.2,20-5.12v20.47q-4.92,1.9-9.85,3.35a85.59,85.59,0,0,1-10.3,2.34q-5.37.88-11.49,1.32t-13.59.45q-20.72,0-35.88-6.83a65.9,65.9,0,0,1-25.08-19.33A82.9,82.9,0,0,1,1420,237.59a147.35,147.35,0,0,1-4.8-38.91,127.44,127.44,0,0,1,5.5-38.41,84.65,84.65,0,0,1,16.17-29.94,72.87,72.87,0,0,1,26.47-19.46q15.79-6.95,36.26-7a118.76,118.76,0,0,1,26,2.78,89.19,89.19,0,0,1,22.36,8.09l-9.86,19.71a110.28,110.28,0,0,0-17.3-7A71.42,71.42,0,0,0,1499.56,124.64Z\"\n});\n\nvar _ref11 =\n/*#__PURE__*/\nReact.createElement(\"path\", {\n className: \"svg-ddk-logo\",\n d: \"M251.38,95a103,103,0,1,0,103,103A103,103,0,0,0,251.38,95Zm97,103a97.39,97.39,0,0,1-1.51,17.11H308.58c.52-5.56.8-11.28.8-17.11s-.28-11.55-.8-17.11h38.29A97.39,97.39,0,0,1,348.38,198ZM157.17,221.11h37.68a152.5,152.5,0,0,0,8.34,34.23h-30A96.82,96.82,0,0,1,157.17,221.11ZM154.38,198a97.39,97.39,0,0,1,1.51-17.11h38.29c-.52,5.56-.8,11.28-.8,17.11s.28,11.55.8,17.11H155.89A97.39,97.39,0,0,1,154.38,198Zm149,0c0,5.8-.29,11.52-.83,17.11H254.38V180.89h48.17C303.09,186.48,303.38,192.2,303.38,198Zm-104,0c0-5.8.29-11.52.83-17.11h48.17v34.22H200.21C199.67,209.52,199.38,203.8,199.38,198Zm55-23.11V140.66h38.75a142.81,142.81,0,0,1,8.73,34.23Zm0-40.23V101.18c12.14,1.34,23.69,10.77,32.78,26.93,1.19,2.1,2.3,4.29,3.36,6.55Zm-6-33.48v33.48H212.24c1.06-2.26,2.17-4.45,3.36-6.55C224.69,112,236.24,102.53,248.38,101.18Zm0,39.48v34.23H200.9a142.81,142.81,0,0,1,8.73-34.23Zm-53.53,34.23H157.17a96.66,96.66,0,0,1,16-34.23h30A152.5,152.5,0,0,0,194.85,174.89Zm6.05,46.22h47.48v34.23H209.63A142.93,142.93,0,0,1,200.9,221.11Zm47.48,40.23v33.48c-12.14-1.35-23.69-10.78-32.78-26.93-1.19-2.1-2.3-4.29-3.36-6.55Zm6,33.48V261.34h36.14c-1.06,2.26-2.17,4.45-3.36,6.55C278.07,284.05,266.52,293.48,254.38,294.82Zm0-39.48V221.11h47.48a142.93,142.93,0,0,1-8.73,34.23Zm53.53-34.23h37.68a96.66,96.66,0,0,1-16,34.23h-30A152.5,152.5,0,0,0,307.91,221.11Zm0-46.22a152.5,152.5,0,0,0-8.34-34.23h30a96.66,96.66,0,0,1,16,34.23Zm16.87-40.23H297.12c-5.81-13.2-13.39-23.83-22.1-30.74A97.12,97.12,0,0,1,324.78,134.66Zm-97-30.74c-8.71,6.91-16.29,17.54-22.1,30.74H178A97,97,0,0,1,227.74,103.92ZM178,261.34h27.66c5.81,13.2,13.39,23.83,22.1,30.74A97,97,0,0,1,178,261.34Zm97,30.74c8.71-6.91,16.29-17.54,22.1-30.74h27.66A97.12,97.12,0,0,1,275,292.08Z\"\n});\n\nvar SvgKortomaticLogo = function SvgKortomaticLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n className: \"svg-ddk-logo-root\",\n viewBox: \"0 0 1584 396\",\n ref: svgRef\n }, props), React.createElement(\"title\", null, title), _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgKortomaticLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/kortomatic-logo.860f074f.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"style\", {\n type: \"text/css\"\n}, \"\\r\\n\\t.st0{fill:#FFFFFF;}\\r\\n\\t.st1{fill:#231F20;}\\r\\n\\t.st2{fill:#ffffff;}\\r\\n\");\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"st0\",\n d: \"M463.56,88.88c0.97-1.65,0.48-3.76-1.09-4.81c1.11-0.79,2.87-2.76,4.39-5.35c2.14-3.63,3.37-6.87,2.75-7.24 c-0.62-0.36-2.85,2.28-4.99,5.92c-1.56,2.66-2.84,4.99-3.17,6.19c-0.77-0.22-1.59-0.18-2.32,0.11 c-8.69-2.64-19.16-11.33-22.42-17.08c0.5-2.36,0.51-4.77,0.06-7.08c3.35-5.7,13.97-14.22,22.7-16.71c0.92,0.38,1.99,0.37,2.95-0.09 c0.13,1.36,0.96,3.86,2.44,6.47c2.08,3.67,4.27,6.35,4.89,6c0.63-0.35-0.55-3.61-2.63-7.28c-1.52-2.68-2.9-4.95-3.77-5.84 c1.16-1.12,1.47-2.91,0.64-4.38c-0.94-1.67-3.01-2.29-4.71-1.47c-0.13-1.36-0.96-3.87-2.44-6.47c-2.08-3.67-4.27-6.35-4.89-6 c-0.63,0.35,0.55,3.61,2.63,7.28c1.52,2.68,2.9,4.95,3.77,5.84c-0.58,0.56-0.95,1.29-1.07,2.06c-6.63,6.2-19.38,10.93-26,10.87 c-0.87-0.78-1.83-1.49-2.88-2.11c-1.05-0.62-2.13-1.11-3.24-1.49c-3.26-5.75-5.32-19.2-3.12-28.01c0.79-0.61,1.32-1.54,1.4-2.6 c1.24,0.57,3.83,1.1,6.83,1.13c4.22,0.03,7.64-0.52,7.64-1.24c0.01-0.72-3.41-1.33-7.62-1.36c-3.09-0.03-5.74,0.03-6.94,0.35 c-0.39-1.56-1.79-2.73-3.47-2.74c-1.92-0.02-3.49,1.46-3.63,3.35c-1.24-0.57-3.83-1.1-6.83-1.13c-4.21-0.03-7.64,0.52-7.64,1.24 c-0.01,0.72,3.41,1.33,7.62,1.36c3.09,0.03,5.74-0.03,6.94-0.35c0.19,0.78,0.64,1.47,1.25,1.95c2.06,8.84-0.23,22.27-3.59,27.96 c-2.24,0.73-4.34,1.9-6.16,3.49c-6.61-0.05-19.29-4.99-25.82-11.3c-0.13-0.99-0.67-1.91-1.55-2.51c1.11-0.79,2.87-2.76,4.39-5.35 c2.14-3.63,3.37-6.87,2.75-7.24c-0.62-0.36-2.85,2.28-4.99,5.92c-1.56,2.66-2.84,4.99-3.17,6.19c-1.55-0.45-3.26,0.18-4.11,1.63 c-0.97,1.65-0.48,3.76,1.09,4.81c-1.11,0.79-2.87,2.76-4.39,5.35c-2.14,3.63-3.37,6.87-2.75,7.24c0.62,0.36,2.85-2.28,4.99-5.92 c1.56-2.66,2.84-4.99,3.17-6.19c0.77,0.22,1.59,0.18,2.32-0.11c8.69,2.64,19.16,11.33,22.42,17.08c-0.5,2.36-0.51,4.77-0.06,7.08 c-3.35,5.7-13.97,14.22-22.7,16.71c-0.92-0.38-1.99-0.37-2.95,0.09c-0.13-1.36-0.96-3.87-2.44-6.47c-2.08-3.67-4.27-6.35-4.89-6 c-0.63,0.35,0.55,3.61,2.63,7.28c1.52,2.68,2.9,4.95,3.77,5.84c-1.16,1.12-1.47,2.91-0.64,4.38c0.94,1.67,3.01,2.29,4.71,1.47 c0.13,1.36,0.96,3.87,2.44,6.47c2.08,3.67,4.27,6.35,4.89,6c0.63-0.35-0.55-3.61-2.63-7.28c-1.52-2.68-2.9-4.95-3.77-5.84 c0.58-0.56,0.95-1.29,1.07-2.06c6.63-6.2,19.38-10.93,26-10.87c0.87,0.78,1.83,1.49,2.88,2.11s2.13,1.11,3.24,1.49 c3.26,5.75,5.32,19.2,3.12,28.01c-0.79,0.61-1.32,1.54-1.4,2.6c-1.24-0.57-3.83-1.1-6.83-1.13c-4.21-0.03-7.64,0.52-7.64,1.24 c-0.01,0.72,3.41,1.33,7.62,1.36c3.09,0.03,5.74-0.03,6.94-0.35c0.39,1.56,1.79,2.73,3.47,2.74c1.92,0.02,3.49-1.46,3.63-3.35 c1.24,0.57,3.83,1.1,6.83,1.13c4.22,0.03,7.64-0.52,7.64-1.24c0.01-0.72-3.41-1.33-7.62-1.36c-3.09-0.03-5.74,0.03-6.94,0.35 c-0.19-0.78-0.64-1.47-1.25-1.95c-2.06-8.84,0.23-22.27,3.59-27.96c2.24-0.73,4.34-1.9,6.16-3.49c6.61,0.05,19.29,4.99,25.82,11.3 c0.13,0.99,0.67,1.91,1.55,2.51c-1.11,0.79-2.87,2.76-4.39,5.35c-2.14,3.63-3.37,6.87-2.75,7.24s2.85-2.28,4.99-5.92 c1.56-2.66,2.84-4.99,3.17-6.19C461,90.96,462.71,90.33,463.56,88.88z\"\n}), React.createElement(\"ellipse\", {\n transform: \"matrix(0.5071 -0.8619 0.8619 0.5071 152.4944 392.5244)\",\n className: \"st1\",\n cx: 419.45,\n cy: 62.93,\n rx: 7.8,\n ry: 7.8\n}), React.createElement(\"ellipse\", {\n transform: \"matrix(0.5071 -0.8619 0.8619 0.5071 152.4943 392.5243)\",\n className: \"st1\",\n cx: 419.45,\n cy: 62.93,\n rx: 6.82,\n ry: 6.82\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M423.76,66.73c1.31-2.23,0.57-5.1-1.66-6.41c-2.23-1.31-5.1-0.57-6.41,1.66c-1.31,2.23-0.57,5.1,1.66,6.41 C419.57,69.7,422.44,68.96,423.76,66.73z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M421.65,61.08c-0.51-0.3-1.06-0.46-1.61-0.51c0.08,0.04,0.17,0.08,0.25,0.13c2.19,1.29,0.19,4.69-2,3.4 c-1.32-0.78-1.12-2.32-0.27-3.14c-0.63,0.32-1.19,0.81-1.57,1.47c-1.06,1.81-0.46,4.14,1.35,5.2c1.81,1.06,4.14,0.46,5.2-1.35 C424.06,64.47,423.46,62.14,421.65,61.08z M420.42,67.83c-0.17,0.04-0.36,0.06-0.54,0.07c-0.22,0.01-0.41-0.2-0.41-0.41 c0-0.23,0.19-0.39,0.41-0.41c0.07,0,0.13-0.01,0.2-0.02c0,0,0,0,0.01,0c0.01,0,0.02,0,0.03,0c0.03-0.01,0.06-0.01,0.09-0.02 c0.22-0.05,0.44,0.07,0.5,0.29C420.77,67.55,420.64,67.78,420.42,67.83z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M419.46,58.41c0.1-0.17,0.04-0.39-0.13-0.49l-1.52-0.9c-0.17-0.1-0.39-0.04-0.49,0.13L417,57.67 c-0.1,0.17-0.04,0.39,0.13,0.49l1.52,0.9c0.17,0.1,0.39,0.04,0.49-0.13L419.46,58.41z\"\n}), React.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"st0\",\n d: \"M644.27,91.93l-20.63-8.25v-4.01l20.63-8.25v4.01l-4.36,1.74v9.02l4.36,1.74V91.93z M636.2,84.71v-6.04 l-7.54,3.01L636.2,84.71z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M629.6,57.49c0.71-1.18,1.67-2.11,2.9-2.8s2.58-1.03,4.05-1.03s2.82,0.34,4.04,1.03 c1.22,0.69,2.18,1.62,2.89,2.8c0.71,1.18,1.06,2.49,1.06,3.92c0,1.47-0.38,2.82-1.15,4.04h6.04v3.71H628.8v-3.71h0.88 c-0.77-1.22-1.15-2.56-1.15-4.04C628.54,59.97,628.89,58.66,629.6,57.49z M640.26,59.36c-0.37-0.62-0.89-1.1-1.55-1.46 c-0.66-0.35-1.38-0.53-2.17-0.53c-0.81,0-1.54,0.18-2.2,0.53c-0.66,0.35-1.17,0.84-1.55,1.46c-0.37,0.62-0.56,1.3-0.56,2.05 c0,0.75,0.19,1.43,0.56,2.05c0.37,0.62,0.89,1.1,1.55,1.46c0.66,0.35,1.39,0.53,2.2,0.53c0.79,0,1.51-0.18,2.17-0.53 c0.66-0.35,1.17-0.84,1.55-1.46c0.37-0.62,0.56-1.3,0.56-2.05C640.82,60.66,640.64,59.98,640.26,59.36z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M644.77,43.17c0,1.28-0.21,2.48-0.63,3.59c-0.42,1.12-1.01,2.07-1.77,2.86c-0.76,0.79-1.62,1.33-2.58,1.62 l-1.06-3.57c0.59-0.16,1.1-0.62,1.53-1.38c0.53-0.86,0.8-1.91,0.8-3.12c0-0.86-0.14-1.65-0.41-2.36 c-0.27-0.71-0.63-1.26-1.06-1.66c-0.43-0.4-0.86-0.6-1.3-0.6c-0.59,0-1.14,0.32-1.65,0.97c-0.51,0.65-0.84,1.45-1,2.42 c-0.08,0.35-0.14,0.66-0.18,0.93c-0.04,0.27-0.07,0.44-0.09,0.52c-0.16,0.94-0.27,1.5-0.32,1.68c-0.22,1.12-0.61,2.12-1.18,3.01 c-0.57,0.88-1.26,1.58-2.08,2.08c-0.81,0.5-1.68,0.75-2.61,0.75c-1.12,0-2.14-0.34-3.06-1.03c-0.92-0.69-1.65-1.62-2.2-2.8 c-0.54-1.18-0.81-2.48-0.81-3.89c0-1.75,0.4-3.31,1.19-4.67c0.8-1.37,1.85-2.28,3.17-2.75l1.27,3.48 c-0.49,0.2-0.93,0.65-1.33,1.37c-0.39,0.72-0.59,1.58-0.59,2.58s0.23,1.92,0.68,2.75c0.45,0.84,1.01,1.25,1.68,1.25 c0.45,0,0.89-0.25,1.31-0.77c0.42-0.51,0.71-1.15,0.87-1.92v-0.03l0.06-0.18l0.29-1.5c0-0.12,0.09-0.62,0.27-1.5 c0.22-1.26,0.63-2.37,1.24-3.34c0.61-0.97,1.36-1.73,2.24-2.28c0.88-0.55,1.83-0.83,2.83-0.83c1.2,0,2.29,0.37,3.27,1.11 c0.98,0.74,1.76,1.74,2.34,3.02C644.48,40.23,644.77,41.63,644.77,43.17z\"\n})), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M98.46,0.49v91.22H82.04V38.8L58.19,91.71H40.21L16.36,38.8v52.91H-0.06V0.49h17.2L49.2,71.64L81.26,0.49 H98.46z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M157.66,35.71v55.99h-13.44v-1.92c-3.7,1.92-7.64,2.88-11.84,2.88c-4.69,0-8.96-1.12-12.8-3.36 c-3.84-2.24-6.88-5.3-9.12-9.17c-2.24-3.87-3.36-8.16-3.36-12.85V35.71h13.44v31.57c0,3.41,1.14,6.26,3.41,8.53 c2.27,2.28,5.08,3.41,8.43,3.41c3.34,0,6.15-1.14,8.43-3.41c2.27-2.27,3.41-5.12,3.41-8.53V35.71H157.66z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M180.15,91.71h-13.44V17.05h13.44V91.71z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M226.64,89.25c-3.48,2.28-7.32,3.41-11.52,3.41c-3.91,0-7.47-0.96-10.67-2.88c-3.2-1.92-5.74-4.51-7.63-7.79 c-1.88-3.27-2.83-6.9-2.83-10.88V48.83h-8.21V35.39H194V17.05h13.44v18.34h13.33v13.44h-13.33v22.29c0,2.28,0.73,4.2,2.19,5.76 c1.46,1.56,3.29,2.35,5.49,2.35c1.42,0,2.81-0.39,4.16-1.17L226.64,89.25z\"\n}), React.createElement(\"path\", {\n className: \"st0\",\n d: \"M236.5,28.84c-1.46-1.46-2.19-3.22-2.19-5.28c0-2.06,0.73-3.82,2.19-5.28c1.46-1.46,3.22-2.19,5.28-2.19 c2.06,0,3.82,0.73,5.28,2.19c1.46,1.46,2.19,3.22,2.19,5.28c0,2.06-0.73,3.82-2.19,5.28c-1.46,1.46-3.22,2.19-5.28,2.19 C239.72,31.02,237.96,30.29,236.5,28.84z M235.06,35.71h13.44v55.99h-13.44V35.71z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M381.46,37.26c3.45,1.67,6.38,4.04,8.8,7.09l-10.45,8.43c-2.42-3.06-5.55-4.59-9.38-4.59 c-3.56,0-6.52,1.32-8.91,3.95c-2.38,2.63-3.57,5.94-3.57,9.92v29.65h-13.44V35.71h13.44v2.35c3.84-2.2,8-3.31,12.48-3.31 C374.34,34.75,378.02,35.59,381.46,37.26z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M489.43,38.11c3.84,2.24,6.86,5.32,9.06,9.22c2.2,3.91,3.31,8.18,3.31,12.8v31.57h-13.44V60.14 c0-3.41-1.1-6.26-3.31-8.53c-2.21-2.27-4.94-3.41-8.21-3.41c-3.27,0-5.99,1.14-8.16,3.41c-2.17,2.28-3.25,5.12-3.25,8.53v31.57 h-13.44V35.71h13.44v1.81c3.7-1.85,7.5-2.77,11.41-2.77C481.39,34.75,485.59,35.87,489.43,38.11z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M537.68,92.67c-5.19,0-9.94-1.28-14.24-3.84c-4.3-2.56-7.7-6.04-10.18-10.45c-2.49-4.41-3.73-9.28-3.73-14.61 c0-5.4,1.19-10.33,3.57-14.77c2.38-4.44,5.65-7.93,9.81-10.45c4.16-2.52,8.8-3.79,13.92-3.79c5.12,0,9.76,1.26,13.92,3.79 c4.16,2.52,7.43,6.01,9.81,10.45c2.38,4.44,3.57,9.37,3.57,14.77v6.72h-39.78c1.14,2.63,2.9,4.75,5.28,6.35 c2.38,1.6,5.07,2.4,8.05,2.4c2.06,0,4.02-0.41,5.87-1.23c1.85-0.82,3.45-1.97,4.8-3.47l10.03,8.96c-2.63,2.92-5.74,5.17-9.33,6.77 C545.45,91.87,541.66,92.67,537.68,92.67z M524.14,57.05h25.28c-1.07-2.63-2.65-4.76-4.75-6.4c-2.1-1.64-4.71-2.45-7.84-2.45 c-3.13,0-5.76,0.82-7.89,2.45C526.8,52.28,525.2,54.42,524.14,57.05z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M610.9,37.26c3.45,1.67,6.38,4.04,8.8,7.09l-10.45,8.43c-2.42-3.06-5.55-4.59-9.38-4.59 c-3.56,0-6.52,1.32-8.91,3.95c-2.38,2.63-3.57,5.94-3.57,9.92v29.65h-13.44V35.71h13.44v2.35c3.84-2.2,8-3.31,12.48-3.31 C603.77,34.75,607.45,35.59,610.9,37.26z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M157.65-2.85l0.02,16.54h99.99v77.94h34.42c8.73,0,16.65-2.07,23.76-6.21c7.11-4.14,12.71-9.81,16.81-17.01 c4.09-7.2,6.14-15.21,6.14-24.03c0-8.91-2.05-16.96-6.14-24.16c-4.1-7.2-9.7-12.85-16.81-16.94c-7.11-4.09-15.03-6.14-23.76-6.14 h-13.65h-20.77h-76.45C181.04-2.74,157.65-2.85,157.65-2.85z M274.67,14.14h17.41c5.67,0,10.75,1.31,15.25,3.91 c4.5,2.61,8.03,6.21,10.6,10.8c2.56,4.59,3.85,9.77,3.85,15.52c0,5.76-1.28,10.93-3.85,15.52c-2.56,4.59-6.1,8.19-10.6,10.8 c-4.5,2.61-9.58,3.91-15.25,3.91h-17.41V14.14z\"\n}));\n\nvar SvgMultidronerLogo = function SvgMultidronerLogo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n className: \"svg-ddk-logo-root\",\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 649 114\",\n style: {\n enableBackground: \"new 0 0 649 114\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), React.createElement(\"title\", null, title), _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgMultidronerLogo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/multidroner-logo.59978b80.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"style\", {\n type: \"text/css\"\n}, \"\\r\\n\\t.st0{display:none;fill:#FFFFFF;}\\r\\n\\t.st1{fill:#231F20;}\\r\\n\\t.st2{fill:#FFFFFF;}\\r\\n\\t.st3{fill:#EC1C24;}\\r\\n\");\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"rect\", {\n x: -12.35,\n y: -20.37,\n className: \"st0\",\n width: 676.02,\n height: 152\n});\n\nvar _ref4 =\n/*#__PURE__*/\nReact.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"st1\",\n d: \"M464.28,91.33c0.97-1.65,0.48-3.76-1.09-4.81c1.11-0.79,2.87-2.76,4.39-5.35c2.14-3.63,3.37-6.87,2.75-7.24 c-0.62-0.36-2.85,2.28-4.99,5.92c-1.56,2.66-2.84,4.99-3.17,6.19c-0.77-0.22-1.59-0.18-2.32,0.11 c-8.69-2.64-19.16-11.33-22.42-17.08c0.5-2.36,0.51-4.77,0.06-7.08c3.35-5.7,13.97-14.22,22.7-16.71c0.92,0.38,1.99,0.37,2.95-0.09 c0.13,1.36,0.96,3.86,2.44,6.47c2.08,3.67,4.27,6.35,4.89,6c0.63-0.35-0.55-3.61-2.63-7.28c-1.52-2.68-2.9-4.95-3.77-5.84 c1.16-1.12,1.47-2.91,0.64-4.38c-0.94-1.67-3.01-2.29-4.71-1.47c-0.13-1.36-0.96-3.87-2.44-6.47c-2.08-3.67-4.27-6.35-4.89-6 c-0.63,0.35,0.55,3.61,2.63,7.28c1.52,2.68,2.9,4.95,3.77,5.84c-0.58,0.56-0.95,1.29-1.07,2.06c-6.63,6.2-19.38,10.93-26,10.87 c-0.87-0.78-1.83-1.49-2.88-2.11c-1.05-0.62-2.13-1.11-3.24-1.49c-3.26-5.75-5.32-19.2-3.12-28.01c0.79-0.61,1.32-1.54,1.4-2.6 c1.24,0.57,3.83,1.1,6.83,1.13c4.22,0.03,7.64-0.52,7.64-1.24c0.01-0.72-3.41-1.33-7.62-1.36c-3.09-0.03-5.74,0.03-6.94,0.35 c-0.39-1.56-1.79-2.73-3.47-2.74c-1.92-0.02-3.49,1.46-3.63,3.35c-1.24-0.57-3.83-1.1-6.83-1.13c-4.21-0.03-7.64,0.52-7.64,1.24 c-0.01,0.72,3.41,1.33,7.62,1.36c3.09,0.03,5.74-0.03,6.94-0.35c0.19,0.78,0.64,1.47,1.25,1.95c2.06,8.84-0.23,22.27-3.59,27.96 c-2.24,0.73-4.34,1.9-6.16,3.49c-6.61-0.05-19.29-4.99-25.82-11.3c-0.13-0.99-0.67-1.91-1.55-2.51c1.11-0.79,2.87-2.76,4.39-5.35 c2.14-3.63,3.37-6.87,2.75-7.24c-0.62-0.36-2.85,2.28-4.99,5.92c-1.56,2.66-2.84,4.99-3.17,6.19c-1.55-0.45-3.26,0.18-4.11,1.63 c-0.97,1.65-0.48,3.76,1.09,4.81c-1.11,0.79-2.87,2.76-4.39,5.35c-2.14,3.63-3.37,6.87-2.75,7.24c0.62,0.36,2.85-2.28,4.99-5.92 c1.56-2.66,2.84-4.99,3.17-6.19c0.77,0.22,1.59,0.18,2.32-0.11c8.69,2.64,19.16,11.33,22.42,17.08c-0.5,2.36-0.51,4.77-0.06,7.08 c-3.35,5.7-13.97,14.22-22.7,16.71c-0.92-0.38-1.99-0.37-2.95,0.09c-0.13-1.36-0.96-3.87-2.44-6.47c-2.08-3.67-4.27-6.35-4.89-6 c-0.63,0.35,0.55,3.61,2.63,7.28c1.52,2.68,2.9,4.95,3.77,5.84c-1.16,1.12-1.47,2.91-0.64,4.38c0.94,1.67,3.01,2.29,4.71,1.47 c0.13,1.36,0.96,3.87,2.44,6.47c2.08,3.67,4.27,6.35,4.89,6c0.63-0.35-0.55-3.61-2.63-7.28c-1.52-2.68-2.9-4.95-3.77-5.84 c0.58-0.56,0.95-1.29,1.07-2.06c6.63-6.2,19.38-10.93,26-10.87c0.87,0.78,1.83,1.49,2.88,2.11c1.05,0.62,2.13,1.11,3.24,1.49 c3.26,5.75,5.32,19.2,3.12,28.01c-0.79,0.61-1.32,1.54-1.4,2.6c-1.24-0.57-3.83-1.1-6.83-1.13c-4.21-0.03-7.64,0.52-7.64,1.24 c-0.01,0.72,3.41,1.33,7.62,1.36c3.09,0.03,5.74-0.03,6.94-0.35c0.39,1.56,1.79,2.73,3.47,2.74c1.92,0.02,3.49-1.46,3.63-3.35 c1.24,0.57,3.83,1.1,6.83,1.13c4.22,0.03,7.64-0.52,7.64-1.24c0.01-0.72-3.41-1.33-7.62-1.36c-3.09-0.03-5.74,0.03-6.94,0.35 c-0.19-0.78-0.64-1.47-1.25-1.95c-2.06-8.84,0.23-22.27,3.59-27.96c2.24-0.73,4.34-1.9,6.16-3.49c6.61,0.05,19.29,4.99,25.82,11.3 c0.13,0.99,0.67,1.91,1.55,2.51c-1.11,0.79-2.87,2.76-4.39,5.35c-2.14,3.63-3.37,6.87-2.75,7.24c0.62,0.36,2.85-2.28,4.99-5.92 c1.56-2.66,2.84-4.99,3.17-6.19C461.72,93.41,463.43,92.78,464.28,91.33z\"\n}), React.createElement(\"ellipse\", {\n transform: \"matrix(0.5071 -0.8619 0.8619 0.5071 150.7395 394.3481)\",\n className: \"st2\",\n cx: 420.17,\n cy: 65.37,\n rx: 7.8,\n ry: 7.8\n}), React.createElement(\"ellipse\", {\n transform: \"matrix(0.5071 -0.8619 0.8619 0.5071 150.7394 394.348)\",\n className: \"st1\",\n cx: 420.17,\n cy: 65.37,\n rx: 6.82,\n ry: 6.82\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M424.47,69.18c1.31-2.23,0.57-5.1-1.66-6.41c-2.23-1.31-5.1-0.57-6.41,1.66s-0.57,5.1,1.66,6.41 C420.29,72.15,423.16,71.41,424.47,69.18z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M422.36,63.52c-0.51-0.3-1.06-0.46-1.61-0.51c0.08,0.04,0.17,0.08,0.25,0.13c2.19,1.29,0.19,4.69-2,3.4 c-1.32-0.78-1.12-2.32-0.27-3.14c-0.63,0.32-1.19,0.81-1.57,1.47c-1.06,1.81-0.46,4.14,1.35,5.2c1.81,1.06,4.14,0.46,5.2-1.35 C424.78,66.92,424.17,64.59,422.36,63.52z M421.14,70.28c-0.17,0.04-0.36,0.06-0.54,0.07c-0.22,0.01-0.41-0.2-0.41-0.41 c0-0.23,0.19-0.39,0.41-0.41c0.07,0,0.13-0.01,0.2-0.02c0,0,0,0,0.01,0c0.01,0,0.02,0,0.03,0c0.03-0.01,0.06-0.01,0.09-0.02 c0.22-0.05,0.44,0.07,0.5,0.29C421.49,69.99,421.36,70.23,421.14,70.28z\"\n}), React.createElement(\"path\", {\n className: \"st2\",\n d: \"M420.17,60.85c0.1-0.17,0.04-0.39-0.13-0.49l-1.52-0.9c-0.17-0.1-0.39-0.04-0.49,0.13l-0.31,0.53 c-0.1,0.17-0.04,0.39,0.13,0.49l1.52,0.9c0.17,0.1,0.39,0.04,0.49-0.13L420.17,60.85z\"\n}));\n\nvar _ref5 =\n/*#__PURE__*/\nReact.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"st1\",\n d: \"M644.99,94.38l-20.63-8.25v-4.01l20.63-8.25v4.01l-4.36,1.74v9.02l4.36,1.74V94.38z M636.91,87.16v-6.04 l-7.54,3.01L636.91,87.16z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M630.31,59.93c0.71-1.18,1.67-2.11,2.9-2.8s2.58-1.03,4.05-1.03c1.47,0,2.82,0.34,4.04,1.03 c1.22,0.69,2.18,1.62,2.89,2.8c0.71,1.18,1.06,2.49,1.06,3.92c0,1.47-0.38,2.82-1.15,4.04h6.04v3.71h-20.63v-3.71h0.88 c-0.77-1.22-1.15-2.56-1.15-4.04C629.25,62.42,629.61,61.11,630.31,59.93z M640.98,61.8c-0.37-0.62-0.89-1.1-1.55-1.46 c-0.66-0.35-1.38-0.53-2.17-0.53c-0.81,0-1.54,0.18-2.2,0.53c-0.66,0.35-1.17,0.84-1.55,1.46c-0.37,0.62-0.56,1.3-0.56,2.05 c0,0.75,0.19,1.43,0.56,2.05c0.37,0.62,0.89,1.1,1.55,1.46c0.66,0.35,1.39,0.53,2.2,0.53c0.79,0,1.51-0.18,2.17-0.53 c0.66-0.35,1.17-0.84,1.55-1.46c0.37-0.62,0.56-1.3,0.56-2.05C641.54,63.11,641.35,62.42,640.98,61.8z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M645.49,45.61c0,1.28-0.21,2.48-0.63,3.59c-0.42,1.12-1.01,2.07-1.77,2.86c-0.76,0.79-1.62,1.33-2.58,1.62 l-1.06-3.57c0.59-0.16,1.1-0.62,1.53-1.38c0.53-0.86,0.8-1.91,0.8-3.12c0-0.86-0.14-1.65-0.41-2.36c-0.27-0.71-0.63-1.26-1.06-1.66 c-0.43-0.4-0.86-0.6-1.3-0.6c-0.59,0-1.14,0.32-1.65,0.97c-0.51,0.65-0.84,1.45-1,2.42c-0.08,0.35-0.14,0.66-0.18,0.93 c-0.04,0.27-0.07,0.44-0.09,0.52c-0.16,0.94-0.27,1.5-0.32,1.68c-0.22,1.12-0.61,2.12-1.18,3.01c-0.57,0.88-1.26,1.58-2.08,2.08 c-0.81,0.5-1.68,0.75-2.61,0.75c-1.12,0-2.14-0.34-3.06-1.03c-0.92-0.69-1.65-1.62-2.2-2.8c-0.54-1.18-0.81-2.48-0.81-3.89 c0-1.75,0.4-3.31,1.19-4.67c0.8-1.37,1.85-2.28,3.17-2.75l1.27,3.48c-0.49,0.2-0.93,0.65-1.33,1.37c-0.39,0.72-0.59,1.58-0.59,2.58 c0,1,0.23,1.92,0.68,2.75c0.45,0.84,1.01,1.25,1.68,1.25c0.45,0,0.89-0.25,1.31-0.77c0.42-0.51,0.71-1.15,0.87-1.92v-0.03 l0.06-0.18l0.29-1.5c0-0.12,0.09-0.62,0.27-1.5c0.22-1.26,0.63-2.37,1.24-3.34c0.61-0.97,1.36-1.73,2.24-2.28 c0.88-0.55,1.83-0.83,2.83-0.83c1.2,0,2.29,0.37,3.27,1.11c0.98,0.74,1.76,1.74,2.34,3.02C645.2,42.68,645.49,44.08,645.49,45.61z\"\n}));\n\nvar _ref6 =\n/*#__PURE__*/\nReact.createElement(\"g\", null, React.createElement(\"path\", {\n className: \"st1\",\n d: \"M99.18,2.93v91.22H82.76V41.25L58.91,94.15H40.93L17.08,41.25v52.91H0.66V2.93h17.2l32.06,71.15L81.98,2.93 H99.18z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M158.38,38.16v55.99h-13.44v-1.92c-3.7,1.92-7.64,2.88-11.84,2.88c-4.69,0-8.96-1.12-12.8-3.36 c-3.84-2.24-6.88-5.3-9.12-9.17c-2.24-3.87-3.36-8.16-3.36-12.85V38.16h13.44v31.57c0,3.41,1.14,6.26,3.41,8.53 c2.27,2.28,5.08,3.41,8.43,3.41c3.34,0,6.15-1.14,8.43-3.41c2.27-2.27,3.41-5.12,3.41-8.53V38.16H158.38z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M180.87,94.15h-13.44V19.5h13.44V94.15z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M227.36,91.7c-3.48,2.28-7.32,3.41-11.52,3.41c-3.91,0-7.47-0.96-10.67-2.88c-3.2-1.92-5.74-4.51-7.63-7.79 c-1.88-3.27-2.83-6.9-2.83-10.88V51.28h-8.21V37.84h8.21V19.5h13.44v18.34h13.33v13.44h-13.33v22.29c0,2.28,0.73,4.2,2.19,5.76 c1.46,1.56,3.29,2.35,5.49,2.35c1.42,0,2.81-0.39,4.16-1.17L227.36,91.7z\"\n}), React.createElement(\"path\", {\n className: \"st1\",\n d: \"M237.22,31.28c-1.46-1.46-2.19-3.22-2.19-5.28c0-2.06,0.73-3.82,2.19-5.28c1.46-1.46,3.22-2.19,5.28-2.19 c2.06,0,3.82,0.73,5.28,2.19c1.46,1.46,2.19,3.22,2.19,5.28c0,2.06-0.73,3.82-2.19,5.28c-1.46,1.46-3.22,2.19-5.28,2.19 C240.44,33.47,238.68,32.74,237.22,31.28z M235.78,38.16h13.44v55.99h-13.44V38.16z\"\n}), React.createElement(\"path\", {\n className: \"st3\",\n d: \"M382.18,39.71c3.45,1.67,6.38,4.04,8.8,7.09l-10.45,8.43c-2.42-3.06-5.55-4.59-9.38-4.59 c-3.56,0-6.52,1.32-8.91,3.95c-2.38,2.63-3.57,5.94-3.57,9.92v29.65h-13.44V38.16h13.44v2.35c3.84-2.2,8-3.31,12.48-3.31 C375.05,37.2,378.73,38.04,382.18,39.71z\"\n}), React.createElement(\"path\", {\n className: \"st3\",\n d: \"M490.14,40.56c3.84,2.24,6.86,5.32,9.06,9.22c2.2,3.91,3.31,8.18,3.31,12.8v31.57h-13.44V62.58 c0-3.41-1.1-6.26-3.31-8.53c-2.21-2.27-4.94-3.41-8.21-3.41c-3.27,0-5.99,1.14-8.16,3.41c-2.17,2.28-3.25,5.12-3.25,8.53v31.57 h-13.44V38.16h13.44v1.81c3.7-1.85,7.5-2.77,11.41-2.77C482.11,37.2,486.3,38.32,490.14,40.56z\"\n}), React.createElement(\"path\", {\n className: \"st3\",\n d: \"M538.4,95.11c-5.19,0-9.94-1.28-14.24-3.84c-4.3-2.56-7.7-6.04-10.18-10.45c-2.49-4.41-3.73-9.28-3.73-14.61 c0-5.4,1.19-10.33,3.57-14.77c2.38-4.44,5.65-7.93,9.81-10.45c4.16-2.52,8.8-3.79,13.92-3.79c5.12,0,9.76,1.26,13.92,3.79 c4.16,2.52,7.43,6.01,9.81,10.45c2.38,4.44,3.57,9.37,3.57,14.77v6.72h-39.78c1.14,2.63,2.9,4.75,5.28,6.35 c2.38,1.6,5.07,2.4,8.05,2.4c2.06,0,4.02-0.41,5.87-1.23c1.85-0.82,3.45-1.97,4.8-3.47l10.03,8.96c-2.63,2.92-5.74,5.17-9.33,6.77 C546.16,94.31,542.38,95.11,538.4,95.11z M524.85,59.49h25.28c-1.07-2.63-2.65-4.76-4.75-6.4c-2.1-1.64-4.71-2.45-7.84-2.45 c-3.13,0-5.76,0.82-7.89,2.45C527.52,54.73,525.92,56.86,524.85,59.49z\"\n}), React.createElement(\"path\", {\n className: \"st3\",\n d: \"M611.61,39.71c3.45,1.67,6.38,4.04,8.8,7.09l-10.45,8.43c-2.42-3.06-5.55-4.59-9.38-4.59 c-3.56,0-6.52,1.32-8.91,3.95c-2.38,2.63-3.57,5.94-3.57,9.92v29.65h-13.44V38.16h13.44v2.35c3.84-2.2,8-3.31,12.48-3.31 C604.49,37.2,608.16,38.04,611.61,39.71z\"\n}), React.createElement(\"path\", {\n className: \"st3\",\n d: \"M158.37-0.4l0.02,16.54h99.99v77.94h34.42c8.73,0,16.65-2.07,23.76-6.21c7.11-4.14,12.71-9.81,16.81-17.01 c4.09-7.2,6.14-15.21,6.14-24.03c0-8.91-2.05-16.96-6.14-24.16c-4.1-7.2-9.7-12.85-16.81-16.94c-7.11-4.09-15.03-6.14-23.76-6.14 h-13.65h-20.77h-76.45C181.75-0.3,158.37-0.4,158.37-0.4z M275.39,16.59h17.41c5.67,0,10.75,1.31,15.25,3.91 c4.5,2.61,8.03,6.21,10.6,10.8c2.56,4.59,3.85,9.77,3.85,15.52c0,5.76-1.28,10.93-3.85,15.52c-2.56,4.59-6.1,8.19-10.6,10.8 c-4.5,2.61-9.58,3.91-15.25,3.91h-17.41V16.59z\"\n}));\n\nvar SvgMultidronerLogoNegative = function SvgMultidronerLogoNegative(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 649 114\",\n style: {\n enableBackground: \"new 0 0 649 114\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), React.createElement(\"title\", null, title), _ref2, _ref3, _ref4, _ref5, _ref6);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgMultidronerLogoNegative, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/multidroner-logo-negative.64aab694.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as ddkLogo } from './../media/logo.svg'\r\nimport { ReactComponent as ddkLogoCompact } from './../media/logo-compact.svg'\r\nimport { ReactComponent as kortomaticLogo } from './../media/kortomatic-logo.svg'\r\nimport { ReactComponent as multidronerLogo } from './../media/multidroner-logo.svg'\r\nimport { ReactComponent as multidronerLogoNegative } from './../media/multidroner-logo-negative.svg'\r\n\r\nconst logos = {\r\n ddk: {\r\n name: 'Dansk Drone Kompagni ApS',\r\n logo: ddkLogo,\r\n logoNegative: ddkLogo,\r\n type: 'svg',\r\n url: 'https://www.dronekompagniet.dk'\r\n },\r\n kortomatic: {\r\n name: 'Kortomatic ApS',\r\n logo: kortomaticLogo,\r\n logoNegative: kortomaticLogo,\r\n type: 'svg',\r\n url: 'https://www.kortomatic.com'\r\n },\r\n multidroner: {\r\n name: 'Multidroner ApS',\r\n logo: multidronerLogo,\r\n logoNegative: multidronerLogoNegative,\r\n type: 'svg',\r\n url: 'https://multidroner.dk/'\r\n }\r\n}\r\n\r\nexport default logos\r\n","import { useState } from 'react'\r\nimport { useId } from '@reach/auto-id'\r\n\r\nfunction useInput(defaultValue, parser = x => x) {\r\n const [value, setValue] = useState(defaultValue)\r\n const id = useId()\r\n return {\r\n value,\r\n id: `ddk-${id}`,\r\n onChange: e => setValue(parser(e.target.value))\r\n }\r\n}\r\n\r\nexport default useInput\r\n","import { useState } from 'react'\r\n\r\nfunction useLocalStorage(key, initialValue, clearOnClose = false) {\r\n const storageMethod = `${clearOnClose ? 'session' : 'local'}Storage`\r\n // State to store our value\r\n // Pass initial state function to useState so logic is only executed once\r\n const [storedValue, setStoredValue] = useState(() => {\r\n try {\r\n // Get from local storage by key\r\n const item = window[storageMethod].getItem(key)\r\n // Parse stored json or if none return initialValue\r\n return item ? JSON.parse(item) : initialValue\r\n } catch (error) {\r\n // If error also return initialValue\r\n console.log(error)\r\n return initialValue\r\n }\r\n })\r\n\r\n // Return a wrapped version of useState's setter function that ...\r\n // ... persists the new value to localStorage.\r\n const setValue = value => {\r\n try {\r\n // Allow value to be a function so we have same API as useState\r\n const valueToStore =\r\n value instanceof Function ? value(storedValue) : value\r\n // Save state\r\n setStoredValue(valueToStore)\r\n // Save to local storage\r\n window[storageMethod].setItem(key, JSON.stringify(valueToStore))\r\n } catch (error) {\r\n // A more advanced implementation would handle the error case\r\n console.log(error)\r\n }\r\n }\r\n\r\n return [storedValue, setValue]\r\n}\r\n\r\nexport default useLocalStorage\r\n","import React, { createContext, useMemo } from 'react'\r\nimport useLocalStorage from '../hooks/use-local-storage'\r\nimport 'dayjs/locale/da'\r\nimport 'dayjs/locale/en'\r\nimport dayjs from 'dayjs'\r\nimport dayjsRelativeTime from 'dayjs/plugin/relativeTime'\r\nimport formatDate from '../helpers/format-date'\r\nimport { defaultLocale } from '../l10n'\r\ndayjs.extend(dayjsRelativeTime)\r\n\r\nexport const LocaleContext = createContext(null)\r\n\r\nexport function LocaleProvider({\r\n children,\r\n localeStrings,\r\n locales,\r\n defaultLocale\r\n}) {\r\n const [a, b] = [...navigator.language]\r\n const cc = [a, b].join('')\r\n const [locale, setLocale] = useLocalStorage(\r\n 'preferredLocale',\r\n locales.includes(cc) ? cc : locales[0]\r\n )\r\n\r\n const strings = useMemo(\r\n () => ({ ...localeStrings[defaultLocale], ...localeStrings[locale] }),\r\n [locale]\r\n )\r\n\r\n function relativeTime(epoch) {\r\n return dayjs(epoch).fromNow()\r\n }\r\n\r\n const formatRelativeTime = date => {\r\n dayjs.locale(locale)\r\n const isNotToday = dayjs(date).isBefore(dayjs().startOf('day'))\r\n return `${\r\n isNotToday ? formatDate(date, { locale }) : strings.today\r\n }, ${dayjs(date).format('HH:mm')} (${relativeTime(date)})`\r\n }\r\n\r\n return (\r\n <LocaleContext.Provider\r\n value={{\r\n strings,\r\n locale,\r\n locales,\r\n setLocale,\r\n formatRelativeTime\r\n }}>\r\n {children}\r\n </LocaleContext.Provider>\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { createContext } from 'react'\r\n\r\nconst UserContext = createContext([])\r\n\r\nexport function withUser(Component) {\r\n return function UsefulComponent(props) {\r\n return (\r\n <UserContext.Consumer>\r\n {([user, setUser]) => (\r\n <Component {...props} user={user} setUser={setUser} />\r\n )}\r\n </UserContext.Consumer>\r\n )\r\n }\r\n}\r\n\r\nexport function useUser() {\r\n return useContext(UserContext)\r\n}\r\n\r\nexport default UserContext\r\n","import React, { useState } from \"react\"\r\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\"\r\nimport logos from \"./../helpers/logos\"\r\nimport { useTheme, makeStyles } from \"@material-ui/styles\"\r\nimport { getConfig } from \"../constants\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n // margin: theme.spacing(1),\r\n textAlign: \"center\",\r\n },\r\n}))\r\n\r\nlet counter = 0\r\n\r\nconst Logo = ({\r\n displayedLogo = getConfig().logo,\r\n disableLogoLink,\r\n negative = false,\r\n logoType = \"dark\",\r\n imgProps,\r\n ...props\r\n}) => {\r\n const classes = useStyles()\r\n const theme = useTheme()\r\n const [id] = useState(() => `id${(counter = counter + 1)}`)\r\n const matchesMedium = useMediaQuery(theme.breakpoints.up(\"md\"))\r\n const matchesSmall = useMediaQuery(theme.breakpoints.up(\"sm\"))\r\n const logo = logos[displayedLogo]\r\n if (logo) {\r\n const fillColor =\r\n theme.palette.primary[logoType === \"dark\" ? \"contrastText\" : \"main\"]\r\n\r\n const Wrapper = ({ children }) =>\r\n disableLogoLink ? (\r\n <div id={id}>{children}</div>\r\n ) : (\r\n <a\r\n className={classes.root}\r\n href={logo.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n title={logo.name}\r\n style={{ textAlign: \"center\", display: \"inherit\" }}\r\n id={id}\r\n >\r\n {children}\r\n </a>\r\n )\r\n\r\n return (\r\n <Wrapper>\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: `\r\n #${id} .svg-ddk-logo-root {\r\n display: inline-block;\r\n margin: auto;\r\n height: ${matchesSmall ? 48 : 36}px;\r\n width: auto;\r\n }\r\n #${id} .svg-ddk-logo{\r\n fill: ${fillColor}\r\n }\r\n #${id} .svg-ddk-logo-text{\r\n fill: ${\r\n logoType === \"light\" && displayedLogo === \"ddk\"\r\n ? \"#3D5A65\"\r\n : fillColor\r\n }\r\n }\r\n `,\r\n }}\r\n />\r\n {negative ? <logo.logoNegative /> : <logo.logo />}\r\n </Wrapper>\r\n )\r\n } else throw Error(`Invalid logo: ${displayedLogo}`)\r\n}\r\n\r\nexport default Logo\r\n// withTheme()(withStyles(styles)(Logo))\r\n"],"sourceRoot":""}