{"version":3,"file":"FeedNewPost.mocks.jsx","sourceRoot":"","sources":["../../../src/social/Feed/FeedNewPost.mocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { useUID, createUID, Banner, menuHelpers } from '@pega/cosmos-react-core';\nimport type { FileItemProps, MenuItemProps } from '@pega/cosmos-react-core';\nimport { FeedNewPost } from '@pega/cosmos-react-social';\nimport type { DefaultPostConfig, FeedNewPostProps, PostType } from '@pega/cosmos-react-social';\nimport type {\n  CustomPostSubmitEvent,\n  RecipientInputProps\n} from '@pega/cosmos-react-social/lib/components/Feed/Feed.types';\n\nimport { loadingTimeoutMS } from '../../core/Progress/Progress.mocks';\n\nimport { generateAvailableRecipients, FeedDemoContext, uploadAttachment } from './Feed.mocks';\nimport { LogActivityPost } from './LogActivityPostType.mocks';\nimport type { LogActivityHandle, LogActivityPostContentProps } from './LogActivityPostType.mocks';\n\ntype LogActivitySubmitEvent = CustomPostSubmitEvent & LogActivityPostContentProps;\n\ninterface FeedNewPostDemoProps {\n  onSubmit?: DefaultPostConfig['onSubmit'];\n  onLogActivitySubmit?: (event: LogActivitySubmitEvent) => void;\n}\n\nexport const FeedNewPostDemo = ({\n  onSubmit = () => {},\n  onLogActivitySubmit = () => {}\n}: FeedNewPostDemoProps) => {\n  const key = useUID();\n  const { showPostTypes, visibilityMode, simulateServerLatency, simulateServerError } =\n    useContext(FeedDemoContext);\n\n  const [postType, setPostType] = useState<PostType>({ id: 'default', label: 'Message' });\n  const [numRecipientOptions, setNumRecipientOptions] = useState(10);\n  const [availableRecipients, setAvailableRecipients] = useState<\n    RecipientInputProps['availableRecipients']\n  >([]);\n  const [selectedRecipients, setSelectedRecipients] = useState<RecipientInputProps['recipients']>(\n    []\n  );\n  const [activeSearch, setActiveSearch] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [errorMessages, setErrorMessages] = useState<string[]>([]);\n\n  // Log activity specific state\n  const logActivityHandle = useRef<LogActivityHandle>(null);\n  const logActivityTimeout = useRef(0);\n\n  // Default post specific state\n  const [attachments, setAttachments] = useState<FileItemProps[]>([]);\n  const defaultTimeout = useRef(0);\n\n  useEffect(() => {\n    return () => {\n      window.localStorage.removeItem('attachments');\n    };\n  }, []);\n\n  const onFilesAdded = async (addedFiles: File[]) => {\n    const fileItems: FileItemProps[] = addedFiles.map(file => {\n      const fileItem: FileItemProps = {\n        id: createUID(),\n        name: file.name,\n        format: file.name.split('.').pop(),\n        onPreview: () => action('on preview'),\n        onDelete: () => {\n          setAttachments(current => {\n            return current.filter(x => x.name !== file.name);\n          });\n        },\n        onCancel: () => {\n          setAttachments(current => {\n            return current.filter(x => x.name !== file.name);\n          });\n        }\n      };\n\n      if (file.type.includes('image')) {\n        fileItem.thumbnail = URL.createObjectURL(file);\n      }\n      if (file.size / 1000000 > 100) {\n        fileItem.error = 'File size cannot exceed 100MB';\n      }\n      uploadAttachment(fileItem.id, file, (id, progress) => {\n        setAttachments(prev => {\n          return prev.map(item => {\n            if (item.id === id) {\n              return { ...item, progress };\n            }\n            return item;\n          });\n        });\n      });\n      return fileItem;\n    });\n\n    setAttachments(current => [...current, ...fileItems]);\n  };\n\n  const customPostConfig: FeedNewPostProps['customConfig'] = useMemo(() => {\n    if (postType.id === 'log') {\n      return {\n        content: <LogActivityPost handle={logActivityHandle} />,\n        onSubmit: postEvent => {\n          setErrorMessages([]);\n          const errors = logActivityHandle.current?.getErrors();\n\n          if (errors && errors.length > 0) {\n            setErrorMessages(errors);\n          } else if (\n            postEvent.visibility === 'private' &&\n            (!postEvent.recipients || postEvent.recipients.length === 0)\n          ) {\n            setErrorMessages(['Please select at least one recipient.']);\n          } else {\n            setLoading(true);\n            const formData = logActivityHandle.current?.getFormData();\n\n            logActivityTimeout.current = window.setTimeout(\n              () => {\n                if (!formData || simulateServerError) {\n                  setErrorMessages(['This is a mock server error!']);\n                } else {\n                  onLogActivitySubmit({\n                    ...postEvent,\n                    ...formData\n                  });\n                  logActivityHandle.current?.clearForm();\n                  setSelectedRecipients([]);\n                }\n                setLoading(false);\n              },\n              simulateServerLatency ? loadingTimeoutMS : 0\n            );\n          }\n        },\n        onCancel: () => {\n          if (loading) {\n            clearTimeout(logActivityTimeout.current);\n            setLoading(false);\n          } else {\n            setErrorMessages([]);\n\n            const formData = logActivityHandle.current?.getFormData();\n            if (\n              !formData?.activityType &&\n              !formData?.followUpDate &&\n              !formData?.files?.length &&\n              !formData?.comments\n            ) {\n              setPostType({ id: 'default', label: 'Message' });\n            } else {\n              logActivityHandle.current?.clearForm();\n            }\n          }\n        }\n      };\n    }\n  }, [loading, postType, simulateServerLatency, simulateServerError]);\n\n  const defaultPostConfig: FeedNewPostProps['defaultConfig'] = useMemo(() => {\n    if (postType.id === 'default') {\n      return {\n        attachments,\n        onFilesAdded,\n        onSubmit: postEvent => {\n          setErrorMessages([]);\n\n          if (\n            postEvent.visibility === 'private' &&\n            (!postEvent.recipients || postEvent.recipients.length === 0)\n          ) {\n            setErrorMessages(['Please select at least one recipient.']);\n          } else {\n            setLoading(true);\n            defaultTimeout.current = window.setTimeout(\n              () => {\n                if (simulateServerError) {\n                  setErrorMessages(['This is a mock server error!']);\n                } else {\n                  onSubmit(postEvent);\n                  setAttachments([]);\n                  setSelectedRecipients([]);\n                  postEvent.clear();\n                }\n                setLoading(false);\n              },\n              simulateServerLatency ? loadingTimeoutMS : 0\n            );\n          }\n        }\n      };\n    }\n  }, [attachments, loading, postType, simulateServerLatency]);\n\n  useEffect(() => {\n    setAvailableRecipients(generateAvailableRecipients(numRecipientOptions));\n  }, [numRecipientOptions]);\n\n  useEffect(() => {\n    setSelectedRecipients([]);\n  }, [postType]);\n\n  return (\n    <FeedNewPost\n      id={key}\n      banners={\n        errorMessages.length > 0 ? <Banner variant='urgent' messages={errorMessages} /> : undefined\n      }\n      progress={loading}\n      defaultConfig={defaultPostConfig}\n      customConfig={customPostConfig}\n      visibilityMode={visibilityMode}\n      recipientInput={{\n        availableRecipients,\n        recipients: selectedRecipients,\n        onAdd: itemID => {\n          const recipient = availableRecipients.find(item => item.id === itemID);\n          if (recipient) setSelectedRecipients(cur => [...cur, recipient]);\n        },\n        onRemove: itemID => {\n          setSelectedRecipients(cur => cur.filter(item => item.id !== itemID));\n        },\n        onToggle: itemID => {\n          setAvailableRecipients(cur => menuHelpers.toggleSelected(cur, itemID, 'multi-select'));\n        },\n        onSearch: search => {\n          if (search) {\n            setActiveSearch(true);\n            setAvailableRecipients(\n              menuHelpers\n                .flatten(generateAvailableRecipients(1000))\n                .filter(({ primary }: MenuItemProps) => {\n                  return primary.toLowerCase().includes(search.toLowerCase());\n                })\n            );\n          } else {\n            setActiveSearch(false);\n            setAvailableRecipients(generateAvailableRecipients(numRecipientOptions));\n          }\n        },\n        onMenuOpen: () => {\n          if (!activeSearch) setNumRecipientOptions(10);\n        },\n        loadMore: () => {\n          if (numRecipientOptions < 1000 && !activeSearch) {\n            setNumRecipientOptions(prev => prev + 10);\n          }\n        }\n      }}\n      postType={postType}\n      postTypes={\n        showPostTypes\n          ? [\n              { id: 'default', label: 'Message' },\n              { id: 'log', label: 'Log activity' }\n            ]\n          : undefined\n      }\n      onPostTypeChange={type => {\n        setErrorMessages([]);\n        setPostType(type);\n      }}\n    />\n  );\n};\n"]}