{"version":3,"file":"webpack/js/142-e543ea87a6566a349e71.js","mappings":"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","sources":["webpack://dasher/./src/signin/ResetPasswordPage.js","webpack://dasher/./src/signin/ForgotPasswordPage.js","webpack://dasher/./src/signin/SignInPage.tsx","webpack://dasher/../js/lib/hooks/hooks.ts","webpack://dasher/../js/lib/hooks/useMeasure.ts","webpack://dasher/../js/shared-components/src/components/Button/button-group.tsx","webpack://dasher/../js/shared-components/src/components/Button/Button.tsx","webpack://dasher/../js/shared-components/src/components/Button/IconButton.tsx","webpack://dasher/../js/shared-components/src/components/ContentNotification/ContentNotification.tsx","webpack://dasher/../js/shared-components/src/components/Layout/Footer/index.tsx","webpack://dasher/../js/shared-components/src/components/Link/FakeLink.tsx","webpack://dasher/../js/shared-components/src/components/Link/SafeLink.tsx","webpack://dasher/../js/shared-components/src/components/Link/CustomerDashboardLink.tsx","webpack://dasher/../js/shared-components/src/components/PageNotification/PageNotification.tsx","webpack://dasher/../js/shared-components/src/components/PageNotification/AdBlockAlert.tsx","webpack://dasher/../js/shared-components/src/components/PageNotification/BrowserAlert.tsx","webpack://dasher/./node_modules/.pnpm/moment@2.30.1/node_modules/moment/locale/ sync \\b\\B"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Button } from \"@liftoff/components/Button\";\nimport Form from \"@liftoffio/antd/lib/form\";\nimport Input from \"@liftoffio/antd/lib/input\";\nimport { ContentNotification } from \"@liftoff/components/ContentNotification\";\nimport { getQueryParams, postForm } from \"shared/utils\";\n\nclass ResetPasswordPage extends Component {\n constructor(props) {\n super(props);\n const params = getQueryParams();\n this.state = {\n authorization: params.get(\"authorization\"),\n newPassword: \"\",\n newPasswordConfirm: \"\",\n message: params.get(\"message\"),\n };\n }\n\n handleNewPasswordChange = (event) => {\n this.setState({\n newPassword: event.target.value,\n });\n };\n\n handleNewPasswordConfirmChange = (event) => {\n this.setState({\n newPasswordConfirm: event.target.value,\n });\n };\n\n handleFormSubmit = (event) => {\n const { authorization, newPassword, newPasswordConfirm } = this.state;\n event.preventDefault();\n const formObj = {\n authorization,\n \"new-password\": newPassword,\n \"new-password-confirm\": newPasswordConfirm,\n };\n postForm(`/api/pw/reset`, formObj).then((response) => {\n if (response.status !== 200) {\n response.json().then((data) => {\n this.setState({\n message: Object.values(data).join(\". \"),\n });\n });\n } else {\n window.location.replace(response.url);\n }\n });\n };\n\n render() {\n const { message } = this.state;\n return (\n
\n
\n
\n \n \n
Must be at least 6 characters
\n
\n \n \n \n {message && }\n \n \n Change Password\n \n \n \n
\n
\n );\n }\n}\n\nexport default ResetPasswordPage;\n","import React, { Component } from \"react\";\nimport { Button } from \"@liftoff/components/Button\";\nimport Form from \"@liftoffio/antd/lib/form\";\nimport Input from \"@liftoffio/antd/lib/input\";\nimport { ContentNotification } from \"@liftoff/components/ContentNotification\";\nimport { getQueryParams, isEmail, postForm } from \"shared/utils\";\n\nclass ForgotPasswordPage extends Component {\n constructor(props) {\n super(props);\n const params = getQueryParams();\n this.state = {\n username: \"\",\n message: params.get(\"message\"),\n isError: params.get(\"status\") === \"error\",\n };\n }\n\n handleUsernameChange = (event) => {\n this.setState({\n username: event.target.value,\n });\n };\n\n handleFormSubmit = (event) => {\n const { username } = this.state;\n event.preventDefault();\n if (isEmail(username)) {\n const formObj = { username };\n postForm(`/api/pw/forgot`, formObj)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n this.setState({\n message: data.content,\n isError: false,\n });\n });\n } else {\n this.setState({\n message: \"Please provide a valid email.\",\n isError: true,\n });\n }\n };\n\n render() {\n const { isError, message } = this.state;\n return (\n
\n
\n \n \n \n {message && (\n \n )}\n \n \n Reset Password\n \n \n \n
\n );\n }\n}\n\nexport default ForgotPasswordPage;\n","import React, { useCallback, useState, FormEvent, useEffect } from \"react\";\nimport queryString from \"query-string\";\nimport { Redirect, Route, Switch, withRouter } from \"@liftoff/api\";\nimport { Helmet } from \"react-helmet-async\";\nimport { Button } from \"@liftoff/components/Button\";\nimport Form from \"@liftoffio/antd/lib/form\";\nimport Input from \"@liftoffio/antd/lib/input\";\nimport {\n AdBlockAlert,\n BrowserAlert,\n} from \"@liftoff/components/PageNotification\";\nimport { Spin } from \"@liftoff/components/Spin\";\nimport { ContentNotification } from \"@liftoff/components/ContentNotification\";\nimport { isEmail } from \"shared/utils\";\nimport Footer from \"@liftoff/components/Layout/Footer\";\nimport ResetPasswordPage from \"./ResetPasswordPage\";\nimport ForgotPasswordPage from \"./ForgotPasswordPage\";\nimport \"./signin.less\";\n\nconst useInputState = () => {\n const [state, setState] = useState(\"\");\n const handleChange = useCallback((e) => setState(e.target.value), []);\n return [state, handleChange] as const;\n};\n\ntype OAuthErrorCode = \"user_not_found\" | \"signin_error\";\n\nconst oauthErrorMessage = (code: OAuthErrorCode): React.ReactNode => {\n return (\n (\n {\n // Invalid callback request\n signin_error: \"There was an error. Please try again.\",\n // User is not a pinpoint user\n user_not_found:\n \"We are unable to find an active user for this email account. Please contact your AM.\",\n } as const\n )[code] ?? \"Something went wrong.\"\n );\n};\n\ntype ContentNotificationType = \"error\" | \"success\";\ntype ContentNotificationState = {\n message?: string;\n type: ContentNotificationType;\n source: \"google\" | \"email\";\n};\n\nconst removeUrlParams = () =>\n window.history.replaceState({}, document.title, window.location.pathname);\n\ninterface CurrentUserState {\n email: string | undefined;\n isLoading: boolean;\n isError: boolean;\n}\nconst useCurrentUser = (): CurrentUserState => {\n const [state, setState] = useState({\n email: undefined,\n isLoading: false,\n isError: false,\n });\n\n useEffect(() => {\n (async () => {\n let isError = false;\n let email: string | undefined;\n\n setState((curr) => ({\n ...curr,\n isLoading: true,\n }));\n try {\n const resp = await fetch(\"/user_info\");\n if (resp.ok) {\n const user = (await resp.json()) as { email: string };\n email = user.email;\n }\n } catch (err) {\n isError = true;\n }\n setState({\n isLoading: false,\n email,\n isError,\n });\n })();\n }, []);\n\n return state;\n};\n\n/**\n * AdminSignInForm allows authenticated admin users to sign in as another user.\n * This is only enabled in staging environments.\n */\nconst AdminSignInForm = () => {\n const [loginAs, setLoginAs] = useState();\n const { email, isLoading, isError } = useCurrentUser();\n const [error, setError] = useState();\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n const resp = await fetch(`/admin_signin`, {\n method: \"POST\",\n redirect: \"follow\",\n body: JSON.stringify({ email: loginAs }),\n });\n if (resp.status === 401) {\n window.location.replace(\"/signin\");\n }\n if (!resp.ok) {\n const err = (await resp.text()) ?? \"Something went wrong\";\n return setError(err);\n }\n\n let url = \"/\";\n if (resp.headers.get(\"Content-Type\")?.startsWith(\"application/json\")) {\n const b = await resp.json();\n url = b.url;\n }\n return window.location.replace(url);\n };\n\n if (isLoading) return ;\n if (isError) return ;\n return (\n
\n \n \n
Or
\n
\n \n setLoginAs(e.currentTarget.value)}\n />\n \n \n \n \n {!!error && }\n \n );\n};\n\nconst SignInForm = () => {\n const [email, setEmail] = useInputState();\n const [password, setPassword] = useInputState();\n const [alert, setAlert] = useState();\n\n useEffect(() => {\n const { error, status, message } = queryString.parse(\n window.location.search\n );\n if (error) {\n removeUrlParams();\n // Only oauth errors use the `error` param.\n setAlert({\n message: `${oauthErrorMessage(error as OAuthErrorCode)}`,\n type: \"error\",\n source: \"google\",\n });\n } else if (message) {\n removeUrlParams();\n // We use `status` and `message` on password resets.\n const t = [\"error\", \"success\"].includes(status as string)\n ? (status as ContentNotificationType)\n : \"error\";\n setAlert({\n message: message as string,\n type: t,\n source: \"email\",\n });\n }\n }, []);\n\n const handleJsonResponse = async (\n resp: Response,\n source: \"google\" | \"email\"\n ) => {\n if (!resp.ok) {\n const err = (await resp.text()) ?? \"Something went wrong\";\n return setAlert({ message: err, source, type: \"error\" });\n }\n\n let url = \"/\";\n if (resp.headers.get(\"Content-Type\")?.startsWith(\"application/json\")) {\n const b = await resp.json();\n url = b.url;\n }\n return window.location.replace(url);\n };\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n const setError = (message: string) =>\n setAlert({\n message,\n type: \"error\",\n source: \"email\",\n });\n if (!isEmail(email)) {\n return setError(\"Please provide a valid email.\");\n }\n if (password.length === 0) {\n return setError(\"Please provide a valid password.\");\n }\n const resp = await fetch(`/signin`, {\n method: \"POST\",\n redirect: \"follow\",\n body: JSON.stringify({ email, password }),\n });\n await handleJsonResponse(resp, \"email\");\n };\n\n const handleGoogleSSO = async () => {\n const resp = await fetch(\"/signin_google_sso\");\n await handleJsonResponse(resp, \"google\");\n };\n\n return (\n
\n
Welcome!
\n
Login to Liftoff Accelerate.
\n \n \n \n \n \n \n Forgot password?\n \n \n {alert?.source === \"email\" && (\n \n )}\n \n \n \n \n
Or
\n \n Login with Google\n \n
\n {alert?.source === \"google\" && (\n \n )}\n \n );\n};\n\nconst SignInPage = (): JSX.Element => {\n return (\n
\n \n Liftoff Accelerate | Sign In\n \n\n
\n
\n \n \"Liftoff\n \n
\n\n \n \n\n \n \n \n \n \n \n \n\n
\n
\n
\n );\n};\n\nexport default withRouter(SignInPage);\n","import {\n useState,\n useCallback,\n useRef,\n useEffect,\n Dispatch,\n SetStateAction,\n} from \"react\";\nimport { isEmpty, isEqual, isFunction } from \"lodash\";\n\nconst toggleScrollLock = (lock: boolean): void => {\n document.querySelector(\"html\")?.classList.toggle(\"scroll-lock\", lock);\n};\n\n/**\n * An effect for toggling the scroll-lock class on the top level html element.\n * Ensures the class is remove when the effect is cleaned up.\n */\nexport const useScrollLockEffect = (lock: boolean): void => {\n useEffect(() => {\n toggleScrollLock(lock);\n return () => toggleScrollLock(false);\n }, [lock]);\n};\n\n/**\n * As the React hook `useState`, but also reading/writing the value\n * to the provided `key` in `localStorage`.\n * If the key is undefined or empty, this has the same behavior as useState\n */\nexport function useLocalStorage(\n key: string,\n initialValue: T | (() => T)\n): [T, (set: T) => void] {\n const isKeyValid = !isEmpty(key);\n const [value, setValue] = useState(() => {\n const initializedValue = isFunction(initialValue)\n ? initialValue()\n : initialValue;\n if (!isKeyValid) return initializedValue;\n const item = window.localStorage?.getItem(key);\n if (item) {\n try {\n return JSON.parse(item);\n // eslint-disable-next-line no-empty\n } catch {}\n }\n return initializedValue;\n });\n\n const updateValue = useCallback(\n (update) => {\n const newValue = isFunction(update) ? update(value) : update;\n setValue(newValue);\n if (isKeyValid)\n window.localStorage?.setItem(key, JSON.stringify(newValue));\n },\n [setValue, isKeyValid, key, value]\n );\n\n return [value, updateValue];\n}\n\nexport function useToggle(\n initialValue = false,\n onToggle: ((next: boolean) => void) | null = null\n): [boolean, () => void] {\n const [value, setValue] = useState(initialValue);\n const toggle = useCallback(\n () =>\n setValue((v) => {\n const next = !v;\n onToggle?.(next);\n return next;\n }),\n [onToggle]\n );\n return [value, toggle];\n}\n\n/**\n * Creates an incrementing hook that provides count, increment and reset.\n * @param {int} initial The starting value\n */\nexport const useIncrement = (\n initial = 0\n): {\n count: number;\n increment: () => void;\n reset: () => void;\n} => {\n const [count, setCount] = useState(initial);\n const increment = useCallback(() => setCount((c) => c + 1), [setCount]);\n const reset = useCallback(() => setCount(initial), [setCount, initial]);\n return { count, increment, reset };\n};\n\n/** Keep track of previous prop values */\nexport function usePrevious(value: T): T {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport function useKeyDownEffect(\n onKeyDown: ((ev: KeyboardEvent) => void) | undefined,\n keyFilter: KeyboardEvent[\"key\"] | undefined = undefined\n): void {\n return useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if (!keyFilter || keyFilter === e.key) onKeyDown?.(e);\n };\n window.addEventListener(\"keydown\", handler);\n return () => {\n window.removeEventListener(\"keydown\", handler);\n };\n }, [keyFilter, onKeyDown]);\n}\n\nexport function useTimeout(\n callback: () => void,\n ms: number\n): [() => void, () => void] {\n const timerRef = useRef>();\n\n const cancel = useCallback(() => {\n const id = timerRef.current;\n if (id) {\n timerRef.current = undefined;\n clearTimeout(id);\n }\n }, [timerRef]);\n\n const start = useCallback(() => {\n timerRef.current = setTimeout(() => {\n callback();\n cancel();\n }, ms);\n }, [callback, ms, cancel]);\n\n // Clear timeout on unmount.\n useEffect(\n () => () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n },\n []\n );\n\n return [start, cancel];\n}\n\nexport function useInterval(\n callback: () => void,\n ms: number,\n {\n // Start the interval timer immediately.\n startOnMount = true,\n // Run the callback once immediately.\n initOnMount = false,\n } = {}\n): [() => void, () => void] {\n const timerRef = useRef>();\n\n const cancel = useCallback(() => {\n const id = timerRef.current;\n if (id) {\n timerRef.current = undefined;\n clearInterval(id);\n }\n }, [timerRef]);\n\n const start = useCallback(() => {\n if (!timerRef.current && ms > 0) {\n timerRef.current = setInterval(() => {\n callback();\n }, ms);\n }\n }, [callback, ms]);\n\n useEffect(() => {\n if (initOnMount) {\n callback();\n }\n if (startOnMount) {\n start();\n }\n return cancel;\n }, [startOnMount, initOnMount, callback, start, cancel]);\n\n return [start, cancel];\n}\n\n/**\n * Like `useState`, with an additional `useEffect` which automatically\n * updates when `initialValue` changes. Useful for components whose\n * initial props can change when data loads.\n */\nexport function useRefreshState(\n initialValue: T\n): [T, Dispatch>] {\n const [value, setValue] = useState(initialValue);\n useEffect(() => setValue(initialValue), [initialValue, setValue]);\n return [value, setValue];\n}\n\n/** Like useEffect, but uses deep equal comparison to determine whether deps\n * has changed.\n */\nexport const useDeepEqualEffect: typeof useEffect = (\n effect,\n deps,\n comparator = isEqual\n) => {\n const ref = useRef(deps);\n const isChanged = !ref.current?.every((dep, idx) =>\n comparator(dep, deps?.[idx])\n );\n if (isChanged) {\n ref.current = deps;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(effect, ref.current);\n};\n\n/**\n * A helper function for common visibility hook setup configuration.\n */\nconst useSetUpVisibilityHook = (options: VisibilityToggleOptions = {}) => {\n const { initialState = false, scrollLock } = options;\n const [visible, setVisible] = useState(initialState);\n useScrollLockEffect(!!(scrollLock && !visible));\n return { visible, setVisible };\n};\n\nexport type VisibilityToggleOptions = {\n initialState?: boolean;\n scrollLock?: boolean;\n};\n\n/**\n * A React hook to toggle the visibility state of a component.\n * In addition to tracking the current state, it can lock or unlock the\n * ability to scroll the window based on the component's visibility (i.e. modals).\n */\nexport function useVisibilityToggle(options: VisibilityToggleOptions = {}): {\n visible: boolean;\n toggleVisible: () => void;\n} {\n const { visible, setVisible } = useSetUpVisibilityHook(options);\n const toggleVisible = useCallback(() => {\n setVisible((v) => !v);\n }, [setVisible]);\n return { visible, toggleVisible };\n}\n\n/**\n * A visibility hook which returns 'show' and 'hide' functions for more\n * granular control of component visibility.\n * In addition to tracking the current state, it can lock or unlock the\n * ability to scroll the window based on the component's visibility (i.e. modals).\n */\nexport function useShowHide(options: VisibilityToggleOptions = {}): {\n visible: boolean;\n show: () => void;\n hide: () => void;\n} {\n const { visible, setVisible } = useSetUpVisibilityHook(options);\n const show = useCallback(() => setVisible(true), [setVisible]);\n const hide = useCallback(() => setVisible(false), [setVisible]);\n return { visible, show, hide };\n}\n\n/** Like `useShowHide` with an added `showDelay` and `hideDelay` options. */\nexport function useShowHideDelay(\n options: VisibilityToggleOptions & {\n showDelay: number;\n hideDelay: number;\n } = { showDelay: 0, hideDelay: 0 }\n): {\n visible: boolean;\n show: () => void;\n hide: () => void;\n} {\n const { showDelay, hideDelay } = options;\n const { visible, setVisible } = useSetUpVisibilityHook(options);\n const [startShow, cancelShow] = useTimeout(() => setVisible(true), showDelay);\n const [startHide, cancelHide] = useTimeout(\n () => setVisible(false),\n hideDelay\n );\n const show = useCallback(() => {\n cancelHide();\n startShow();\n }, [startShow, cancelHide]);\n const hide = useCallback(() => {\n cancelShow();\n startHide();\n }, [cancelShow, startHide]);\n\n return { visible, show, hide };\n}\n","import { useState, useRef, useEffect, RefObject } from \"react\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nexport type ResizeBounds = {\n height: number;\n width: number;\n left: number;\n top: number;\n};\n\nexport type HTMLMeasure = [RefObject, ResizeBounds];\n\n/**\n * Uses `ResizeObserver` to observe element size changes. Returns\n * an array [bindResizeRef: ref, bounds: {left, top, width, height}]\n * `bindResizeRef` needs to be bound to the ref of the element being watched\n * for resizing.\n */\nexport function useMeasure(): HTMLMeasure {\n const ref = useRef(null);\n const [bounds, setBounds] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n const [ro] = useState(\n () => new ResizeObserver(([entry]) => setBounds(entry.contentRect))\n );\n useEffect(() => {\n if (ref.current) ro.observe(ref.current);\n return () => ro.disconnect();\n }, [ro]);\n return [ref, bounds];\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nexport interface ButtonGroupProps {\n size?: \"small\" | \"middle\" | \"large\";\n style?: React.CSSProperties;\n className?: string;\n}\nconst ButtonGroup = (props: ButtonGroupProps): JSX.Element => {\n const { size, className, ...others } = props;\n const classes = classNames(\"sb-button-group\", className);\n\n return
;\n};\n\nexport default ButtonGroup;\n","import React, {\n MouseEventHandler,\n ReactNode,\n useState,\n Ref,\n useCallback,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { Icon, icons } from \"../Icon\";\nimport Group from \"./button-group\";\n\nexport type ButtonSize =\n | \"large\" // 44px\n | \"default\" // 40px\n | \"medium\" // 36px\n | \"small\" // 32px\n | \"extrasmall\"; // 28px\n\ntype ButtonHTMLType = \"submit\" | \"button\" | \"reset\";\n\ntype ButtonType =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"danger\"\n | \"cancel\"\n | \"back\"\n | \"forward\"\n | \"help\";\n\nexport interface ButtonProps {\n size?: ButtonSize;\n className?: string;\n onClick?: MouseEventHandler;\n href?: string;\n htmlType?: ButtonHTMLType;\n disableFocusStyle?: boolean;\n // FIXME(stefan): Use a proper union type.\n type?: ButtonType;\n buttonRef?: Ref;\n disabled?: boolean;\n children?: ReactNode;\n // FIXME(stefan): Use a proper union type.\n trigger?: string;\n /** Only used for anchor tags when href is provided. */\n download?: true;\n}\n\nexport const Button = ({\n size,\n className,\n href,\n type,\n htmlType,\n disableFocusStyle,\n buttonRef,\n ...rest\n}: ButtonProps): JSX.Element => {\n const buttonClassName = classNames(\"button\", \"sb-button\", className, type, {\n disabled: rest.disabled,\n large: size === \"large\", // 44px\n default: size === \"default\", // 40px\n medium: size === \"medium\", // 36px\n small: size === \"small\", // 32px\n extrasmall: size === \"extrasmall\", // 28px\n \"no-focus\": disableFocusStyle,\n });\n\n if (href) {\n return (\n }\n >\n {rest.children}\n \n );\n }\n\n return (\n }\n >\n {rest.children}\n \n );\n};\n\nButton.Group = Group;\n\nconst { PLUS } = icons;\n\ninterface AddButtonProps extends ButtonProps {\n title?: string;\n}\n\nexport const AddButton = ({\n size,\n title = \"Add\",\n ...rest\n}: AddButtonProps): JSX.Element => {\n return (\n \n );\n};\n\ninterface SpinnerButtonProps extends ButtonProps {\n onSave?: () => void;\n title?: string;\n loading?: boolean;\n type?: SpinnerButtonType;\n}\n\ntype SpinnerButtonType = \"primary\" | \"secondary\" | \"tertiary\" | \"danger\";\n\nexport const SpinnerButton = ({\n className = undefined,\n size = \"default\",\n children = \"Save\",\n disabled = false,\n loading = false,\n onSave,\n type,\n ...props\n}: SpinnerButtonProps): JSX.Element => {\n return (\n \n {children}\n \n );\n};\n\nconst { HEART } = icons;\n\ninterface RewardButtonProps extends ButtonProps {\n onClick: () => void;\n title?: string;\n animating?: boolean;\n}\n\nexport const RewardButton = ({\n className = undefined,\n size = \"default\",\n disabled = false,\n title = \"Send\",\n animating = undefined,\n onClick,\n ...props\n}: RewardButtonProps): JSX.Element => {\n const [rewarding, setRewarding] = useState(animating ?? false);\n const handleClick = useCallback(() => {\n if (animating === undefined) {\n setRewarding(true);\n // setTimeout so there's enough time for the animation to play\n setTimeout(() => {\n setRewarding(false);\n onClick();\n }, 1000);\n } else {\n onClick();\n }\n }, [onClick, animating, setRewarding]);\n return (\n \n {title}\n
\n \n \n \n
\n \n );\n};\n\ninterface CardButtonProps extends ButtonProps {\n isGreen?: boolean;\n}\n\nexport const CardButton = ({\n className = undefined,\n isGreen = false,\n ...props\n}: CardButtonProps): JSX.Element => {\n return (\n \n );\n};\n\nexport const EmailButton = (props: ButtonProps): JSX.Element => {\n return \n );\n};\n","import React from \"react\";\nimport \"../../style/core.less\";\nimport classNames from \"classnames\";\nimport { NotificationType } from \"../PageNotification/PageNotification\";\nimport \"./ContentNotification.less\";\nimport { Icon } from \"../Icon\";\n\nconst notificationIconType = (type: string) => {\n switch (type) {\n case \"info\":\n return `INFO_SOLID`;\n\n case \"error\":\n return `EXCLAIM_SOLID`;\n\n case \"warning\":\n return `EXCLAIM_SOLID`;\n\n case \"success\":\n return `CHECKMARK_SOLID`;\n\n case \"employee-only\":\n return `ROCKET`;\n\n default:\n return `INFO_SOLID`;\n }\n};\n\nexport type ContentNotificationProps = {\n type: NotificationType;\n title?: React.ReactNode | string;\n className?: string;\n miniBanner?: boolean;\n} & (\n | {\n children: React.ReactNode;\n message?: never;\n }\n | {\n message?: React.ReactNode;\n children?: never;\n }\n);\n\nexport const ContentNotification = ({\n type,\n title,\n message,\n miniBanner = false,\n className,\n children,\n}: ContentNotificationProps): JSX.Element => (\n \n \n {title && {title}}\n {children ?? message}\n
\n);\n","import React from \"react\";\nimport { SafeLink } from \"../../Link\";\nimport \"./footer.less\";\n\nconst Footer: React.FC = () => (\n
\n ©{new Date().getFullYear()} Liftoff\n \n \n Privacy Policy\n \n \n \n \n Terms of Service\n \n \n
\n);\n\nexport default Footer;\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport \"./fakelink.less\";\n\nexport interface FakeLinkProps\n extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes,\n HTMLAnchorElement\n > {\n onClick?: () => void;\n children: ReactNode;\n disabled?: boolean;\n className?: string;\n}\n/* Makes a clickable non-link span look like a link */\nexport const FakeLink = ({\n onClick,\n children,\n disabled,\n className,\n ...rest\n}: FakeLinkProps): JSX.Element => {\n return (\n \n {children}\n \n );\n};\n","import classNames from \"classnames\";\nimport React from \"react\";\nimport { Icon } from \"../Icon\";\nimport \"./safelink.less\";\n\nexport interface SafeLinkProps\n extends React.DetailedHTMLProps<\n React.AnchorHTMLAttributes,\n HTMLAnchorElement\n > {\n children: React.ReactNode;\n disabled?: boolean;\n icon?: boolean;\n className?: string;\n}\n/**\n * A link that opens a new tab by default\n */\nexport const SafeLink = ({\n href,\n target = \"_blank\",\n // See https://developers.google.com/web/tools/lighthouse/audits/noopener#recommendations\n rel = \"noreferrer\",\n children,\n disabled,\n icon,\n className,\n ...rest\n}: SafeLinkProps): JSX.Element => {\n return (\n \n {children}\n {icon && }\n \n );\n};\n\nexport interface OptionalSafeLinkProps extends SafeLinkProps {\n href?: string;\n}\n\n/**\n * SafeLink but skips the link and only renders the children if no href is\n * given. Use this when a link is needed some of the time.\n */\nexport const OptionalSafeLink = ({\n children,\n href,\n ...rest\n}: OptionalSafeLinkProps): JSX.Element => {\n if (!href) {\n return {children};\n }\n return (\n \n {children}\n \n );\n};\n","import React from \"react\";\nimport { stringifyUrl } from \"query-string\";\nimport { SafeLink, SafeLinkProps } from \"./SafeLink\";\n\nexport interface AdminParams {\n customerId?: number;\n userEmail?: string;\n showInternalSpend?: boolean;\n overrideCampaignVisibility?: boolean;\n showInternalApps?: boolean;\n}\n\nexport const customerDashboardRedirectURL = (\n href: string,\n {\n customerId,\n userEmail,\n showInternalSpend,\n overrideCampaignVisibility,\n showInternalApps,\n }: AdminParams\n): string => {\n return stringifyUrl({\n url: \"/admin/customer_dashboard\",\n query: {\n redirect: href,\n \"customer-id\": customerId,\n email: userEmail,\n \"show-internal-spend\": showInternalSpend,\n \"override-campaign-visibility\": overrideCampaignVisibility,\n \"show-internal-apps\": showInternalApps,\n },\n });\n};\n\n/**\n * A SafeLink that sets Customer Dashboard admin params.\n * Providing customerId will log the user in as the customer primary user, or\n * userEmail can be provided to specify a user.\n */\nexport const CustomerDashboardLink = ({\n href: redirectHref,\n customerId,\n userEmail,\n showInternalSpend,\n overrideCampaignVisibility,\n showInternalApps,\n ...restProps\n}: SafeLinkProps & AdminParams): JSX.Element => {\n return (\n \n );\n};\n","import React, { useState } from \"react\";\nimport classNames from \"classnames\";\nimport { useToggle } from \"@liftoff/hooks\";\nimport { Icon, CloserIcon } from \"../Icon\";\n\nexport type NotificationType =\n | \"success\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"employee-only\";\n\nconst notificationIconType = (type: string) => {\n switch (type) {\n case \"info\":\n return `INFO`;\n\n case \"error\":\n return `EXCLAIM_CIRCLE`;\n\n case \"warning\":\n return `EXCLAIM_CIRCLE`;\n\n case \"success\":\n return `CHECKMARK_ROUND`;\n\n case \"employee-only\":\n return `ROCKET`;\n\n default:\n return `INFO`;\n }\n};\n\nexport type ButtonPosition = \"right\" | \"bottom\";\n\ninterface PageNotificationProps {\n afterClose?: () => void;\n button?: React.ReactNode;\n buttonPosition?: ButtonPosition;\n children?: React.ReactNode;\n className?: string;\n closable?: boolean;\n description?: React.ReactNode;\n message?: React.ReactNode;\n type?: NotificationType;\n /** Puts the description on the same line as the title */\n wrap?: boolean;\n /** Hides the description behind a \"more...\" button */\n useMore?: boolean;\n}\n\nexport const PageNotification = ({\n afterClose,\n button,\n buttonPosition = \"right\",\n children,\n className,\n closable = false,\n description,\n message,\n type = \"info\",\n wrap = false,\n useMore = false,\n}: PageNotificationProps): JSX.Element => {\n const [descriptionVisible, toggle] = useToggle(!useMore);\n const wrappedDescription = wrap ? (\n
 {description}
