VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/self/root/opt/mattermost/client/4729.00ac270818291df09b9f.js.map
{"version":3,"file":"4729.00ac270818291df09b9f.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/onboarding_tasklist/onboarding_tasklist_animations.tsx","webpack://mattermost-webapp/./src/components/onboarding_tasklist/onboarding_tasklist_completed.tsx","webpack://mattermost-webapp/../node_modules/react-popper/lib/esm/utils.js","webpack://mattermost-webapp/../node_modules/react-popper/lib/esm/usePopper.js","webpack://mattermost-webapp/./src/components/onboarding_tasklist/onboarding_tasklist_popover.tsx","webpack://mattermost-webapp/./src/components/onboarding_tasklist/onboarding_tasklist_task.tsx","webpack://mattermost-webapp/./src/components/onboarding_tasklist/onboarding_tasklist.tsx","webpack://mattermost-webapp/../node_modules/react-fast-compare/index.js"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport StatusIcon from '@mattermost/compass-components/components/status-icon'; // eslint-disable-line no-restricted-imports\n\nconst Animation = styled.div`\n    position: absolute;\n    z-index: 30;\n    flex-direction: column;\n    left: 15px;\n    bottom: 0;\n    display: none;\n\n    &.completed {\n        display: flex;\n    }\n\n    &:before {\n        content: '';\n        background-color: var(--denim-status-online);\n        opacity: 0;\n        border-radius: 50%;\n        width: 1rem;\n        bottom: 15%;\n        position: absolute;\n        height: 1rem;\n        margin-left: auto;\n        margin-right: auto;\n        left: 0;\n        right: 0;\n    }\n\n    .x1 {\n        opacity: 0;\n        animation-delay: 150ms;\n    }\n\n    .x2 {\n        transform: scale(0.6);\n        margin-left: 6px;\n        animation-delay: 250ms;\n        opacity: 0;\n    }\n    .x3 {\n        transform: scale(0.6);\n        margin-left: -6px;\n        animation-delay: 300ms;\n        opacity: 0;\n    }\n    .x4 {\n        transform: scale(0.2);\n        opacity: 0;\n    }\n\n    &.completed {\n        &:before {\n            animation: opacity 800ms ease-in-out, scale 800ms linear;\n        }\n        .x1, .x2, .x3, .x4 {\n            animation: opacity 900ms ease-in-out, moveUp 900ms linear;\n        }\n    }\n    @keyframes moveUp {\n        0% { \n            top: 0;\n        }\n        100% { \n            top: -50px;\n        }\n    }\n\n    @keyframes opacity {\n        0% { \n            opacity:0;\n        }\n        50% { \n            opacity: 1;\n        }\n        100% { \n            opacity: 0;\n        }\n    }\n\n    @keyframes scale {\n        0% { \n            transform: scale(0);\n        }\n        50% { \n            transform: scale(2);\n        }\n        100% { \n            transform: scale(4);\n        }\n    }\n\n`;\n\nexport const CompletedAnimation = (props: {completed: boolean}) => {\n    return (\n        <Animation className={props.completed ? 'completed' : ''}>\n            <StatusIcon\n                status={'online'}\n                className={'x1'}\n            />\n            <StatusIcon\n                status={'online'}\n                className={'x2'}\n            />\n            <StatusIcon\n                status={'online'}\n                className={'x3'}\n            />\n            <StatusIcon\n                status={'online'}\n                className={'x4'}\n            />\n        </Animation>\n    );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useEffect} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {CSSTransition} from 'react-transition-group';\nimport styled from 'styled-components';\n\nimport type {GlobalState} from '@mattermost/types/store';\n\nimport {getPrevTrialLicense} from 'mattermost-redux/actions/admin';\nimport {getLicense} from 'mattermost-redux/selectors/entities/general';\n\nimport ExternalLink from 'components/external_link';\nimport StartTrialBtn from 'components/learn_more_trial_modal/start_trial_btn';\n\nimport completedImg from 'images/completed.svg';\nimport {AboutLinks, LicenseLinks} from 'utils/constants';\n\nconst CompletedWrapper = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    padding: 26px 24px 0 24px;\n    margin: auto;\n    text-align: center;\n    word-break: break-word;\n    width: 100%;\n    height: 500px;\n\n    &.fade-enter {\n        transform: scale(0);\n    }\n    &.fade-enter-active {\n        transform: scale(1);\n    }\n    &.fade-enter-done {\n        transform: scale(1);\n    }\n    &.fade-exit {\n        transform: scale(1);\n    }\n    &.fade-exit-active {\n        transform: scale(1);\n    }\n    &.fade-exit-done {\n        transform: scale(1);\n    }\n    .start-trial-btn, .got-it-button {\n        padding: 13px 20px;\n        background: var(--button-bg);\n        border-radius: 4px;\n        color: var(--sidebar-text);\n        border: none;\n        font-weight: bold;\n        margin-top: 15px;\n        min-height: 40px;\n        &:hover {\n            background: var(--button-bg) !important;\n            color: var(--sidebar-text) !important;\n        }\n    }\n\n    h2 {\n        font-size: 20px;\n        margin: 0 0 10px;\n        font-weight: 600;\n    }\n\n    .start-trial-text, .completed-subtitle {\n        font-size: 14px !important;\n        color: rgba(var(--center-channel-color-rgb), 0.75);\n        line-height: 20px;\n    }\n\n    .completed-subtitle {\n        margin-top: 5px;\n    }\n\n    .disclaimer, .download-apps {\n        width: 90%;\n        margin-top: 15px;\n        color: rgba(var(--center-channel-color-rgb), 0.75);\n        font-family: \"Open Sans\";\n        font-style: normal;\n        font-weight: normal;\n        line-height: 16px;\n    }\n\n    .disclaimer {\n        text-align: left;\n        margin-top: auto;\n        font-size: 11px;\n    }\n\n    .download-apps {\n        margin-top: 24px;\n        width: 200px;\n        font-size: 12px;\n    }\n\n    .style-link {\n        border: none;\n        background: none !important;\n        color: var(--button-bg) !important;\n    }\n\n    .no-thanks-link {\n        display: inline-block;\n        min-width: fit-content;\n        margin-top: 18px;\n        font-weight: 600;\n        font-size: 14px;\n        line-height: 20px;\n        &:hover {\n            text-decoration: underline;\n        }\n    }\n`;\n\ninterface Props {\n    dismissAction: () => void;\n    isCurrentUserSystemAdmin: boolean;\n    isFirstAdmin: boolean;\n}\n\nconst Completed = (props: Props): JSX.Element => {\n    const {dismissAction} = props;\n\n    const dispatch = useDispatch();\n\n    useEffect(() => {\n        dispatch(getPrevTrialLicense());\n    }, []);\n\n    const prevTrialLicense = useSelector((state: GlobalState) => state.entities.admin.prevTrialLicense);\n    const license = useSelector(getLicense);\n    const isPrevLicensed = prevTrialLicense?.IsLicensed;\n    const isCurrentLicensed = license?.IsLicensed;\n\n    // Cloud conditions\n    const isCloud = license?.Cloud === 'true';\n\n    // Show this CTA if the instance is currently not licensed and has never had a trial license loaded before\n    // also check that the user is a system admin (this after the onboarding task list is shown to all users)\n    const selfHostedTrialCondition = (isCurrentLicensed === 'false' && isPrevLicensed === 'false') &&\n        (props.isCurrentUserSystemAdmin || props.isFirstAdmin);\n\n    // if Cloud, don't show\n    const showStartTrialBtn = selfHostedTrialCondition && !isCloud;\n\n    return (\n        <>\n            <CSSTransition\n                in={true}\n                timeout={150}\n                classNames='fade'\n            >\n                <CompletedWrapper>\n                    <img\n                        src={completedImg}\n                        alt={'completed tasks image'}\n                    />\n                    <h2>\n                        <FormattedMessage\n                            id={'onboardingTask.checklist.completed_title'}\n                            defaultMessage='Well done. You’ve completed all of the tasks!'\n                        />\n                    </h2>\n                    <span className='completed-subtitle'>\n                        <FormattedMessage\n                            id={'onboardingTask.checklist.completed_subtitle'}\n                            defaultMessage='We hope Mattermost is more familiar now.'\n                        />\n                    </span>\n\n                    {showStartTrialBtn ? (\n                        <>\n                            <span className='start-trial-text'>\n                                <FormattedMessage\n                                    id='onboardingTask.checklist.higher_security_features'\n                                    defaultMessage='Interested in our higher-security features?'\n                                /> <br/>\n                                <FormattedMessage\n                                    id='onboardingTask.checklist.start_enterprise_now'\n                                    defaultMessage='Start your free Enterprise trial now!'\n                                />\n                            </span>\n                            <StartTrialBtn\n                                telemetryId='start_trial_from_onboarding_completed_task'\n                                onClick={dismissAction}\n                            />\n                            <button\n                                onClick={dismissAction}\n                                className={'no-thanks-link style-link'}\n                            >\n                                <FormattedMessage\n                                    id={'onboardingTask.checklist.no_thanks'}\n                                    defaultMessage='No, thanks'\n                                />\n                            </button>\n                        </>\n\n                    ) : (\n                        <button\n                            onClick={dismissAction}\n                            className='got-it-button'\n                        >\n                            <FormattedMessage\n                                id={'collapsed_reply_threads_modal.confirm'}\n                                defaultMessage='Got it'\n                            />\n                        </button>\n                    )}\n                    <div className='download-apps'>\n                        <span>\n                            <FormattedMessage\n                                id='onboardingTask.checklist.downloads'\n                                defaultMessage='Now that you’re all set up, <link>download our apps.</link>!'\n                                values={{\n                                    link: (msg: React.ReactNode) => (\n                                        <ExternalLink\n                                            location='onboarding_tasklist_completed'\n                                            href='https://mattermost.com/download#desktop'\n                                        >\n                                            {msg}\n                                        </ExternalLink>\n                                    ),\n                                }}\n                            />\n                        </span>\n                    </div>\n                    {showStartTrialBtn && <div className='disclaimer'>\n                        <span>\n                            <FormattedMessage\n                                id='onboardingTask.checklist.disclaimer'\n                                defaultMessage='By clicking “Start trial”, I agree to the <linkEvaluation>Mattermost Software and Services License Agreement</linkEvaluation>, <linkPrivacy>privacy policy</linkPrivacy> and receiving product emails.'\n                                values={{\n                                    linkEvaluation: (msg: React.ReactNode) => (\n                                        <ExternalLink\n                                            href={LicenseLinks.SOFTWARE_SERVICES_LICENSE_AGREEMENT}\n                                            location='onboarding_tasklist_completed'\n                                        >\n                                            {msg}\n                                        </ExternalLink>\n                                    ),\n                                    linkPrivacy: (msg: React.ReactNode) => (\n                                        <ExternalLink\n                                            href={AboutLinks.PRIVACY_POLICY}\n                                            location='onboarding_tasklist_completed'\n                                        >\n                                            {msg}\n                                        </ExternalLink>\n                                    ),\n                                }}\n                            />\n                        </span>\n                    </div>}\n                </CompletedWrapper>\n            </CSSTransition>\n        </>\n    );\n};\n\nexport default Completed;\n","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === 'function') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n  // if its a function call it\n  if (typeof ref === 'function') {\n    return safeInvoke(ref, node);\n  } // otherwise we should treat it as a ref object\n  else if (ref != null) {\n      ref.current = node;\n    }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (acc, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n    acc[key] = value;\n    return acc;\n  }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var prevOptions = React.useRef(null);\n  var optionsWithDefaults = {\n    onFirstUpdate: options.onFirstUpdate,\n    placement: options.placement || 'bottom',\n    strategy: options.strategy || 'absolute',\n    modifiers: options.modifiers || EMPTY_MODIFIERS\n  };\n\n  var _React$useState = React.useState({\n    styles: {\n      popper: {\n        position: optionsWithDefaults.strategy,\n        left: '0',\n        top: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      }\n    },\n    attributes: {}\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  var updateStateModifier = React.useMemo(function () {\n    return {\n      name: 'updateState',\n      enabled: true,\n      phase: 'write',\n      fn: function fn(_ref) {\n        var state = _ref.state;\n        var elements = Object.keys(state.elements);\n        ReactDOM.flushSync(function () {\n          setState({\n            styles: fromEntries(elements.map(function (element) {\n              return [element, state.styles[element] || {}];\n            })),\n            attributes: fromEntries(elements.map(function (element) {\n              return [element, state.attributes[element]];\n            }))\n          });\n        });\n      },\n      requires: ['computeStyles']\n    };\n  }, []);\n  var popperOptions = React.useMemo(function () {\n    var newOptions = {\n      onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n      placement: optionsWithDefaults.placement,\n      strategy: optionsWithDefaults.strategy,\n      modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n        name: 'applyStyles',\n        enabled: false\n      }])\n    };\n\n    if (isEqual(prevOptions.current, newOptions)) {\n      return prevOptions.current || newOptions;\n    } else {\n      prevOptions.current = newOptions;\n      return newOptions;\n    }\n  }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n  var popperInstanceRef = React.useRef();\n  useIsomorphicLayoutEffect(function () {\n    if (popperInstanceRef.current) {\n      popperInstanceRef.current.setOptions(popperOptions);\n    }\n  }, [popperOptions]);\n  useIsomorphicLayoutEffect(function () {\n    if (referenceElement == null || popperElement == null) {\n      return;\n    }\n\n    var createPopper = options.createPopper || defaultCreatePopper;\n    var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n    popperInstanceRef.current = popperInstance;\n    return function () {\n      popperInstance.destroy();\n      popperInstanceRef.current = null;\n    };\n  }, [referenceElement, popperElement, options.createPopper]);\n  return {\n    state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n    styles: state.styles,\n    attributes: state.attributes,\n    update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n    forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n  };\n};","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport type {Placement} from 'popper.js';\nimport React from 'react';\nimport type {RefObject, CSSProperties} from 'react';\nimport {usePopper} from 'react-popper';\nimport {CSSTransition} from 'react-transition-group';\nimport styled from 'styled-components';\n\nconst Overlay = styled.div`\n    background-color: rgba(0, 0, 0, 0.5);\n    display: flex;\n    align-items: flex-end;\n    justify-content: center;\n    height: 100%;\n    min-height: 100%;\n    left: 0;\n    right: 0;\n    top: 0;\n    position: fixed;\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    overscroll-behavior: contain;\n    pointer-events: auto;\n    -ms-scroll-chaining: none;\n    transition: 150ms;\n    transition-property: background-color;\n    transition-timing-function: ease-in-out;\n    z-index: 100;\n    &.fade-enter {\n        background-color: rgba(0, 0, 0, 0);\n    }\n    &.fade-enter-active {\n        background-color: rgba(0, 0, 0, 0.5);\n    }\n    &.fade-enter-done {\n        background-color: rgba(0, 0, 0, 0.5);\n    }\n    &.fade-exit {\n        background-color: rgba(0, 0, 0, 0.5);\n    }\n    &.fade-exit-active {\n        background-color: rgba(0, 0, 0, 0);\n    }\n    &.fade-exit-done {\n        background-color: rgba(0, 0, 0, 0);\n    }\n`;\n\ninterface TaskListPopoverProps {\n    trigger: RefObject<HTMLButtonElement>;\n    isVisible: boolean;\n    placement?: Placement;\n    offset?: [number | null | undefined, number | null | undefined];\n    children?: React.ReactNode;\n    onClick?: () => void;\n}\n\nexport const TaskListPopover = ({\n    trigger,\n    placement = 'top-start',\n    isVisible,\n    offset = [0, 5],\n    children,\n    onClick,\n}: TaskListPopoverProps): JSX.Element | null => {\n    const [popperElement, setPopperElement] =\n        React.useState<HTMLDivElement | null>(null);\n\n    const {\n        styles: {popper},\n        attributes,\n    } = usePopper(trigger.current, popperElement, {\n        placement,\n        modifiers: [\n            {\n                name: 'offset',\n                options: {\n                    offset,\n                },\n            },\n        ],\n    });\n    const style = {\n        container: {\n            ...popper,\n            zIndex: isVisible ? 100 : -1,\n            position: 'fixed',\n        } as CSSProperties,\n    };\n    return (\n        <>\n            <CSSTransition\n                timeout={150}\n                classNames='fade'\n                in={isVisible}\n                unmountOnExit={true}\n            >\n                <Overlay\n                    onClick={onClick}\n                    data-cy='onboarding-task-list-overlay'\n                />\n            </CSSTransition>\n            <div\n                ref={setPopperElement}\n                style={style.container}\n                {...attributes.popper}\n            >\n                {children}\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 styled from 'styled-components';\n\nimport {CompletedAnimation} from './onboarding_tasklist_animations';\n\nexport interface TaskProps {\n    label: React.ReactElement;\n    icon?: React.ReactNode;\n    onClick?: () => void;\n    completedStatus: boolean;\n}\n\nconst StyledTask = styled.div`\n    display: flex;\n    background-color: var(--center-channel-bg);\n    cursor: pointer;\n    width: 100%;\n    padding: 8px 20px;\n    font-size: 14px;\n    align-items: flex-start;\n    color: var(--center-channel-color);\n    position: relative;\n\n    span {\n        div {\n            display: flex;\n            align-items: flex-start;\n            picture {\n                display: flex;\n                align-items: center;\n                margin-right: 10px;\n            }\n        }\n    }\n\n    &.completed {\n        color: var(--denim-status-online);\n\n        span {\n            span {\n                text-decoration: underline;\n                text-decoration-skip-ink: none;\n                text-underline-offset: -0.325em;\n            }\n        }\n    }\n\n    :hover {\n        background: rgba(var(--center-channel-color-rgb), 0.08);\n    }\n    :active {\n        background-color: rgba(var(--button-bg-rgb), 0.08);\n    }\n    :focus {\n        box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.32),\n            inset 0 0 0 2px blue;\n    }\n    transition: background 250ms ease-in-out, color 250ms ease-in-out,\n        box-shadow 250ms ease-in-out;\n`;\n\nexport const Task = (props: TaskProps): JSX.Element => {\n    const {label, completedStatus, onClick} = props;\n\n    const handleOnClick = () => {\n        if (onClick) {\n            onClick();\n        }\n    };\n\n    return (\n        <StyledTask\n            className={completedStatus ? 'completed' : ''}\n            onClick={handleOnClick}\n        >\n            {completedStatus && <CompletedAnimation completed={completedStatus}/>}\n            <span>{label}</span>\n        </StyledTask>\n    );\n};\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useRef, useCallback, useEffect, useState} from 'react';\nimport {FormattedMessage} from 'react-intl';\nimport {useDispatch, useSelector} from 'react-redux';\nimport styled, {css} from 'styled-components';\n\nimport {CloseIcon, PlaylistCheckIcon} from '@mattermost/compass-icons/components';\n\nimport {getPrevTrialLicense} from 'mattermost-redux/actions/admin';\nimport {getMyPreferences, savePreferences} from 'mattermost-redux/actions/preferences';\nimport {getConfig} from 'mattermost-redux/selectors/entities/general';\nimport {\n    getBool,\n    getMyPreferences as getMyPreferencesSelector,\n    getTheme,\n} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\n\nimport {trackEvent} from 'actions/telemetry_actions';\nimport {getShowTaskListBool} from 'selectors/onboarding';\n\nimport CompassThemeProvider from 'components/compass_theme_provider/compass_theme_provider';\nimport {useFirstAdminUser, useIsCurrentUserSystemAdmin} from 'components/global_header/hooks';\nimport {\n    useTasksListWithStatus,\n    OnboardingTaskCategory,\n    OnboardingTaskList,\n} from 'components/onboarding_tasks';\nimport {useHandleOnBoardingTaskTrigger} from 'components/onboarding_tasks/onboarding_tasks_manager';\n\nimport {Preferences, RecommendedNextStepsLegacy} from 'utils/constants';\n\nimport type {GlobalState} from 'types/store';\n\nimport {CompletedAnimation} from './onboarding_tasklist_animations';\nimport Completed from './onboarding_tasklist_completed';\nimport {TaskListPopover} from './onboarding_tasklist_popover';\nimport {Task} from './onboarding_tasklist_task';\n\nconst TaskItems = styled.div`\n    border-radius: var(--radius-m);\n    border: solid 1px rgba(var(--center-channel-color-rgb), 0.16);\n    background-color: var(--center-channel-bg);\n    width: 352px;\n    padding: 24px 0;\n    transform: scale(0);\n    opacity: 0;\n    box-shadow: var(--elevation-6);\n    transition: opacity 250ms ease-in-out 0ms, transform 250ms ease-in-out 0ms;\n    transform-origin: left bottom;\n    max-height: ${document.documentElement.clientHeight}px;\n    overflow-y: auto;\n\n    &.open {\n        transform: scale(1);\n        opacity: 1;\n    }\n\n    h1 {\n        font-size: 20px;\n        padding: 0 24px;\n        margin: 0;\n    }\n\n    p {\n        font-size: 12px;\n        color: rgba(var(--center-channel-color-rgb), 0.75);\n        padding: 4px 24px;\n    }\n\n    .link {\n        font-size: 12px;\n        color: var(--link-color);\n        padding: 12px 24px 0;\n        font-weight: bold;\n        cursor: pointer;\n        display: block;\n        :hover{\n          text-decoration: underline\n        }\n    }\n`;\n\nconst Button = styled.button<{open: boolean}>(({open}) => {\n    return css`\n        width: 36px;\n        height: 36px;\n        padding: 7px;\n        border-radius: var(--radius-full);\n        left: 15px;\n        bottom: 15px;\n        position: fixed;\n        z-index: 101;\n        display: flex;\n        align-items: center;\n        background: var(--center-channel-bg);\n        border: solid 1px rgba(var(--center-channel-color-rgb), 0.16);\n        box-shadow: var(--elevation-3);\n        color: rgba(var(--center-channel-color-rgb), 0.75);\n\n        &:hover {\n            border-color: rgba(var(--center-channel-color-rgb), 0.24);\n            box-shadow: var(--elevation-4);\n            color: rgba(var(--center-channel-color-rgb), 0.75)\n        }\n\n        span {\n            width: 20px;\n            height: 16px;\n            background: var(--button-bg);\n            position: absolute;\n            display: ${open ? 'none' : 'block'};\n            border-radius: 12px;\n            color: var(--button-color);\n            font-weight: bold;\n            font-size: 11px;\n            line-height: 16px;\n            bottom: 22px;\n            left: 22px;\n        }\n    `;\n});\n\nconst OnBoardingTaskList = (): JSX.Element | null => {\n    const hasPreferences = useSelector((state: GlobalState) => Object.keys(getMyPreferencesSelector(state)).length !== 0);\n\n    useEffect(() => {\n        dispatch(getPrevTrialLicense());\n        if (!hasPreferences) {\n            dispatch(getMyPreferences());\n        }\n    }, []);\n\n    const open = useSelector(((state: GlobalState) => getBool(state, OnboardingTaskCategory, OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN)));\n    const trigger = useRef<HTMLButtonElement>(null);\n    const dispatch = useDispatch();\n    const currentUserId = useSelector(getCurrentUserId);\n    const handleTaskTrigger = useHandleOnBoardingTaskTrigger();\n    const tasksList = useTasksListWithStatus();\n    const [completedCount, setCompletedCount] = useState(tasksList.filter((task) => task.status).length);\n    const [showAnimation, setShowAnimation] = useState(false);\n    const itemsLeft = tasksList.length - completedCount;\n    const isCurrentUserSystemAdmin = useIsCurrentUserSystemAdmin();\n    const isFirstAdmin = useFirstAdminUser();\n    const isEnableOnboardingFlow = useSelector((state: GlobalState) => getConfig(state).EnableOnboardingFlow === 'true');\n    const [showTaskList, firstTimeOnboarding] = useSelector(\n        getShowTaskListBool,\n        (a, b) => a[0] === b[0] && a[1] === b[1],\n    );\n    const theme = useSelector(getTheme);\n\n    const startTask = (taskName: string) => {\n        toggleTaskList();\n        handleTaskTrigger(taskName);\n    };\n\n    const initOnboardingPrefs = async () => {\n        // save to preferences the show/open-task-list to true\n        // also save the recomendedNextSteps-hide to true to avoid asserting to true\n        // the logic to firstTimeOnboarding\n        await dispatch(savePreferences(currentUserId, [\n            {\n                category: OnboardingTaskCategory,\n                user_id: currentUserId,\n                name: OnboardingTaskList.ONBOARDING_TASK_LIST_SHOW,\n                value: 'true',\n            },\n            {\n                user_id: currentUserId,\n                category: OnboardingTaskCategory,\n                name: OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN,\n                value: 'true',\n            },\n            {\n                user_id: currentUserId,\n                category: Preferences.RECOMMENDED_NEXT_STEPS,\n                name: RecommendedNextStepsLegacy.HIDE,\n                value: 'true',\n            },\n        ]));\n    };\n\n    useEffect(() => {\n        if (firstTimeOnboarding) {\n            initOnboardingPrefs();\n        }\n    }, []);\n\n    useEffect(() => {\n        if (firstTimeOnboarding && showTaskList && isEnableOnboardingFlow) {\n            trackEvent(OnboardingTaskCategory, OnboardingTaskList.ONBOARDING_TASK_LIST_SHOW);\n        }\n    }, [firstTimeOnboarding, showTaskList, isEnableOnboardingFlow]);\n\n    // Done to show task done animation in closed state as well\n    useEffect(() => {\n        const newCCount = tasksList.filter((task) => task.status).length;\n        const show = localStorage.getItem(OnboardingTaskCategory);\n        if (show || ((completedCount + 1) === newCCount && !open)) {\n            setTimeout(() => {\n                setShowAnimation(true);\n                setCompletedCount(newCCount);\n            }, 100);\n            setTimeout(() => {\n                setShowAnimation(false);\n                setCompletedCount(newCCount);\n            }, 500);\n            localStorage.removeItem(OnboardingTaskCategory);\n        } else {\n            setCompletedCount(newCCount);\n        }\n    }, [tasksList, completedCount]);\n\n    const dismissChecklist = useCallback(() => {\n        const preferences = [{\n            user_id: currentUserId,\n            category: OnboardingTaskCategory,\n            name: OnboardingTaskList.ONBOARDING_TASK_LIST_SHOW,\n            value: 'false',\n        },\n        {\n            user_id: currentUserId,\n            category: OnboardingTaskCategory,\n            name: OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN,\n            value: 'false',\n        }];\n        dispatch(savePreferences(currentUserId, preferences));\n        trackEvent(OnboardingTaskCategory, OnboardingTaskList.DECLINED_ONBOARDING_TASK_LIST);\n    }, [currentUserId]);\n\n    const toggleTaskList = useCallback(() => {\n        const preferences = [{\n            user_id: currentUserId,\n            category: OnboardingTaskCategory,\n            name: OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN,\n            value: String(!open),\n        }];\n        dispatch(savePreferences(currentUserId, preferences));\n        trackEvent(OnboardingTaskCategory, open ? OnboardingTaskList.ONBOARDING_TASK_LIST_CLOSE : OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN);\n    }, [open, currentUserId]);\n\n    if (!hasPreferences || !showTaskList || !isEnableOnboardingFlow) {\n        return null;\n    }\n\n    return (\n        <CompassThemeProvider theme={theme}>\n            <CompletedAnimation completed={showAnimation}/>\n            <Button\n                onClick={toggleTaskList}\n                ref={trigger}\n                open={open}\n                data-cy='onboarding-task-list-action-button'\n            >\n                {open ? <CloseIcon size={20}/> : <PlaylistCheckIcon size={20}/>}\n                {itemsLeft !== 0 && (<span>{itemsLeft}</span>)}\n            </Button>\n            <TaskListPopover\n                isVisible={open}\n                trigger={trigger}\n                onClick={toggleTaskList}\n            >\n                <TaskItems className={open ? 'open' : ''}>\n                    {completedCount === tasksList.length ? (\n                        <Completed\n                            dismissAction={dismissChecklist}\n                            isFirstAdmin={isFirstAdmin}\n                            isCurrentUserSystemAdmin={isCurrentUserSystemAdmin}\n                        />\n                    ) : (\n                        <>\n                            <h1>\n                                <FormattedMessage\n                                    id='next_steps_view.welcomeToMattermost'\n                                    defaultMessage='Welcome to Mattermost'\n                                />\n                            </h1>\n                            <p>\n                                <FormattedMessage\n                                    id='onboardingTask.checklist.main_subtitle'\n                                    defaultMessage=\"Let's get up and running.\"\n                                />\n                            </p>\n                            {tasksList.map((task) => (\n                                <Task\n                                    key={OnboardingTaskCategory + task.name}\n                                    label={task.label()}\n                                    onClick={() => {\n                                        startTask(task.name);\n                                    }}\n                                    completedStatus={task.status}\n                                />\n                            ))}\n                            <span\n                                className='link'\n                                onClick={dismissChecklist}\n                            >\n                                <FormattedMessage\n                                    id='onboardingTask.checklist.dismiss_link'\n                                    defaultMessage='No thanks, I’ll figure it out myself'\n                                />\n                            </span>\n                        </>\n                    )}\n                </TaskItems>\n            </TaskListPopover>\n        </CompassThemeProvider>\n    );\n};\n\nexport default OnBoardingTaskList;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n"],"names":["Animation","styled","withConfig","displayName","CompletedAnimation","props","React","className","completed","StatusIcon","status","CompletedWrapper","Completed","dismissAction","dispatch","useDispatch","useEffect","getPrevTrialLicense","prevTrialLicense","useSelector","state","entities","admin","license","getLicense","isPrevLicensed","IsLicensed","isCurrentLicensed","isCloud","Cloud","showStartTrialBtn","isCurrentUserSystemAdmin","isFirstAdmin","CSSTransition","in","timeout","classNames","src","completedImg","alt","FormattedMessage","id","defaultMessage","StartTrialBtn","telemetryId","onClick","values","link","msg","ExternalLink","location","href","linkEvaluation","LicenseLinks","SOFTWARE_SERVICES_LICENSE_AGREEMENT","linkPrivacy","AboutLinks","PRIVACY_POLICY","propTypes","_pt","isRequired","fromEntries","entries","reduce","acc","_ref","key","value","useIsomorphicLayoutEffect","window","document","createElement","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","options","prevOptions","optionsWithDefaults","onFirstUpdate","placement","strategy","modifiers","_React$useState","styles","popper","position","left","top","arrow","attributes","setState","updateStateModifier","name","enabled","phase","fn","elements","Object","keys","map","element","requires","popperOptions","newOptions","concat","current","popperInstanceRef","setOptions","popperInstance","createPopper","destroy","update","forceUpdate","Overlay","TaskListPopover","trigger","isVisible","offset","children","setPopperElement","style","container","_objectSpread","zIndex","unmountOnExit","assign","ref","StyledTask","Task","label","completedStatus","handleOnClick","icon","TaskItems","documentElement","clientHeight","Button","open","css","OnBoardingTaskList","hasPreferences","getMyPreferencesSelector","length","getMyPreferences","getBool","OnboardingTaskCategory","OnboardingTaskList","ONBOARDING_TASK_LIST_OPEN","useRef","currentUserId","getCurrentUserId","handleTaskTrigger","useHandleOnBoardingTaskTrigger","tasksList","useTasksListWithStatus","completedCount","setCompletedCount","useState","filter","task","showAnimation","setShowAnimation","itemsLeft","useIsCurrentUserSystemAdmin","useFirstAdminUser","isEnableOnboardingFlow","getConfig","EnableOnboardingFlow","showTaskList","firstTimeOnboarding","getShowTaskListBool","a","b","theme","getTheme","async","savePreferences","category","user_id","ONBOARDING_TASK_LIST_SHOW","Preferences","RECOMMENDED_NEXT_STEPS","RecommendedNextStepsLegacy","HIDE","initOnboardingPrefs","trackEvent","newCCount","localStorage","getItem","setTimeout","removeItem","dismissChecklist","useCallback","preferences","DECLINED_ONBOARDING_TASK_LIST","toggleTaskList","String","ONBOARDING_TASK_LIST_CLOSE","CompassThemeProvider","CloseIcon","size","PlaylistCheckIcon","taskName","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","equal","constructor","i","it","Array","isArray","next","done","has","get","RegExp","source","flags","valueOf","prototype","toString","hasOwnProperty","call","$$typeof","module","exports","error","message","match","console","warn"],"sourceRoot":""}

VaKeR 2022