{"version":3,"file":"FeedReply.mocks.jsx","sourceRoot":"","sources":["../../../src/social/Feed/FeedReply.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useCallback, useContext, useRef } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { Avatar, Banner, useElement, useUID } from '@pega/cosmos-react-core';\nimport type { MenuItemProps } from '@pega/cosmos-react-core';\nimport { AutopilotGlimpse, FeedReply } from '@pega/cosmos-react-social';\nimport type { FeedReplyProps } from '@pega/cosmos-react-social';\nimport { Glimpse } from '@pega/cosmos-react-work';\n\nimport { loadingTimeoutMS } from '../../core/Progress/Progress.mocks';\n\nimport { FeedDemoContext, FeedPostDemoContext, feedUserGlimpseDetails } from './Feed.mocks';\n\ninterface FeedReplyDemoProps {\n  fullname: FeedReplyProps['fullname'];\n  username: FeedReplyProps['username'];\n  content: FeedReplyProps['content'];\n  attachments?: FeedReplyProps['attachments'];\n  postTimestamp?: FeedReplyProps['postTimestamp'];\n  userStatus?: FeedReplyProps['userStatus'];\n}\n\nexport const FeedReplyDemo = ({\n  fullname,\n  username,\n  content,\n  attachments,\n  postTimestamp = new Date(2022, 0, 1),\n  userStatus\n}: FeedReplyDemoProps) => {\n  const key = useUID();\n  const { simulateServerLatency, simulateServerError } = useContext(FeedDemoContext);\n  const { setReplyInputShown } = useContext(FeedPostDemoContext);\n\n  const [likes, setLikes] = useState<MenuItemProps[]>([]);\n  const [liked, setLiked] = useState(false);\n  const [likeCount, setLikeCount] = useState(0);\n  const [replyContent, setReplyContent] = useState(content);\n  const [edited, setEdited] = useState(false);\n  const [editTimestamp, setEditTimestamp] = useState(new Date());\n  const [glimpseContent, setGlimpseContent] = useState<ReactNode | undefined>();\n  const [glimpseTarget, setGlimpseTarget] = useElement<HTMLElement>(null);\n  const [additionalLikeAdded, setAdditionalLikeAdded] = useState(false);\n\n  const [editMode, setEditMode] = useState(false);\n  const [editLoading, setEditLoading] = useState(false);\n  const [editErrorMessages, setEditErrorMessages] = useState<string[]>([]);\n  const editTimeout = useRef(0);\n\n  const getInitialLikes = () => {\n    if (likes.length) return;\n\n    setLikes([]);\n  };\n\n  const [likesLoading, setLikesLoading] = useState(false);\n\n  const generateNewLike = useCallback(() => {\n    if (!likesLoading) {\n      setLikesLoading(true);\n      setTimeout(() => {\n        setLikesLoading(false);\n        setLikes(oldLikes => [\n          ...oldLikes,\n          {\n            primary: 'Generated Like',\n            secondary: ['This like was added after the onLoadMore callback triggered'],\n            visual: <Avatar size='m' name='Generated Like' />,\n            id: 'generatedLike'\n          }\n        ]);\n        setAdditionalLikeAdded(true);\n      }, 1000);\n    }\n  }, [likesLoading]);\n\n  const onUserClick: FeedReplyProps['onUserClick'] = (\n    { username: glimpseUsername },\n    clickEvent\n  ) => {\n    if (clickEvent) {\n      setGlimpseTarget(clickEvent.target as HTMLElement);\n      if (glimpseUsername === 'autopilot') {\n        setGlimpseContent(\n          <AutopilotGlimpse\n            target={clickEvent.target as HTMLElement}\n            onDismiss={() => {\n              setGlimpseTarget(null);\n            }}\n            placement='right'\n          />\n        );\n      } else {\n        const userDetails = feedUserGlimpseDetails.find(x => x.username === glimpseUsername);\n        if (userDetails) {\n          setGlimpseContent(\n            <Glimpse\n              {...userDetails}\n              target={clickEvent.target as HTMLElement}\n              onDismiss={() => {\n                setGlimpseTarget(null);\n              }}\n              placement='right'\n            />\n          );\n        }\n      }\n    }\n  };\n\n  return (\n    <>\n      <FeedReply\n        id={key}\n        key={key}\n        postTimestamp={postTimestamp}\n        content={replyContent}\n        attachments={attachments}\n        username={username}\n        fullname={fullname}\n        liked={liked}\n        userStatus={userStatus}\n        likes={likes}\n        likeCount={likeCount >= 10 ? likeCount + 1 : likeCount}\n        maxContentHeight={40}\n        menuItems={[{ primary: 'Custom action', id: 'custom', onClick: () => {} }]}\n        onEdit={\n          typeof content === 'string' && !content.includes('<pega-autopilot/>')\n            ? () => setEditMode(true)\n            : undefined\n        }\n        editConfig={\n          editMode\n            ? {\n                progress: editLoading,\n                banners:\n                  editErrorMessages.length > 0 ? (\n                    <Banner variant='urgent' messages={editErrorMessages} />\n                  ) : undefined,\n                onEditSubmit: ({ value }) => {\n                  setEditErrorMessages([]);\n\n                  setEditLoading(true);\n                  editTimeout.current = window.setTimeout(\n                    () => {\n                      if (simulateServerError) {\n                        setEditErrorMessages(['This is a mock server error!']);\n                      } else {\n                        setReplyContent(value);\n                        setEdited(true);\n                        setEditTimestamp(new Date());\n                        setEditMode(false);\n                      }\n                      setEditLoading(false);\n                    },\n                    simulateServerLatency ? loadingTimeoutMS : 0\n                  );\n                },\n                onEditCancel: () => {\n                  if (editLoading) {\n                    clearTimeout(editTimeout.current);\n                    setEditLoading(false);\n                  } else {\n                    setEditErrorMessages([]);\n                    setEditMode(false);\n                  }\n                }\n              }\n            : undefined\n        }\n        edited={edited}\n        editTimestamp={editTimestamp}\n        onCommentClick={() => setReplyInputShown(true)}\n        onLikeClick={({ user }) => {\n          const userLikedIndex = likes.findIndex(x => x.id === user.id);\n          if (userLikedIndex !== -1) {\n            setLikes(oldLikes => {\n              const oldLikesArr = [...oldLikes];\n              oldLikesArr.splice(userLikedIndex, 1);\n              return oldLikesArr;\n            });\n            setLikeCount(curr => curr - 1);\n          } else {\n            setLikes(oldLikes => [user, ...oldLikes]);\n            setLikeCount(curr => curr + 1);\n          }\n          setLiked(curr => !curr);\n        }}\n        onLikeCountInteraction={getInitialLikes}\n        onLoadMoreLikes={!additionalLikeAdded ? generateNewLike : undefined}\n        likesLoading={likesLoading}\n        onUserClick={onUserClick}\n      />\n      {glimpseTarget && glimpseContent}\n    </>\n  );\n};\n"]}