@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 • 8.73 kB
Source Map (JSON)
{"version":3,"sources":["../../../../src/visualBuilder/eventManager/useCollab.ts"],"sourcesContent":["import visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport Config from \"../../configManager/configManager\";\nimport {\n removeAllCollabIcons,\n hideAllCollabIcons,\n removeCollabIcon,\n HighlightThread,\n showAllCollabIcons,\n} from \"../generators/generateThread\";\nimport {\n generateThread,\n handleMissingThreads,\n} from \"../generators/generateThread\";\nimport {\n IThreadDTO,\n ICollabConfig,\n IThreadIdentifier,\n IThreadRemove,\n IThreadReopen,\n} from \"../types/collab.types\";\nimport { OnEvent } from \"@contentstack/advanced-post-message\";\n\nconst handleRemoveCommentIcons = (fromShare: boolean = false): void => {\n if (fromShare) {\n hideAllCollabIcons();\n return;\n }\n removeAllCollabIcons();\n};\n\nexport const useCollab = () => {\n const config = Config.get();\n const collabEnable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_ENABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.isFeedbackMode\",\n data?.data?.collab?.isFeedbackMode\n );\n showAllCollabIcons();\n return;\n }\n\n Config.set(\"collab.enable\", data.data.collab.enable ?? false);\n Config.set(\n \"collab.isFeedbackMode\",\n data.data.collab.isFeedbackMode ?? false\n );\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n Config.set(\n \"collab.inviteMetadata\",\n data.data.collab.inviteMetadata\n );\n }\n );\n\n const collabPayload = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DATA_UPDATE,\n (data: OnEvent<ICollabConfig>) => {\n if (!config?.collab?.enable) return;\n\n if (!data?.data?.collab) {\n console.error(\"Invalid collab data structure:\", data);\n return;\n }\n\n if (data?.data?.collab?.inviteMetadata) {\n Config.set(\n \"collab.inviteMetadata\",\n data?.data?.collab?.inviteMetadata\n );\n return;\n }\n\n const missingThreadIds =\n data?.data?.collab?.payload\n ?.map((payload: IThreadDTO) => generateThread(payload))\n .filter((id): id is string => id !== undefined) || [];\n if (missingThreadIds.length > 0) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: missingThreadIds,\n });\n }\n }\n );\n\n const collabDisable = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_DISABLE,\n (data: OnEvent<ICollabConfig>) => {\n if (data?.data?.collab?.fromShare) {\n Config.set(\n \"collab.pauseFeedback\",\n data?.data?.collab?.pauseFeedback\n );\n handleRemoveCommentIcons(true);\n return;\n }\n\n Config.set(\"collab.enable\", false);\n Config.set(\"collab.isFeedbackMode\", false);\n\n handleRemoveCommentIcons();\n }\n );\n\n const collabThreadRemove = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREADS_REMOVE,\n (data: OnEvent<IThreadRemove>) => {\n const threadUids = data?.data?.threadUids;\n\n if (!config?.collab?.enable) return;\n\n if (data?.data?.updateConfig) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n if (threadUids.length > 0) {\n threadUids.forEach((threadUid) => {\n removeCollabIcon(threadUid);\n });\n }\n }\n );\n\n const collabThreadReopen = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_REOPEN,\n (data: OnEvent<IThreadReopen>) => {\n const thread = data.data.thread;\n\n if (!config?.collab?.enable) return;\n\n const result = generateThread(thread, {\n hidden: Boolean(config?.collab?.pauseFeedback),\n });\n if (result) {\n handleMissingThreads({\n payload: { isElementPresent: false },\n threadUids: [result],\n });\n }\n }\n );\n\n const collabThreadHighlight = visualBuilderPostMessage?.on(\n VisualBuilderPostMessageEvents.COLLAB_THREAD_HIGHLIGHT,\n (data: OnEvent<IThreadIdentifier>) => {\n const { threadUid } = data.data;\n if (!config?.collab?.enable || config?.collab?.pauseFeedback)\n return;\n\n HighlightThread(threadUid);\n }\n );\n\n return () => {\n collabEnable?.unregister();\n collabPayload?.unregister();\n collabDisable?.unregister();\n collabThreadRemove?.unregister();\n collabThreadReopen?.unregister();\n collabThreadHighlight?.unregister();\n };\n};\n"],"mappings":"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","names":["import_generateThread","Config","visualBuilderPostMessage"]}