\n ) : (\n
{description}
\n );\n const [visible, setVisible] = useState(true);\n\n return (\n <>\n {visible && (\n \n \n \n {!message && !description ? (\n children\n ) : (\n \n {message}\n {useMore && (\n
\n {descriptionVisible ? \"Less\" : \"More\"}\n
\n )}\n {descriptionVisible && wrappedDescription}\n \n )}\n {button &&
{button}
}\n \n {closable && (\n {\n setVisible(false);\n if (afterClose) {\n afterClose();\n }\n }}\n />\n )}\n \n )}\n \n );\n};\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n\nimport React from \"react\";\nimport { PageNotification } from \"./PageNotification\";\n\ninterface AdBlockAlertProps {\n closable?: boolean;\n}\n\n/**\n * AdBlockAlert relies on a global var `window.ads_can_show` to determine if\n * ad blocking is enabled.\n * ------------------------------\n * NOTE(deborah) -- For this to work in non-Dasher apps, this script must be added to\n * the .ejs or base .html file that the app loads into, otherwise \"ads can show\" is never\n * correctly detected and the banner shows all the time.\n * \n */\n\nexport const AdBlockAlert: React.FC = ({\n closable = false,\n}) => {\n if (window.ads_can_show) return null;\n return (\n \n Ad blocking software detected. Please disable it to ensure that all\n Liftoff functionality is available.\n \n );\n};\n","import React from \"react\";\nimport { PageNotification } from \"./PageNotification\";\n\ninterface BrowserAlertProps {\n force?: boolean;\n closable?: boolean;\n}\n\nexport const BrowserAlert: React.FC = ({\n force = false,\n closable,\n}) => {\n if (navigator.userAgent.match(/Chrome|ChriOS/) && !force) return null;\n\n return (\n \n \n This dashboard is optimized for\n \n \"\"\n Google Chrome\n \n . Errors may occur when using other browsers.\n \n \n );\n};\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 37363;\nmodule.exports = webpackEmptyContext;"],"names":["ResetPasswordPage","props","event","authorization","newPassword","newPasswordConfirm","formObj","response","data","params","message","ContentNotification","Button","ForgotPasswordPage","username","isError","useInputState","state","setState","handleChange","e","oauthErrorMessage","code","removeUrlParams","useCurrentUser","email","curr","resp","err","AdminSignInForm","loginAs","setLoginAs","isLoading","error","setError","handleSubmit","url","Spin","SignInForm","setEmail","password","setPassword","alert","setAlert","status","t","handleJsonResponse","source","handleGoogleSSO","SignInPage","Footer","toggleScrollLock","lock","useScrollLockEffect","useLocalStorage","key","initialValue","isKeyValid","value","setValue","initializedValue","item","updateValue","update","newValue","useToggle","onToggle","toggle","v","next","useIncrement","initial","count","setCount","increment","c","reset","usePrevious","ref","useKeyDownEffect","onKeyDown","keyFilter","handler","useTimeout","callback","ms","timerRef","cancel","id","start","useInterval","startOnMount","initOnMount","useRefreshState","useDeepEqualEffect","effect","deps","comparator","dep","idx","useSetUpVisibilityHook","options","initialState","scrollLock","visible","setVisible","useVisibilityToggle","toggleVisible","useShowHide","show","hide","useShowHideDelay","showDelay","hideDelay","startShow","cancelShow","startHide","cancelHide","useMeasure","bounds","setBounds","ro","entry","size","className","others","classes","href","type","htmlType","disableFocusStyle","buttonRef","rest","buttonClassName","PLUS","AddButton","title","Icon","SpinnerButton","children","disabled","loading","onSave","HEART","RewardButton","animating","onClick","rewarding","setRewarding","handleClick","CardButton","isGreen","EmailButton","IconButton","fontSize","iconType","buttonProps","notificationIconType","miniBanner","FakeLink","SafeLink","target","rel","icon","OptionalSafeLink","customerDashboardRedirectURL","customerId","userEmail","showInternalSpend","overrideCampaignVisibility","showInternalApps","CustomerDashboardLink","redirectHref","restProps","PageNotification","afterClose","button","buttonPosition","closable","description","wrap","useMore","descriptionVisible","wrappedDescription","AdBlockAlert","BrowserAlert","force","webpackEmptyContext","req","module"],"sourceRoot":""}