{"version":3,"sources":["components/Wordmark.tsx","hooks/useLocalStorage.ts","ctx/meta/MetaCtx.tsx","constants.ts","ctx/viewport/getViewportState.ts","ctx/viewport/ViewportCtx.tsx","hooks/useMedia.ts","components/Logo.tsx","ctx/meta/useMeta.ts","hocs/withLayout/withLayout.tsx","hooks/useOnlineStatus.ts","hocs/withLayout/Menu.tsx","hocs/withLayout/DefaultLayout.tsx","hocs/withLayout/NoneLayout.tsx","util/NumberRange.ts","ctx/device/getDevice.ts","ctx/device/DeviceCtx.tsx","ctx/device/useDevice.ts","components/Box.tsx","theme.js","util/identity.ts","util/compose.ts","lib/notify/AntdNotify.ts","lib/notify/NoopNotify.ts","lib/notify/notify.ts","lib/xhr/types.ts","hooks/useReq.ts","hooks/useGql.ts","hooks/useResHandler.ts","hocs/withRenderDelay.tsx","assets/SonarSleep.svg","components/Fallback.tsx","hooks/useTimeout.ts","ctx/route-info/RouteInfoCtx.tsx","ctx/route-info/useRouteInfo.ts","hooks/useRoutingLocalCache.ts","hooks/useRoutingBehavior.ts","hooks/useRandomNotationIdGetter.ts","components/ImFeelingLucky.tsx","components/Landing.tsx","components/Nothing.tsx","components/TimeoutButton.tsx","components/NewVersionNotifier.tsx","util/types.ts","components/NotFound.tsx","util/scrollToTop.ts","components/ScrollBehavior.tsx","hocs/withAuthRequirement.tsx","App.tsx","reportWebVitals.ts","serviceWorkerRegistration.ts","index.tsx","lib/errors/types.ts","lib/errors/constants.ts","lib/errors/StringSyncError.ts","lib/graphql/ObjectPath.ts","lib/graphql/helpers.ts","lib/graphql/t.ts","lib/graphql/$gql.ts","lib/graphql/graphqlTypes.ts","lib/graphql/constants.ts","hooks/useEffectOnce.ts","util/Duration.ts","ctx/auth/getNullAuthUser.ts","ctx/auth/helpers.ts","ctx/auth/queries.ts","ctx/auth/AuthCtx.tsx","ctx/auth/isLoggedInSelector.ts","ctx/auth/useAuth.ts","hooks/useGqlHandler.ts","domain/constants.ts","domain/compareUserRoles.ts","ctx/viewport/useViewport.ts"],"names":["Outer","styled","span","props","theme","Wordmark","sanitize","target","obj","sanitized","Object","entries","k","v","useLocalStorage","key","initialValue","useState","item","window","localStorage","getItem","parsedValue","JSON","parse","isType","error","console","storedValue","setStoredValue","useCallback","value","setItem","stringify","META_ACTIONS","setVersion","createAction","getVersion","document","getElementsByTagName","namedItem","content","getInitialState","version","metaReducer","createReducer","builder","addCase","state","action","payload","MetaCtx","React","createContext","MetaProvider","useReducer","dispatch","useEffectOnce","Provider","children","REACT_SNAP_ACTIVE","navigator","userAgent","getViewportState","breakpoint","viewport","xs","sm","md","lg","xl","xxl","innerHeight","innerWidth","VIEWPORT_ACTIONS","setViewportState","updateDimensions","BREAKPOINT_QUERIES","BREAKPOINTS","viewportReducer","ViewportCtx","ViewportProvider","queries","values","defaultValue","length","TypeError","mediaQueryLists","useMemo","map","query","matchMedia","getValue","index","findIndex","mediaQueryList","matches","setValue","useEffect","handler","addEventListener","removeEventListener","useMedia","onResize","LogoSvg","width","height","fill","viewBox","d","Logo","component","style","fontSize","size","useMeta","useContext","Layout","getOnlineStatus","onLine","StyledRow","Row","StyledUploadOutlined","UploadOutlined","StyledCompassOutlined","CompassOutlined","StyledMenuOutlined","MenuOutlined","Username","div","Role","Menu","useAuth","authState","authApi","isLoggedIn","isLoggedInSelector","isAuthPending","isPending","user","useViewport","isLtEqMd","isModalVisible","setModalVisible","isGtEqTeacher","gtEqTeacher","role","isAdmin","eqAdmin","settingsButtonClassName","hideModal","gutterPx","isLibraryVisible","isUploadVisible","isLoginVisible","isSignupVisible","isSettingsVisible","isAdminActionsVisible","justify","align","gutter","type","shape","to","className","isActive","undefined","onClick","closable","closeIcon","title","icon","UserOutlined","username","toLowerCase","visible","onCancel","footer","direction","block","logout","disabled","StyledLayout","StyledHeader","Header","StyledFooter","Footer","Lane","Version","Offline","em","DefaultLayout","location","useLocation","isGtMd","isOnline","onlineStatus","setOnlineStatus","goOnline","goOffline","useOnlineStatus","isWordmarkVisible","isOfflineVisible","isVersionVisible","logoLinkTo","pathname","startsWith","Content","lanes","href","rel","NoneLayout","DEFAULT_OPTIONS","getLayout","layout","opts","DEFAULT","NONE","withLayout","LayoutComponent","Component","LeftBoundedNumberRange","start","end","Number","POSITIVE_INFINITY","midpoint","this","NumberRange","range","RightBoundedNumberRange","NEGATIVE_INFINITY","RangeError","toString","n1","n2","from","appleIphone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","match","regex","test","getDevice","tmp","split","device","primaryInput","inputType","deviceType","apple","phone","ipod","tablet","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","mobile","DEVICE_ACTIONS","setDevice","INITIAL_USER_AGENT","deviceReducer","DeviceCtx","DeviceProvider","useDevice","Box","module","exports","identity","x","compose","funcs","reduce","a","b","MESSAGE_DEFAULT_DURATION","Duration","sec","AntdNotify","message","info","success","warn","loading","popup","notification","modal","Modal","sendMessage","config","duration","isNull","makePopup","description","placement","btn","button","showModal","maskClosable","notify","noop","Status","CancelType","GqlStatus","useResHandler","status","res","deps","callback","GRAPHQL_URI","origin","useGql","gql","xhr","Init","setRes","externalCancelRef","useRef","internalCancelRef","supplantCancelRef","current","req","input","init","done","Pending","cancelled","cancelType","None","abortController","AbortController","cancel","nextCancelType","abort","Internal","External","Supplant","fetch","signal","then","parsed","Cancelled","Success","result","catch","Error","finally","reset","useReq","graphql","toGqlResponse","exec","variables","toRequestInit","gqlRes","setGqlRes","data","errors","Errors","MissingDataError","delay","_style","_g","_g2","RENDER_DELAY","Icon","LoadingOutlined","Fallback","ms","setVisible","handle","setTimeout","clearTimeout","enhance","indicator","ROUTE_INFO_ACTIONS","setPrevRoute","setReturnToRoute","RETURN_TO_PATHNAMES","routeInfoReducer","prevRoute","returnToRoute","RouteInfoCtx","RouteInfoProvider","some","useRouteInfo","DEFAULT_ROUTING_CACHE","freeze","lastVisitedLandingAtMsSinceEpoch","ONE_MINUTE","min","TWO_WEEKS","day","REDIRECT_LANDING_TO_LIBRARY_TIME_MS_RANGE","getMsSinceEpoch","Date","getTime","useRoutingBehavior","isInitialPage","cache","updateCache","msSinceLandingLastVisited","contains","shouldRedirectFromLandingToLibrary","setShouldRedirectFromLandingToLibrary","recordLandingVisit","RANDOM_NOTATION_ID_GQL","$gql","setQuery","id","t","string","setVariables","limit","number","build","ImFeelingLucky","navigate","useNavigate","hasError","setHasError","onSuccess","onErrors","execute","useGqlHandler","first","suggestedNotations","notation","UNKNOWN_ERROR_MSG","useRandomNotationIdGetter","notationId","getRandomNotationId","Jumbotron","Overlay","WhiteBox","h1","SubHeader","h2","Title","h3","Landing","replace","ThunderboltOutlined","CustomerServiceOutlined","SearchOutlined","Nothing","TimeoutButton","setDisabled","event","onTimeout","timeoutMs","INITIAL_LAST_LOADED_VERSION","NewVersionNotifier","lastLoaded","setLastLoaded","lastLoadedVersion","serviceWorker","ready","registration","notifyUpdateAvailable","once","postMessage","reload","zero","waiting","installing","controller","log","_excluded","_extends","assign","i","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgSonarSleep","_ref","svgRef","titleId","xmlns","xmlnsXlink","y","enableBackground","xmlSpace","ref","AuthRequirement","PromiseStatus","ForwardRef","NotFound","originalTitle","scrollToTop","debounce","Scroll","animateScroll","ignoreCancelEvents","offset","smooth","leading","trailing","ScrollBehavior","withAuthRequirement","authReq","userRole","meetsAuthReqs","authReqs","LOGGED_IN","LOGGED_OUT","LOGGED_IN_AS_STUDENT","gtEqStudent","LOGGED_IN_AS_TEACHER","LOGGED_IN_AS_ADMIN","gtEqAdmin","isMeetingAuthReq","ThemeProviderProxy","ThemeProvider","Library","N","NEdit","NExport","NRecord","Signup","Login","ConfirmEmail","ForgotPassword","ResetPassword","Upload","UserIndex","TagIndex","App","locale","enUS","fallback","path","element","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","isLocalhost","Boolean","hostname","registerValidSW","swUrl","register","onupdatefound","installingWorker","onstatechange","onUpdate","rootElement","getElementById","hasChildNodes","hydrateRoot","createRoot","render","unregister","URL","process","headers","response","contentType","get","checkValidServiceWorker","HttpStatus","ErrorCode","MISSING_DATA_MSG","StringSyncError","code","UnknownError","UNKNOWN","ConflictError","CONFLICT","InternalError","INTERNAL","ObjectPath","parts","join","SEPARATOR","object","set","part","partStr","create","toPath","STAR","META_KEY","Symbol","injectMeta","meta","isPlainObject","isLeaf","val","isString","isNumber","isBoolean","File","forEachEntry","root","truePath","schemaPath","Array","isArray","forEach","el","ndx","add","isObject","msg","types","custom","helpers","isFile","boolean","oneOf","enumerable","isEnum","constant","optional","file","union","frags","__typename","fields","onUnion","compiler","field","abortSignal","lookup","createVariableNameLookup","uploadVariableNames","name","variableName","params","graphqlify","method","Accept","body","toFormData","credentials","mode","extraction","extractFiles","clone","fileMap","files","pathGroups","paths","rest","formData","FormData","append","isUndefined","entry","rawString","GqlBuilder","mutation","includes","json","isGqlResponse","UserRole","TagCategory","cloneDeep","hr","_ms","getNullAuthUser","email","STUDENT","confirmedAt","toAuthUser","authUserLike","whoami","login","User","ForbiddenError","usernameOrEmail","password","Processed","at","signup","ValidationError","details","AUTH_ACTIONS","pending","setUser","setErrors","clearErrors","authReducer","AuthStateCtx","AuthApiCtx","authenticate","AuthProvider","authenticateRes","onInit","onCancelled","loginRes","onPending","logoutRes","signupRes","api","staticEventHandlers","USER_ROLES","TEACHER","ADMIN","compareUserRoles","role1","role2","ndx1","ndx2"],"mappings":"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","file":"static/js/main.fdb2e0af.chunk.js","sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\n\nconst Outer = styled.span`\n font-weight: lighter;\n letter-spacing: 1px;\n color: ${(props) => props.theme['@primary-color']};\n`;\n\nexport const Wordmark: React.FC = () => stringsync;\n","import { useCallback, useState } from 'react';\nimport { FlatSerializable } from '../util/types';\n\nconst isType = (target: T, obj: any): obj is T => {\n if (typeof obj !== 'object') {\n return false;\n }\n\n for (const [k, v] of Object.entries(obj)) {\n if (!(k in target)) {\n return false;\n }\n if (typeof target[k] !== typeof v) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Merges only the keys that exist in the dst object iff the corresponding value types match. This\n * excludes any extra keys, but preserves the values in src. This is particularly useful when the\n * src object schema's change, and you want to make a best effort to keep the compatible key-values\n * that already exist.\n */\nconst sanitize = (target: T, obj: any) => {\n const sanitized = { ...target };\n\n if (typeof obj !== 'object') {\n return sanitized;\n }\n\n for (const [k, v] of Object.entries(target)) {\n if (!(k in obj)) {\n continue;\n }\n if (typeof obj[k] === typeof v) {\n (sanitized as FlatSerializable)[k] = obj[k];\n }\n }\n\n return sanitized;\n};\n\n// Adapted from https://usehooks.com/useLocalStorage/\nexport const useLocalStorage = (\n key: string,\n initialValue: Readonly\n): [T, (value: T) => void] => {\n const [storedValue, setStoredValue] = useState(() => {\n try {\n const item = window.localStorage.getItem(key);\n const parsedValue = item ? JSON.parse(item) : initialValue;\n return isType(initialValue, parsedValue) ? parsedValue : sanitize(initialValue, parsedValue);\n } catch (error) {\n console.error(error);\n return { ...initialValue };\n }\n });\n\n const setValue = useCallback(\n (value: T) => {\n try {\n setStoredValue(sanitize(initialValue, value));\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n console.error(error);\n }\n },\n [initialValue, key]\n );\n\n return [storedValue, setValue];\n};\n","import { createAction, createReducer } from '@reduxjs/toolkit';\nimport React, { PropsWithChildren, useReducer } from 'react';\nimport { useEffectOnce } from '../../hooks/useEffectOnce';\n\nexport type MetaState = {\n version: string;\n};\n\nconst META_ACTIONS = {\n setVersion: createAction<{ version: string }>('setVersion'),\n};\n\nconst getVersion = (): string => {\n const metas = document.getElementsByTagName('meta');\n return metas.namedItem('version')?.content || '?.?.?';\n};\n\nconst getInitialState = (): MetaState => ({\n version: getVersion(),\n});\n\nconst metaReducer = createReducer(getInitialState(), (builder) => {\n builder.addCase(META_ACTIONS.setVersion, (state, action) => {\n state.version = action.payload.version;\n });\n});\n\nexport const MetaCtx = React.createContext(getInitialState());\n\nexport const MetaProvider: React.FC> = (props) => {\n const [state, dispatch] = useReducer(metaReducer, getInitialState());\n\n useEffectOnce(() => {\n const version = getVersion();\n dispatch(META_ACTIONS.setVersion({ version }));\n });\n\n return {props.children};\n};\n","export const REACT_SNAP_ACTIVE = navigator.userAgent === 'ReactSnap';\n","import { Breakpoint, ViewportState } from './types';\n\nexport const getViewportState = (breakpoint: Breakpoint): ViewportState => {\n const viewport = {\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false,\n breakpoint,\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n };\n viewport[breakpoint] = true;\n return viewport;\n};\n","import { createAction, createReducer } from '@reduxjs/toolkit';\nimport React, { PropsWithChildren, useEffect, useReducer } from 'react';\nimport { useMedia } from '../../hooks/useMedia';\nimport { getViewportState } from './getViewportState';\nimport { Breakpoint, ViewportState } from './types';\n\nconst VIEWPORT_ACTIONS = {\n setViewportState: createAction<{ state: ViewportState }>('setBreakpoint'),\n updateDimensions: createAction<{ innerHeight: number; innerWidth: number }>('updateDimensions'),\n};\n\nconst BREAKPOINT_QUERIES = [\n '(max-width: 575px)',\n '(max-width: 767px)',\n '(max-width: 991px)',\n '(max-width: 1199px)',\n '(max-width: 1599px)',\n];\n\nconst BREAKPOINTS: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst getInitialState = (): ViewportState => getViewportState('xs');\n\nconst viewportReducer = createReducer(getInitialState(), (builder) => {\n builder.addCase(VIEWPORT_ACTIONS.setViewportState, (state, action) => {\n return action.payload.state;\n });\n builder.addCase(VIEWPORT_ACTIONS.updateDimensions, (state, action) => {\n state.innerHeight = action.payload.innerHeight;\n state.innerWidth = action.payload.innerWidth;\n });\n});\n\nexport const ViewportCtx = React.createContext(getInitialState());\n\nexport const ViewportProvider: React.FC> = (props) => {\n const [state, dispatch] = useReducer(viewportReducer, getInitialState());\n\n const breakpoint = useMedia(BREAKPOINT_QUERIES, BREAKPOINTS, 'xxl');\n\n useEffect(() => {\n dispatch(VIEWPORT_ACTIONS.setViewportState({ state: getViewportState(breakpoint) }));\n }, [breakpoint]);\n\n useEffect(() => {\n const onResize = () => {\n dispatch(VIEWPORT_ACTIONS.updateDimensions({ innerHeight: window.innerHeight, innerWidth: window.innerWidth }));\n };\n window.addEventListener('resize', onResize);\n window.addEventListener('orientationchange', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n window.addEventListener('orientationchange', onResize);\n };\n }, []);\n\n return {props.children};\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\n/**\n * src: https://usehooks.com/useMedia/\n *\n * This hook creates media query watchers on the window object, that\n * will return different values based on the first watcher that matches.\n */\nexport const useMedia = (queries: string[], values: T[], defaultValue: T): T => {\n if (queries.length !== values.length) {\n throw new TypeError(\"'queries' and 'values' arguments must be the same length\");\n }\n\n // These objects will be responsible for triggering a callback\n // whenever any of the queries' criterion changes.\n const mediaQueryLists = useMemo(() => {\n return queries.map((query) => window.matchMedia(query));\n }, [queries]);\n\n // This getter method will find the first media query list that\n // matches and either return the value at the same index or\n // the default value.\n const getValue = useCallback(() => {\n const index = mediaQueryLists.findIndex((mediaQueryList) => mediaQueryList.matches);\n return index < 0 ? defaultValue : values[index];\n }, [mediaQueryLists, values, defaultValue]);\n\n // Create media query list listeners, which trigger a\n // handler that changes the value that is returned\n // from this function.\n const [value, setValue] = useState(getValue());\n useEffect(() => {\n const handler = () => setValue(getValue);\n for (const mediaQueryList of mediaQueryLists) {\n mediaQueryList.addEventListener('change', handler);\n }\n return () => {\n for (const mediaQueryList of mediaQueryLists) {\n mediaQueryList.removeEventListener('change', handler);\n }\n };\n }, [getValue, mediaQueryLists]);\n\n return value;\n};\n","import Icon from '@ant-design/icons';\nimport React from 'react';\n\nconst LogoSvg = () => (\n \n \n \n);\n\ntype Props = {\n size: string | number;\n};\n\nexport const Logo: React.FC = (props) => {\n return ;\n};\n","import { useContext } from 'react';\nimport { MetaCtx } from './MetaCtx';\n\nexport const useMeta = () => {\n const state = useContext(MetaCtx);\n return state;\n};\n","import React, { PropsWithChildren } from 'react';\nimport { DefaultLayout } from './DefaultLayout';\nimport { NoneLayout } from './NoneLayout';\n\nexport enum Layout {\n DEFAULT = 'DEFAULT',\n NONE = 'NONE',\n}\n\nexport type LayoutOptions = {\n lanes: boolean;\n footer: boolean;\n};\n\nconst DEFAULT_OPTIONS: LayoutOptions = {\n lanes: true,\n footer: true,\n};\n\nconst getLayout = (layout: Layout, opts: LayoutOptions): React.FC> => {\n switch (layout) {\n case Layout.DEFAULT:\n return (props) => (\n \n {props.children}\n \n );\n case Layout.NONE:\n return NoneLayout;\n default:\n throw new TypeError(`unrecognized layout: '${layout}'`);\n }\n};\n\nexport const withLayout = (layout: Layout, opts: LayoutOptions = DEFAULT_OPTIONS) => {\n const LayoutComponent = getLayout(layout, opts);\n return function

(Component: React.ComponentType

) {\n return (props: P) => (\n \n \n \n );\n };\n};\n","import { useEffect, useState } from 'react';\n\n// from https://github.com/rehooks/online-status\n\nconst getOnlineStatus = () => {\n return typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean' ? navigator.onLine : true;\n};\n\nexport const useOnlineStatus = () => {\n const [onlineStatus, setOnlineStatus] = useState(getOnlineStatus);\n\n useEffect(() => {\n const goOnline = () => setOnlineStatus(true);\n const goOffline = () => setOnlineStatus(false);\n\n window.addEventListener('online', goOnline);\n window.addEventListener('offline', goOffline);\n\n return () => {\n window.removeEventListener('online', goOnline);\n window.removeEventListener('offline', goOffline);\n };\n }, []);\n\n return onlineStatus;\n};\n","import { CompassOutlined, MenuOutlined, UploadOutlined, UserOutlined } from '@ant-design/icons';\nimport { Avatar, Button, Col, Modal, Row, Space } from 'antd';\nimport React, { useState } from 'react';\nimport { Link, NavLink } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { isLoggedInSelector, useAuth } from '../../ctx/auth';\nimport { useViewport } from '../../ctx/viewport/useViewport';\nimport { eqAdmin, gtEqTeacher } from '../../domain';\n\nconst StyledRow = styled(Row)`\n svg {\n color: ${(props) => props.theme['@muted']};\n }\n\n .active-link svg {\n color: ${(props) => props.theme['@primary-color']};\n }\n`;\n\nconst StyledUploadOutlined = styled(UploadOutlined)`\n font-size: 22px;\n`;\n\nconst StyledCompassOutlined = styled(CompassOutlined)`\n font-size: 22px;\n`;\n\nconst StyledMenuOutlined = styled(MenuOutlined)`\n font-size: 22px;\n`;\n\nconst Username = styled.div`\n font-size: 14px;\n`;\n\nconst Role = styled.div`\n font-size: 12px;\n font-weight: lighter;\n color: ${(props) => props.theme['@muted']};\n`;\n\ninterface Props {}\n\nexport const Menu: React.FC = (props) => {\n const [authState, authApi] = useAuth();\n const isLoggedIn = isLoggedInSelector(authState);\n const isAuthPending = authState.isPending;\n const user = authState.user;\n const { xs, sm, md } = useViewport();\n const isLtEqMd = xs || sm || md;\n\n const [isModalVisible, setModalVisible] = useState(false);\n const isGtEqTeacher = gtEqTeacher(user.role);\n const isAdmin = eqAdmin(user.role);\n const settingsButtonClassName = isModalVisible ? 'active-link' : '';\n\n const showModal = () => setModalVisible(true);\n const hideModal = () => setModalVisible(false);\n const onLogoutClick = () => {\n authApi.logout();\n hideModal();\n };\n\n const gutterPx = isLoggedIn ? 16 : 8;\n const isLibraryVisible = !isAuthPending && !isLtEqMd && isLoggedIn;\n const isUploadVisible = !isAuthPending && !isLtEqMd && isLoggedIn && isGtEqTeacher;\n const isLoginVisible = !isAuthPending && !isLoggedIn;\n const isSignupVisible = !isAuthPending && !isLoggedIn;\n const isSettingsVisible = !isAuthPending && isLoggedIn;\n const isAdminActionsVisible = !isAuthPending && isAdmin;\n\n return (\n <>\n \n {isLibraryVisible ? (\n \n \n \n ) : null}\n\n {isUploadVisible ? (\n \n \n \n ) : null}\n\n {isSettingsVisible ? (\n \n \n \n ) : null}\n\n {isLoginVisible ? (\n \n \n \n \n \n ) : null}\n\n {isSignupVisible ? (\n \n \n \n \n \n ) : null}\n \n\n {isLoggedIn ? (\n \n \n } />{' '}\n \n \n

