UNPKG

@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 7.04 kB
{"version":3,"sources":["../../../../src/visualBuilder/hooks/useCollabOperations.ts"],"sourcesContent":["/** @jsxImportSource preact */\nimport React from \"preact/compat\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport {\n ICommentResponse,\n IThreadResponseDTO,\n IDefaultAPIResponse,\n IFetchCommentsResponse,\n ICommentPayload,\n IEditCommentArgs,\n IDeleteCommentArgs,\n IThreadResolveArgs,\n IFetchComments,\n IThreadPayload,\n IInviteMetadata,\n IDeleteThreadArgs,\n} from \"../types/collab.types\";\nimport { removeCollabIcon } from \"../generators/generateThread\";\nimport Config from \"../../configManager/configManager\";\nimport { normalizePath } from \"../utils/collabUtils\";\n\nexport const useCollabOperations = () => {\n const createComment = async (payload: ICommentPayload) => {\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_CREATE_COMMENT,\n payload\n )) as ICommentResponse;\n if (!data) throw new Error(\"Failed to create comment\");\n return data;\n };\n\n const editComment = async (payload: IEditCommentArgs) => {\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_EDIT_COMMENT,\n payload\n )) as ICommentResponse;\n if (!data) throw new Error(\"Failed to update comment\");\n return data;\n };\n\n const deleteComment = async (payload: IDeleteCommentArgs) => {\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_DELETE_COMMENT,\n payload\n )) as IDefaultAPIResponse;\n if (!data) throw new Error(\"Failed to delete comment\");\n return data;\n };\n\n const resolveThread = async (payload: IThreadResolveArgs) => {\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_RESOLVE_THREAD,\n payload\n )) as IThreadResponseDTO;\n if (!data) throw new Error(\"Failed to resolve thread\");\n return data;\n };\n\n const fetchComments = async (payload: IFetchComments) => {\n return (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_FETCH_COMMENTS,\n payload\n )) as IFetchCommentsResponse;\n };\n\n const createNewThread = async (\n buttonRef: React.RefObject<HTMLButtonElement>,\n inviteMetadata: IInviteMetadata\n ) => {\n if (!buttonRef.current) {\n throw new Error(\"Button ref not found\");\n }\n\n const parentDiv = buttonRef.current.closest(\"div[field-path]\");\n\n if (!parentDiv) {\n throw new Error(\"Count not find parent div\");\n }\n\n const fieldPath = parentDiv.getAttribute(\"field-path\");\n const relative = parentDiv.getAttribute(\"relative\");\n\n if (!fieldPath || !relative)\n throw new Error(\"Invalid field attributes\");\n\n const match = relative?.match(/x: ([\\d.]+), y: ([\\d.]+)/);\n if (!match) {\n throw new Error(\"Invalid relative attribute\");\n }\n\n const relativeX = parseFloat(match[1]);\n const relativeY = parseFloat(match[2]);\n\n const payload: IThreadPayload = {\n elementXPath: fieldPath,\n position: { x: relativeX, y: relativeY },\n author: inviteMetadata.currentUser.email,\n pageRoute: normalizePath(window.location.pathname),\n inviteUid: inviteMetadata.inviteUid,\n createdBy: inviteMetadata.currentUser.uid,\n };\n\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_CREATE_THREAD,\n payload\n )) as IThreadResponseDTO;\n\n parentDiv.setAttribute(\"threaduid\", data.thread._id);\n\n return data;\n };\n\n const deleteThread = async (payload: IDeleteThreadArgs) => {\n const data = (await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.COLLAB_DELETE_THREAD,\n payload\n )) as IDefaultAPIResponse;\n if (!data) throw new Error(\"Failed to delete thread\");\n removeCollabIcon(payload.threadUid);\n const config = Config.get();\n if (config?.collab?.isFeedbackMode === false) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n return data;\n };\n\n return {\n createComment,\n editComment,\n deleteComment,\n resolveThread,\n fetchComments,\n createNewThread,\n deleteThread,\n };\n};\n"],"mappings":"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","names":["visualBuilderPostMessage","Config"]}