![]() 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 : /proc/self/root/opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"7351.7aa8bd57135178aba093.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/tours/crt_tour/collapsed_reply_threads_modal.tsx","webpack://mattermost-webapp/./src/components/tours/crt_tour/crt_welcome_tutorial_tip.tsx","webpack://mattermost-webapp/./src/components/threading/global_threads_link/threads_icon.tsx","webpack://mattermost-webapp/./src/components/threading/global_threads_link/global_threads_link.tsx","webpack://mattermost-webapp/./src/components/threading/hooks.ts","webpack://mattermost-webapp/./src/components/tours/crt_tour/crt_tour_tip.tsx","webpack://mattermost-webapp/./src/components/widgets/icons/fa_next_icon.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useCallback, useEffect} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {GenericModal} from '@mattermost/components';\n\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {closeModal} from 'actions/views/modals';\n\nimport NextIcon from 'components/widgets/icons/fa_next_icon';\n\nimport crtInProductImg from 'images/crt-in-product.gif';\nimport {Constants, ModalIdentifiers, Preferences} from 'utils/constants';\nimport * as Keyboard from 'utils/keyboard';\n\nimport './collapsed_reply_threads_modal.scss';\nimport {AutoTourStatus, TTNameMapToATStatusKey, TutorialTourName} from '../constant';\n\ntype Props = {\n onExited: () => void;\n}\n\nfunction CollapsedReplyThreadsModal(props: Props) {\n const dispatch = useDispatch();\n const currentUserId = useSelector(getCurrentUserId);\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (Keyboard.isKeyPressed(e, Constants.KeyCodes.ENTER)) {\n onNext();\n }\n }, []);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n const onHide = useCallback((skipTour: boolean) => {\n dispatch(closeModal(ModalIdentifiers.COLLAPSED_REPLY_THREADS_MODAL));\n if (skipTour) {\n const preferences = [{\n user_id: currentUserId,\n category: Preferences.CRT_TUTORIAL_TRIGGERED,\n name: currentUserId,\n value: (Constants.CrtTutorialTriggerSteps.FINISHED).toString(),\n }];\n dispatch(savePreferences(currentUserId, preferences));\n }\n }, [currentUserId]);\n\n const onNext = useCallback(() => {\n const preferences = [{\n user_id: currentUserId,\n category: Preferences.CRT_TUTORIAL_TRIGGERED,\n name: currentUserId,\n value: (Constants.CrtTutorialTriggerSteps.STARTED).toString(),\n }, {\n user_id: currentUserId,\n category: TutorialTourName.CRT_TUTORIAL_STEP,\n name: TTNameMapToATStatusKey[TutorialTourName.CRT_TUTORIAL_STEP],\n value: AutoTourStatus.ENABLED.toString(),\n }];\n dispatch(savePreferences(currentUserId, preferences));\n onHide(false);\n }, [currentUserId]);\n\n return (\n <GenericModal\n compassDesign={true}\n className='CollapsedReplyThreadsModal productNotices'\n id={ModalIdentifiers.COLLAPSED_REPLY_THREADS_MODAL}\n onExited={props.onExited}\n handleConfirm={onNext}\n autoCloseOnConfirmButton={true}\n handleCancel={() => onHide(true)}\n modalHeaderText={(\n <FormattedMessage\n id='collapsed_reply_threads_modal.title'\n defaultMessage={'A new way to view and follow threads'}\n />\n )}\n confirmButtonText={(\n <>\n <FormattedMessage\n id={'collapsed_reply_threads_modal.take_the_tour'}\n defaultMessage='Take the Tour'\n />\n <NextIcon/>\n </>\n )}\n cancelButtonText={\n <FormattedMessage\n id={'collapsed_reply_threads_modal.skip_tour'}\n defaultMessage='Skip Tour'\n />\n }\n >\n <div>\n <p className='productNotices__helpText'>\n <FormattedMessage\n id={'collapsedReplyThreadsModal.helpText'}\n defaultMessage={'Threads have been revamped to help you create organized conversation around specific messages. Now, channels will appear less cluttered as replies are collapsed under the original message, and all the conversations you\\'re following are available in your <b>Threads</b> view. Take the tour to see what\\'s new.'}\n values={{\n b: (chunks: string) => <b>{chunks}</b>,\n }}\n />\n </p>\n <img\n src={crtInProductImg}\n className='CollapsedReplyThreadsModal__img'\n />\n </div>\n </GenericModal>\n );\n}\n\nexport default CollapsedReplyThreadsModal;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport {FormattedMessage, useIntl} from 'react-intl';\n\nimport {useMeasurePunchouts} from '@mattermost/components';\n\nimport CRTTourTip from './crt_tour_tip';\n\nconst CRTWelcomeTutorialTip = () => {\n const {formatMessage} = useIntl();\n const title = (\n <FormattedMessage\n id='tutorial_threads.welcome.title'\n defaultMessage={'Welcome to the Threads view!'}\n />\n );\n\n const screen = (\n <p>\n {formatMessage(\n {\n id: 'tutorial_threads.welcome.description',\n defaultMessage:\n 'All the conversations that you’re participating in or following will show here. If you have unread messages or mentions within your threads, you’ll see that here too.',\n\n })\n }\n </p>\n );\n\n const overlayPunchOut = useMeasurePunchouts(['sidebar-threads-button'], []);\n\n return (\n <CRTTourTip\n title={title}\n screen={screen}\n overlayPunchOut={overlayPunchOut}\n placement='right-start'\n pulsatingDotPlacement='right'\n />\n );\n};\n\nexport default CRTWelcomeTutorialTip;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {HTMLAttributes} from 'react';\n\nconst ThreadsIcon = (attrs: HTMLAttributes<SVGElement>) => {\n return (\n <svg\n width='18'\n height='18'\n viewBox='0 0 14 13'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n {...attrs}\n >\n <path\n d='M11.7952 0.00524884C12.1312 0.00524884 12.4144 0.125249 12.6448 0.365248C12.8848 0.595648 13.0048 0.878848 13.0048 1.21485V8.41485C13.0048 8.75085 12.8848 9.03405 12.6448 9.26445C12.4144 9.49485 12.1312 9.61005 11.7952 9.61005H3.4L0.9952 12.0148V1.21485C0.9952 0.878848 1.1104 0.595648 1.3408 0.365248C1.5808 0.125249 1.8688 0.00524884 2.2048 0.00524884H11.7952ZM2.2048 1.21485V9.10605L2.896 8.41485H11.7952V1.21485H2.2048ZM3.4 3.01485H10.6V4.21005H3.4V3.01485ZM3.4 5.40525H8.8V6.61485H3.4V5.40525Z'\n />\n </svg>\n );\n};\n\nexport default ThreadsIcon;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport classNames from 'classnames';\nimport React, {useCallback, useEffect} from 'react';\nimport {useIntl} from 'react-intl';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {Link, useRouteMatch, useLocation, matchPath} from 'react-router-dom';\n\nimport {PulsatingDot} from '@mattermost/components';\n\nimport {getThreadCounts} from 'mattermost-redux/actions/threads';\nimport {getInt, isCollapsedThreadsEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {\n getThreadCountsInCurrentTeam, getThreadsInCurrentTeam,\n} from 'mattermost-redux/selectors/entities/threads';\n\nimport {trackEvent} from 'actions/telemetry_actions';\nimport {openModal} from 'actions/views/modals';\nimport {closeRightHandSide} from 'actions/views/rhs';\nimport {getIsRhsOpen, getRhsState} from 'selectors/rhs';\nimport {isAnyModalOpen} from 'selectors/views/modals';\n\nimport ChannelMentionBadge from 'components/sidebar/sidebar_channel/channel_mention_badge';\nimport CollapsedReplyThreadsModal\n from 'components/tours/crt_tour/collapsed_reply_threads_modal';\nimport CRTWelcomeTutorialTip\n from 'components/tours/crt_tour/crt_welcome_tutorial_tip';\n\nimport Constants, {\n CrtTutorialSteps,\n CrtTutorialTriggerSteps,\n ModalIdentifiers,\n Preferences,\n RHSStates,\n} from 'utils/constants';\nimport {Mark} from 'utils/performance_telemetry';\n\nimport type {GlobalState} from 'types/store';\n\nimport ThreadsIcon from './threads_icon';\n\nimport {useThreadRouting} from '../hooks';\n\nimport './global_threads_link.scss';\n\nconst GlobalThreadsLink = () => {\n const {formatMessage} = useIntl();\n const dispatch = useDispatch();\n const isFeatureEnabled = useSelector(isCollapsedThreadsEnabled);\n\n const {url} = useRouteMatch();\n const {pathname} = useLocation();\n const inGlobalThreads = matchPath(pathname, {path: '/:team/threads/:threadIdentifier?'}) != null;\n const {currentTeamId, currentUserId} = useThreadRouting();\n\n const counts = useSelector(getThreadCountsInCurrentTeam);\n const someUnreadThreads = counts?.total_unread_threads;\n const appHaveOpenModal = useSelector(isAnyModalOpen);\n const tipStep = useSelector((state: GlobalState) => getInt(state, Preferences.CRT_TUTORIAL_STEP, currentUserId, CrtTutorialSteps.WELCOME_POPOVER));\n const crtTutorialTrigger = useSelector((state: GlobalState) => getInt(state, Preferences.CRT_TUTORIAL_TRIGGERED, currentUserId, Constants.CrtTutorialTriggerSteps.START));\n const threads = useSelector(getThreadsInCurrentTeam);\n const showTutorialTip = crtTutorialTrigger === CrtTutorialTriggerSteps.STARTED && tipStep === CrtTutorialSteps.WELCOME_POPOVER && threads.length >= 1;\n const rhsOpen = useSelector(getIsRhsOpen);\n const rhsState = useSelector(getRhsState);\n const showTutorialTrigger = isFeatureEnabled && crtTutorialTrigger === Constants.CrtTutorialTriggerSteps.START && !appHaveOpenModal && Boolean(counts) && counts.total >= 1;\n const openThreads = useCallback((e) => {\n e.stopPropagation();\n\n trackEvent('crt', 'go_to_global_threads');\n\n performance.mark(Mark.GlobalThreadsLinkClicked);\n\n if (showTutorialTrigger) {\n dispatch(openModal({modalId: ModalIdentifiers.COLLAPSED_REPLY_THREADS_MODAL, dialogType: CollapsedReplyThreadsModal, dialogProps: {}}));\n }\n\n if (rhsOpen && rhsState === RHSStates.EDIT_HISTORY) {\n dispatch(closeRightHandSide());\n }\n }, [showTutorialTrigger, counts, threads, rhsOpen, rhsState]);\n\n useEffect(() => {\n // load counts if necessary\n if (isFeatureEnabled) {\n dispatch(getThreadCounts(currentUserId, currentTeamId));\n }\n }, [currentUserId, currentTeamId, isFeatureEnabled]);\n\n if (!isFeatureEnabled) {\n // hide link if feature disabled\n return null;\n }\n\n return (\n <ul className='SidebarGlobalThreads NavGroupContent nav nav-pills__container'>\n <li\n id={'sidebar-threads-button'}\n className={classNames('SidebarChannel', {\n active: inGlobalThreads,\n unread: someUnreadThreads,\n })}\n tabIndex={-1}\n >\n <Link\n onClick={openThreads}\n to={`${url}/threads`}\n id='sidebarItem_threads'\n draggable='false'\n className={classNames('SidebarLink sidebar-item', {\n 'unread-title': Boolean(someUnreadThreads),\n })}\n tabIndex={0}\n >\n <span className='icon'>\n <ThreadsIcon/>\n </span>\n <div className='SidebarChannelLinkLabel_wrapper'>\n <span className='SidebarChannelLinkLabel sidebar-item__name'>\n {formatMessage({id: 'globalThreads.sidebarLink', defaultMessage: 'Threads'})}\n </span>\n </div>\n {counts?.total_unread_mentions > 0 && (\n <ChannelMentionBadge\n unreadMentions={counts.total_unread_mentions}\n hasUrgent={Boolean(counts?.total_unread_urgent_mentions)}\n />\n )}\n {showTutorialTrigger && <PulsatingDot/>}\n </Link>\n {showTutorialTip && <CRTWelcomeTutorialTip/>}\n </li>\n </ul>\n );\n};\n\nexport default GlobalThreadsLink;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {useMemo, useCallback} from 'react';\nimport {useSelector, shallowEqual} from 'react-redux';\nimport {useParams, useHistory} from 'react-router-dom';\n\nimport type {Team} from '@mattermost/types/teams';\nimport type {UserThread} from '@mattermost/types/threads';\n\nimport {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\n/**\n * GlobalThreads-specific hook for nav/routing, selection, and common data needed for actions.\n */\nexport function useThreadRouting() {\n const matchParams = useParams<{team: string; threadIdentifier?: UserThread['id']}>();\n const params = useMemo(() => matchParams, [matchParams.threadIdentifier, matchParams.team]);\n const history = useHistory();\n\n const currentTeamId = useSelector(getCurrentTeamId, shallowEqual);\n const currentUserId = useSelector(getCurrentUserId, shallowEqual);\n\n const select = useCallback((threadId?: UserThread['id']) => {\n return history.push(`/${params.team}/threads${threadId ? '/' + threadId : ''}`);\n }, [params.team]);\n\n const clear = useCallback(() => history.replace(`/${params.team}/threads`), [params.team]);\n\n const goToInChannel = useCallback((threadId?: UserThread['id'], teamName: Team['name'] = params.team) => {\n return history.push(`/${teamName}/pl/${threadId ?? params.threadIdentifier}`);\n }, [params.threadIdentifier, params.team]);\n\n return {\n params,\n history,\n currentTeamId,\n currentUserId,\n clear,\n select,\n goToInChannel,\n };\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\n\nimport {ChannelsTourTip, TutorialTourName} from 'components/tours';\nimport type {ChannelsTourTipProps} from 'components/tours';\n\nconst CRTTourTip = (props: Omit<ChannelsTourTipProps, 'tourCategory'>) => {\n return (\n <ChannelsTourTip\n {...props}\n tourCategory={TutorialTourName.CRT_TUTORIAL_STEP}\n />\n );\n};\n\nexport default CRTTourTip;\n","// 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 {useIntl} from 'react-intl';\n\ntype Props = {\n additionalClassName?: string;\n}\n\nconst NextIcon = ({additionalClassName}: Props) => {\n const {formatMessage} = useIntl();\n\n return (\n <i\n className={classNames('icon icon-chevron-right', additionalClassName)}\n title={formatMessage({\n id: 'generic_icons.next',\n defaultMessage: 'Next Icon',\n })}\n />\n );\n};\n\nexport default React.memo(NextIcon);\n"],"names":["CollapsedReplyThreadsModal","props","dispatch","useDispatch","currentUserId","useSelector","getCurrentUserId","handleKeyDown","useCallback","e","Keyboard","Constants","KeyCodes","ENTER","onNext","useEffect","document","addEventListener","removeEventListener","onHide","skipTour","closeModal","ModalIdentifiers","COLLAPSED_REPLY_THREADS_MODAL","preferences","user_id","category","Preferences","CRT_TUTORIAL_TRIGGERED","name","value","CrtTutorialTriggerSteps","FINISHED","toString","savePreferences","STARTED","TutorialTourName","CRT_TUTORIAL_STEP","TTNameMapToATStatusKey","AutoTourStatus","ENABLED","React","GenericModal","compassDesign","className","id","onExited","handleConfirm","autoCloseOnConfirmButton","handleCancel","modalHeaderText","FormattedMessage","defaultMessage","confirmButtonText","NextIcon","cancelButtonText","values","b","chunks","src","crtInProductImg","propTypes","_pt","isRequired","CRTWelcomeTutorialTip","formatMessage","useIntl","title","screen","overlayPunchOut","useMeasurePunchouts","CRTTourTip","placement","pulsatingDotPlacement","attrs","Object","assign","width","height","viewBox","fill","xmlns","d","GlobalThreadsLink","isFeatureEnabled","isCollapsedThreadsEnabled","url","useRouteMatch","pathname","useLocation","inGlobalThreads","matchPath","path","currentTeamId","useThreadRouting","counts","getThreadCountsInCurrentTeam","someUnreadThreads","total_unread_threads","appHaveOpenModal","isAnyModalOpen","tipStep","state","getInt","CrtTutorialSteps","WELCOME_POPOVER","crtTutorialTrigger","START","threads","getThreadsInCurrentTeam","showTutorialTip","length","rhsOpen","getIsRhsOpen","rhsState","getRhsState","showTutorialTrigger","Boolean","total","openThreads","stopPropagation","trackEvent","performance","mark","Mark","GlobalThreadsLinkClicked","openModal","modalId","dialogType","dialogProps","RHSStates","EDIT_HISTORY","closeRightHandSide","getThreadCounts","classNames","active","unread","tabIndex","Link","onClick","to","concat","draggable","ThreadsIcon","total_unread_mentions","ChannelMentionBadge","unreadMentions","hasUrgent","total_unread_urgent_mentions","PulsatingDot","matchParams","useParams","params","useMemo","threadIdentifier","team","history","useHistory","getCurrentTeamId","shallowEqual","select","threadId","push","clear","replace","goToInChannel","teamName","arguments","undefined","ChannelsTourTip","tourCategory","_ref","additionalClassName"],"sourceRoot":""}