\n {user.username}\n {user.role.toLowerCase()}\n
\n \n \n }\n visible={isModalVisible}\n onCancel={hideModal}\n footer={null}\n >\n \n {isAdminActionsVisible && (\n <>\n \n \n \n \n )}\n\n {isAdminActionsVisible && (\n <>\n \n \n \n \n )}\n\n \n \n \n ) : null}\n \n );\n};\n","import { Button, Col, Layout, Row } from 'antd';\nimport React, { PropsWithChildren } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { Logo } from '../../components/Logo';\nimport { Wordmark } from '../../components/Wordmark';\nimport { useMeta } from '../../ctx/meta/useMeta';\nimport { useViewport } from '../../ctx/viewport/useViewport';\nimport { useOnlineStatus } from '../../hooks/useOnlineStatus';\nimport { Menu } from './Menu';\n\nexport const HEADER_HEIGHT_PX = 64;\n\nconst StyledLayout = styled(Layout)`\n && {\n min-height: 100vh;\n }\n`;\n\nconst StyledHeader = styled(Layout.Header)`\n && {\n background: #ffffff;\n border-bottom: 1px solid #e8e8e8;\n padding: 0 16px;\n display: flex;\n align-items: center;\n height: ${HEADER_HEIGHT_PX}px;\n }\n`;\n\nconst StyledFooter = styled(Layout.Footer)`\n text-align: center;\n color: ${(props) => props.theme['@muted-color']};\n`;\n\nconst Lane = styled.div`\n max-width: 1200px;\n width: 100%;\n margin: 0 auto;\n`;\n\nconst Version = styled.div`\n font-size: 0.6em;\n`;\n\nconst Offline = styled.em`\n font-weight: lighter;\n color: ${(props) => props.theme['@muted']};\n`;\n\ntype Props = PropsWithChildren<{\n lanes: boolean;\n footer: boolean;\n}>;\n\nexport const DefaultLayout: React.FC = (props) => {\n const { version } = useMeta();\n\n const location = useLocation();\n const { lg, xl, xxl } = useViewport();\n const isGtMd = lg || xl || xxl;\n\n const isOnline = useOnlineStatus();\n const isWordmarkVisible = isOnline && isGtMd;\n const isOfflineVisible = !isOnline;\n const isVersionVisible = !isWordmarkVisible;\n const logoLinkTo = location.pathname.startsWith('/library') ? '/' : '/library';\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {isWordmarkVisible && (\n \n \n \n )}\n {isVersionVisible && (\n \n {version}\n \n )}\n {isOfflineVisible && (\n \n offline\n \n )}\n \n \n \n \n \n \n \n \n \n {props.lanes ? {props.children} : props.children}\n {props.footer && isGtMd && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {version}\n
\n
\n )}\n \n );\n};\n","import React, { PropsWithChildren } from 'react';\n\nexport const NoneLayout: React.FC> = (props) => {\n return
{props.children}
;\n};\n","export interface Range {\n readonly start: T;\n readonly end: T;\n readonly size: T;\n readonly midpoint: T;\n contains(value: T): boolean;\n eq(range: Range): boolean;\n toString(): string;\n}\n\nclass LeftBoundedNumberRange implements Range {\n start;\n end = Number.POSITIVE_INFINITY;\n size = Number.POSITIVE_INFINITY;\n midpoint = Number.POSITIVE_INFINITY;\n\n constructor(start: number) {\n this.start = start;\n }\n\n to(end: number) {\n return new NumberRange(this.start, end);\n }\n\n contains(value: number) {\n return this.start <= value && value <= this.end;\n }\n\n eq(range: NumberRange) {\n return this.start === range.start && this.end === range.end;\n }\n\n toString() {\n return `[${this.start}, +∞)`;\n }\n}\n\nclass RightBoundedNumberRange implements Range {\n start = Number.NEGATIVE_INFINITY;\n end;\n size = Number.POSITIVE_INFINITY;\n midpoint = Number.NEGATIVE_INFINITY;\n\n constructor(end: number) {\n this.end = end;\n }\n\n from(start: number) {\n return new NumberRange(start, this.end);\n }\n\n contains(value: number) {\n return this.start <= value && value <= this.end;\n }\n\n eq(range: NumberRange) {\n return this.start === range.start && this.end === range.end;\n }\n\n toString() {\n return `(-∞, ${this.end}]`;\n }\n}\n\nexport class NumberRange implements Range {\n static unsorted(n1: number, n2: number) {\n return n1 < n2 ? NumberRange.from(n1).to(n2) : NumberRange.from(n2).to(n1);\n }\n\n static from(start: number) {\n return new LeftBoundedNumberRange(start);\n }\n\n static to(end: number) {\n return new RightBoundedNumberRange(end);\n }\n\n start: number;\n end: number;\n\n constructor(start: number, end: number) {\n if (start > end) {\n throw new RangeError('start must be <= end');\n }\n\n this.start = start;\n this.end = end;\n }\n\n get size() {\n return this.end - this.start;\n }\n\n get midpoint() {\n return this.start + this.size / 2;\n }\n\n contains(value: number) {\n return this.start <= value && value <= this.end;\n }\n\n eq(range: NumberRange) {\n return this.start === range.start && this.end === range.end;\n }\n\n toString() {\n const start = this.start === Number.NEGATIVE_INFINITY ? '(-∞' : `[${this.start.toString()}`;\n const end = this.end === Number.POSITIVE_INFINITY ? '+∞)' : `${this.end.toString()}]`;\n return `${start}, ${end}`;\n }\n}\n","import { deviceType, primaryInput } from 'detect-it';\nimport { Device } from './types';\n\n// src and tests at https://github.com/kaimallea/isMobile\n\nconst appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i; // Match 'Silk' AND 'Mobile'\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nconst match = (regex: RegExp, userAgent: string): boolean => {\n return regex.test(userAgent);\n};\n\nexport const getDevice = (userAgent: string): Device => {\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n\n const device: Device = {\n primaryInput: primaryInput,\n inputType: deviceType,\n apple: {\n phone: match(appleIphone, userAgent) && !match(windowsPhone, userAgent),\n ipod: match(appleIpod, userAgent),\n tablet: !match(appleIphone, userAgent) && match(appleTablet, userAgent) && !match(windowsPhone, userAgent),\n device:\n (match(appleIphone, userAgent) || match(appleIpod, userAgent) || match(appleTablet, userAgent)) &&\n !match(windowsPhone, userAgent),\n },\n amazon: {\n phone: match(amazonPhone, userAgent),\n tablet: !match(amazonPhone, userAgent) && match(amazonTablet, userAgent),\n device: match(amazonPhone, userAgent) || match(amazonTablet, userAgent),\n },\n android: {\n phone:\n (!match(windowsPhone, userAgent) && match(amazonPhone, userAgent)) ||\n (!match(windowsPhone, userAgent) && match(androidPhone, userAgent)),\n tablet:\n !match(windowsPhone, userAgent) &&\n !match(amazonPhone, userAgent) &&\n !match(androidPhone, userAgent) &&\n (match(amazonTablet, userAgent) || match(androidTablet, userAgent)),\n device:\n (!match(windowsPhone, userAgent) &&\n (match(amazonPhone, userAgent) ||\n match(amazonTablet, userAgent) ||\n match(androidPhone, userAgent) ||\n match(androidTablet, userAgent))) ||\n match(/\\bokhttp\\b/i, userAgent),\n },\n windows: {\n phone: match(windowsPhone, userAgent),\n tablet: match(windowsTablet, userAgent),\n device: match(windowsPhone, userAgent) || match(windowsTablet, userAgent),\n },\n other: {\n blackberry: match(otherBlackBerry, userAgent),\n blackberry10: match(otherBlackBerry10, userAgent),\n opera: match(otherOpera, userAgent),\n firefox: match(otherFirefox, userAgent),\n chrome: match(otherChrome, userAgent) && !match(androidPhone, userAgent),\n device:\n match(otherBlackBerry, userAgent) ||\n match(otherBlackBerry10, userAgent) ||\n match(otherOpera, userAgent) ||\n match(otherFirefox, userAgent) ||\n (match(otherChrome, userAgent) && !match(androidPhone, userAgent)),\n },\n mobile: false,\n phone: false,\n tablet: false,\n };\n\n device.mobile = device.apple.device || device.android.device || device.windows.device || device.other.device;\n // excludes 'other' devices and ipods, targeting touchscreen phones\n device.phone = device.apple.phone || device.android.phone || device.windows.phone;\n device.tablet = device.apple.tablet || device.android.tablet || device.windows.tablet;\n\n return device;\n};\n","import { createAction, createReducer } from '@reduxjs/toolkit';\nimport React, { PropsWithChildren, useReducer } from 'react';\nimport { useEffectOnce } from '../../hooks/useEffectOnce';\nimport { getDevice } from './getDevice';\nimport { Device } from './types';\n\nconst DEVICE_ACTIONS = {\n setDevice: createAction<{ device: Device }>('setDevice'),\n};\n\nconst INITIAL_USER_AGENT = navigator.userAgent || '';\n\nconst getInitialState = (): Device => getDevice(INITIAL_USER_AGENT);\n\nconst deviceReducer = createReducer(getInitialState(), (builder) => {\n builder.addCase(DEVICE_ACTIONS.setDevice, (state, action) => {\n return action.payload.device;\n });\n});\n\nexport const DeviceCtx = React.createContext(getInitialState());\n\nexport const DeviceProvider: React.FC> = (props) => {\n const [state, dispatch] = useReducer(deviceReducer, getInitialState());\n\n useEffectOnce(() => {\n const device = getDevice(navigator.userAgent || '');\n dispatch(DEVICE_ACTIONS.setDevice({ device }));\n });\n\n return {props.children};\n};\n","import { useContext } from 'react';\nimport { DeviceCtx } from './DeviceCtx';\n\nexport const useDevice = () => {\n const state = useContext(DeviceCtx);\n return state;\n};\n","import styled from 'styled-components';\n\nexport const Box = styled.div`\n background: white;\n border: 1px solid ${(props) => props.theme['@border-color']};\n border-radius: 4px;\n padding: 24px;\n`;\n","const theme = {\n '@primary-color': '#FC354C',\n '@secondary-color': '#6CABBA',\n '@tertiary-color': '#F4F4F4',\n '@highlight-color': '#FF9EA9',\n '@background-color-base': '#F0F2F5',\n '@muted': '#999999',\n '@border-color': '#D9D9D9',\n};\n\nmodule.exports = { theme };\n","export const identity = (x: T) => x;\n","import { identity } from './identity';\n// https://github.com/acdlite/recompose/blob/master/src/packages/recompose/compose.js\n\nexport const compose = (...funcs: Function[]) => funcs.reduce((a, b) => (...args: any[]) => a(b(...args)), identity);\n","import { message, Modal, ModalFuncProps, notification } from 'antd';\nimport { ArgsProps as MessageArgsProps } from 'antd/lib/message';\nimport { ArgsProps as NotificationArgsProps } from 'antd/lib/notification';\nimport { isNull } from 'lodash';\nimport { Duration } from '../../util/Duration';\nimport { MessageConfig, ModalConfig, Notify, PopupConfig } from './types';\n\ntype AntdSendMessage = (props: Omit) => any;\ntype AntdMakePopup = (props: NotificationArgsProps) => any;\ntype AntdShowModal = (props: ModalFuncProps) => any;\n\nconst MESSAGE_DEFAULT_DURATION = Duration.sec(3);\n\nexport class AntdNotify implements Notify {\n private static message = (sendMessage: AntdSendMessage) => (config: MessageConfig) => {\n sendMessage({\n key: config.key,\n content: config.content,\n duration: isNull(config.duration)\n ? config.duration || undefined\n : (config.duration || MESSAGE_DEFAULT_DURATION).sec,\n onClick: config.onClick,\n });\n };\n\n private static popup = (makePopup: AntdMakePopup) => (config: PopupConfig) => {\n makePopup({\n message: config.title,\n description: config.content,\n placement: config.placement,\n closeIcon: config.closeIcon,\n btn: config.button,\n duration: config.duration?.sec,\n });\n };\n\n private static modal = (showModal: AntdShowModal) => (config: ModalConfig) => {\n showModal({\n title: config.title,\n content: config.content,\n maskClosable: true,\n });\n };\n\n message = {\n info: AntdNotify.message(message.info),\n success: AntdNotify.message(message.success),\n warn: AntdNotify.message(message.warn),\n error: AntdNotify.message(message.error),\n loading: AntdNotify.message(message.loading),\n };\n popup = {\n info: AntdNotify.popup(notification.info),\n success: AntdNotify.popup(notification.success),\n warn: AntdNotify.popup(notification.warn),\n error: AntdNotify.popup(notification.error),\n };\n modal = {\n info: AntdNotify.modal(Modal.info),\n success: AntdNotify.modal(Modal.success),\n warn: AntdNotify.modal(Modal.warn),\n error: AntdNotify.modal(Modal.error),\n };\n}\n","import { noop } from 'lodash';\nimport { Notify } from './types';\n\nexport class NoopNotify implements Notify {\n message = {\n info: noop,\n success: noop,\n warn: noop,\n error: noop,\n loading: noop,\n };\n popup = {\n info: noop,\n success: noop,\n warn: noop,\n error: noop,\n };\n modal = {\n info: noop,\n success: noop,\n warn: noop,\n error: noop,\n };\n}\n","import { REACT_SNAP_ACTIVE } from '../../constants';\nimport { AntdNotify } from './AntdNotify';\nimport { NoopNotify } from './NoopNotify';\nimport { Notify } from './types';\n\nexport const notify: Notify = REACT_SNAP_ACTIVE ? new NoopNotify() : new AntdNotify();\n","export type ReqInit = Omit;\n\nexport type Req = (input: RequestInfo, init?: ReqInit) => void;\n\nexport type Cancel = () => void;\n\nexport type Reset = () => void;\n\nexport type Parse = (res: Response) => T | Promise;\n\nexport enum Status {\n Init,\n Pending,\n Success,\n Error,\n Cancelled,\n}\n\nexport type Res =\n | { status: Status.Init }\n | { status: Status.Pending }\n | { status: Status.Success; result: T }\n | { status: Status.Error; error: Error }\n | { status: Status.Cancelled };\n","import { noop } from 'lodash';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport * as xhr from '../lib/xhr';\n\nenum CancelType {\n None,\n Internal,\n External,\n Supplant,\n}\n\nexport const useReq = (\n parse: xhr.Parse\n): [req: xhr.Req, res: xhr.Res, cancel: xhr.Cancel, reset: xhr.Reset] => {\n const [res, setRes] = useState>(() => ({ status: xhr.Status.Init }));\n const externalCancelRef = useRef(noop);\n const internalCancelRef = useRef(noop);\n const supplantCancelRef = useRef(noop);\n\n // If any of the args change, cancel the res so that any stale in-flight requests don't get erroneously applied.\n useEffect(() => {\n internalCancelRef.current();\n }, [parse]);\n\n const req = useCallback(\n (input: RequestInfo, init?: xhr.ReqInit) => {\n supplantCancelRef.current();\n\n let done = false;\n setRes({ status: xhr.Status.Pending });\n\n // We communicate via memory because the AbortController API does not offer a way to pass messages via\n // AbortController.prototype.abort. In other words, without these variables, we have no way to tell if the\n // AbortController.prototype.abort call was triggered internally or externally.\n let cancelled = false;\n let cancelType = CancelType.None;\n const abortController = new AbortController();\n const cancel = (nextCancelType: CancelType) => () => {\n if (!cancelled && !done) {\n cancelled = true;\n cancelType = nextCancelType;\n abortController.abort();\n }\n };\n internalCancelRef.current = cancel(CancelType.Internal);\n externalCancelRef.current = cancel(CancelType.External);\n supplantCancelRef.current = cancel(CancelType.Supplant);\n\n fetch(input, { ...init, signal: abortController.signal })\n .then(parse)\n .then((parsed) => {\n if (cancelled) {\n setRes({ status: xhr.Status.Cancelled });\n } else {\n setRes({ status: xhr.Status.Success, result: parsed });\n }\n })\n .catch((error) => {\n if (done) {\n return;\n } else if (cancelled && cancelType === CancelType.Internal) {\n setRes({ status: xhr.Status.Init });\n } else if (cancelled && cancelType === CancelType.External) {\n setRes({ status: xhr.Status.Cancelled });\n } else if (cancelled && cancelType === CancelType.Supplant) {\n // The supplanted call will handle state changes.\n return;\n } else {\n setRes({ status: xhr.Status.Error, error });\n }\n })\n .finally(() => {\n done = true;\n });\n },\n [parse]\n );\n\n const cancel = useCallback(() => {\n externalCancelRef.current();\n }, []);\n\n const reset = useCallback(() => {\n cancel();\n setRes({ status: xhr.Status.Init });\n }, [cancel]);\n\n return [req, res, cancel, reset];\n};\n","import { useCallback, useState } from 'react';\nimport { MissingDataError } from '../lib/errors';\nimport * as graphql from '../lib/graphql';\nimport * as xhr from '../lib/xhr';\nimport { useReq } from './useReq';\nimport { useResHandler } from './useResHandler';\n\nconst GRAPHQL_URI = `${window.location.origin}/graphql`;\n\nexport type Exec = (variables: graphql.VariablesOf) => void;\n\n// The reason why we use this instead of $gql.GqlResponseOf, is because the server can return data and populate errors.\n// Callers can use the status discriminant to determine what the response looks like instead of testing the presence\n// of the data and errors properties.\nexport enum GqlStatus {\n Init,\n Pending,\n Success,\n Errors,\n Cancelled,\n}\n\nexport type GqlRes =\n | {\n status: GqlStatus.Init;\n }\n | {\n status: GqlStatus.Pending;\n }\n | {\n status: GqlStatus.Success;\n data: graphql.SuccessfulResponse['data'];\n }\n | {\n status: GqlStatus.Errors;\n errors: string[];\n }\n | {\n status: GqlStatus.Cancelled;\n };\n\nexport const useGql = (\n gql: G\n): [exec: Exec, res: GqlRes, cancel: xhr.Cancel, reset: xhr.Reset] => {\n const [req, res, cancel, reset] = useReq(graphql.$gql.toGqlResponse);\n\n const exec = useCallback(\n (variables: graphql.VariablesOf) => {\n req(GRAPHQL_URI, gql.toRequestInit(variables));\n },\n [req, gql]\n );\n\n const [gqlRes, setGqlRes] = useState>({ status: GqlStatus.Init });\n useResHandler(xhr.Status.Init, res, (res) => {\n setGqlRes({ status: GqlStatus.Init });\n });\n useResHandler(xhr.Status.Pending, res, (res) => {\n setGqlRes({ status: GqlStatus.Pending });\n });\n useResHandler(xhr.Status.Success, res, (res) => {\n const { data, errors } = res.result;\n if (errors) {\n setGqlRes({ status: GqlStatus.Errors, errors: errors.map((error) => error.message) });\n } else if (!data) {\n setGqlRes({ status: GqlStatus.Errors, errors: [new MissingDataError().message] });\n } else {\n setGqlRes({ status: GqlStatus.Success, data });\n }\n });\n useResHandler(xhr.Status.Error, res, (res) => {\n setGqlRes({ status: GqlStatus.Errors, errors: [res.error.message] });\n });\n useResHandler(xhr.Status.Cancelled, res, (res) => {\n setGqlRes({ status: GqlStatus.Cancelled });\n });\n\n return [exec, gqlRes, cancel, reset];\n};\n","import React, { useCallback, useEffect } from 'react';\nimport * as xhr from '../lib/xhr';\n\nexport type ResHandler = (res: Extract, { status: S }>) => void;\n\nexport const useResHandler = (\n status: S,\n res: xhr.Res,\n handler: ResHandler,\n deps: React.DependencyList = []\n) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const callback = useCallback(handler, deps);\n\n useEffect(() => {\n if (res.status === status) {\n callback(res as Extract, { status: S }>);\n }\n }, [status, res, callback]);\n};\n","import React, { useState } from 'react';\nimport { useTimeout } from '../hooks/useTimeout';\nimport { Duration } from '../util/Duration';\n\nexport const withRenderDelay = (delay: Duration) => {\n return function

