{"version":3,"sources":["webpack:///./src/shared/selectors/app.ts","webpack:///./src/onboarding/components/SigninForm.tsx","webpack:///./src/onboarding/containers/SigninPage.tsx","webpack:///./src/shared/components/VersionInfoOSS.tsx","webpack:///./src/shared/thunks/app.ts","webpack:///./src/shared/components/VersionInfo.tsx"],"names":["timeZone","state","app","persisted","theme","navbarMode","navBarState","getVersionInfo","versionInfo","hasUpdatedTimeRangeInVEO","ephemeral","getPresentationMode","inPresentationMode","username","password","handleUsername","e","target","value","this","setState","handlePassword","handleSignIn","async","notify","props","resp","auth","status","Error","data","message","handleRedirect","error","onSubmit","Row","Column","widthXS","Twelve","Element","label","name","onChange","size","Medium","autoFocus","testID","id","type","Password","Footer","color","Primary","text","Submit","history","location","returnTo","URLSearchParams","search","get","replace","push","mdtp","links","super","Loading","allowed","setup","window","pathname","Done","dismissAllNotifications","loading","spinnerComponent","Notifications","className","Body","alignItems","Center","cloud","VersionInfo","dispatch","url","response","fetch","info","json","version","commit","err","console","href","slice","style","widthPixels","width"],"mappings":"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","file":"60.89f8540283.js","sourcesContent":["import {AppState, TimeZone, Theme, NavBarState, VersionInfo} from 'src/types'\n\nexport const timeZone = (state: AppState): TimeZone =>\n state.app.persisted.timeZone || ('Local' as TimeZone)\n\nexport const theme = (state: AppState): Theme =>\n state.app.persisted.theme || ('dark' as Theme)\n\nexport const navbarMode = (state: AppState): NavBarState =>\n state.app.persisted.navBarState || ('collapsed' as NavBarState)\n\nexport const getVersionInfo = (state: AppState): VersionInfo =>\n state.app.persisted.versionInfo || ({} as VersionInfo)\n\nexport const hasUpdatedTimeRangeInVEO = (state: AppState): boolean =>\n state.app.ephemeral.hasUpdatedTimeRangeInVEO || false\n\nexport const getPresentationMode = (state: AppState): boolean =>\n state.app.ephemeral.inPresentationMode || false\n","// Libraries\nimport React, {PureComponent, ChangeEvent} from 'react'\nimport {withRouter, RouteComponentProps} from 'react-router-dom'\nimport {connect, ConnectedProps} from 'react-redux'\nimport {get} from 'lodash'\n\n// Components\nimport {Form, Input, Button, Grid} from '@influxdata/clockface'\n\n// APIs\nimport {postSignin} from 'src/client'\n\n// Actions\nimport {notify as notifyAction} from 'src/shared/actions/notifications'\n\n// Constants\nimport * as copy from 'src/shared/copy/notifications'\n\n// Types\nimport {Links} from 'src/types/links'\nimport {AppState} from 'src/types'\nimport {\n Columns,\n InputType,\n ButtonType,\n ComponentSize,\n ComponentColor,\n} from '@influxdata/clockface'\n\n// Decorators\nimport {ErrorHandling} from 'src/shared/decorators/errors'\n\nexport interface OwnProps {\n links: Links\n notify: typeof notifyAction\n}\n\ninterface State {\n username: string\n password: string\n}\n\ntype ReduxProps = ConnectedProps\ntype Props = OwnProps & RouteComponentProps & ReduxProps\n\n@ErrorHandling\nclass SigninForm extends PureComponent {\n public state: State = {\n username: '',\n password: '',\n }\n\n public render() {\n const {username, password} = this.state\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n }\n\n private handleUsername = (e: ChangeEvent): void => {\n const username = e.target.value\n this.setState({username})\n }\n private handlePassword = (e: ChangeEvent): void => {\n const password = e.target.value\n this.setState({password})\n }\n\n private handleSignIn = async (): Promise => {\n const {notify} = this.props\n const {username, password} = this.state\n\n try {\n const resp = await postSignin({auth: {username, password}})\n\n if (resp.status !== 204) {\n throw new Error(resp.data.message)\n }\n\n this.handleRedirect()\n } catch (error) {\n const message = get(error, 'response.data.msg', '')\n const status = get(error, 'response.status', '')\n\n if (status === 401) {\n notify({\n ...copy.SigninError,\n message: 'Login failed: username or password is invalid',\n })\n return\n }\n\n if (!message) {\n notify(copy.SigninError)\n return\n }\n\n notify({...copy.SigninError, message})\n }\n }\n\n private handleRedirect() {\n const {history, location} = this.props\n const params = new URLSearchParams(location.search)\n const returnTo = params.get('returnTo')\n\n if (returnTo) {\n history.replace(returnTo)\n } else {\n history.push('/')\n }\n }\n}\n\nconst mstp = ({links}: AppState) => ({\n links,\n})\n\nconst mdtp = {\n notify: notifyAction,\n}\n\nconst connector = connect(mstp, mdtp)\n\nexport default connector(withRouter(SigninForm))\n","// Libraries\nimport React, {PureComponent} from 'react'\nimport {withRouter, RouteComponentProps} from 'react-router-dom'\nimport {connect, ConnectedProps} from 'react-redux'\n\n// APIs\nimport {client} from 'src/utils/api'\n\n// Actions\nimport {dismissAllNotifications} from 'src/shared/actions/notifications'\n\n// Components\nimport {ErrorHandling} from 'src/shared/decorators/errors'\nimport SigninForm from 'src/onboarding/components/SigninForm'\nimport {\n SpinnerContainer,\n TechnoSpinner,\n Panel,\n AlignItems,\n InfluxDBCloudLogo,\n FunnelPage,\n AppWrapper,\n} from '@influxdata/clockface'\nimport {RemoteDataState} from 'src/types'\nimport VersionInfo from 'src/shared/components/VersionInfo'\nimport Notifications from 'src/shared/components/notifications/Notifications'\n\n// Constants\nimport {CLOUD, CLOUD_SIGNIN_PATHNAME} from 'src/shared/constants'\n\ninterface State {\n status: RemoteDataState\n}\n\ntype ReduxProps = ConnectedProps\ntype Props = RouteComponentProps & ReduxProps\n@ErrorHandling\nclass SigninPage extends PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n status: RemoteDataState.Loading,\n }\n }\n public async componentDidMount() {\n const {allowed} = await client.setup.status()\n\n if (allowed) {\n this.props.history.push('/onboarding/0')\n } else if (CLOUD) {\n window.location.pathname = CLOUD_SIGNIN_PATHNAME\n return\n }\n\n this.setState({status: RemoteDataState.Done})\n }\n\n componentWillUnmount() {\n this.props.dismissAllNotifications()\n }\n\n public render() {\n return (\n }\n >\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nconst mdtp = {\n dismissAllNotifications,\n}\n\nconst connector = connect(null, mdtp)\n\nexport default connector(withRouter(SigninPage))\n","// Libraries\nimport React, {FC, useEffect} from 'react'\nimport {useSelector, useDispatch} from 'react-redux'\n\n// Constants\nimport {GIT_SHA} from 'src/shared/constants'\n\n// Thunks\nimport {fetchVersionInfo} from 'src/shared/thunks/app'\n\n// Selectors\nimport {getVersionInfo} from 'src/shared/selectors/app'\n\nconst VersionInfoOSS: FC = () => {\n const dispatch = useDispatch()\n\n const versionInfo = useSelector(getVersionInfo)\n\n useEffect(() => {\n dispatch(fetchVersionInfo())\n }, [dispatch])\n\n return (\n <>\n InfluxDB {versionInfo.version}\n
\n Server:{' '}\n \n \n {versionInfo.commit && versionInfo.commit.slice(0, 7)}\n \n \n
\n Frontend:{' '}\n \n \n {GIT_SHA.slice(0, 7)}\n \n \n \n )\n}\n\nexport default VersionInfoOSS\n","import {Dispatch} from 'redux'\nimport {getAPIBasepath} from 'src/utils/basepath'\nimport {VersionInfo} from 'src/types'\nimport {Action, setVersionInfo} from 'src/shared/actions/app'\n\nexport const fetchVersionInfo = () => async (\n dispatch: Dispatch\n): Promise => {\n try {\n const url = `${getAPIBasepath()}/health`\n // Have to use fetch here since the oats client doesn't work with the servers option in the oss swagger\n // Ex: https://github.com/influxdata/openapi/blob/35d734671d05ba9337dd6fbd8bb5c6085482011b/contracts/oss.yml#L5887\n // The \"/health\" endpoint is actually not prefixed by \"api/v2\", but the oats client has the prefix\n const response = await fetch(url)\n const info = await response.json()\n\n dispatch(\n setVersionInfo({\n version: info.version,\n commit: info.commit,\n })\n )\n\n return info\n } catch (err) {\n console.error(err)\n dispatch(\n setVersionInfo({\n version: 'n/a',\n commit: 'n/a',\n })\n )\n }\n}\n","// Libraries\nimport React, {PureComponent} from 'react'\n\n// Components\nimport VersionInfoOSS from 'src/shared/components/VersionInfoOSS'\n\n// Constants\nimport {VERSION, GIT_SHA, CLOUD} from 'src/shared/constants'\n\ninterface Props {\n widthPixels?: number\n}\n\nclass VersionInfo extends PureComponent {\n public render() {\n return (\n \n

\n {CLOUD ? (\n <>\n Version {VERSION}{' '}\n {GIT_SHA && ({GIT_SHA.slice(0, 7)})}\n \n ) : (\n \n )}\n

\n
\n )\n }\n\n private get style() {\n if (this.props.widthPixels) {\n return {width: `${this.props.widthPixels}px`}\n }\n }\n}\n\nexport default VersionInfo\n"],"sourceRoot":""}