![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"3461.b2536127835134a39eb3.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/common/back_button.tsx","webpack://mattermost-webapp/./src/components/common/hocs/cloud/with_use_get_usage_deltas.tsx","webpack://mattermost-webapp/./src/components/common/hooks/useGetUsageDeltas.ts","webpack://mattermost-webapp/./src/components/common/site_name_and_description.tsx","webpack://mattermost-webapp/./src/components/common/infinite_scroll.tsx","webpack://mattermost-webapp/./src/components/widgets/icons/team_info_icon.tsx","webpack://mattermost-webapp/./src/components/select_team/components/select_team_item.tsx","webpack://mattermost-webapp/./src/components/select_team/select_team.tsx","webpack://mattermost-webapp/./src/components/select_team/index.ts","webpack://mattermost-webapp/./src/components/widgets/icons/fa_logout_icon.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport {FormattedMessage, useIntl} from 'react-intl';\nimport {Link} from 'react-router-dom';\n\ntype Props = {\n\n /**\n * URL to return to\n */\n url: string;\n\n className?: string;\n\n /**\n * onClick handler when user clicks back button\n */\n onClick?: React.EventHandler<React.MouseEvent>;\n}\n\nconst BackButton = ({url, className, onClick}: Props): JSX.Element => {\n const {formatMessage} = useIntl();\n\n return (\n <div className={classNames('signup-header', className)}>\n <Link\n data-testid='back_button'\n onClick={onClick}\n to={url}\n >\n <span\n id='back_button_icon'\n className='fa fa-1x fa-angle-left'\n title={formatMessage({id: 'generic_icons.back', defaultMessage: 'Back Icon'})}\n />\n <FormattedMessage\n id='web.header.back'\n defaultMessage='Back'\n />\n </Link>\n </div>\n );\n};\nBackButton.defaultProps = {\n url: '/',\n};\n\nexport default BackButton;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {ComponentType} from 'react';\n\nimport useGetUsageDeltas from 'components/common/hooks/useGetUsageDeltas';\n\nfunction withUseGetUsageDelta<T>(WrappedComponent: ComponentType<T>) {\n return (props: T) => {\n const usageDeltas = useGetUsageDeltas();\n\n return (\n <WrappedComponent\n usageDeltas={usageDeltas}\n {...props}\n />\n );\n };\n}\n\nexport default withUseGetUsageDelta;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useMemo} from 'react';\n\nimport type {CloudUsage} from '@mattermost/types/cloud';\n\nimport useGetLimits from './useGetLimits';\nimport useGetUsage from './useGetUsage';\n\n// Returns an object of type CloudUsage with the values being the delta between the limit, and the actual usage of this installation.\n// A value < 0 means that they are NOT over the limit. A value > 0 means they've exceeded that limit\n// 2 teams used, minus 1 team limit = value > 0, limit exceeded\n// 10MB files used, minus 1000MB limit = value < 0, limit not exceeded.\n// etc.\n// withBackupValue will set the limit arbitrarily high in the event that the limit isn't set\nexport const withBackupValue = (maybeLimit: number | undefined, limitsLoaded: boolean) => (limitsLoaded ? (maybeLimit ?? Number.MAX_VALUE) : Number.MAX_VALUE);\n\nexport default function useGetUsageDeltas(): CloudUsage {\n const usage = useGetUsage();\n const [limits, limitsLoaded] = useGetLimits();\n\n const usageDelta = useMemo(() => {\n return (\n {\n files: {\n totalStorage: usage.files.totalStorage - withBackupValue(limits.files?.total_storage, limitsLoaded),\n totalStorageLoaded: usage.files.totalStorageLoaded,\n },\n messages: {\n history: usage.messages.history - withBackupValue(limits.messages?.history, limitsLoaded),\n historyLoaded: usage.messages.historyLoaded,\n },\n teams: {\n active: usage.teams.active - withBackupValue(limits.teams?.active, limitsLoaded),\n\n // cloudArchived doesn't count against usage, but we pass the value along for convenience\n cloudArchived: usage.teams.cloudArchived,\n teamsLoaded: usage.teams.teamsLoaded,\n },\n }\n );\n }, [usage, limits, limitsLoaded]);\n\n return usageDelta;\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage} from 'react-intl';\n\ntype Props = {\n customDescriptionText?: string;\n siteName: string | undefined;\n};\nconst SiteNameAndDescription = ({customDescriptionText, siteName = 'Mattermost'}: Props) => {\n const description = customDescriptionText || (\n <FormattedMessage\n id='web.root.signup_info'\n defaultMessage='All team communication in one place, searchable and accessible anywhere'\n />\n );\n\n return (\n <>\n <h1 id='site_name'>{siteName}</h1>\n <h3\n id='site_description'\n className='color--light'\n >\n {description}\n </h3>\n </>\n );\n};\n\nexport default React.memo(SiteNameAndDescription);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport debounce from 'lodash/debounce';\nimport React from 'react';\nimport type {CSSProperties} from 'react';\n\nimport LoadingScreen from 'components/loading_screen';\n\nconst SCROLL_BUFFER = 100;\nconst DEBOUNCE_WAIT_TIME = 200;\n\ntype Props = {\n children: React.ReactNode;\n\n /**\n * Function that is called to load more items\n */\n callBack: () => void;\n\n /**\n * Message to display when all the data has been scrolled through\n */\n endOfDataMessage?: string;\n\n /**\n * A wrapper class to define styling of the infinite scroll\n */\n styleClass?: string;\n\n /**\n * A number that determines how far the scroll is near the bottom before\n * loading more items. The bigger this value the more items will be loaded\n * much earlier as you scroll to the bottom.\n */\n bufferValue: number;\n\n /**\n * The total number of items to be scrolled through\n */\n totalItems: number;\n\n /**\n * The number of items to load in a single fetch\n */\n itemsPerPage: number;\n\n /**\n * The current page that has been scrolled to\n */\n pageNumber: number;\n\n /**\n * Optional style object that's passed on to the underlying loader\n * component\n */\n\n loaderStyle?: CSSProperties;\n};\n\ntype State = {\n isFetching: boolean;\n isEndofData: boolean;\n};\n\nexport default class InfiniteScroll extends React.PureComponent<Props, State> {\n node: React.RefObject<HTMLDivElement>;\n\n static defaultProps = {\n bufferValue: SCROLL_BUFFER,\n endOfDataMessage: '',\n styleClass: '',\n loaderStyle: {},\n };\n\n constructor(props: Props) {\n super(props);\n this.state = {\n isFetching: false,\n isEndofData: false,\n };\n this.node = React.createRef();\n }\n\n componentDidMount(): void {\n this.node.current?.addEventListener('scroll', this.debounceHandleScroll);\n }\n\n componentWillUnmount(): void {\n this.node.current?.removeEventListener('scroll', this.debounceHandleScroll);\n }\n\n validateBuffer = (buffer: number): number => {\n if (buffer < SCROLL_BUFFER) {\n return SCROLL_BUFFER;\n }\n return Math.abs(buffer);\n };\n\n getAmountOfPages = (total: number, freq: number): number => {\n return Math.ceil(total / freq);\n };\n\n handleScroll = (): void => {\n const {isFetching, isEndofData} = this.state;\n const {callBack, bufferValue, totalItems, itemsPerPage, pageNumber} = this.props;\n\n const node = this.node.current;\n const validBuffer = this.validateBuffer(bufferValue);\n\n const toScroll = node!.scrollHeight - node!.clientHeight - validBuffer;\n const nearBottom = node!.scrollTop > toScroll;\n\n if (nearBottom && !isEndofData && !isFetching) {\n this.setState({isFetching: true},\n async () => {\n await callBack();\n\n this.setState({\n isFetching: false,\n });\n\n if (totalItems === 0) {\n this.setState({\n isEndofData: true,\n });\n return;\n }\n\n const amountOfPages = this.getAmountOfPages(totalItems, itemsPerPage);\n\n if (pageNumber === amountOfPages) {\n this.setState({\n isEndofData: true,\n });\n }\n });\n }\n };\n\n debounceHandleScroll = debounce(this.handleScroll, DEBOUNCE_WAIT_TIME);\n\n render(): React.ReactNode {\n const {children, endOfDataMessage, styleClass, loaderStyle} = this.props;\n const {isEndofData, isFetching} = this.state;\n const showLoader = !isEndofData && isFetching; // show loader if fetching and end of data is not reached.\n return (\n <>\n <div\n className={`infinite-scroll ${styleClass}`}\n ref={this.node}\n >\n {children}\n {showLoader && (\n <LoadingScreen\n style={loaderStyle}\n message=' '\n />\n )}\n {!showLoader && endOfDataMessage}\n </div>\n </>\n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {CSSProperties} from 'react';\nimport {useIntl} from 'react-intl';\n\nexport default function TeamInfoIcon(props: React.HTMLAttributes<HTMLSpanElement>) {\n const {formatMessage} = useIntl();\n return (\n <span {...props}>\n <svg\n width='100%'\n height='100%'\n viewBox='0 0 20 20'\n style={style}\n role='img'\n aria-label={formatMessage({id: 'generic_icons.info', defaultMessage: 'Info Icon'})}\n >\n <g transform='matrix(1.17647,0,0,1.17647,-1.55431e-15,-1.00573e-14)'>\n <path d='M8.5,0C3.797,0 0,3.797 0,8.5C0,13.203 3.797,17 8.5,17C13.203,17 17,13.203 17,8.5C17,3.797 13.203,0 8.5,0ZM10,8.5C10,7.672 9.328,7 8.5,7C7.672,7 7,7.672 7,8.5L7,12.45C7,13.278 7.672,13.95 8.5,13.95C9.328,13.95 10,13.278 10,12.45L10,8.5ZM8.5,3C9.328,3 10,3.672 10,4.5C10,5.328 9.328,6 8.5,6C7.672,6 7,5.328 7,4.5C7,3.672 7.672,3 8.5,3Z'/>\n </g>\n </svg>\n </span>\n );\n}\n\nconst style: CSSProperties = {\n fillRule: 'evenodd',\n clipRule: 'evenodd',\n strokeLinejoin: 'round',\n strokeMiterlimit: 1.41421,\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useCallback} from 'react';\nimport {useIntl} from 'react-intl';\n\nimport type {Team} from '@mattermost/types/teams';\n\nimport TeamInfoIcon from 'components/widgets/icons/team_info_icon';\nimport WithTooltip from 'components/with_tooltip';\n\nimport * as Utils from 'utils/utils';\n\ninterface Props {\n team: Team;\n onTeamClick: (team: Team) => void;\n loading: boolean;\n canJoinPublicTeams: boolean;\n canJoinPrivateTeams: boolean;\n}\n\nconst SelectTeamItem = ({\n team,\n onTeamClick,\n loading,\n canJoinPublicTeams,\n canJoinPrivateTeams,\n}: Props) => {\n const intl = useIntl();\n\n const handleTeamClick = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n onTeamClick(team);\n }, [onTeamClick, team]);\n\n const renderDescriptionTooltip = (): React.ReactNode => {\n if (!team.description) {\n return null;\n }\n\n return (\n <WithTooltip\n title={team.description}\n >\n <TeamInfoIcon className='icon icon--info'/>\n </WithTooltip>\n );\n };\n\n let icon;\n if (loading) {\n icon = (\n <span\n className='fa fa-refresh fa-spin right signup-team__icon'\n title={intl.formatMessage({id: 'generic_icons.loading', defaultMessage: 'Loading Icon'})}\n />\n );\n } else {\n icon = (\n <span\n className='fa fa-angle-right right signup-team__icon'\n title={intl.formatMessage({id: 'select_team.join.icon', defaultMessage: 'Join Team Icon'})}\n />\n );\n }\n\n const canJoin = (team.allow_open_invite && canJoinPublicTeams) || (!team.allow_open_invite && canJoinPrivateTeams);\n\n return (\n <div className='signup-team-dir'>\n {renderDescriptionTooltip()}\n <a\n href='#'\n id={Utils.createSafeId(team.display_name)}\n onClick={canJoin ? handleTeamClick : undefined}\n className={canJoin ? '' : 'disabled'}\n >\n <span className='signup-team-dir__name'>{team.display_name}</span>\n {!team.allow_open_invite &&\n <i\n className='fa fa-lock light'\n title={intl.formatMessage({id: 'select_team.private.icon', defaultMessage: 'Private team'})}\n />}\n {canJoin && icon}\n </a>\n </div>\n );\n};\n\nexport default React.memo(SelectTeamItem);\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {ReactNode, MouseEvent} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport {Link} from 'react-router-dom';\n\nimport type {CloudUsage} from '@mattermost/types/cloud';\nimport type {Team} from '@mattermost/types/teams';\n\nimport {Permissions} from 'mattermost-redux/constants';\n\nimport {emitUserLoggedOutEvent} from 'actions/global_actions';\nimport {trackEvent} from 'actions/telemetry_actions.jsx';\n\nimport AnnouncementBar from 'components/announcement_bar';\nimport BackButton from 'components/common/back_button';\nimport InfiniteScroll from 'components/common/infinite_scroll';\nimport SiteNameAndDescription from 'components/common/site_name_and_description';\nimport LoadingScreen from 'components/loading_screen';\nimport LearnAboutTeamsLink from 'components/main_menu/learn_about_teams_link';\nimport SystemPermissionGate from 'components/permissions_gates/system_permission_gate';\nimport LogoutIcon from 'components/widgets/icons/fa_logout_icon';\n\nimport logoImage from 'images/logo.png';\nimport Constants from 'utils/constants';\nimport * as UserAgent from 'utils/user_agent';\n\nimport SelectTeamItem from './components/select_team_item';\nimport './select_team.scss';\n\nexport const TEAMS_PER_PAGE = 30;\nconst TEAM_MEMBERSHIP_DENIAL_ERROR_ID = 'api.team.add_members.user_denied';\n\ntype Actions = {\n getTeams: (page?: number, perPage?: number, includeTotalCount?: boolean) => any;\n loadRolesIfNeeded: (roles: Iterable<string>) => any;\n addUserToTeam: (teamId: string, userId?: string) => any;\n}\n\ntype Props = {\n currentUserId: string;\n currentUserRoles: string;\n currentUserIsGuest?: boolean;\n customDescriptionText?: string;\n isMemberOfTeam: boolean;\n listableTeams: Team[];\n siteName?: string;\n canCreateTeams: boolean;\n canManageSystem: boolean;\n canJoinPublicTeams: boolean;\n canJoinPrivateTeams: boolean;\n history?: any;\n actions: Actions;\n totalTeamsCount: number;\n isCloud: boolean;\n isFreeTrial: boolean;\n usageDeltas: CloudUsage;\n};\n\ntype State = {\n loadingTeamId?: string;\n error: any;\n endofTeamsData: boolean;\n currentPage: number;\n currentListableTeams: Team[];\n}\n\nexport default class SelectTeam extends React.PureComponent<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n loadingTeamId: '',\n error: null,\n endofTeamsData: false,\n currentPage: 0,\n currentListableTeams: [],\n };\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.listableTeams.length !== state.currentListableTeams.length) {\n return {\n currentListableTeams: props.listableTeams.slice(0, TEAMS_PER_PAGE * state.currentPage),\n };\n }\n return null;\n }\n\n componentDidMount() {\n trackEvent('signup', 'signup_select_team', {userId: this.props.currentUserId});\n this.fetchMoreTeams();\n if (this.props.currentUserRoles !== undefined) {\n this.props.actions.loadRolesIfNeeded(this.props.currentUserRoles.split(' '));\n }\n }\n\n fetchMoreTeams = async () => {\n const {currentPage} = this.state;\n const {actions} = this.props;\n\n const response = await actions.getTeams(currentPage, TEAMS_PER_PAGE, true);\n\n // We don't want to increase the page number if no data came back previously\n if (!response.error && !(response.error instanceof Error)) {\n this.setState((prevState) => (\n {\n currentPage: prevState.currentPage + 1,\n }\n ),\n );\n }\n };\n\n handleTeamClick = async (team: Team) => {\n const {currentUserRoles} = this.props;\n this.setState({loadingTeamId: team.id});\n\n const {data, error} = await this.props.actions.addUserToTeam(team.id, this.props.currentUserId);\n if (data && this.props.history !== undefined) {\n this.props.history.push(`/${team.name}/channels/${Constants.DEFAULT_CHANNEL}`);\n } else if (error) {\n let errorMsg = error.message;\n\n if (error.server_error_id === TEAM_MEMBERSHIP_DENIAL_ERROR_ID) {\n if (currentUserRoles !== undefined && currentUserRoles.includes(Constants.PERMISSIONS_SYSTEM_ADMIN)) {\n errorMsg = (\n <FormattedMessage\n id='join_team_group_constrained_denied_adminText'\n defaultMessage={'You need to be a member of a linked group to join this team. You can add a group to this team <a>here</a>.'}\n values={{\n a: (chunks: string) => (\n <Link to='/admin_console/user_management/groups'>\n {chunks}\n </Link>\n ),\n }}\n />\n );\n } else {\n errorMsg = (\n <FormattedMessage\n id='join_team_group_constrained_denied'\n defaultMessage='You need to be a member of a linked group to join this team.'\n />\n );\n }\n }\n\n this.setState({\n error: errorMsg,\n loadingTeamId: '',\n });\n }\n };\n\n handleLogoutClick = (e: MouseEvent): void => {\n e.preventDefault();\n trackEvent('select_team', 'click_logout');\n emitUserLoggedOutEvent('/login');\n };\n\n clearError = (e: MouseEvent): void => {\n e.preventDefault();\n\n this.setState({\n error: null,\n });\n };\n\n render(): ReactNode {\n const {currentPage, currentListableTeams} = this.state;\n const {\n currentUserIsGuest,\n canManageSystem,\n customDescriptionText,\n isMemberOfTeam,\n siteName,\n canCreateTeams,\n canJoinPublicTeams,\n canJoinPrivateTeams,\n totalTeamsCount,\n isCloud,\n isFreeTrial,\n usageDeltas: {\n teams: {\n active: usageDeltaTeams,\n },\n },\n } = this.props;\n\n const teamsLimitReached = usageDeltaTeams >= 0;\n const createTeamRestricted = isCloud && !isFreeTrial && teamsLimitReached;\n\n let openContent;\n if (this.state.loadingTeamId) {\n openContent = <LoadingScreen/>;\n } else if (this.state.error) {\n openContent = (\n <div className='signup__content'>\n <div className={'form-group has-error'}>\n <div className='control-label'>{this.state.error}</div>\n </div>\n </div>\n );\n } else if (currentUserIsGuest) {\n openContent = (\n <div className='signup__content'>\n <div className={'form-group has-error'}>\n <div className='control-label'>\n <FormattedMessage\n id='signup_team.guest_without_channels'\n defaultMessage='Your guest account has no channels assigned. Please contact an administrator.'\n />\n </div>\n </div>\n </div>\n );\n } else {\n let joinableTeamContents: any = [];\n currentListableTeams.forEach((listableTeam) => {\n if ((listableTeam.allow_open_invite && canJoinPublicTeams) || (!listableTeam.allow_open_invite && canJoinPrivateTeams)) {\n joinableTeamContents.push(\n <SelectTeamItem\n key={'team_' + listableTeam.name}\n team={listableTeam}\n onTeamClick={this.handleTeamClick}\n loading={this.state.loadingTeamId === listableTeam.id}\n canJoinPublicTeams={canJoinPublicTeams}\n canJoinPrivateTeams={canJoinPrivateTeams}\n />,\n );\n }\n });\n\n if (joinableTeamContents.length === 0 && (canCreateTeams || canManageSystem)) {\n joinableTeamContents = (\n <div className='signup-team-dir-err'>\n <div>\n {createTeamRestricted ? (\n <FormattedMessage\n id='signup_team.no_open_teams'\n defaultMessage='No teams are available to join. Please ask your administrator for an invite.'\n />\n ) : (\n <FormattedMessage\n id='signup_team.no_open_teams_canCreate'\n defaultMessage='No teams are available to join. Please create a new team or ask your administrator for an invite.'\n />\n )}\n </div>\n </div>\n );\n } else if (joinableTeamContents.length === 0) {\n joinableTeamContents = (\n <div className='signup-team-dir-err'>\n <div>\n <SystemPermissionGate permissions={[Permissions.CREATE_TEAM]}>\n <FormattedMessage\n id='signup_team.no_open_teams_canCreate'\n defaultMessage='No teams are available to join. Please create a new team or ask your administrator for an invite.'\n />\n </SystemPermissionGate>\n <SystemPermissionGate\n permissions={[Permissions.CREATE_TEAM]}\n invert={true}\n >\n <FormattedMessage\n id='signup_team.no_open_teams'\n defaultMessage='No teams are available to join. Please ask your administrator for an invite.'\n />\n </SystemPermissionGate>\n </div>\n </div>\n );\n }\n\n openContent = (\n <div\n id='teamsYouCanJoinContent'\n className='signup__content'\n >\n <div className='SelectTeam__sub-header'>\n <h4>\n <FormattedMessage\n id='signup_team.join_open'\n defaultMessage='Teams you can join: '\n />\n </h4>\n <LearnAboutTeamsLink/>\n </div>\n <InfiniteScroll\n callBack={this.fetchMoreTeams}\n styleClass='signup-team-all'\n totalItems={totalTeamsCount}\n itemsPerPage={TEAMS_PER_PAGE}\n bufferValue={280}\n pageNumber={currentPage}\n loaderStyle={{padding: '0px', height: '40px'}}\n >\n {joinableTeamContents}\n </InfiniteScroll>\n </div>\n );\n }\n\n const teamSignUp = !createTeamRestricted && (\n <SystemPermissionGate permissions={[Permissions.CREATE_TEAM]}>\n <div\n className='margin--extra'\n style={{marginTop: '0.5em'}}\n >\n <Link\n id='createNewTeamLink'\n to='/create_team'\n onClick={() => trackEvent('select_team', 'click_create_team')}\n className='signup-team-login'\n >\n <FormattedMessage\n id='login.createTeam'\n defaultMessage='Create a team'\n />\n </Link>\n </div>\n </SystemPermissionGate>\n );\n\n let adminConsoleLink;\n if (!UserAgent.isMobileApp()) {\n adminConsoleLink = (\n <SystemPermissionGate permissions={[Permissions.MANAGE_SYSTEM]}>\n <div className='mt-8 hidden-xs'>\n <Link\n to='/admin_console'\n className='signup-team-login'\n onClick={() => trackEvent('select_team', 'click_system_console')}\n >\n <FormattedMessage\n id='signup_team_system_console'\n defaultMessage='Go to System Console'\n />\n </Link>\n </div>\n </SystemPermissionGate>\n );\n }\n\n let headerButton;\n if (this.state.error) {\n headerButton = <BackButton onClick={this.clearError}/>;\n } else if (isMemberOfTeam) {\n headerButton = <BackButton/>;\n } else {\n headerButton = (\n <div className='signup-header'>\n <a\n href='#'\n id='logout'\n onClick={this.handleLogoutClick}\n >\n <LogoutIcon/>\n <FormattedMessage\n id='web.header.logout'\n defaultMessage='Logout'\n />\n </a>\n </div>\n );\n }\n return (\n <div>\n <AnnouncementBar/>\n {headerButton}\n <div className='col-sm-12'>\n <div\n className={'select-team__container signup-team__container'}\n >\n <img\n alt={'signup team logo'}\n className='signup-team-logo'\n src={logoImage}\n />\n <SiteNameAndDescription\n customDescriptionText={customDescriptionText}\n siteName={siteName}\n />\n {openContent}\n {teamSignUp}\n {adminConsoleLink}\n </div>\n </div>\n </div>\n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {connect} from 'react-redux';\nimport {withRouter} from 'react-router-dom';\nimport {bindActionCreators, compose} from 'redux';\nimport type {Dispatch} from 'redux';\n\nimport {loadRolesIfNeeded} from 'mattermost-redux/actions/roles';\nimport {getTeams} from 'mattermost-redux/actions/teams';\nimport {Permissions} from 'mattermost-redux/constants';\nimport {getCloudSubscription as selectCloudSubscription} from 'mattermost-redux/selectors/entities/cloud';\nimport {getConfig, getLicense} from 'mattermost-redux/selectors/entities/general';\nimport {haveISystemPermission} from 'mattermost-redux/selectors/entities/roles';\nimport {getSortedListableTeams, getTeamMemberships} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUser} from 'mattermost-redux/selectors/entities/users';\nimport {isGuest} from 'mattermost-redux/utils/user_utils';\n\nimport {addUserToTeam} from 'actions/team_actions';\n\nimport withUseGetUsageDelta from 'components/common/hocs/cloud/with_use_get_usage_deltas';\n\nimport {isCloudLicense} from 'utils/license_utils';\n\nimport type {GlobalState} from 'types/store';\n\nimport SelectTeam from './select_team';\n\nfunction mapStateToProps(state: GlobalState) {\n const config = getConfig(state);\n const currentUser = getCurrentUser(state);\n const myTeamMemberships = Object.values(getTeamMemberships(state));\n const license = getLicense(state);\n\n const subscription = selectCloudSubscription(state);\n const isCloud = isCloudLicense(license);\n const isFreeTrial = subscription?.is_free_trial === 'true';\n\n return {\n currentUserId: currentUser.id,\n currentUserRoles: currentUser.roles || '',\n currentUserIsGuest: isGuest(currentUser.roles),\n customDescriptionText: config.CustomDescriptionText,\n isMemberOfTeam: myTeamMemberships && myTeamMemberships.length > 0,\n listableTeams: getSortedListableTeams(state, currentUser.locale),\n siteName: config.SiteName,\n canCreateTeams: haveISystemPermission(state, {permission: Permissions.CREATE_TEAM}),\n canManageSystem: haveISystemPermission(state, {permission: Permissions.MANAGE_SYSTEM}),\n canJoinPublicTeams: haveISystemPermission(state, {permission: Permissions.JOIN_PUBLIC_TEAMS}),\n canJoinPrivateTeams: haveISystemPermission(state, {permission: Permissions.JOIN_PRIVATE_TEAMS}),\n totalTeamsCount: state.entities.teams.totalCount || 0,\n isCloud,\n isFreeTrial,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch) {\n return {\n actions: bindActionCreators({\n getTeams,\n loadRolesIfNeeded,\n addUserToTeam,\n }, dispatch),\n };\n}\n\nexport default compose(\n withRouter,\n connect(mapStateToProps, mapDispatchToProps),\n withUseGetUsageDelta,\n)(SelectTeam) as any;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {useIntl} from 'react-intl';\n\nexport default function LogoutIcon() {\n const {formatMessage} = useIntl();\n return (\n <i\n className='fa fa-1x fa-angle-left'\n title={formatMessage({id: 'generic_icons.logout', defaultMessage: 'Logout Icon'})}\n />\n );\n}\n"],"names":["BackButton","_ref","url","className","onClick","formatMessage","useIntl","React","classNames","Link","to","id","title","defaultMessage","FormattedMessage","propTypes","_pt","defaultProps","WrappedComponent","props","usageDeltas","useGetUsageDeltas","Object","assign","withBackupValue","maybeLimit","limitsLoaded","Number","MAX_VALUE","usage","useGetUsage","limits","useGetLimits","useMemo","_limits$files","_limits$messages","_limits$teams","files","totalStorage","total_storage","totalStorageLoaded","messages","history","historyLoaded","teams","active","cloudArchived","teamsLoaded","SiteNameAndDescription","customDescriptionText","siteName","description","InfiniteScroll","constructor","super","_defineProperty","buffer","Math","abs","total","freq","ceil","isFetching","isEndofData","this","state","callBack","bufferValue","totalItems","itemsPerPage","pageNumber","node","current","validBuffer","validateBuffer","toScroll","scrollHeight","clientHeight","scrollTop","setState","async","amountOfPages","getAmountOfPages","debounce","handleScroll","componentDidMount","_this$node$current","addEventListener","debounceHandleScroll","componentWillUnmount","_this$node$current2","removeEventListener","render","children","endOfDataMessage","styleClass","loaderStyle","showLoader","concat","ref","LoadingScreen","style","message","TeamInfoIcon","width","height","viewBox","role","transform","d","fillRule","clipRule","strokeLinejoin","strokeMiterlimit","SelectTeamItem","team","onTeamClick","loading","canJoinPublicTeams","canJoinPrivateTeams","intl","handleTeamClick","useCallback","e","preventDefault","icon","canJoin","allow_open_invite","WithTooltip","href","Utils","display_name","undefined","isRequired","SelectTeam","currentPage","actions","response","getTeams","error","Error","prevState","currentUserRoles","loadingTeamId","data","addUserToTeam","currentUserId","push","name","Constants","DEFAULT_CHANNEL","errorMsg","server_error_id","includes","PERMISSIONS_SYSTEM_ADMIN","values","a","chunks","trackEvent","emitUserLoggedOutEvent","endofTeamsData","currentListableTeams","getDerivedStateFromProps","listableTeams","length","slice","userId","fetchMoreTeams","loadRolesIfNeeded","split","currentUserIsGuest","canManageSystem","isMemberOfTeam","canCreateTeams","totalTeamsCount","isCloud","isFreeTrial","usageDeltaTeams","createTeamRestricted","openContent","joinableTeamContents","forEach","listableTeam","key","SystemPermissionGate","permissions","Permissions","CREATE_TEAM","invert","LearnAboutTeamsLink","padding","teamSignUp","marginTop","adminConsoleLink","headerButton","UserAgent","MANAGE_SYSTEM","clearError","handleLogoutClick","LogoutIcon","AnnouncementBar","alt","src","logoImage","compose","withRouter","connect","config","getConfig","currentUser","getCurrentUser","myTeamMemberships","getTeamMemberships","license","getLicense","subscription","selectCloudSubscription","isCloudLicense","is_free_trial","roles","isGuest","CustomDescriptionText","getSortedListableTeams","locale","SiteName","haveISystemPermission","permission","JOIN_PUBLIC_TEAMS","JOIN_PRIVATE_TEAMS","entities","totalCount","dispatch","bindActionCreators","withUseGetUsageDelta"],"sourceRoot":""}