(Component: React.ComponentType

): React.FC

{\n return (props) => {\n const [visible, setVisible] = useState(false);\n useTimeout(() => setVisible(true), delay.ms);\n return visible ? : null;\n };\n };\n};\n","var _style, _g, _g2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 * as React from \"react\";\n\nfunction SvgSonarSleep(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 648 432\",\n style: {\n enableBackground: \"new 0 0 648 432\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\n\\t.st0{fill:#FFFFFF;}\\n\\t.st1{fill:#333333;}\\n\\t.st2{fill:none;stroke:#440606;stroke-width:3.7456;stroke-miterlimit:10;}\\n\\t.st3{fill:#D1D3D4;}\\n\\t.st4{fill:#FC354C;}\\n\\t.st5{fill:#440606;}\\n\\t.st6{opacity:0.88;fill:#FFFFFF;}\\n\\t.st7{opacity:0.6;fill:#6ECCE5;}\\n\\t.st8{fill:none;stroke:#440606;stroke-width:3;stroke-miterlimit:10;}\\n\\t.st9{fill:none;stroke:#440606;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}\\n\\t.st10{fill:#FD818F;}\\n\\t.st11{fill:none;stroke:#440606;stroke-width:2;stroke-miterlimit:10;}\\n\\t.st12{fill:none;stroke:#440606;stroke-width:3.2006;stroke-miterlimit:10;}\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"color\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M463.3,251.7c2.3,1.7,4.7,3.4,7,5c0.9,0.6,1.7,1.3,2.7,1.8c5.7,3.1,13.6-0.4,18.6-3.4 c5.7-3.5,10.7-8.2,15.2-13.2c2-2.2,4-4.5,5.9-6.8c7.8-9.7,12.2-21.2,19.4-31.2c3.8-5.2,8.3-10,13.7-13.5c5.4-3.5,12.5-5,16.2-10.8 c0.5-0.8,0.5-1.8,0-2.6c-9.8-14.1-20-28.5-31-41.8c-11.4-13.7-24.7-25.6-36.3-39.1c-0.2-0.3-0.5-0.6-0.7-0.9 c-4.6-5.4-8.6-11.1-12.5-17c-3.1-4.7-5.7-10.6-9.9-14.4c-3.6-3.2-12.6-1.1-17.2-0.9c-13,0.7-26.2,2.4-38.5,7.2 c-11.9,4.7-22.6,12.2-34.7,16.3c-8.8,3-18.3,4.2-26.1,9.2c-3.4,2.2-8.7,7.3-9.5,11.6c-0.9,5,6.8,10.8,9.9,14.2 c9.4,10.6,18.8,21.2,28.2,31.8c3.1,3.6,6.3,7.1,8.9,11.1c2.5,3.9,4.5,8,7,11.9c5,7.6,12,13.6,17.6,20.8c4.6,5.9,8.3,12.4,12.1,18.8 c4.4,7.4,9,17.4,15.3,23.4C449.6,244,457.4,247.6,463.3,251.7z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st1\",\n d: \"M381,286.8C381,286.8,381.1,286.8,381,286.8c0.6-0.6,1.3-0.8,2-0.9c3.9-0.6,7.5-2.2,11.3-3.2 c4.4-1.2,9.4-1.8,13.1,1.5c5.2,4.6,4,13.4,8.7,18.6c2.7,3.1,7,4.2,10.5,6.2c12.8,7,15.9,26.8,6,37.5c-20.9,1.8-37.9,11.5-56.6,20 c-17.4,7.9-35.2,1.8-53.3,1.9c-15.7,0.1-30.5,6.1-45.9,8.4c-11.3,1.7-22.9,2.7-34.4,3.9c-7.1,0.7-13.9,1-20.7,1 c-13.7,0-27.1-1-40.8-1c-26.7,0-31,9.6-48.4,9.6c-8.6,0-10.6-4.2-17.1-6.9c-2.2-0.9-4.4-2-6.6-3.2c-17.6-9.5-26.3-26.6-27.4-46.2 c-0.5-8.9,2.2-16.1,5.8-23c7.7-14.6,15.4-22.3,15.4-32.8c0-4.8-1.6-10.1-5.5-16.9c-1.7-3-3.2-6.1-3.6-9.9c-1-9.2,0.9-18.5,3.3-27.3 c3.8-13.6,9.2-28.9,18.2-40c5-6.1,11.9-10.3,17.5-15.8c5.7-5.7,8.7-13.6,14.8-18.8c4.6-4,10.7-5.7,16.7-7.3 c20-5.4,39.9-10.9,60.2-16.4c3.2-0.9,6.9-2,10.7-2.8c12.6-2.9,28.2-10,42.5-10c16,0,25.3,9.6,25.3,20.6c0,4.9-1.7,9.7-1.7,14.5 c0,9.6,7.5,13.7,7.6,21.9c0,0,0,0.1,0,0.1c0,1.4-0.4,3.5-1.9,3.9c0.3-0.1,0.7-0.2,1.1-0.3c-1.2,0.6-1.6,0.8-2.8,0.9 c1.2,2.4,3.5,4.7,5.3,6.7c19.4,21.5,31.1,48.7,46.1,73.5c2.9,4.9,6,9.6,9.2,14.3c4.4,6.4,9.1,12.6,13.7,18.8 c0.1,0.2,0.2,0.3,0.4,0.4C380.7,288.3,380.8,287.2,381,286.8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st2\",\n d: \"M362.3,141.8c-0.5,0.1-3.9-5.5-4.2-6c-4.8-6.9-10.1-13.5-14.9-20.4c-0.5-0.7-0.9-1.6-1-2.5 c-0.1-2.4,2.2-4,3.2-5.9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st3\",\n d: \"M562.3,179.9c0.3,6.9,0.2,14.1-2.6,20.5c-2.8,6.2-8.3,9.2-13.4,13.2c-8,6.3-12.3,15.6-17.4,24.1 c-5.5,9.2-13,16.4-21.2,23.2c-7.4,6.1-16,15.6-26.3,16.2c-5,0.3-9.5-2.8-13.2-5.9c-3.2-2.7-6.3-5.6-9.4-8.5 c-2.7-2.5-5.6-4.9-8.2-7.6c-1.8-1.9-3.4-4.1-5.1-6c-0.9-1.1-2-2.1-3.1-2.9c-1.2-0.8-2.5-1.1-3.7-1.8c0.5-1.5,4.7-3.3,5.7-4.5 c0.8-1,6.1,2.9,6.7,3.3c4.1,2.7,8.1,5.6,12.1,8.4c2.3,1.7,4.7,3.4,7,5c0.9,0.6,1.7,1.3,2.7,1.8c5.7,3.1,13.6-0.4,18.6-3.4 c5.7-3.5,10.7-8.2,15.2-13.2c2-2.2,4-4.5,5.9-6.8c7.8-9.7,12.2-21.2,19.4-31.2c3.8-5.2,8.3-10,13.7-13.5c2.9-1.9,6.1-3.1,9.2-4.8 c1.5-0.8,3-1.7,4.3-2.8c1.1-0.9,1.8-2.1,2.7-3.2C562,179.7,562.1,179.8,562.3,179.9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st3\",\n d: \"M345.4,107c-1.1,1.9-3.4,3.5-3.2,5.9c0,0.9,0.5,1.7,1,2.5c4.8,6.9,10,13.5,14.9,20.4c0.3,0.5,3.8,6.1,4.2,6 c2.3-0.6,4.5-2,6-3.9c-2.3-4-5-7.8-8.2-11.2c-2.3-2.5-4.6-4.8-6.6-7.7c-1.8-2.7-3.5-5.5-5.7-7.9C346.8,109.9,346.5,108.1,345.4,107 z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st4\",\n d: \"M340,272.3c1.7,3.6,1.9,8.2,2.2,11.7c0.5,7.6-0.9,15.2-3.5,22.3c-2.1,5.7-8.5,21.1-16.8,18.6 c-2.8-0.9-4.3-4.4-3-8.7c0.1-0.3,0.2-0.5,0.3-0.8c0.3-0.7,0.1-1.6-0.5-2.1c-1.2-1-2.4-1.7-3.8-2.1c-14.1-4.3-25.4,13.2-22.4,25.4 c1.9,7.8,7.9,14.2,14.9,18c16,8.7,33.8,5.3,47-6.8c10.5-9.6,16.8-22.5,20.4-36.1c1-3.8,1.8-7.7,2.5-11.6c1-6.1,1.7-13.3,7.6-16.8 c4-2.3,9.3-2.2,13.6-4c4.6-1.9,8.7-4.7,12.1-8.2c5.6-5.8,9.4-12.9,16-19.7c7.4-7.6,16.1-11.8,26.1-14.9c10.5-3.2,18-7.6,23.1-17.4 c5-9.5,9.7-19.1,14.9-28.5c6.1-11,12.2-22,16.4-33.9c3.9-11.2,6.2-23.8,1.4-35.1c-0.3-0.7-0.7-1.4-1.2-2.1 c-10.4-15.2-41.4-13.2-57.2-13c-11.1,0.1-22.2,0.8-33.3,1.8c-5.4,0.5-11.4,0.3-16.6,1.8c-7.7,2.1-13.3,8.3-18,14.4 c-6.5,8.2-13.5,14.8-23.3,19c-8.7,3.7-16.7,4.7-24.1,7.8c-4.6,1.9-8.6,4.7-12,8.3c-3.2,3.4-5,8.4-8.6,11.2c-7.5,6-18,1.1-25-3.3 c-10.9-6.8-20.4-13.8-33.5-15.6c-11.7-1.7-23.9,0.1-35,3.2c-26.7,7.4-69.6,33.7-52.5,68.8c2,4.1,9.1,13.1,15.8,15.3 c10.6,3.5,25.5-6.7,21.5-20.5c-0.4-1.3-1-2.6-1.9-3.8c-0.4-0.6-1.1-0.8-1.7-0.6c-0.2,0.1-0.5,0.2-0.7,0.2c-3.7,1.1-6.8-0.6-7.6-3.3 c-1.5-5.4,3.8-9.4,7.8-11.7c5.5-3.2,11.9-5.4,18.2-6c3.3-0.3,6.7-0.3,9.9,0.3c1.8,0.3,3.6,0.6,5.4,1.2c0.8,0.3,1.9,0.6,2.6,1.1 c1,0.8,0.5,1.2,0.1,2.3c-0.4,1.2-0.2,2.6,0.2,3.8c0.8,2.3,2.5,4.4,4.7,5.5c4,2,8.8,1.7,13.3,1.5c4.5-0.1,9.4,0.2,12.8,3.1 c3.2,2.7,4.4,7.2,7.3,10.1c6.2,6.2,18.7,4.4,22.8,12.2c2,3.8,1.1,8.7,3.3,12.4c3.4,6,12.4,5.8,17.3,10.5c2.7,2.6,4.2,6.6,7.6,8.2 c3.3,1.6,7.8,0.5,10.7,2.8C338.6,269.8,339.4,270.9,340,272.3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st5\",\n d: \"M382.2,207.7c-2.5,1.9-10-8.7-13.4-13.6c-0.8-1.2-0.5-2.9,0.8-3.7c5.6-3.4,13.6-4.7,17.6,1.6 C389.8,196.2,389,202.6,382.2,207.7z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st6\",\n d: \"M406.7,199.2c3.8,2.8,8.4,4.2,12.7,6.1c4.3,1.8,8.7,4.2,11.2,8.2c4,6.4,2,15.3-3.1,20.8 c-3,3.2-7.1,5.5-11.4,5.4c-7.2-0.1-12.8-6.4-15.5-13c-4.5-11.1-3.4-23.8-0.9-35.4c0.1-0.6,0.9-0.6,1.1,0 C401.7,194.5,404.1,197.3,406.7,199.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st7\",\n d: \"M406.7,199.2c3.8,2.8,8.4,4.2,12.7,6.1c4.3,1.8,8.7,4.2,11.2,8.2c4,6.4,2,15.3-3.1,20.8 c-3,3.2-7.1,5.5-11.4,5.4c-7.2-0.1-12.8-6.4-15.5-13c-4.5-11.1-3.4-23.8-0.9-35.4c0.1-0.6,0.9-0.6,1.1,0 C401.7,194.5,404.1,197.3,406.7,199.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M422.1,233.8c0,0,0.1-0.1,0.1-0.1c0.1-0.2,0.1-0.6,0.1-0.9c-0.3-1.3-1.5-1.8-2.6-2c-2.1-0.3-4-0.1-5.8-1.8 c-0.8-0.8-1.5-1.9-2.4-2.6c-1.1-0.8-2.4-0.3-2.8,0.8c-0.6,1.3-0.3,3,0.7,4.3c1.4,1.7,3.6,2.6,5.5,2.9c2.1,0.4,4.2,0.2,6.1-0.2 C421.3,234.2,421.8,234.1,422.1,233.8z\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"outline\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st2\",\n d: \"M562.3,178.8c0.3,7.3,0.4,14.9-2.6,21.7c-2.8,6.2-8.3,9.2-13.4,13.2c-8,6.3-12.3,15.6-17.4,24.1 c-5.5,9.2-13,16.4-21.2,23.2c-7.4,6.1-16,15.6-26.3,16.2c-5,0.3-9.5-2.8-13.2-5.9c-3.2-2.7-6.3-5.6-9.4-8.5 c-2.7-2.5-5.6-4.9-8.2-7.6c-1.8-1.9-3.4-4.1-5.1-6c-0.9-1.1-2-2.1-3.1-2.9c-1.2-0.8-2.5-1.1-3.7-1.8c0.5-1.5,4.7-3.3,5.7-4.5 c0.8-1,6.1,2.9,6.7,3.3c4.1,2.7,8.1,5.6,12.1,8.4c2.3,1.7,4.7,3.4,7,5c0.9,0.6,1.7,1.3,2.7,1.8c5.7,3.1,13.6-0.4,18.6-3.4 c5.7-3.5,10.7-8.2,15.2-13.2c2-2.2,4-4.5,5.9-6.8c7.8-9.7,12.2-21.2,19.4-31.2c3.8-5.2,8.3-10,13.7-13.5c5.4-3.5,12.5-5,16.2-10.8 c0.5-0.8,0.5-1.8,0-2.6c-9.8-14.1-20-28.5-31-41.8c-11.4-13.7-24.7-25.6-36.3-39.1c-0.2-0.3-0.5-0.6-0.7-0.9 c-4.6-5.4-8.6-11.1-12.5-17c-3.1-4.7-5.7-10.6-9.9-14.4c-3.6-3.2-12.6-1.1-17.2-0.9c-13,0.7-26.2,2.4-38.5,7.2 c-11.9,4.7-22.6,12.2-34.7,16.3c-8.8,3-18.3,4.2-26.1,9.2c-4.3,2.7-6.9,6.7-9.3,11c-0.1,0.3-0.3,0.5-0.3,0.8c-0.1,1.1,1.3,2.3,2,3 c2.5,2.6,4.3,5.6,6.3,8.5c1.9,2.8,4.3,5.2,6.6,7.7c3.1,3.4,5.9,7.2,8.2,11.2c-1.5,1.9-3.6,3.3-6,3.9c-0.5,0.1-3.9-5.5-4.2-6 c-4.8-6.9-10.1-13.5-14.9-20.4c-0.5-0.7-0.9-1.6-1-2.5c-0.1-2.4,2.2-4,3.2-5.9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st8\",\n d: \"M330.1,256.9c5.2,4.2,8.4,11.5,10.3,17.4c3.4,10.4,2,21.8-1.7,31.9c-2.1,5.7-8.5,21.1-16.8,18.6 c-2.8-0.9-4.3-4.4-3-8.7c0.1-0.3,0.2-0.5,0.3-0.8c0.3-0.7,0.1-1.6-0.5-2.1c-1.2-1-2.4-1.7-3.8-2.1c-14.1-4.3-25.4,13.2-22.4,25.4 c1.9,7.8,7.9,14.2,14.9,18c16,8.7,33.8,5.3,47-6.8c10.5-9.6,16.8-22.5,20.4-36.1c1-3.8,1.8-7.7,2.5-11.6c1-6.1,1.7-13.3,7.6-16.8 c4-2.3,9.3-2.2,13.6-4c4.6-1.9,8.7-4.7,12.1-8.2c5.6-5.8,9.4-12.9,16-19.7c7.4-7.6,16.1-11.8,26.1-14.9c10.5-3.2,18-7.6,23.1-17.4 c5-9.5,9.7-19.1,14.9-28.5c6.1-11,12.2-22,16.4-33.9c3.9-11.2,6.2-23.8,1.4-35.1c-0.3-0.7-0.7-1.4-1.2-2.1 c-10.4-15.2-41.4-13.2-57.2-13c-11.1,0.1-22.2,0.8-33.3,1.8c-5.4,0.5-11.4,0.3-16.6,1.8c-7.7,2.1-13.3,8.3-18,14.4 c-6.5,8.2-13.5,14.8-23.3,19c-8.7,3.7-16.7,4.7-24.1,7.8c-4.6,1.9-8.6,4.7-12,8.3c-3.2,3.4-5,8.4-8.6,11.2c-7.5,6-18,1.1-25-3.3 c-10.9-6.8-20.4-13.8-33.5-15.6c-11.7-1.7-23.9,0.1-35,3.2c-26.7,7.4-69.6,33.7-52.5,68.8c2,4.1,9.1,13.1,15.8,15.3 c10.6,3.5,25.5-6.7,21.5-20.5c-0.4-1.3-1-2.6-1.9-3.8c-0.4-0.6-1.1-0.8-1.7-0.6c-0.2,0.1-0.5,0.2-0.7,0.2c-3.7,1.1-6.8-0.6-7.6-3.3 c-2.3-8.1,11-13.6,15.8-15.4c8.7-3.1,18.5-3.9,27.6-0.1c3.8,1.6,7.2,3.9,10.5,6.3c0,0,0.1,0.1,0.1,0.1\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st5\",\n d: \"M393.9,148.7c5.7,2.7,10.4,7.4,12.3,13.6c1.7-1,3.2-1.9,5.1-2.5c0.6-0.2-1.5-5.7-1.7-6.3 c-1.9-4.2-5.3-7.7-8.8-10.6c-0.8-0.7-4.8-4.6-5.8-4c-3,1.9-6.4,4.3-8.3,7.3c0.2-0.3,3.8,1.1,4.1,1.2 C391.9,147.8,392.9,148.2,393.9,148.7z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st5\",\n d: \"M435.5,204c-0.3-6.4-3-12.5-8.1-16.6c1.6-1.2,3-2.3,4.2-3.9c0.4-0.5,4.8,3.5,5.2,4c3.2,3.4,5.2,7.8,6.7,12.2 c0.3,1,2.5,6.2,1.5,7c-2.9,2.1-6.4,4.4-10,5c0.4-0.1,0.4-3.9,0.4-4.3C435.5,206.2,435.5,205.1,435.5,204z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st9\",\n d: \"M382.2,207.7c-2.5,1.9-10-8.7-13.4-13.6c-0.8-1.2-0.5-2.9,0.8-3.7c5.6-3.4,13.6-4.7,17.6,1.6 C389.8,196.2,389,202.6,382.2,207.7z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st10\",\n d: \"M382.4,206.9c-2.2,1.7-9.2-8.3-12.3-12.8c-0.8-1.1-0.5-2.7,0.6-3.4c2.6-1.6,7.2,1.2,10.4,3.9 c0.3,0.3,0.6,0.6,0.8,1C383,197.5,387.4,203,382.4,206.9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st11\",\n d: \"M406.7,199.2c3.8,2.8,8.4,4.2,12.7,6.1c4.3,1.8,8.7,4.2,11.2,8.2c4,6.4,2,15.3-3.1,20.8 c-3,3.2-7.1,5.5-11.4,5.4c-7.2-0.1-12.8-6.4-15.5-13c-4.5-11.1-3.4-23.8-0.9-35.4c0.1-0.6,0.9-0.6,1.1,0 C401.7,194.5,404.1,197.3,406.7,199.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st12\",\n d: \"M380.9,286.6c9.3-1.7,19.5-8.6,26.6-2.5c5.2,4.6,4,13.4,8.7,18.6c2.7,3.1,7,4.2,10.5,6.2 c12.8,7,15.9,26.8,6,37.5c-20.9,1.8-37.9,11.5-56.6,20c-17.4,7.9-35.2,1.8-53.3,1.9c-15.7,0.1-30.5,6.1-45.9,8.4 c-11.3,1.7-22.9,2.7-34.4,3.9c-7.1,0.7-13.9,1-20.7,1c-13.7,0-27.1-1-40.8-1c-26.7,0-31,9.6-48.4,9.6c-8.6,0-10.6-4.2-17.1-6.9 c-2.2-0.9-4.4-2-6.6-3.2c-17.6-9.5-26.3-26.6-27.4-46.2c-0.5-8.9,2.2-16.1,5.8-23c7.7-14.6,15.4-22.3,15.4-32.8 c0-4.8-1.6-10.1-5.5-16.9c-1.7-3-3.2-6.1-3.6-9.9c-1-9.2,0.9-18.5,3.3-27.3c3.8-13.6,9.2-28.9,18.2-40c5-6.1,11.9-10.3,17.5-15.8 c5.7-5.7,8.7-13.6,14.8-18.8c4.6-4,10.7-5.7,16.7-7.3c20-5.4,39.9-10.9,60.2-16.4c3.2-0.9,6.9-2,10.7-2.8c12.6-2.9,28.2-10,42.5-10 c16,0,25.3,9.6,25.3,20.6c0,4.9-1.7,9.7-1.7,14.5c0,9.6,7.5,13.7,7.6,21.9c0,0,0,0.1,0,0.1c0,1.4-0.4,3.5-1.9,3.9 c0.3-0.1,0.7-0.2,1.1-0.3c-1.2,0.6-1.6,0.8-2.8,0.9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st12\",\n d: \"M238.4,196.7c-2.6,3.7,0.1,9.1,4.1,11.1c4,2,8.8,1.7,13.3,1.5c4.5-0.1,9.4,0.2,12.8,3.1 c3.2,2.7,4.4,7.2,7.3,10.1c6.2,6.2,18.7,4.4,22.8,12.2c2,3.8,1.1,8.7,3.3,12.4c3.4,6,12.4,5.8,17.3,10.5c2.7,2.6,4.2,6.6,7.6,8.2 c3.9,1.9,9.9,0.4,12,4.3\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSonarSleep);\nexport default __webpack_public_path__ + \"static/media/SonarSleep.f138ed4f.svg\";\nexport { ForwardRef as ReactComponent };","import { LoadingOutlined } from '@ant-design/icons';\nimport { Spin } from 'antd';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { withRenderDelay } from '../hocs/withRenderDelay';\nimport { compose } from '../util/compose';\nimport { Duration } from '../util/Duration';\n\nconst RENDER_DELAY = Duration.sec(1);\n\nconst Outer = styled.div`\n margin-top: 7em;\n text-align: center;\n`;\n\nconst Icon = styled(LoadingOutlined)`\n font-size: 5em;\n`;\n\nconst enhance = compose(withRenderDelay(RENDER_DELAY));\n\nexport const Fallback: React.FC = enhance(() => {\n return (\n \n } />\n \n );\n});\n","import { useEffectOnce } from './useEffectOnce';\n\ntype Callback = () => void;\n\nexport const useTimeout = (callback: Callback, ms: number) => {\n useEffectOnce(() => {\n const handle = window.setTimeout(callback, ms);\n return () => {\n window.clearTimeout(handle);\n };\n });\n};\n","import { createAction, createReducer } from '@reduxjs/toolkit';\nimport React, { PropsWithChildren, useEffect, useReducer } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { RouteInfoState } from './types';\n\nconst ROUTE_INFO_ACTIONS = {\n setPrevRoute: createAction<{ prevRoute: string }>('setPrevRoute'),\n setReturnToRoute: createAction<{ returnToRoute: string }>('setReturnToRoute'),\n};\n\nconst RETURN_TO_PATHNAMES = ['/library', '/n', '/upload', '/users', '/tags'];\n\nconst getInitialState = (): RouteInfoState => ({ prevRoute: '', returnToRoute: '/library' });\n\nconst routeInfoReducer = createReducer(getInitialState(), (builder) => {\n builder.addCase(ROUTE_INFO_ACTIONS.setPrevRoute, (state, action) => {\n state.prevRoute = action.payload.prevRoute;\n });\n builder.addCase(ROUTE_INFO_ACTIONS.setReturnToRoute, (state, action) => {\n state.returnToRoute = action.payload.returnToRoute;\n });\n});\n\nexport const RouteInfoCtx = React.createContext(getInitialState());\n\nexport const RouteInfoProvider: React.FC> = (props) => {\n const [state, dispatch] = useReducer(routeInfoReducer, getInitialState());\n const location = useLocation();\n\n useEffect(\n // This only fires when cleaning up so it is not run when it initially mounts.\n () => () => {\n dispatch(ROUTE_INFO_ACTIONS.setPrevRoute({ prevRoute: location.pathname }));\n },\n [location]\n );\n\n useEffect(() => {\n if (RETURN_TO_PATHNAMES.some((pathname) => location.pathname.startsWith(pathname))) {\n dispatch(ROUTE_INFO_ACTIONS.setReturnToRoute({ returnToRoute: location.pathname }));\n }\n }, [location]);\n\n return {props.children};\n};\n","import { useContext } from 'react';\nimport { RouteInfoCtx } from './RouteInfoCtx';\n\nexport const useRouteInfo = () => {\n const state = useContext(RouteInfoCtx);\n return state;\n};\n","import { useLocalStorage } from './useLocalStorage';\n\nconst ROUTING_CACHE_KEY = 'stringsync_routing_cache';\n\ntype RoutingCache = {\n lastVisitedLandingAtMsSinceEpoch: number;\n};\n\nconst DEFAULT_ROUTING_CACHE: RoutingCache = Object.freeze({\n lastVisitedLandingAtMsSinceEpoch: 0,\n});\n\nexport const useRoutingLocalCache = () => useLocalStorage(ROUTING_CACHE_KEY, DEFAULT_ROUTING_CACHE);\n","import { useCallback, useEffect, useState } from 'react';\nimport { useRouteInfo } from '../ctx/route-info';\nimport { Duration } from '../util/Duration';\nimport { NumberRange } from '../util/NumberRange';\nimport { useRoutingLocalCache } from './useRoutingLocalCache';\n\n// Redirect the user if they last visited between 1 minute and 14 days.\n// This gives people a 1 minute grace period to try to visit the landing using a link\n// again.\nconst ONE_MINUTE = Duration.min(1);\nconst TWO_WEEKS = Duration.day(14);\nconst REDIRECT_LANDING_TO_LIBRARY_TIME_MS_RANGE = NumberRange.from(ONE_MINUTE.ms).to(TWO_WEEKS.ms);\n\nconst getMsSinceEpoch = () => new Date().getTime();\n\nexport const useRoutingBehavior = () => {\n const { prevRoute } = useRouteInfo();\n const isInitialPage = prevRoute === '';\n const [cache, updateCache] = useRoutingLocalCache();\n const [shouldRedirectFromLandingToLibrary, setShouldRedirectFromLandingToLibrary] = useState(() => {\n const msSinceLandingLastVisited = getMsSinceEpoch() - cache.lastVisitedLandingAtMsSinceEpoch;\n return isInitialPage && REDIRECT_LANDING_TO_LIBRARY_TIME_MS_RANGE.contains(msSinceLandingLastVisited);\n });\n\n const recordLandingVisit = useCallback(() => {\n updateCache({\n ...cache,\n lastVisitedLandingAtMsSinceEpoch: getMsSinceEpoch(),\n });\n }, [cache, updateCache]);\n\n useEffect(() => {\n setShouldRedirectFromLandingToLibrary(false);\n }, [isInitialPage]);\n\n return { shouldRedirectFromLandingToLibrary, recordLandingVisit };\n};\n","import { first } from 'lodash';\nimport { useCallback } from 'react';\nimport { UNKNOWN_ERROR_MSG } from '../lib/errors';\nimport { $gql, QuerySuggestedNotationsArgs, t } from '../lib/graphql';\nimport { GqlStatus, useGql } from './useGql';\nimport { useGqlHandler } from './useGqlHandler';\n\ntype SuccessCallback = (notationId: string) => void;\ntype ErrorsCallback = (errors: string[]) => void;\ntype GetRandomNotationId = () => void;\n\nconst RANDOM_NOTATION_ID_GQL = $gql\n .query('suggestedNotations')\n .setQuery([{ id: t.string }])\n .setVariables({ limit: t.number })\n .build();\n\nexport const useRandomNotationIdGetter = (\n onSuccess: SuccessCallback,\n onErrors: ErrorsCallback\n): [getRandomNotationId: GetRandomNotationId, loading: boolean] => {\n const [execute, res] = useGql(RANDOM_NOTATION_ID_GQL);\n const loading = res.status === GqlStatus.Pending;\n useGqlHandler\n .onSuccess(res, ({ data }) => {\n const id = first(data.suggestedNotations.map((notation) => notation.id));\n if (id) {\n onSuccess(id);\n } else {\n onErrors([UNKNOWN_ERROR_MSG]);\n }\n })\n .onErrors(res, ({ errors }) => {\n onErrors(errors);\n });\n\n const getRandomNotationId = useCallback(() => {\n execute({ limit: 1 });\n }, [execute]);\n\n return [getRandomNotationId, loading];\n};\n","import { Button } from 'antd';\nimport React, { useCallback, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useRandomNotationIdGetter } from '../hooks/useRandomNotationIdGetter';\nimport { notify } from '../lib/notify';\n\nexport const ImFeelingLucky = () => {\n const navigate = useNavigate();\n const [hasError, setHasError] = useState(false);\n const onSuccess = useCallback(\n (notationId: string) => {\n notify.message.success({ content: 'lucky!' });\n navigate(`/n/${notationId}`);\n },\n [navigate]\n );\n const onErrors = useCallback(() => {\n notify.message.error({ content: 'something went wrong' });\n setHasError(true);\n }, []);\n const [getRandomNotationId, loading] = useRandomNotationIdGetter(onSuccess, onErrors);\n\n return (\n \n );\n};\n","import { CustomerServiceOutlined, SearchOutlined, ThunderboltOutlined } from '@ant-design/icons';\nimport { Col, Divider, Row, Space } from 'antd';\nimport React from 'react';\nimport { Link, Navigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { Layout, withLayout } from '../hocs/withLayout';\nimport { useEffectOnce } from '../hooks/useEffectOnce';\nimport { useRoutingBehavior } from '../hooks/useRoutingBehavior';\nimport { compose } from '../util/compose';\nimport { Box } from './Box';\nimport { ImFeelingLucky } from './ImFeelingLucky';\nimport { Logo } from './Logo';\nimport { Wordmark } from './Wordmark';\n\nconst LANDING_SRC = 'static/landing.jpg';\n\nconst Outer = styled.div`\n background-color: white;\n`;\n\nconst Jumbotron = styled.div`\n padding-top: 128px;\n padding-bottom: 128px;\n text-align: center;\n background-image: url(\"${LANDING_SRC}\");\n background-repeat: no-repeat;\n background-size: cover;\n position: relative;\n`;\n\nconst Overlay = styled.div`\n background-color: rgba(0, 0, 0, 0.6);\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 0;\n`;\n\nconst WhiteBox = styled(Box)`\n width: 55%;\n min-width: 300px;\n max-width: 500px;\n margin: 0 auto;\n text-align: center;\n position: relative;\n z-index: 1;\n color: ${(props) => props.theme['@primary-color']};\n`;\n\nconst Header = styled.h1`\n font-size: 3em;\n font-weight: lighter;\n margin-bottom: 0;\n background: white;\n`;\n\nconst SubHeader = styled.h2`\n font-size: 1.2em;\n margin-bottom: 1em;\n`;\n\nconst Title = styled.h3`\n color: ${(props) => props.theme['@primary-color']};\n`;\n\nconst Footer = styled.div`\n padding: 24px 48px;\n text-align: center;\n display: flex;\n\n svg {\n width: 2.5em;\n height: 2.5em;\n color: ${(props) => props.theme['@secondary-color']};\n }\n`;\n\ntype Props = {};\n\nconst enhance = compose(withLayout(Layout.DEFAULT));\n\nexport const Landing: React.FC = enhance((props: Props) => {\n const { shouldRedirectFromLandingToLibrary, recordLandingVisit } = useRoutingBehavior();\n\n useEffectOnce(() => {\n recordLandingVisit();\n });\n\n return (\n \n {shouldRedirectFromLandingToLibrary && }\n\n \n \n \n \n

