@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 • 5.41 kB
Source Map (JSON)
{"version":3,"sources":["../../../../../src/visualBuilder/components/Collab/CollabIndicator.tsx"],"sourcesContent":["/** @jsxImportSource preact */\nimport { collabStyles } from \"../../collab.style\";\nimport { useState, useEffect } from \"preact/hooks\";\nimport classNames from \"classnames\";\nimport React from \"preact/compat\";\nimport ThreadPopup from \"./ThreadPopup\";\nimport Config from \"../../../configManager/configManager\";\nimport { IActiveThread, IInviteMetadata } from \"../../types/collab.types\";\nimport { useCollabIndicator } from \"../../hooks/useCollabIndicator\";\nimport { useCollabOperations } from \"../../hooks/useCollabOperations\";\nimport { handleEmptyThreads } from \"../../generators/generateThread\";\nimport { iconComponents } from \"../icons/CollabIcons\";\nexport interface ICollabIndicator {\n newThread?: boolean;\n activeThread?: IActiveThread;\n}\n\nconst CollabIndicator: React.FC<ICollabIndicator> = (props) => {\n const config = Config.get();\n const [inviteMetadata, setInviteMetadata] = useState<IInviteMetadata>(\n config?.collab?.inviteMetadata\n );\n\n useEffect(() => {\n setInviteMetadata(config?.collab?.inviteMetadata);\n }, [config?.collab?.inviteMetadata]);\n\n const {\n buttonRef,\n popupRef,\n showPopup,\n setShowPopup,\n activeThread,\n setActiveThread,\n togglePopup,\n } = useCollabIndicator({\n newThread: props.newThread ?? false,\n thread: props.activeThread || { _id: \"new\" },\n });\n\n const {\n createComment,\n editComment,\n deleteComment,\n resolveThread,\n fetchComments,\n createNewThread,\n deleteThread,\n } = useCollabOperations();\n\n const handleClose = (isResolved: boolean = false) => {\n if (isResolved) {\n buttonRef.current?.closest(\"div[field-path]\")?.remove();\n }\n handleEmptyThreads();\n setShowPopup(false);\n\n if (config?.collab?.isFeedbackMode === false) {\n Config.set(\"collab.isFeedbackMode\", true);\n }\n };\n const IconComponent = iconComponents[\"Indicator\"];\n\n return (\n <>\n <button\n ref={buttonRef}\n data-testid=\"collab-indicator\"\n className={classNames(\n \"collab-indicator\",\n collabStyles()[\"collab-indicator\"]\n )}\n onClick={togglePopup}\n >\n <IconComponent active={!showPopup} />\n </button>\n {showPopup && (\n <div\n ref={popupRef}\n className={classNames(\n \"collab-popup\",\n collabStyles()[\"collab-popup\"]\n )}\n data-testid=\"collab-popup\"\n >\n <ThreadPopup\n onCreateComment={createComment}\n onEditComment={editComment}\n onDeleteComment={deleteComment}\n onClose={handleClose}\n onResolve={resolveThread}\n inviteMetadata={inviteMetadata}\n loadMoreMessages={fetchComments}\n activeThread={activeThread}\n setActiveThread={setActiveThread}\n onDeleteThread={deleteThread}\n createNewThread={() =>\n createNewThread(buttonRef, inviteMetadata)\n }\n />\n </div>\n )}\n </>\n );\n};\n\nexport default CollabIndicator;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA6B;AAC7B,mBAAoC;AACpC,wBAAuB;AAEvB,yBAAwB;AACxB,2BAAmB;AAEnB,gCAAmC;AACnC,iCAAoC;AACpC,4BAAmC;AACnC,yBAA+B;AAqDvB;AA/CR,IAAM,kBAA8C,CAAC,UAAU;AAC3D,QAAM,SAAS,qBAAAA,QAAO,IAAI;AAC1B,QAAM,CAAC,gBAAgB,iBAAiB,QAAI;AAAA,IACxC,QAAQ,QAAQ;AAAA,EACpB;AAEA,8BAAU,MAAM;AACZ,sBAAkB,QAAQ,QAAQ,cAAc;AAAA,EACpD,GAAG,CAAC,QAAQ,QAAQ,cAAc,CAAC;AAEnC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,QAAI,8CAAmB;AAAA,IACnB,WAAW,MAAM,aAAa;AAAA,IAC9B,QAAQ,MAAM,gBAAgB,EAAE,KAAK,MAAM;AAAA,EAC/C,CAAC;AAED,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,QAAI,gDAAoB;AAExB,QAAM,cAAc,CAAC,aAAsB,UAAU;AACjD,QAAI,YAAY;AACZ,gBAAU,SAAS,QAAQ,iBAAiB,GAAG,OAAO;AAAA,IAC1D;AACA,kDAAmB;AACnB,iBAAa,KAAK;AAElB,QAAI,QAAQ,QAAQ,mBAAmB,OAAO;AAC1C,2BAAAA,QAAO,IAAI,yBAAyB,IAAI;AAAA,IAC5C;AAAA,EACJ;AACA,QAAM,gBAAgB,kCAAe,WAAW;AAEhD,SACI,4EACI;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,KAAK;AAAA,QACL,eAAY;AAAA,QACZ,eAAW,kBAAAC;AAAA,UACP;AAAA,cACA,4BAAa,EAAE,kBAAkB;AAAA,QACrC;AAAA,QACA,SAAS;AAAA,QAET,sDAAC,iBAAc,QAAQ,CAAC,WAAW;AAAA;AAAA,IACvC;AAAA,IACC,aACG;AAAA,MAAC;AAAA;AAAA,QACG,KAAK;AAAA,QACL,eAAW,kBAAAA;AAAA,UACP;AAAA,cACA,4BAAa,EAAE,cAAc;AAAA,QACjC;AAAA,QACA,eAAY;AAAA,QAEZ;AAAA,UAAC,mBAAAC;AAAA,UAAA;AAAA,YACG,iBAAiB;AAAA,YACjB,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,WAAW;AAAA,YACX;AAAA,YACA,kBAAkB;AAAA,YAClB;AAAA,YACA;AAAA,YACA,gBAAgB;AAAA,YAChB,iBAAiB,MACb,gBAAgB,WAAW,cAAc;AAAA;AAAA,QAEjD;AAAA;AAAA,IACJ;AAAA,KAER;AAER;AAEA,IAAO,0BAAQ;","names":["Config","classNames","ThreadPopup"]}