@contentstack/live-preview-utils
Version:
Contentstack provides the Live Preview SDK to establish a communication channel between the various Contentstack SDKs and your website, transmitting live changes to the preview pane.
1 lines • 11.2 kB
Source Map (JSON)
{"version":3,"sources":["../../../../../../src/visualBuilder/components/Collab/ThreadPopup/index.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport { useEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport ThreadHeader from \"./ThreadHeader\";\nimport ThreadFooter from \"./ThreadFooter\";\nimport ThreadBody from \"./ThreadBody\";\nimport {\n IThreadPopup,\n IThreadContext,\n IThreadPopupState,\n IErrorState,\n IMentionList,\n IFetchComments,\n} from \"../../../types/collab.types\";\nimport { getUserName } from \"../../../utils/collabUtils\";\nimport { ThreadProvider } from \"./ContextProvider/ThreadProvider\";\nimport useInfiniteScroll from \"../../../hooks/use-infinite-scroll/useInfiniteScroll\";\nimport { collabStyles } from \"../../../collab.style\";\nimport classNames from \"classnames\";\n\nconst initialErrorState: IErrorState = {\n hasError: false,\n message: \"\",\n};\n\nconst ThreadPopup: React.FC<IThreadPopup> = React.memo(\n ({\n onCreateComment,\n onEditComment,\n onDeleteComment,\n onDeleteThread,\n onClose,\n onResolve,\n inviteMetadata,\n loadMoreMessages,\n activeThread,\n setActiveThread,\n createNewThread,\n }) => {\n const handleOnSaveRef = useRef(null);\n\n const [state, setState] = useState<IThreadPopupState>({\n isLoading: false,\n commentCount: 0,\n comments: [],\n editComment: \"\",\n userState: {\n mentionsList: [],\n currentUser: inviteMetadata?.currentUser,\n userMap: {},\n },\n });\n\n const [error, setError] = useState<IErrorState>(initialErrorState);\n\n const isFetchingMore = useInfiniteScroll({\n containerId: \"collab-thread-comment--list\",\n isFetching: false,\n canFetchMore: state.commentCount > state.comments.length,\n loadMore: async (offset, limit) => {\n try {\n let payload: IFetchComments = {\n offset: offset,\n limit: limit,\n threadUid: activeThread?._id,\n };\n const res = await loadMoreMessages(payload);\n setState((prevState) => ({\n ...prevState,\n commentCount: res.count,\n comments: [...prevState.comments, ...res.comments],\n }));\n } catch (error) {\n console.error(error);\n }\n },\n offset: state.comments.length,\n limit: 10,\n });\n\n useEffect(() => {\n const userList: Array<IMentionList> = [];\n const userMap: Record<string, any> = {};\n\n inviteMetadata?.users?.forEach((user) => {\n if (user) {\n const userName = getUserName(user);\n userList.push({\n display: userName,\n email: user.email,\n uid: user.uid,\n });\n userMap[user.uid] = { ...user, display: userName };\n }\n });\n\n setState((prevState) => ({\n ...prevState,\n userState: {\n mentionsList: userList,\n userMap,\n currentUser: inviteMetadata?.currentUser,\n },\n }));\n }, [inviteMetadata]);\n\n useEffect(() => {\n if (!activeThread) {\n setState((prevState) => ({ ...prevState, isLoading: true }));\n return;\n }\n if (activeThread?._id == \"new\") {\n return;\n }\n const fetchInitialMessages = async () => {\n setState((prevState) => ({ ...prevState, isLoading: true }));\n try {\n let payload: IFetchComments = {\n offset: 0,\n limit: 10,\n threadUid: activeThread?._id,\n };\n const res = await loadMoreMessages(payload);\n setState((prevState) => ({\n ...prevState,\n isLoading: false,\n commentCount: res.count,\n comments: res.comments,\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n isLoading: false,\n }));\n console.error(error);\n }\n };\n fetchInitialMessages();\n }, []);\n\n const contextValue = useMemo<IThreadContext>(\n () => ({\n inviteMetadata,\n userState: state.userState,\n commentCount: state.commentCount,\n setThreadState: setState,\n error,\n setError,\n onCreateComment,\n onEditComment,\n onDeleteComment,\n onDeleteThread,\n onClose,\n editComment: state.editComment,\n activeThread,\n setActiveThread,\n createNewThread,\n }),\n [\n inviteMetadata,\n state.userState,\n state.commentCount,\n error,\n state.editComment,\n activeThread,\n ]\n );\n\n return (\n <ThreadProvider.Provider value={contextValue}>\n <div\n className={classNames(\n \"collab-thread--wrapper\",\n collabStyles()[\"collab-thread--wrapper\"]\n )}\n >\n <ThreadHeader\n onClose={onClose}\n onResolve={onResolve}\n displayResolve={\n !!activeThread && activeThread?._id !== \"new\"\n }\n commentCount={state.commentCount}\n activeThread={activeThread}\n />\n <div\n class={classNames(\n \"collab-thread--container\",\n collabStyles()[\"collab-thread--container\"]\n )}\n >\n <ThreadBody\n handleOnSaveRef={handleOnSaveRef}\n onClose={onClose}\n userState={state.userState}\n isLoading={state.isLoading}\n comments={state.comments}\n fetchingMore={isFetchingMore}\n editComment={state.editComment}\n />\n <ThreadFooter\n onClose={onClose}\n handleOnSaveRef={handleOnSaveRef}\n isDisabled={error.hasError}\n editComment={state.editComment}\n />\n </div>\n </div>\n </ThreadProvider.Provider>\n );\n }\n);\n\nexport default ThreadPopup;\n"],"mappings":"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","names":["React","useInfiniteScroll","error","classNames","ThreadHeader","ThreadBody","ThreadFooter"]}