\n \n
\n learn how to play guitar for free\n\n \n \n start learning\n \n \n \n \n \n\n
\n \n \n \n Learn fast\n

StringSync helps you learn music by making it super easy loop and slow down sections of music.

\n \n\n \n \n \n\n \n \n Develop your skills\n

Grow your improvisation skills using our note suggestions.

\n \n\n \n \n \n\n \n \n Explore music\n

Use our tagging system to find that gospel-metal-jazz sound you've been looking to learn!

\n \n
\n
\n \n );\n});\n","import React from 'react';\n\nexport const Nothing: React.FC = () => null;\n","import Button, { ButtonProps } from 'antd/lib/button';\nimport React, { MouseEventHandler, useCallback, useEffect, useState } from 'react';\n\ntype Props = Omit & {\n timeoutMs: number;\n onTimeout?: () => void;\n};\n\nexport const TimeoutButton: React.FC = (props) => {\n const [disabled, setDisabled] = useState(false);\n\n const onClick = useCallback>(\n (event) => {\n setDisabled(true);\n props.onClick && props.onClick(event);\n },\n [props]\n );\n\n useEffect(() => {\n if (!disabled) {\n return;\n }\n const handle = setTimeout(() => {\n setDisabled(false);\n props.onTimeout && props.onTimeout();\n }, props.timeoutMs);\n return () => {\n clearTimeout(handle);\n };\n }, [disabled, props]);\n\n return