{"version":3,"file":"static/js/main-49a8f843.52db5b38.js","mappings":"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","sources":["Components/Node/common-components/nodeTopToolbar/fontSize.js","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/AIOptionsToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/TextColorToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/HighlightTextToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/ListTypesToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/TextAlignmentToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/FontStyleToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/FontSizeToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/FontFamilyToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/ContentTypeToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/BorderToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/BackgroundColorToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/StickyNoteTypesMenuItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/AuthorToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/LockUnlockToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/MindMapNodesToolbar.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/ShapesListToolbarItem.jsx","Components/Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/constants.js","Components/Node/common-components/nodeTopToolbar/components/BackgroundTool.js","Components/Node/common-components/nodeTopToolbar/components/BorderTool.js","Components/Node/common-components/nodeTopToolbar/components/LinkTool.js"],"sourcesContent":["import { Extension } from '@tiptap/react';\r\n\r\n/**\r\n * FontSize - Custom Extension\r\n * editor.commands.setFontSize(e.target.value) :set the font-size.\r\n */\r\n\r\n\r\nconst FontSize = Extension.create({\r\n name: 'fontSize',\r\n addOptions() {\r\n return {\r\n types: ['textStyle'],\r\n };\r\n },\r\n addGlobalAttributes() {\r\n return [\r\n {\r\n types: this.options.types,\r\n attributes: {\r\n fontSize: {\r\n default: null,\r\n parseHTML: element => element.style.fontSize.replace(/['\"]+/g, ''),\r\n renderHTML: attributes => {\r\n if (!attributes.fontSize) {\r\n return {};\r\n }\r\n return {\r\n style: `font-size: ${attributes.fontSize}`,\r\n };\r\n },\r\n },\r\n },\r\n },\r\n ];\r\n },\r\n addCommands() {\r\n return {\r\n setFontSize: fontSize => ({ chain }) => {\r\n return chain()\r\n .setMark('textStyle', { fontSize: fontSize })\r\n .run();\r\n },\r\n unsetFontSize: () => ({ chain }) => {\r\n return chain()\r\n .setMark('textStyle', { fontSize: null })\r\n .removeEmptyTextStyle()\r\n .run();\r\n },\r\n };\r\n },\r\n});\r\n\r\nexport default FontSize;\r\n","import { Box, IconButton, Stack, Typography } from \"@mui/material\";\r\nimport {\r\n Ic3StarsColored,\r\n Ic3StartsFill,\r\n IcArrowDown2,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport SimpleCircularProgress from \"../../../../../../common-components/SimpleCircularProgress\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { useState } from \"react\";\r\nimport commanService from \"../../../../../../CommanFunctions/commanService\";\r\nimport {\r\n getId,\r\n removeHTMLTags,\r\n} from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { getNodesBoundingClient } from \"../../../../../GenerativeAI/utils\";\r\nimport { errorToast, warningToast } from \"../../../../../../Redux/toastSlice\";\r\nimport { changeToneData, documentTypesData, translateData } from \"./constants\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { Node } from \"../../../../../GenerativeAI/libs/Node\";\r\n\r\nexport default function AIOptionsToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n editor,\r\n node,\r\n toolbarItemName = \"ai-options\",\r\n currentTextColor,\r\n onlybgColor,\r\n}) {\r\n const dispatch = useDispatch();\r\n const { setCenter, getZoom, getNodes } = useReactFlow();\r\n\r\n const [aiLoading, setAILoading] = useState(false);\r\n\r\n const [activeSubMenu, setActiveSubMenu] = useState(null);\r\n\r\n const toggleSubMenuItem = (subMenu = null) => {\r\n if (subMenu === activeSubMenu) {\r\n setActiveSubMenu(null);\r\n } else {\r\n setActiveSubMenu(subMenu);\r\n }\r\n };\r\n\r\n const isActiveSubMenu = (subMenu) => {\r\n return activeSubMenu === subMenu;\r\n };\r\n\r\n const handleDocumentGeneration = async (prompt) => {\r\n setAILoading(true);\r\n\r\n try {\r\n if (!prompt) {\r\n const CustomPromptEvent = new CustomEvent(\"CustomPromptEvent\", {\r\n detail: {\r\n selectedNodeId: node.id,\r\n },\r\n });\r\n document.dispatchEvent(CustomPromptEvent);\r\n return;\r\n }\r\n const response = await commanService.postApi(\r\n \"drawboard\",\r\n \"v2/generate/generate-content\",\r\n {\r\n prompt: JSON.stringify({\r\n topic: prompt.replace(\r\n \"{{context}}\",\r\n removeHTMLTags(node?.data?.editorHTML ?? node.data.label)\r\n ),\r\n parent_context: node?.data?.editorHTML ?? node.data.label,\r\n }),\r\n content_type: \"document_summary\",\r\n }\r\n );\r\n\r\n const result = response.data.data;\r\n\r\n const parser = new DOMParser();\r\n\r\n // Parse the HTML string into a Document object\r\n const doc = parser.parseFromString(result, \"text/html\");\r\n\r\n // Extract the content inside and <body>\r\n const title = doc.querySelector(\"title\")\r\n ? doc.querySelector(\"title\").textContent\r\n : \"\";\r\n const body = doc.querySelector(\"body\") ? doc.querySelector(\"body\") : \"\";\r\n\r\n const bodyText = body.innerHTML.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n\r\n // Split the cleaned text by spaces and filter out empty strings\r\n const words = bodyText\r\n .trim()\r\n .split(/\\s+/)\r\n .filter((word) => word.length > 0);\r\n const wordCount = words.length;\r\n\r\n let textNode = new Node({\r\n id: getId(),\r\n // height: 'auto',\r\n width: 550,\r\n key: \"document\",\r\n type: \"document\",\r\n backgroundColor: \"#ffff\",\r\n });\r\n\r\n const boundingClient = getNodesBoundingClient(getNodes());\r\n\r\n const position = {\r\n x: boundingClient.x + boundingClient.width + 100,\r\n y: boundingClient.y,\r\n };\r\n\r\n textNode = {\r\n ...textNode,\r\n position: position,\r\n positionAbsolute: position,\r\n name: title,\r\n style: {\r\n // height: \"auto\",\r\n width: 550,\r\n background: \"transparent\",\r\n minHeight: 750,\r\n },\r\n selected: true,\r\n data: {\r\n ...textNode.data,\r\n isInitialContent: true,\r\n editorHTML: body.innerHTML.toString(),\r\n word: wordCount,\r\n title: title,\r\n maxPosition: position,\r\n name: title,\r\n style: {\r\n minHeight: 750,\r\n borderStyle: \"none\",\r\n },\r\n },\r\n };\r\n\r\n delete textNode.data.catagory;\r\n delete textNode.data.editorState;\r\n delete textNode.data.isAutoFont;\r\n delete textNode.data.lastFontSize;\r\n delete textNode.data.word;\r\n delete textNode.data.provider;\r\n\r\n setCenter(position.x + 200, position.y + 200, {\r\n duration: 1000,\r\n zoom: getZoom(),\r\n });\r\n\r\n const GenAIResponse = new CustomEvent(\"GenAIResponse\", {\r\n detail: {\r\n nodes: [textNode],\r\n edges: [],\r\n },\r\n });\r\n\r\n document.dispatchEvent(GenAIResponse);\r\n } catch (error) {\r\n if (error.response.status !== 401) {\r\n if (error.response.status < 500) {\r\n dispatch(\r\n warningToast({\r\n message:\r\n error.response?.data?.message ||\r\n error.response.data?.error[0] ||\r\n error.message,\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n errorToast({\r\n message: \"Oops! Something went wrong\",\r\n })\r\n );\r\n }\r\n }\r\n } finally {\r\n setAILoading(false);\r\n }\r\n };\r\n\r\n const handleChangeContentWithAI = async (content_type) => {\r\n setAILoading(true);\r\n try {\r\n editor.setEditable(true);\r\n editor.commands.focus();\r\n if (editor.state.selection.empty) {\r\n editor.commands.selectAll();\r\n }\r\n\r\n const selection = editor?.state?.selection;\r\n let content = editor?.data?.title ? editor.getHTML() : editor?.getText();\r\n if (!selection.empty) {\r\n content = editor.state.doc.textBetween(\r\n selection.from,\r\n selection.to,\r\n \" \"\r\n );\r\n }\r\n const response = await commanService.postApi(\r\n \"drawboard\",\r\n \"v2/generate/generate-content\",\r\n {\r\n prompt: content || \"\",\r\n content_type,\r\n }\r\n );\r\n\r\n let result = response.data.data;\r\n\r\n if (content.startsWith(\" \")) {\r\n result = \" \" + result;\r\n }\r\n\r\n // Check if str contains a space at the end\r\n if (content.endsWith(\" \")) {\r\n result = result + \" \";\r\n }\r\n\r\n if (!selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .insertContentAt(\r\n {\r\n from: selection.from,\r\n to: selection.to,\r\n },\r\n result\r\n )\r\n .setColor(currentTextColor)\r\n .run();\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n } catch (error) {\r\n if (error.response.status < 500) {\r\n if (error.response.status !== 401) {\r\n dispatch(\r\n warningToast({\r\n message:\r\n error.response?.data?.message ||\r\n error.response.data?.error[0] ||\r\n error.message,\r\n })\r\n );\r\n } else {\r\n dispatch(\r\n errorToast({\r\n message: \"Oops! Something went wrong\",\r\n })\r\n );\r\n }\r\n }\r\n } finally {\r\n setAILoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <Box\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n }}\r\n >\r\n <CustomTooltip\r\n mt={9}\r\n bg={\"transparent\"}\r\n // transform={\"translate(315px, 41px) !important\"}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={!aiLoading && isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n sx={{\r\n minWidth: \"305px\",\r\n position: \"relative\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n p: \"1px\",\r\n borderRadius: \"10px\",\r\n background:\r\n \"linear-gradient(167.78deg, rgba(212, 97, 240, 0.5) -6.05%, rgba(165, 135, 255, 0.5) 50.47%, rgba(97, 140, 255, 0.5) 101.6%)\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Stack\r\n sx={{\r\n width: \"100%\",\r\n height: \"fit-content\",\r\n p: \"10px\",\r\n borderRadius: \"10px\",\r\n background: \"#FFF\",\r\n gap: \"2px\",\r\n }}\r\n >\r\n <Stack\r\n height={\"36px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"10px\"}\r\n px={\"13px\"}\r\n sx={{\r\n borderRadius: \"6px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => handleChangeContentWithAI(\"grammer_fix\")}\r\n >\r\n <Ic3StarsColored />\r\n <Typography fontSize={14} height={\"20px\"} color={\"#18181B\"}>\r\n Fix grammar and spelling\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n height={\"36px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"10px\"}\r\n px={\"13px\"}\r\n sx={{\r\n borderRadius: \"6px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => handleChangeContentWithAI(\"rewrite\")}\r\n >\r\n <Ic3StarsColored />\r\n <Typography fontSize={14} height={\"20px\"} color={\"#18181B\"}>\r\n Rewrite for clarity\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n height={\"36px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n gap={\"10px\"}\r\n px={\"13px\"}\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"6px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n background: isActiveSubMenu(\"change-tones\")\r\n ? \"#F7F7F7\"\r\n : \"transparent\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => {\r\n toggleSubMenuItem(\"change-tones\");\r\n }}\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"10px\"}\r\n >\r\n <Ic3StarsColored />\r\n <Typography fontSize={14} height={\"20px\"} color={\"#18181B\"}>\r\n Change tone\r\n </Typography>\r\n </Stack>\r\n <Box\r\n sx={{\r\n transform: \"rotate(-90deg)\",\r\n }}\r\n >\r\n <IcArrowDown2 width=\"20\" height=\"20\" fill=\"#18181B\" />\r\n </Box>\r\n\r\n {isActiveSubMenu(\"change-tones\") && (\r\n <Stack\r\n sx={{\r\n minWidth: \"140px\",\r\n position: \"absolute\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n p: \"1px\",\r\n borderRadius: \"10px\",\r\n overflow: \"hidden\",\r\n top: \"-25%\",\r\n left: \"106%\",\r\n background:\r\n \"linear-gradient(167.78deg, rgba(212, 97, 240, 0.5) -6.05%, rgba(165, 135, 255, 0.5) 50.47%, rgba(97, 140, 255, 0.5) 101.6%)\",\r\n }}\r\n >\r\n <Stack\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n p: \"10px\",\r\n borderRadius: \"10px\",\r\n background: \"#FFF\",\r\n gap: \"2px\",\r\n }}\r\n >\r\n {changeToneData.map((tone, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n justifyContent={\"center\"}\r\n sx={{\r\n height: \"36px\",\r\n borderRadius: \"8px\",\r\n px: \"15px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => handleChangeContentWithAI(tone.key)}\r\n >\r\n <Typography\r\n fontSize={14}\r\n color={\"#18181B\"}\r\n height={\"20px\"}\r\n >\r\n {tone.label}\r\n </Typography>\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n )}\r\n </Stack>\r\n <Stack\r\n height={\"36px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n gap={\"10px\"}\r\n px={\"13px\"}\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"6px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n background: isActiveSubMenu(\"translate\")\r\n ? \"#F7F7F7\"\r\n : \"transparent\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => {\r\n toggleSubMenuItem(\"translate\");\r\n }}\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"10px\"}\r\n >\r\n <Ic3StarsColored />\r\n <Typography fontSize={14} height={\"20px\"} color={\"#18181B\"}>\r\n Translate\r\n </Typography>\r\n </Stack>\r\n <Box\r\n sx={{\r\n transform: \"rotate(-90deg)\",\r\n }}\r\n >\r\n <IcArrowDown2 width=\"20\" height=\"20\" fill=\"#18181B\" />\r\n </Box>\r\n\r\n {isActiveSubMenu(\"translate\") && (\r\n <Stack\r\n sx={{\r\n minWidth: \"140px\",\r\n position: \"absolute\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n p: \"1px\",\r\n borderRadius: \"10px\",\r\n overflow: \"auto\",\r\n top: \"-50%\",\r\n left: \"106%\",\r\n maxHeight: \"400px\",\r\n background: \"transparent\",\r\n border: \"2px solid transparent\",\r\n backgroundImage:\r\n \"linear-gradient(#FFF, #FFF), linear-gradient(167.78deg, rgba(212, 97, 240, 0.5) -6.05%, rgba(165, 135, 255, 0.5) 50.47%, rgba(97, 140, 255, 0.5) 101.6%)\",\r\n backgroundOrigin: \"border-box\",\r\n backgroundClip: \"padding-box, border-box\",\r\n // background:\r\n // \"linear-gradient(167.78deg, rgba(212, 97, 240, 0.5) -6.05%, rgba(165, 135, 255, 0.5) 50.47%, rgba(97, 140, 255, 0.5) 101.6%)\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n }}\r\n >\r\n <Stack\r\n sx={{\r\n p: \"10px\",\r\n borderRadius: \"10px\",\r\n background: \"#FFF\",\r\n gap: \"2px\",\r\n height: \"100%\",\r\n pointerEvents: \"all\",\r\n pr: \"5px\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {translateData.map((translate, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n justifyContent={\"center\"}\r\n sx={{\r\n minHeight: \"36px\",\r\n borderRadius: \"8px\",\r\n px: \"15px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() =>\r\n handleChangeContentWithAI(translate.key)\r\n }\r\n >\r\n <Typography\r\n fontSize={14}\r\n color={\"#18181B\"}\r\n height={\"20px\"}\r\n >\r\n {translate.label}\r\n </Typography>\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n )}\r\n </Stack>\r\n {/* Document generation types */}\r\n <Stack\r\n height={\"36px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n gap={\"10px\"}\r\n px={\"13px\"}\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"6px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n background: isActiveSubMenu(\"document-types\")\r\n ? \"#F7F7F7\"\r\n : \"transparent\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => {\r\n toggleSubMenuItem(\"document-types\");\r\n }}\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"10px\"}\r\n >\r\n <Ic3StarsColored />\r\n <Typography fontSize={14} height={\"20px\"} color={\"#18181B\"}>\r\n Document\r\n </Typography>\r\n </Stack>\r\n <Box\r\n sx={{\r\n transform: \"rotate(-90deg)\",\r\n }}\r\n >\r\n <IcArrowDown2 width=\"20\" height=\"20\" fill=\"#18181B\" />\r\n </Box>\r\n\r\n {isActiveSubMenu(\"document-types\") && (\r\n <Stack\r\n sx={{\r\n minWidth: \"210px\",\r\n position: \"absolute\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n p: \"1px\",\r\n borderRadius: \"10px\",\r\n overflow: \"auto\",\r\n top: \"-50%\",\r\n left: \"106%\",\r\n maxHeight: \"400px\",\r\n background:\r\n \"linear-gradient(167.78deg, rgba(212, 97, 240, 0.5) -6.05%, rgba(165, 135, 255, 0.5) 50.47%, rgba(97, 140, 255, 0.5) 101.6%)\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n }}\r\n >\r\n <Stack\r\n sx={{\r\n p: \"10px\",\r\n borderRadius: \"10px\",\r\n background: \"#FFF\",\r\n gap: \"2px\",\r\n height: \"100%\",\r\n pointerEvents: \"all\",\r\n pr: \"5px\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {documentTypesData.map((doc, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n justifyContent={\"center\"}\r\n sx={{\r\n minHeight: \"36px\",\r\n borderRadius: \"8px\",\r\n px: \"15px\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n\r\n \"&:hover\": {\r\n background: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => handleDocumentGeneration(doc.prompt)}\r\n >\r\n <Typography\r\n fontSize={14}\r\n color={\"#18181B\"}\r\n height={\"20px\"}\r\n >\r\n {doc.label}\r\n </Typography>\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n )}\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n }\r\n >\r\n <Box\r\n sx={{\r\n marginRight: \"10px\",\r\n borderRight: \"1px solid #EAECF0\",\r\n height: \"36px !important\",\r\n width: \"45px !important\",\r\n }}\r\n >\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={aiLoading.aiLoader ? \"Generating...\" : \"AI\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n {aiLoading ? (\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n padding: \"0px\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <SimpleCircularProgress\r\n size=\"1.2rem\"\r\n loaderColor=\"#618CFF\"\r\n loaderPathColor=\"#C5C5C5\"\r\n />\r\n </IconButton>\r\n ) : (\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n // border: '1px solid blue',\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n padding: \"0px\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n background:\r\n editor?.getText()?.trim()?.length > 0\r\n ? \"linear-gradient(167.78deg, #D461F0 -6.05%, #A587FF 50.47%, #618CFF 101.6%)\"\r\n : \"#F5F5F5\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <Ic3StartsFill\r\n width=\"21\"\r\n height=\"21\"\r\n fill={\r\n editor?.getText()?.trim()?.length > 0\r\n ? \"#FFFFFF\"\r\n : \"#C1C1C0\"\r\n }\r\n />\r\n </IconButton>\r\n )}\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton } from \"@mui/material\";\r\nimport { IcTextColor } from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport BackgroundTool from \"../../components/BackgroundTool\";\r\nimport { toRgba } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\n\r\nexport default function TextColorToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n editor,\r\n node,\r\n onlybgColor,\r\n currentTextColor,\r\n handleChangeTextColor,\r\n toolbarItemName = \"text-color\",\r\n}) {\r\n return (\r\n <Box\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <BackgroundTool\r\n node={node}\r\n colorHeading={\"Text Color\"}\r\n selectedNodeColor={toRgba(currentTextColor)}\r\n showOpacity={false}\r\n onChangeColor={handleChangeTextColor}\r\n />\r\n }\r\n >\r\n <Box>\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Text Color\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n padding: \"0px\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcTextColor fill={onlybgColor ? \"#84838280\" : \"#282828\"} />\r\n <Box\r\n sx={{\r\n mt: \"2px\",\r\n ml: \"0.9px\",\r\n height: \"3px\",\r\n width: \"20px\",\r\n backgroundColor: currentTextColor\r\n ? currentTextColor\r\n : node?.data?.color,\r\n outline: `0.5px solid #e6e6e6`,\r\n }}\r\n />\r\n </IconButton>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton, Stack } from \"@mui/material\";\r\nimport IcHighlightTransparent from \"../../../../../../assets/icon-components/IcHighlightTransparent\";\r\nimport { IcFillColor } from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport BackgroundTool from \"../../components/BackgroundTool\";\r\nimport { toRgba } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\n\r\nexport default function HighlightTextToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n editor,\r\n node,\r\n toolbarItemName = \"highlight-text\",\r\n onlybgColor,\r\n setCurrentTextHighlightColor,\r\n currentTextHighlightColor,\r\n}) {\r\n return (\r\n <Box\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <BackgroundTool\r\n node={node}\r\n colorHeading={\"Highlight Text Color\"}\r\n selectedNodeColor={toRgba(currentTextHighlightColor)}\r\n showOpacity={false}\r\n onChangeColor={(color) => {\r\n const regex =\r\n /rgba\\((NaN|undefined),\\s*(NaN|undefined),\\s*(NaN|undefined),\\s*(\\d+(\\.\\d+)?)\\)/;\r\n\r\n if (!color.match(regex)) {\r\n setCurrentTextHighlightColor(color);\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode()\r\n .selectAll()\r\n .toggleHighlight({ color })\r\n .run();\r\n } else {\r\n editor.chain().focus().toggleHighlight({ color }).run();\r\n }\r\n toggleToolbarItem();\r\n }\r\n }}\r\n />\r\n }\r\n >\r\n <Box\r\n sx={{\r\n // paddingRight: \"7px\",\r\n // borderRight: \"1px solid #EFF0F3\",\r\n }}\r\n >\r\n <Stack>\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Highlight Text\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n padding: \"0px\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcFillColor fill={onlybgColor ? \"#84838280\" : \"#282828\"} />\r\n <Box\r\n sx={{\r\n mt: \"2px\",\r\n ml: \"0.9px\",\r\n height: \"3px\",\r\n width: \"20px\",\r\n backgroundColor:\r\n currentTextHighlightColor &&\r\n currentTextHighlightColor !== \"transparent\"\r\n ? currentTextHighlightColor\r\n : \"transparent\", // Set the box's background to transparent if the color is \"transparent\"\r\n outline: `0.5px solid #e6e6e6`,\r\n position: \"relative\", // Needed for icon positioning\r\n }}\r\n >\r\n {(!currentTextHighlightColor ||\r\n currentTextHighlightColor === \"transparent\" ||\r\n currentTextHighlightColor === \"rgba(0, 0, 0, 0)\") && (\r\n <Stack\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n outline: \"0px\",\r\n }}\r\n >\r\n <IcHighlightTransparent />\r\n </Stack>\r\n )}\r\n </Box>\r\n </IconButton>\r\n </ToolTipWithDisabled>\r\n </Stack>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton, Stack } from \"@mui/material\";\r\nimport {\r\n IcListOutlined,\r\n IcNumberListOutlined,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\n\r\nexport default function ListTypesToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n editor,\r\n textStyles,\r\n onlybgColor,\r\n toolbarItemName = \"list-type\",\r\n}) {\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n // arrow\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"0px 5px\"}\r\n sx={{\r\n p: \"8px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n border: \"1px solid #EFF0F3\",\r\n }}\r\n >\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor:\r\n textStyles.listType === \"bullet\"\r\n ? color?.lightPrimary\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(_) => {\r\n editor.chain().focus().toggleBulletList().run();\r\n }}\r\n >\r\n <IcListOutlined\r\n fill={\r\n textStyles.listType === \"bullet\"\r\n ? color?.primaryColor\r\n : \"#18181B\"\r\n }\r\n />\r\n </IconButton>\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor:\r\n textStyles.listType === \"ordered\"\r\n ? color?.lightPrimary\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(_) => {\r\n editor.chain().focus().toggleOrderedList().run();\r\n }}\r\n >\r\n <IcNumberListOutlined\r\n fill={\r\n textStyles.listType === \"ordered\"\r\n ? color?.primaryColor\r\n : \"#282828\"\r\n }\r\n />\r\n </IconButton>\r\n </Stack>\r\n }\r\n >\r\n <Box>\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"List\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n <Stack\r\n sx={{\r\n paddingRight: \"7px\",\r\n borderRight: \"1px solid #EFF0F3\",\r\n }}\r\n >\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: \"7px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n {textStyles.listType === \"ordered\" ? (\r\n <IcNumberListOutlined\r\n fill={onlybgColor ? \"#84838280\" : \"#282828\"}\r\n />\r\n ) : (\r\n <IcListOutlined\r\n fill={onlybgColor ? \"#84838280\" : \"#282828\"}\r\n />\r\n )}\r\n </IconButton>\r\n </Stack>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton, Stack } from \"@mui/material\";\r\nimport {\r\n IcTextAlignCenter,\r\n IcTextAlignItemBottom,\r\n IcTextAlignItemCenter,\r\n IcTextAlignLeft,\r\n IcTextAlignRight,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { updateLocalStorage } from \"../../../../../DrawBoard/utils\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useUndoRedo } from \"../../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { updateJson } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\nimport CommonDivider from \"../../../../../../common-components/CommonDivider\";\r\n\r\nconst textAlignmentIcons = {\r\n left: IcTextAlignLeft,\r\n center: IcTextAlignCenter,\r\n right: IcTextAlignRight,\r\n};\r\n\r\nexport default function TextAlignmentToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n node,\r\n editor,\r\n textStyles,\r\n onlybgColor,\r\n toolbarItemName = \"text-align\",\r\n}) {\r\n const { setNodes } = useReactFlow();\r\n const dispatch = useDispatch();\r\n const { id } = useParams();\r\n const location = useLocation();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n\r\n const currentTextAlignment =\r\n node?.type === \"simpleText\"\r\n ? node?.data?.style?.textAlign\r\n : textStyles?.textAlign;\r\n\r\n const TextAlignmentIcon =\r\n textAlignmentIcons[\r\n [\"left\", \"center\", \"right\"].includes(currentTextAlignment)\r\n ? currentTextAlignment\r\n : \"left\"\r\n ];\r\n\r\n const handleTextAlignmentChange =\r\n (alignment = \"left\") =>\r\n () => {\r\n if (node?.type === \"simpleText\") {\r\n setNodes((prevNodes) => {\r\n const updatedNodes = prevNodes.map((prevNode) => {\r\n if (prevNode.id === node.id) {\r\n return {\r\n ...prevNode,\r\n data: {\r\n ...prevNode.data,\r\n style: {\r\n ...prevNode.data.style,\r\n textAlign: alignment,\r\n },\r\n },\r\n };\r\n }\r\n return prevNode;\r\n });\r\n updateLocalStorage(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n\r\n const userRowData = localStorage.getItem(\"user_data\");\r\n const userData = userRowData ? JSON.parse(userRowData) : {};\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: userData?.user_id,\r\n lastEvent: `editor_changed_${node?.id}`,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n takeSnapshot,\r\n a_id,\r\n });\r\n return updatedNodes;\r\n });\r\n\r\n return;\r\n } else {\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectAll()\r\n .updateAttributes(\"paragraph\", {\r\n style: `text-align: ${\r\n alignment === \"left\" ? \"start\" : alignment\r\n };`,\r\n })\r\n .run();\r\n editor\r\n .chain()\r\n .focus()\r\n .selectAll()\r\n .updateAttributes(\"paragraph\", {\r\n textAlign: alignment === \"left\" ? \"start\" : alignment,\r\n })\r\n .run();\r\n // editor\r\n // .chain()\r\n // .focus()\r\n // .selectAll()\r\n // .setTextAlign(alignment)\r\n // .run();\r\n } else {\r\n editor\r\n .chain()\r\n .focus()\r\n .updateAttributes(\"paragraph\", {\r\n style: `text-align: ${alignment};`,\r\n })\r\n .run();\r\n editor\r\n .chain()\r\n .focus()\r\n .updateAttributes(\"paragraph\", {\r\n textAlign: alignment,\r\n })\r\n .run();\r\n editor.chain().focus().setTextAlign(alignment).run();\r\n }\r\n }\r\n\r\n toggleToolbarItem(toolbarItemName);\r\n };\r\n\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n // arrow\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n sx={{\r\n p: \"8px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n width: \"136px\",\r\n }}\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"0px 5px\"}\r\n flexWrap={\"wrap\"}\r\n >\r\n {Object.keys(textAlignmentIcons).map((key) => {\r\n const TextAlignmentIcon = textAlignmentIcons[key];\r\n return (\r\n <IconButton\r\n key={key}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor:\r\n currentTextAlignment === key\r\n ? color?.lightPrimary\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={handleTextAlignmentChange(key)}\r\n >\r\n <TextAlignmentIcon\r\n fill={\r\n currentTextAlignment === key\r\n ? color?.primaryColor\r\n : \"#18181B\"\r\n }\r\n // height=\"14\"\r\n // width=\"18\"\r\n />\r\n </IconButton>\r\n );\r\n })}\r\n </Stack>\r\n {node?.type === \"Table\" ? (\r\n <>\r\n <CommonDivider\r\n my=\"0px\"\r\n sx={{\r\n margin: \"8px 0px !important\",\r\n }}\r\n />\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"0px 5px\"}\r\n flexWrap={\"wrap\"}\r\n >\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor:\r\n node?.data?.style?.alignItems === \"center\"\r\n ? color?.lightPrimary\r\n : \"#FFF\",\r\n \"&:hover\": {\r\n bgcolor: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => {\r\n let updatedNodes = [];\r\n setNodes(\r\n (prevNodes) =>\r\n (updatedNodes = prevNodes.map((n) =>\r\n n.id === node.id\r\n ? {\r\n ...n,\r\n data: {\r\n ...n.data,\r\n style: {\r\n ...n.data.style,\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n },\r\n },\r\n }\r\n : n\r\n ))\r\n );\r\n }}\r\n >\r\n <IcTextAlignItemCenter\r\n // height=\"14\"\r\n // width=\"18\"\r\n fill={\r\n node?.data?.style?.alignItems === \"center\"\r\n ? color?.primaryColor\r\n : \"#18181B\"\r\n }\r\n />\r\n </IconButton>\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor:\r\n node?.data?.style?.alignItems === \"end\"\r\n ? color?.lightPrimary\r\n : \"#FFF\",\r\n \"&:hover\": {\r\n bgcolor: \"#F7F7F7\",\r\n },\r\n }}\r\n onClick={() => {\r\n let updatedNodes = [];\r\n setNodes(\r\n (prevNodes) =>\r\n (updatedNodes = prevNodes.map((n) =>\r\n n.id === node.id\r\n ? {\r\n ...n,\r\n data: {\r\n ...n.data,\r\n style: {\r\n ...n.data.style,\r\n alignItems: \"end\",\r\n textAlign: \"right\",\r\n },\r\n },\r\n }\r\n : n\r\n ))\r\n );\r\n }}\r\n >\r\n <IcTextAlignItemBottom\r\n fill={\r\n node?.data?.style?.alignItems === \"end\"\r\n ? \"red\"\r\n : \"#282828\"\r\n }\r\n />\r\n </IconButton>\r\n </Stack>\r\n </>\r\n ) : null}\r\n </Stack>\r\n }\r\n >\r\n <Box>\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Text Align\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n transition: \"all 0.3s ease\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: \"7px\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <TextAlignmentIcon fill={onlybgColor ? \"#84838280\" : \"#282828\"} />\r\n </IconButton>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton, Stack } from \"@mui/material\";\r\nimport {\r\n IcFontStyle,\r\n IcTextBold,\r\n IcTextItalic,\r\n IcTextStrickTrough,\r\n IcTextUnderline,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport {\r\n CustomNameTooltip,\r\n CustomTooltip,\r\n} from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\n\r\nexport default function FontStyleToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n onlybgColor,\r\n textStyles,\r\n editor,\r\n toolbarItemName = \"font-style\",\r\n}) {\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"0px 5px\"}\r\n sx={{\r\n p: \"8px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n border: \"1px solid #EFF0F3\",\r\n }}\r\n >\r\n <CustomNameTooltip placement=\"top\" title={\"Bold\"} arrow>\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: textStyles.isBold ? color?.lightPrimary : \"#FFF\",\r\n padding: \"0px\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode()\r\n .selectAll()\r\n .toggleBold()\r\n .run();\r\n } else {\r\n editor.chain().focus().toggleBold().run();\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcTextBold fill={textStyles.isBold ? color.primaryColor : \"#121212\"} />\r\n </IconButton>\r\n </CustomNameTooltip>\r\n\r\n <CustomNameTooltip placement=\"top\" title={\"Italic\"} arrow>\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: textStyles.isItalic ? color?.lightPrimary : \"#FFF\",\r\n padding: \"0px\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode()\r\n .selectAll()\r\n .toggleItalic()\r\n .run();\r\n } else {\r\n editor.chain().focus().toggleItalic().run();\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcTextItalic fill={textStyles.isItalic ? color?.primaryColor : \"#121212\"} />\r\n </IconButton>\r\n </CustomNameTooltip>\r\n\r\n <CustomNameTooltip placement=\"top\" title={\"Underline\"} arrow>\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n padding: \"0px\",\r\n borderRadius: \"5px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: textStyles.isUnderline ? color?.lightPrimary : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode()\r\n .selectAll()\r\n .toggleUnderline()\r\n .run();\r\n } else {\r\n editor.chain().focus().toggleUnderline().run();\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcTextUnderline fill={textStyles.isUnderline ? color?.primaryColor : \"#121212\"} />\r\n </IconButton>\r\n </CustomNameTooltip>\r\n\r\n <CustomNameTooltip placement=\"top\" title={\"Strick Through\"} arrow>\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"5px\",\r\n padding: \"0px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: textStyles.isStrikethrough ? color?.lightPrimary : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (editor.state.selection.empty) {\r\n editor.chain().focus().selectAll().toggleStrike().run();\r\n } else {\r\n editor.chain().focus().toggleStrike().run();\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcTextStrickTrough\r\n fill={textStyles.isStrikethrough ? color?.primaryColor : \"#121212\"}\r\n />\r\n </IconButton>\r\n </CustomNameTooltip>\r\n </Stack>\r\n }\r\n >\r\n <Box>\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Font Style\"}\r\n disabled={isActiveToolbarItem(toolbarItemName)}\r\n >\r\n <IconButton\r\n disabled={onlybgColor}\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: \"7px\",\r\n transition: \"all 0.3s ease\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <IcFontStyle fill={onlybgColor ? \"#84838280\" : \"#282828\"} />\r\n </IconButton>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, IconButton, Stack, Typography } from \"@mui/material\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { debounce } from \"lodash\";\r\nimport { cqminToPx } from \"../../../../../DrawBoard/utils\";\r\nimport { useMemo, useRef } from \"react\";\r\nimport IcPlus from \"../../../../../../assets/icon-components/IcPlus\";\r\nimport {\r\n IcDecresFontSize,\r\n IcDownOutlined,\r\n IcIncreseFontSize,\r\n IcUpDownOutlined,\r\n IcUpOutlined,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\n\r\nexport default function FontSizeToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n isAutoFont,\r\n updateNodeFontsize,\r\n currentFontSize,\r\n node,\r\n toolbarItemName = \"font-size\",\r\n setChangingFontSize,\r\n}) {\r\n const fontSizeArr = [\r\n // \"Auto\",\r\n ...Array.from({ length: 23 - 8 }, (_, i) => 8 + i), // Generate numbers from 8 to 22\r\n ];\r\n\r\n // const font = useMemo(() => {\r\n // const isFontSizeInCqmin = currentFontSize?.includes(\"cqmin\")\r\n\r\n // const fontSizeInPx = isFontSizeInCqmin ? cqminToPx(currentFontSize, node.id) : currentFontSize\r\n\r\n // const splittedFont = (currentFontSize ? String(currentFontSize) : \"\")?.split(\r\n // \"px\"\r\n // );\r\n // return parseFloat(splittedFont?.[0]);\r\n // }, [currentFontSize])\r\n\r\n const splittedFont = (currentFontSize ? String(currentFontSize) : \"\")?.split(\r\n \"px\"\r\n );\r\n const font = parseFloat(splittedFont?.[0]);\r\n\r\n const handleUpdateFontSize = debounce((fontSize) => {\r\n if (fontSize < 0) return;\r\n updateNodeFontsize(fontSize);\r\n }, 100);\r\n\r\n return (\r\n <Box\r\n onMouseOver={() => {\r\n setChangingFontSize(true);\r\n }}\r\n onMouseLeave={() => {\r\n setChangingFontSize(false);\r\n }}\r\n >\r\n <CustomTooltip\r\n mt={9}\r\n // arrow\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(false)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n alignItems={\"center\"}\r\n gap={\"12px\"}\r\n sx={{\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n p: \"6px\",\r\n borderRadius: \"10px\",\r\n width: \"60px !important\",\r\n }}\r\n >\r\n {fontSizeArr?.map((val, i) => {\r\n return (\r\n <Typography\r\n key={i + 1}\r\n fontSize={14}\r\n fontWeight={500}\r\n p={\"12px 6px\"}\r\n color={font === val ? color.primaryColor : color.titleDark}\r\n height={\"20px\"}\r\n borderRadius={\"8px\"}\r\n bgcolor={font === val ? color.lightPrimary : color.whiteColor}\r\n sx={{\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n \"&:hover\": {\r\n bgcolor: font !== val && \"#f5f5f5\",\r\n },\r\n }}\r\n onClick={(_) => {\r\n _.stopPropagation();\r\n handleUpdateFontSize(val);\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n {val}\r\n </Typography>\r\n );\r\n })}\r\n </Stack>\r\n }\r\n >\r\n <Box\r\n sx={{\r\n paddingRight: \"7px\",\r\n borderRight: \"1px solid #EFF0F3\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Font Size\"}\r\n disabled={false}\r\n >\r\n <Box\r\n sx={{\r\n height: \"36px !important\",\r\n borderRadius: \"8px\",\r\n transition: \"all 0.3s ease\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n px: \"8px\",\r\n bgcolor: isActiveToolbarItem(toolbarItemName)\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n >\r\n {/* <Typography\r\n fontSize={14}\r\n fontWeight={500}\r\n color={\"#282828\"}\r\n height={\"20px\"}\r\n >\r\n {isAutoFont ? \"Auto\" : `${font}`}\r\n </Typography> */}\r\n {isAutoFont ? (\r\n <Typography\r\n fontSize={14}\r\n fontWeight={500}\r\n color={\"#282828\"}\r\n height={\"20px\"}\r\n >\r\n Auto\r\n </Typography>\r\n ) : (\r\n <input\r\n type=\"number\"\r\n min={1}\r\n max={300}\r\n value={font}\r\n style={{ border: 0, width: \"1.8rem\" }}\r\n onChange={(e) => handleUpdateFontSize(e.target.value)}\r\n />\r\n )}\r\n\r\n {/* <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: 'column',\r\n padding: 0,\r\n gap: 2\r\n }}\r\n >\r\n <IconButton sx={{ height: 1, padding: 0 }} onClick={(e) => {\r\n e.stopPropagation();\r\n handleUpdateFontSize(font + 1)\r\n }}>\r\n <IcUpOutlined height={10} />\r\n </IconButton>\r\n <IconButton sx={{ height: 1, padding: 0 }} onClick={(e) => {\r\n e.stopPropagation();\r\n handleUpdateFontSize(font - 1)\r\n }}>\r\n <IcDownOutlined height={10} />\r\n </IconButton>\r\n </Box> */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"2px\",\r\n }}\r\n >\r\n <IconButton\r\n sx={{\r\n height: \"12px !important\",\r\n width: \"12px !important\",\r\n minWidth: \"10px !important\",\r\n padding: \"0 !important\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleUpdateFontSize(font + 1);\r\n }}\r\n >\r\n {\" \"}\r\n <IcDecresFontSize />\r\n </IconButton>\r\n <IconButton\r\n sx={{\r\n height: \"12px !important\",\r\n width: \"12px !important\",\r\n minWidth: \"10px !important\",\r\n padding: \"0 !important\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleUpdateFontSize(font - 1);\r\n }}\r\n >\r\n <IcIncreseFontSize />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* <IcUpDownOutlined /> */}\r\n </Box>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { fontFamilyArr } from \"./constants\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\r\n\r\nexport default function FontFamilyToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n editor,\r\n node,\r\n fontFamily,\r\n toolbarItemName = \"font-family\",\r\n}) {\r\n const { setNodes } = useReactFlow();\r\n\r\n const updateFontFamily = (fontFamily) => {\r\n if (!editor.state.selection.empty) {\r\n editor.chain().focus().setFontFamily(fontFamily).run();\r\n } else {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode() // Select the entire sticky node\r\n .setFontFamily(fontFamily) // Apply the font family\r\n .run();\r\n setNodes((prevNodes) =>\r\n prevNodes.map((n) => {\r\n if (n.id === node.id) {\r\n return {\r\n ...n,\r\n style: { ...n.style, fontFamily: fontFamily },\r\n data: {\r\n ...n?.data,\r\n style: { ...n.data?.style, fontFamily: fontFamily },\r\n },\r\n };\r\n }\r\n return n;\r\n })\r\n );\r\n }\r\n toggleToolbarItem(toolbarItemName);\r\n };\r\n\r\n const getFontName = (fontFamily) => {\r\n // Normalize the input font family (remove quotes and trim spaces)\r\n const normalizedInput = fontFamily.replace(/['\"]/g, '').trim();\r\n\r\n // Find a matching font from fontFamilyArr\r\n const fontObj = fontFamilyArr.find(font => {\r\n const normalizedStored = font.family.replace(/['\"]/g, '').trim();\r\n return normalizedStored === normalizedInput;\r\n });\r\n\r\n // Return font name if found, else return CSS variable name\r\n return fontObj ? fontObj.name : \"Inter\";\r\n };\r\n\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(toolbarItemName)}\r\n open={isActiveToolbarItem(toolbarItemName)}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n onMouseLeave={() => {\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n alignItems={\"center\"}\r\n gap={\"8px\"}\r\n overflow={\"auto\"}\r\n sx={{\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n p: \"5px\",\r\n borderRadius: \"10px\",\r\n maxHeight: \"350px\",\r\n border: \"1px solid #EFF0F3\"\r\n }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {fontFamilyArr?.map((val, i) => (\r\n <Typography\r\n key={i}\r\n fontSize={14}\r\n fontWeight={500}\r\n fontFamily={`${val.family} !important`}\r\n color={\"#18181B\"}\r\n padding={\"8px\"}\r\n sx={{\r\n cursor: \"pointer\",\r\n background: fontFamily === val.name ? \"#F7F7F7\" : \"#FFF\",\r\n width: \"100%\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"5px\",\r\n borderRadius: \"8px\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n updateFontFamily(val.family);\r\n }}\r\n >\r\n {val.name}{\" \"}\r\n {fontFamily === val.name && (\r\n <CheckCircleOutlineIcon color=\"success\" fontSize=\"small\" />\r\n )}\r\n </Typography>\r\n ))}\r\n </Stack>\r\n }\r\n >\r\n <Box\r\n sx={{\r\n paddingRight: \"7px\",\r\n borderRight: \"1px solid #EFF0F3\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(toolbarItemName);\r\n }}\r\n >\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Font Family\"}\r\n disabled={false}\r\n >\r\n <Box\r\n sx={{\r\n height: \"36px !important\",\r\n borderRadius: \"8px\",\r\n transition: \"all 0.3s ease\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n cursor: \"pointer\",\r\n px: \"8px\",\r\n overflow: \"hidden\",\r\n bgcolor: isActiveToolbarItem(\"font-family\")\r\n ? \"#EFF0F3\"\r\n : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F5F5F5\" },\r\n }}\r\n >\r\n <Typography\r\n fontSize={14}\r\n fontWeight={500}\r\n color={\"#282828\"}\r\n height={\"20px\"}\r\n sx={{\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n maxWidth: \"100px\",\r\n }}\r\n >\r\n {getFontName(fontFamily)}\r\n </Typography>\r\n </Box>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { IcHeadingOne, IcHeadingThree, IcHeadingTwo, IcListOutlined, IcNumberListOutlined, IcPlainText } from \"../../../../../../assets/icon-components\";\r\n\r\nexport default function ContentTypeToolbarItem({ toggleToolbarItem, isActiveToolbarItem, editor }) {\r\n\r\n const contentTypeKeyMap = {\r\n orderedList: \"Numbered List\",\r\n text: \"Plain Text\",\r\n bulletList: \"Bullet List\",\r\n heading1: \"H1\",\r\n heading2: \"H2\",\r\n heading3: \"H3\",\r\n };\r\n\r\n const contentTypes = [\r\n {\r\n label: contentTypeKeyMap.text,\r\n icon: IcPlainText,\r\n onClick: () => {\r\n editor?.commands.setParagraph();\r\n },\r\n },\r\n {\r\n label: contentTypeKeyMap.heading1,\r\n icon: IcHeadingOne,\r\n onClick: () => {\r\n editor?.commands.toggleHeading({ level: 1 });\r\n },\r\n },\r\n {\r\n label: contentTypeKeyMap.heading2,\r\n icon: IcHeadingTwo,\r\n onClick: () => {\r\n editor?.commands.toggleHeading({ level: 2 });\r\n },\r\n },\r\n {\r\n label: contentTypeKeyMap.heading3,\r\n icon: IcHeadingThree,\r\n onClick: () => {\r\n editor?.commands.toggleHeading({ level: 3 });\r\n },\r\n },\r\n {\r\n label: contentTypeKeyMap.orderedList,\r\n icon: IcNumberListOutlined,\r\n onClick: () => {\r\n editor.chain().focus().toggleOrderedList().run();\r\n },\r\n },\r\n {\r\n label: contentTypeKeyMap.bulletList,\r\n icon: IcListOutlined,\r\n onClick: () => {\r\n editor.chain().focus().toggleBulletList().run();\r\n },\r\n },\r\n ];\r\n\r\n const getSelectedContentType = () => {\r\n if (!editor) return contentTypeKeyMap.text;\r\n\r\n const { from, to } = editor.state.selection;\r\n let selectedType = null;\r\n\r\n editor.state.doc.nodesBetween(from, to, (node) => {\r\n if (!selectedType) {\r\n switch (node.type.name) {\r\n case \"heading\":\r\n selectedType = `heading${node.attrs.level}`;\r\n break;\r\n default:\r\n selectedType = node.type.name;\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return contentTypeKeyMap[selectedType] || contentTypeKeyMap.text;\r\n };\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem()}\r\n open={isActiveToolbarItem('content-type')}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n // alignItems={\"center\"}\r\n gap={\"12px\"}\r\n sx={{\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n p: \"20px 8px\",\r\n borderRadius: \"10px\",\r\n width: '10rem'\r\n }}\r\n >\r\n {contentTypes?.map((val, i) => {\r\n return (\r\n <Stack\r\n direction={\"row\"}\r\n gap={\"12px\"}\r\n key={i}\r\n alignItems=\"center\"\r\n >\r\n <val.icon\r\n height=\"15px\"\r\n width=\"15px\"\r\n fill=\"#18181B\"\r\n />\r\n <Typography\r\n key={i + 1}\r\n fontSize={14}\r\n fontWeight={500}\r\n color={\"#18181B\"}\r\n height={\"20px\"}\r\n sx={{ cursor: \"pointer\" }}\r\n onClick={val.onClick}\r\n >\r\n {val.label}\r\n </Typography>\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n }\r\n >\r\n <Box\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem('content-type');\r\n }}\r\n >\r\n <ToolTipWithDisabled tooltipTitle={\"Type\"} disabled={false}>\r\n <Box\r\n sx={{\r\n height: \"40px !important\",\r\n\r\n transition: \"all 0.3s ease\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n cursor: \"pointer\",\r\n paddingLeft: \"8px\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Typography\r\n fontSize={14}\r\n fontWeight={500}\r\n color={\"#18181B\"}\r\n height={\"20px\"}\r\n sx={{\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {getSelectedContentType()}\r\n </Typography>\r\n </Box>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n )\r\n}","import { Box, Stack } from \"@mui/material\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport FrameBorderToolbar from \"../../../../frameNode/FrameBorderToolbar\";\r\nimport BorderTool from \"../../components/BorderTool\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { useEffect, useMemo } from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useReactFlow } from \"reactflow\";\r\n\r\nexport default function BorderToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n node,\r\n onBorderColorChange,\r\n hideBorderFeature = false,\r\n}) {\r\n const { boardRef } = useSelector((e) => e?.drawboard);\r\n const { setNodes } = useReactFlow();\r\n\r\n useEffect(() => {\r\n // Only proceed if hideBorderFeature is true\r\n if (!hideBorderFeature) return;\r\n\r\n const currentBorderColor = node?.data?.border?.borderColor;\r\n const nodeElement = boardRef?.querySelector(`[data-id=\"${node.id}\"]`);\r\n\r\n if (!nodeElement || !node.id) return;\r\n\r\n let detectedBorderColor = \"transparent\";\r\n\r\n if (node?.data?.provider === \"shapes\") {\r\n if (node?.data?.style?.border || node?.data?.style?.borderColor) {\r\n detectedBorderColor =\r\n node?.data?.style?.border || node?.data?.style?.borderColor;\r\n } else {\r\n // Check for stroke in all path, rect, and line elements\r\n const paths = nodeElement.querySelectorAll(\"path\");\r\n const rects = nodeElement.querySelectorAll(\"rect\");\r\n const lines = nodeElement.querySelectorAll(\"line\");\r\n\r\n // Function to get the first non-null stroke or fill attribute\r\n const getAttributeFromElements = (elements, attribute) => {\r\n for (const element of elements) {\r\n const value = element.getAttribute(attribute);\r\n if (value) return value;\r\n }\r\n return null;\r\n };\r\n\r\n detectedBorderColor =\r\n getAttributeFromElements(paths, \"stroke\") ||\r\n getAttributeFromElements(rects, \"stroke\") ||\r\n getAttributeFromElements(lines, \"stroke\") ||\r\n getAttributeFromElements(paths, \"fill\") ||\r\n getAttributeFromElements(rects, \"fill\") ||\r\n getAttributeFromElements(lines, \"fill\") ||\r\n \"transparent\";\r\n }\r\n } else {\r\n detectedBorderColor =\r\n node?.data?.style?.border ||\r\n node?.data?.style?.borderColor ||\r\n \"transparent\";\r\n }\r\n\r\n if (currentBorderColor !== detectedBorderColor) {\r\n setNodes((nodes) =>\r\n nodes.map((nd) =>\r\n nd.id === node.id\r\n ? {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n border: {\r\n ...nd.data?.border,\r\n border: detectedBorderColor,\r\n borderColor: detectedBorderColor,\r\n },\r\n },\r\n }\r\n : nd\r\n )\r\n );\r\n }\r\n }, [boardRef, node.id, hideBorderFeature]);\r\n\r\n return (\r\n <Box height={\"36px\"} width={\"36px\"} onClick={(e) => e.stopPropagation()}>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => {\r\n toggleToolbarItem();\r\n }}\r\n open={isActiveToolbarItem(\"border-selection\")}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n node.type === \"group\" ? (\r\n <BorderTool node={node} onBorderColorChange={onBorderColorChange} />\r\n ) : (\r\n <FrameBorderToolbar\r\n node={node}\r\n hideBorderFeature={hideBorderFeature}\r\n />\r\n )\r\n }\r\n >\r\n <Box onClick={(e) => e.stopPropagation()}>\r\n <ToolTipWithDisabled placement=\"top\" tooltipTitle={\"Border\"}>\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"36px\"}\r\n width={\"36px\"}\r\n borderRadius={\"8px\"}\r\n sx={{\r\n background: isActiveToolbarItem(\"border-selection\")\r\n ? \"#F5F5F5\"\r\n : \"transparent\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n \"&:hover\": {\r\n background: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(\"border-selection\");\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n height: \"20px\",\r\n width: \"20px\",\r\n border: `5px solid ${\r\n node?.data?.border?.borderColor ||\r\n node?.data?.borderColor ||\r\n \"rgba(3, 11, 22, 1)\"\r\n }`,\r\n borderRadius: \"50%\",\r\n background: \"transparent\",\r\n }}\r\n />\r\n </Stack>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport FrameBackgroundToolbar from \"../../../../frameNode/FrameBackgroundToolbar\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { IcTransparentCircle } from \"../../../../../../assets/icon-components\";\r\nimport { Box, Stack } from \"@mui/material\";\r\n\r\nexport default function BackgroundColorToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n node,\r\n}) {\r\n const { boardRef } = useSelector((e) => e?.drawboard);\r\n\r\n // function isBackgroundTransparent() {\r\n // if (node?.data?.provider === \"shapes\") {\r\n // const nodeElement = boardRef?.querySelector(`[data-id=\"${node.id}\"]`);\r\n // if (\r\n // node?.data?.style?.background &&\r\n // node?.data?.style?.background !== \"transparent\"\r\n // ) {\r\n // return !node?.data?.style?.background;\r\n // } else if (node?.data?.style?.iconBg) {\r\n // return !node?.data?.style?.iconBg;\r\n // } else if (nodeElement) {\r\n // const backgroundColor =\r\n // nodeElement.querySelectorAll(\"path\")?.[1]?.getAttribute(\"fill\") ||\r\n // nodeElement.querySelectorAll(\"path\")?.[1]?.getAttribute(\"stroke\") ||\r\n // nodeElement.querySelectorAll(\"path\")?.[0]?.getAttribute(\"fill\") ||\r\n // nodeElement.querySelectorAll(\"path\")?.[0]?.getAttribute(\"stroke\") ||\r\n // nodeElement.querySelectorAll(\"rect\")?.[1]?.getAttribute(\"fill\") ||\r\n // nodeElement.querySelectorAll(\"rect\")?.[1]?.getAttribute(\"stroke\") ||\r\n // nodeElement.querySelectorAll(\"rect\")?.[0]?.getAttribute(\"fill\") ||\r\n // nodeElement.querySelectorAll(\"rect\")?.[0]?.getAttribute(\"stroke\");\r\n\r\n // return !backgroundColor;\r\n // }\r\n // }\r\n\r\n // const background =\r\n // node?.data?.style?.background ||\r\n // node?.data?.style?.backgroundColor ||\r\n // node?.data?.style?.iconBg ||\r\n // \"transparent\";\r\n\r\n // // Check if the background is explicitly 'transparent'\r\n // if (background === \"transparent\" || !node?.data?.style) {\r\n // return true;\r\n // }\r\n\r\n // // Check if the background is in 'rgba' format with 0 opacity\r\n // const rgbaRegex =\r\n // /^rgba\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*0(\\.0+)?\\s*\\)$/;\r\n // return rgbaRegex.test(background);\r\n // }\r\n\r\n // const bgColorFromDom = useMemo(() => {\r\n // if (node?.data?.provider === \"shapes\") {\r\n // const nodeElement = boardRef?.querySelector(`[data-id=\"${node.id}\"]`);\r\n // // Specific condition for Uml_Component_Box\r\n // if (\r\n // node?.data?.key === \"Uml_Component_Box\" &&\r\n // (node?.data?.style?.background === null || node?.data?.style?.background === undefined)\r\n // ) {\r\n // // Find the second SVG within the nodeElement\r\n // const svgs = nodeElement?.querySelectorAll(\"svg\");\r\n // if (svgs && svgs.length > 1) {\r\n // const secondSvg = svgs[1];\r\n // const secondSvgFill = secondSvg.querySelector(\"path\")?.getAttribute(\"fill\");\r\n\r\n // // Return the second SVG's fill color if valid\r\n // if (secondSvgFill && secondSvgFill !== \"none\" && secondSvgFill !== \"transparent\") {\r\n // return secondSvgFill;\r\n // }\r\n // }\r\n\r\n // // If no valid fill color found in the second SVG, return transparent\r\n // return \"transparent\";\r\n // }\r\n\r\n // // Default logic for other cases\r\n // if (node?.data?.style?.background && node?.data?.style?.background !== \"transparent\") {\r\n // return node?.data?.style?.background;\r\n // } else if (node?.data?.style?.iconBg) {\r\n // return node?.data?.style?.iconBg;\r\n // } else if (nodeElement) {\r\n // const possibleColors = [\r\n // nodeElement.querySelectorAll(\"path\")?.[0]?.getAttribute(\"fill\"),\r\n // nodeElement.querySelectorAll(\"path\")?.[1]?.getAttribute(\"fill\"),\r\n // nodeElement.querySelectorAll(\"path\")?.[0]?.getAttribute(\"stroke\"),\r\n // nodeElement.querySelectorAll(\"path\")?.[1]?.getAttribute(\"stroke\"),\r\n // nodeElement.querySelectorAll(\"rect\")?.[0]?.getAttribute(\"fill\"),\r\n // nodeElement.querySelectorAll(\"rect\")?.[0]?.getAttribute(\"stroke\"),\r\n // nodeElement.querySelectorAll(\"rect\")?.[1]?.getAttribute(\"fill\"),\r\n // nodeElement.querySelectorAll(\"rect\")?.[1]?.getAttribute(\"stroke\"),\r\n // ];\r\n\r\n // // Return the first valid color, or \"transparent\"\r\n // return possibleColors.find((color) => color && color !== \"none\") || \"transparent\";\r\n // }\r\n // }\r\n\r\n // // Fallback for non-shapes provider\r\n // return node?.data?.style?.background || node?.data?.style?.iconBg || \"transparent\";\r\n // }, [boardRef, node]);\r\n\r\n // Helper function to determine if a color is transparent\r\n const isColorTransparent = (color) => {\r\n if (!color || color === \"none\" || color === \"transparent\") return true;\r\n const rgbaRegex =\r\n /^rgba\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*0(\\.0+)?\\s*\\)$/;\r\n return rgbaRegex.test(color);\r\n };\r\n\r\n // Main logic to detect background color\r\n const determineBackgroundColor = () => {\r\n if (!node?.id || !boardRef) return \"transparent\";\r\n\r\n const nodeElement = boardRef.querySelector(`[data-id=\"${node.id}\"]`);\r\n if (!nodeElement) return \"transparent\";\r\n\r\n // Step 1: Check explicit styles for all providers\r\n if (\r\n node?.data?.style?.background &&\r\n !isColorTransparent(node.data.style.background)\r\n ) {\r\n return node.data.style.background;\r\n }\r\n if (\r\n node?.data?.style?.iconBg &&\r\n !isColorTransparent(node.data.style.iconBg)\r\n ) {\r\n return node.data.style.iconBg;\r\n }\r\n\r\n // Step 2: Handle shapes provider\r\n if (node?.data?.provider === \"shapes\") {\r\n // Special case for Uml_Component_Box\r\n if (\r\n (node?.data?.key === \"Uml_Component_Box\" ||\r\n node?.data?.key === \"Uml_Component\") &&\r\n !node?.data?.style?.background\r\n ) {\r\n const svgs = nodeElement.querySelectorAll(\"svg\");\r\n if (svgs.length > 1) {\r\n const secondSvg = svgs[1];\r\n const shapes = secondSvg.querySelectorAll(\r\n \"path, rect, circle, ellipse, polygon, polyline\"\r\n );\r\n for (const shape of shapes) {\r\n const computedStyle = window.getComputedStyle(shape);\r\n const fillColor = computedStyle.fill;\r\n if (!isColorTransparent(fillColor)) {\r\n return fillColor;\r\n }\r\n }\r\n }\r\n return \"transparent\"; // Default for Uml_Component_Box if no valid fill\r\n }\r\n\r\n // General case for shapes\r\n const shapes = nodeElement.querySelectorAll(\r\n \"path, rect, circle, ellipse, polygon, polyline\"\r\n );\r\n for (const shape of shapes) {\r\n const computedStyle = window.getComputedStyle(shape);\r\n const fillColor = computedStyle.fill;\r\n if (!isColorTransparent(fillColor)) {\r\n return fillColor; // Return first valid fill\r\n }\r\n }\r\n }\r\n\r\n // Step 3: Fallback for non-shapes or no valid color found\r\n return node?.data?.style?.backgroundColor || \"transparent\";\r\n };\r\n\r\n // Determine if background is transparent\r\n const isBackgroundTransparent = () => {\r\n const bgColor = determineBackgroundColor();\r\n if (bgColor === \"rgb(255, 255, 255)\") {\r\n return true;\r\n }\r\n return isColorTransparent(bgColor);\r\n };\r\n\r\n // Memoized background color\r\n const [bgColorFromDom, setBgColorFromDom] = useState(\"\");\r\n\r\n let getBgFromDomTimeoutRef = useRef();\r\n useEffect(() => {\r\n getBgFromDomTimeoutRef.current = setTimeout(() => {\r\n const bgColor = determineBackgroundColor();\r\n setBgColorFromDom(bgColor);\r\n }, 100);\r\n }, [boardRef, node?.data?.iconStyle, node?.data?.iconType, node]);\r\n\r\n // let getBgFromDomTimeoutRef = useRef();\r\n // const bgColorFromDom = useMemo(() => {\r\n // let bgColor = \"\";\r\n // getBgFromDomTimeoutRef.current = setTimeout(() => {\r\n // bgColor = determineBackgroundColor();\r\n // }, 50);\r\n // return bgColor;\r\n // }, [boardRef, node?.data?.iconStyle, node?.data?.iconType]);\r\n\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(\"background-color\")}\r\n open={isActiveToolbarItem(\"background-color\")}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <FrameBackgroundToolbar node={node} bgColorFromDom={bgColorFromDom} />\r\n }\r\n >\r\n <Box\r\n sx={\r\n {\r\n // paddingRight: \"7px\",\r\n // borderRight: \"1px solid #EFF0F3\",\r\n }\r\n }\r\n >\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Background Color\"}\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"36px\"}\r\n width={\"36px\"}\r\n borderRadius={\"8px\"}\r\n sx={{\r\n background: isActiveToolbarItem(\"background-color\")\r\n ? \"#F5F5F5\"\r\n : \"transparent\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n \"&:hover\": {\r\n background: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(\"background-color\");\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n height: \"20px\",\r\n width: \"20px\",\r\n borderRadius: \"50%\",\r\n position: \"relative\",\r\n background: bgColorFromDom,\r\n ...(node?.data?.style?.background ===\r\n \"rgba(255, 255, 255, 1)\" ||\r\n node?.data?.style?.background === \"rgb(255, 255, 255)\" ||\r\n node?.data?.style?.background === \"#FFF\" ||\r\n node?.data?.style?.background === \"#FFFFFF\" ||\r\n node?.data?.style?.background === \"white\"\r\n ? { border: `1px solid black` }\r\n : {}),\r\n }}\r\n >\r\n {isBackgroundTransparent() && (\r\n <Stack\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n outline: \"0px\",\r\n borderRadius: \"50%\",\r\n }}\r\n >\r\n <IcTransparentCircle />\r\n </Stack>\r\n )}\r\n </Box>\r\n </Stack>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack } from \"@mui/material\";\r\nimport {\r\n IcCircleStickyOutline,\r\n IcDownArrow,\r\n IcRectangleStickyOutline,\r\n IcSquareStickyOutline,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { updateJson } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useUndoRedo } from \"../../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\n\r\nexport default function StickyNoteTypesMenuItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n content,\r\n setIsResized,\r\n editor,\r\n node,\r\n}) {\r\n const { getNodes, setNodes } = useReactFlow();\r\n\r\n const dispatch = useDispatch();\r\n const { id } = useParams();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n const location = useLocation();\r\n\r\n const handleChangeStickyNotesType = (type = \"square\") => {\r\n let updatedNodes = getNodes();\r\n let parsedData = {};\r\n const user_data = localStorage.getItem(\"user_data\");\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n variant: type,\r\n height:\r\n type === \"rectangle\"\r\n ? (nd.data.width * 60) / 100\r\n : nd.data.width,\r\n minHeight:\r\n type === \"rectangle\"\r\n ? (nd.data.width * 60) / 100\r\n : nd.data.width,\r\n },\r\n style: {\r\n ...nd.style,\r\n height: type === \"rectangle\" ? 100 : nd.data.width,\r\n width: type === \"rectangle\" ? 167 : nd.data.width,\r\n },\r\n };\r\n\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n };\r\n\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={13}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(\"sticky-note-types\")}\r\n open={isActiveToolbarItem(\"sticky-note-types\")}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Stack\r\n gap={\"8px\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n p={\"6px\"}\r\n bgcolor={color.whiteColor}\r\n border={`1px solid ${color.darkGray}`}\r\n boxShadow=\"0px 4px 6px -2px #10182808 , 0px 12px 16px -4px #10182808\"\r\n borderRadius={\"10px\"}\r\n flexDirection={\"row\"}\r\n // ml={\"34px\"}\r\n >\r\n <Box\r\n sx={{\r\n cursor: \"pointer\",\r\n bgcolor:\r\n node.data.variant === \"square\"\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n borderRadius: \"8px\",\r\n padding: \"4px\",\r\n }}\r\n onClick={() => {\r\n handleChangeStickyNotesType(\"square\"); // editor?.chain().focus();\r\n\r\n setIsResized(false);\r\n setTimeout(() => {\r\n editor?.commands.setContent(\r\n content.replace(/<\\/p>/, \"  </p>\")\r\n ); // isResizing.current = false;\r\n\r\n setIsResized(true);\r\n }, 800);\r\n }}\r\n >\r\n <IcSquareStickyOutline\r\n fill={\r\n node.data.variant === \"square\"\r\n ? color.primaryColor\r\n : color.editorIcon\r\n }\r\n />\r\n </Box>\r\n <Box\r\n sx={{\r\n cursor: \"pointer\",\r\n bgcolor:\r\n node.data.variant === \"rectangle\"\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n borderRadius: \"8px\",\r\n padding: \"4px\",\r\n }}\r\n onClick={() => {\r\n handleChangeStickyNotesType(\"rectangle\"); // editor?.chain().focus();\r\n\r\n setIsResized(false);\r\n setTimeout(() => {\r\n editor?.commands.setContent(\r\n content.replace(/<\\/p>/, \"  </p>\")\r\n ); // isResizing.current = false;\r\n\r\n setIsResized(true);\r\n }, 800);\r\n }}\r\n >\r\n <IcRectangleStickyOutline\r\n fill={\r\n node.data.variant === \"rectangle\"\r\n ? color.primaryColor\r\n : color.editorIcon\r\n }\r\n />\r\n </Box>\r\n <Box\r\n sx={{\r\n cursor: \"pointer\",\r\n bgcolor:\r\n node.data.variant === \"circle\"\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n borderRadius: \"8px\",\r\n padding: \"4px\",\r\n }}\r\n onClick={() => {\r\n handleChangeStickyNotesType(\"circle\");\r\n setIsResized(false); // editor?.chain().focus();\r\n\r\n setTimeout(() => {\r\n editor?.commands.setContent(\r\n content.replace(/<\\/p>/, \"  </p>\")\r\n ); // isResizing.current = false;\r\n\r\n setIsResized(true);\r\n }, 800);\r\n }}\r\n >\r\n <IcCircleStickyOutline\r\n fill={\r\n node.data.variant === \"circle\"\r\n ? color.primaryColor\r\n : color.editorIcon\r\n }\r\n />\r\n </Box>\r\n </Stack>\r\n }\r\n >\r\n <Box>\r\n <ToolTipWithDisabled placement=\"top\" tooltipTitle={\"Switch Type\"}>\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"36px\"}\r\n gap={\"8px\"}\r\n p={\"8px\"}\r\n borderRadius={\"8px\"}\r\n sx={{\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n backgroundColor: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(\"sticky-note-types\");\r\n }}\r\n >\r\n {node.data.variant === \"square\" ? (\r\n <IcSquareStickyOutline />\r\n ) : node.data.variant === \"circle\" ? (\r\n <IcCircleStickyOutline />\r\n ) : (\r\n <IcRectangleStickyOutline />\r\n )}\r\n <IcDownArrow />\r\n </Stack>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { useDispatch } from \"react-redux\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { useUndoRedo } from \"../../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { updateJson } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { Box, IconButton } from \"@mui/material\";\r\nimport { CustomNameTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { IcHideShowAuthor } from \"../../../../../../assets/icon-components\";\r\n\r\nexport default function AuthorToolbarItem({ node }) {\r\n const { getNodes, setNodes } = useReactFlow();\r\n const { id } = useParams();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n\r\n const toggleHideShow = () => {\r\n const user_data = localStorage.getItem(\"user_data\");\r\n let updatedNodes = getNodes();\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n showAuthor: !nd?.data?.showAuthor ?? true,\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n takeSnapshot,\r\n a_id,\r\n });\r\n };\r\n return (\r\n <Box>\r\n <CustomNameTooltip\r\n placement=\"top\"\r\n arrow\r\n title={\r\n node?.data?.showAuthor ? \"Show Author\" : \"Hide Author\"\r\n }\r\n >\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n transition: \"all 0.3s ease\",\r\n background: \"#FFF\",\r\n padding: \"0px\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n background: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={toggleHideShow}\r\n >\r\n <IcHideShowAuthor />\r\n </IconButton>\r\n </CustomNameTooltip>\r\n </Box>\r\n )\r\n}","import { Box, IconButton } from \"@mui/material\";\r\nimport { CustomNameTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport {\r\n IcLockLocked,\r\n IcLockUnLocked,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport { updateJson } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useUndoRedo } from \"../../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\nexport default function LockUnlockToolbarItem({ node, toggleToolbarItem }) {\r\n const { getNodes, setNodes } = useReactFlow();\r\n const { id } = useParams();\r\n const location = useLocation();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n const dispatch = useDispatch();\r\n\r\n const toggleLockUnlock = (e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem();\r\n\r\n let updatedNodes = getNodes();\r\n const user_data = localStorage.getItem(\"user_data\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n locked: !nd?.data?.locked,\r\n data: {\r\n ...(nd?.data?.data || {}),\r\n locked: !nd?.data?.data?.locked,\r\n },\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n // paddingRight: \"7px\",\r\n // borderRight: \"1px solid #EFF0F3\",\r\n // borderLeft: \"1px solid #EFF0F3\",\r\n // px: \"7px\"\r\n }}\r\n >\r\n <CustomNameTooltip\r\n placement=\"top\"\r\n arrow\r\n title={node?.data?.data?.locked ? \"Unlock\" : \"Lock\"}\r\n >\r\n <IconButton\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"36px !important\",\r\n borderRadius: \"8px\",\r\n transition: \"all 0.3s ease\",\r\n background: \"#FFF\",\r\n padding: \"0px\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n background: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={toggleLockUnlock}\r\n >\r\n {node?.data?.data?.locked || node?.data?.locked ? (\r\n <IcLockLocked />\r\n ) : (\r\n <IcLockUnLocked />\r\n )}\r\n </IconButton>\r\n </CustomNameTooltip>\r\n </Box>\r\n );\r\n}\r\n","import { Color } from \"@tiptap/extension-color\";\r\nimport ListItem from \"@tiptap/extension-list-item\";\r\nimport TextStyle from \"@tiptap/extension-text-style\";\r\nimport Underline from \"@tiptap/extension-underline\";\r\nimport StarterKit from \"@tiptap/starter-kit\";\r\nimport Placeholder from \"@tiptap/extension-placeholder\";\r\nimport Highlight from \"@tiptap/extension-highlight\";\r\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport TextAlign from \"@tiptap/extension-text-align\";\r\nimport FontSize from \"../fontSize\";\r\nimport {\r\n Box,\r\n ClickAwayListener,\r\n Stack,\r\n} from \"@mui/material\";\r\nimport {\r\n IcMenuDotsVertical,\r\n} from \"../../../../../assets/icon-components\";\r\nimport {\r\n NodeToolbar,\r\n Position,\r\n useReactFlow,\r\n} from \"reactflow\";\r\nimport {\r\n CustomTooltip,\r\n} from \"../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport FrameMoreMenus from \"../../../frameNode/FrameMoreMenus\";\r\nimport { getMarkAttributes } from \"@tiptap/react\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useUndoRedo } from \"../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport AIOptionsToolbarItem from \"./ToolbarMenuItems/AIOptionsToolbarItem\";\r\nimport TextColorToolbarItem from \"./ToolbarMenuItems/TextColorToolbarItem\";\r\nimport HighlightTextToolbarItem from \"./ToolbarMenuItems/HighlightTextToolbarItem\";\r\nimport LinkToolbarItem from \"./ToolbarMenuItems/LinkToolbarItem\";\r\nimport ListTypesToolbarItem from \"./ToolbarMenuItems/ListTypesToolbarItem\";\r\nimport TextAlignmentToolbarItem from \"./ToolbarMenuItems/TextAlignmentToolbarItem\";\r\nimport FontStyleToolbarItem from \"./ToolbarMenuItems/FontStyleToolbarItem\";\r\nimport FontSizeToolbarItem from \"./ToolbarMenuItems/FontSizeToolbarItem\";\r\nimport FontFamilyToolbarItem from \"./ToolbarMenuItems/FontFamilyToolbarItem\";\r\nimport ContentTypeToolbarItem from \"./ToolbarMenuItems/ContentTypeToolbarItem\";\r\nimport BorderToolbarItem from \"./ToolbarMenuItems/BorderToolbarItem\";\r\nimport BackgroundColorToolbarItem from \"./ToolbarMenuItems/BackgroundColorToolbarItem\";\r\nimport ShapesListToolbarItem from \"./ToolbarMenuItems/ShapesListToolbarItem\";\r\nimport StickyNoteTypesMenuItem from \"./ToolbarMenuItems/StickyNoteTypesMenuItem\";\r\nimport { fontFamilyArr } from \"./ToolbarMenuItems/constants\";\r\nimport AuthorToolbarItem from \"./ToolbarMenuItems/AuthorToolbarItem\";\r\nimport LockUnlockToolbarItem from \"./ToolbarMenuItems/LockUnlockToolbarItem\";\r\nimport { omit } from \"lodash\";\r\nimport { onEditorUpdateAdjustFontSize, pxToCqmin, updateLocalStorage } from \"../../../../DrawBoard/utils\";\r\nimport { sleep, updateJson } from \"../../../../../CommanFunctions/commanFunctions\";\r\n\r\nfunction RenderToolbarMenuItems({ toolbarItems = [] }) {\r\n return toolbarItems.map((item, index) => {\r\n const { Component, props, showIf } = item;\r\n return showIf && <Component\r\n key={index}\r\n {...props}\r\n />;\r\n })\r\n\r\n}\r\n\r\nexport const ToolbarMenuItems = ({\r\n editor,\r\n node,\r\n updateFontSize,\r\n currFontSize,\r\n isSticky = false,\r\n onlybgColor = false,\r\n isAutoFont = false,\r\n setIsResized,\r\n simpleRef,\r\n floating = false,\r\n onBorderColorChange,\r\n content,\r\n isShowTextToolbar,\r\n setChangingFontSize\r\n}) => {\r\n\r\n const [currentTextColor, setCurrentTextColor] = useState(\r\n node?.data?.style?.color || \"#18181B\"\r\n );\r\n\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { id } = useParams();\r\n\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n\r\n const [showFrameMoreOptions, setShowFrameMoreOptions] = useState(false);\r\n\r\n const getFontFamily = () => {\r\n return editor.getAttributes(\"fontFamily\").fontFamily ??\r\n editor.getAttributes(\"textStyle\").fontFamily ?? node?.data?.style?.fontFamily ?? 'Inter'\r\n }\r\n\r\n const [currentFontFamily, setCurrentFontFamily] = useState(getFontFamily());\r\n const [currentTextHighlightColor, setCurrentTextHighlightColor] =\r\n useState(\"transparent\");\r\n\r\n const [activeToolbarItem, setActiveToolbarItem] = useState(null);\r\n\r\n const [textStyles, setTextStyles] = useState({\r\n isBold: false,\r\n isItalic: false,\r\n isUnderline: false,\r\n isStrikethrough: false,\r\n textAlign: \"left\",\r\n listType: null,\r\n });\r\n\r\n const toggleToolbarItem = (itemName = null) => {\r\n if (showFrameMoreOptions) setShowFrameMoreOptions(false);\r\n setActiveToolbarItem((prev) => (prev === itemName ? null : itemName));\r\n }\r\n\r\n const isActiveToolbarItem = (itemName) => itemName === activeToolbarItem;\r\n\r\n const handleSelectedTextState = () => {\r\n if (editor) {\r\n const highlightAttrs = getMarkAttributes(editor.state, \"highlight\");\r\n if (highlightAttrs.color) {\r\n setCurrentTextHighlightColor(highlightAttrs.color);\r\n }\r\n\r\n const colorAttrs = editor.getAttributes(\"textStyle\");\r\n if (colorAttrs.color) {\r\n setCurrentTextColor(colorAttrs.color);\r\n }\r\n } else {\r\n setCurrentTextColor(\"rgba(0, 0, 0, 1)\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleSelectedTextState();\r\n }, [editor?.isFocused]);\r\n\r\n const transformStyleRef = useRef(null)\r\n\r\n const handleUpdateFontSize = useCallback((fontSize = \"Auto\") => {\r\n // let updatedFontSize = ['stickyNoteEditor', 'simpleText', 'resizable'].includes(node.type) ? pxToCqmin(`${fontSize}px`, node.id) : `${fontSize}px`;\r\n\r\n // const textElement = document.querySelector(`#tiptap-${node.id}`);\r\n // const containerElement = document.querySelector(`#sticky_notes_${node.id}`);\r\n\r\n // if (fontSize === 'Auto') {\r\n // onEditorUpdateAdjustFontSize(textElement, containerElement)\r\n // }\r\n\r\n setNodes((prev) => {\r\n const updatedNodes = prev?.map((prev) => {\r\n if (prev.id === node.id) {\r\n if (fontSize === 'Auto') {\r\n return {\r\n ...prev,\r\n data: {\r\n ...prev.data,\r\n isAutoFont: true,\r\n // style: {\r\n // ...prev.data?.style,\r\n // fontSize: textElement.style.fontSize,\r\n // },\r\n\r\n }\r\n }\r\n } else {\r\n return {\r\n ...prev,\r\n data: {\r\n ...omit(prev.data, [\"lastFontSize\"]),\r\n isAutoFont: false,\r\n style: {\r\n ...prev.data?.style,\r\n fontSize: fontSize + \"px\",\r\n },\r\n },\r\n style: {\r\n ...prev.style,\r\n fontSize: fontSize + \"px\",\r\n },\r\n };\r\n }\r\n }\r\n return prev;\r\n });\r\n\r\n updateLocalStorage(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n\r\n const userRowData = localStorage.getItem(\"user_data\");\r\n const userData = userRowData ? JSON.parse(userRowData) : {};\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: userData?.user_id,\r\n lastEvent: `editor_changed_${node?.id}`,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n takeSnapshot,\r\n a_id,\r\n });\r\n\r\n return updatedNodes;\r\n });\r\n }, [id, location.search, node.id])\r\n\r\n const updateNodeFontsize = (fontSize) => {\r\n if (fontSize !== \"Auto\") {\r\n if (!onlybgColor) {\r\n if (updateFontSize && typeof updateFontSize === \"function\") {\r\n updateFontSize(`${fontSize}px`);\r\n }\r\n if ([\"stickyNoteEditor\", \"simpleText\", \"resizable\"].includes(node?.type)) {\r\n handleUpdateFontSize(fontSize);\r\n } else {\r\n editor?.chain().focus().setFontSize(`${fontSize}px`).run();\r\n }\r\n }\r\n } else {\r\n handleUpdateFontSize(\"Auto\");\r\n if (!isAutoFont) {\r\n setTimeout(() => {\r\n if (typeof setIsResized === \"function\") {\r\n setIsResized(true);\r\n }\r\n }, 300);\r\n }\r\n }\r\n };\r\n\r\n const { getNodes, setNodes, getNode } = useReactFlow();\r\n\r\n const currentNode = getNode(node?.id);\r\n\r\n const selectedNodes = getNodes()?.find((val) => val?.selected);\r\n\r\n const getCurrentStyles = (editor) => {\r\n return {\r\n fontSize:\r\n editor.getAttributes(\"textStyle\").fontSize ||\r\n editor.getAttributes(\"paragraph\").fontSize ||\r\n \"10px\",\r\n isBold: editor.isActive(\"bold\"),\r\n isItalic: editor.isActive(\"italic\"),\r\n isUnderline: editor.isActive(\"underline\"),\r\n isStrikethrough: editor.isActive(\"strike\"),\r\n textAlign: editor.isActive({ textAlign: \"left\" })\r\n ? \"left\"\r\n : editor.isActive({ textAlign: \"center\" })\r\n ? \"center\"\r\n : editor.isActive({ textAlign: \"right\" })\r\n ? \"right\"\r\n : \"left\",\r\n listType: editor.isActive(\"bulletList\")\r\n ? \"bullet\"\r\n : editor.isActive(\"orderedList\")\r\n ? \"ordered\"\r\n : null,\r\n textColor: editor.isActive(\"textStyle\")\r\n ? editor.getAttributes(\"textStyle\").color\r\n : editor.getAttributes(\"paragraph\").color,\r\n highlightColor: editor.getAttributes(\"highlight\").color,\r\n fontFamily: editor.getAttributes(\"fontFamily\").fontFamily ||\r\n editor.getAttributes(\"textStyle\").fontFamily ||\r\n \"Inter\",\r\n };\r\n };\r\n\r\n useEffect(() => {\r\n if (editor) {\r\n const updateTextStyles = () => {\r\n const currentStyles = getCurrentStyles(editor);\r\n const currentColor = currentStyles.textColor || node?.data?.color;\r\n const currentHighlightColor =\r\n currentStyles.highlightColor || \"transparent\";\r\n const currentFontFamily = currentStyles.fontFamily;\r\n\r\n setTextStyles(currentStyles);\r\n setCurrentTextColor(currentColor);\r\n setCurrentTextHighlightColor(currentHighlightColor);\r\n setCurrentFontFamily(currentFontFamily);\r\n };\r\n\r\n editor.on(\"selectionUpdate\", updateTextStyles);\r\n editor.on(\"transaction\", updateTextStyles);\r\n\r\n return () => {\r\n editor.off(\"selectionUpdate\", updateTextStyles);\r\n editor.off(\"transaction\", updateTextStyles);\r\n };\r\n }\r\n }, [editor]);\r\n\r\n useEffect(() => {\r\n if (node?.data?.frame) {\r\n try {\r\n setNodes((nds) =>\r\n nds.map((n) => {\r\n if (n?.id === node?.id) {\r\n return {\r\n ...n,\r\n data: {\r\n ...n.data,\r\n frame: true,\r\n },\r\n selected: false,\r\n };\r\n }\r\n return n;\r\n })\r\n );\r\n } catch (error) {\r\n console.error(\"Error adding node:\", error);\r\n }\r\n }\r\n }, [node?.data?.frame]);\r\n\r\n const handleChangeTextColor = (color) => {\r\n setCurrentTextColor(color);\r\n if (editor.state.selection.empty) {\r\n editor\r\n .chain()\r\n .focus()\r\n .selectParentNode()\r\n // .selectAll()\r\n .setColor(color)\r\n .focus(\"end\")\r\n .run();\r\n\r\n setNodes((prevNodes) =>\r\n prevNodes.map((n) => {\r\n if (n.id === node.id) {\r\n return {\r\n ...n,\r\n style: {\r\n ...n.style,\r\n color: color,\r\n },\r\n data: {\r\n ...n.data,\r\n style: {\r\n ...n.data.style,\r\n color: color,\r\n },\r\n },\r\n };\r\n }\r\n return n;\r\n })\r\n );\r\n toggleToolbarItem();\r\n } else {\r\n editor.chain().focus().setColor(color).run();\r\n toggleToolbarItem();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (node.selected) {\r\n const hideAllOPenDropdowns = () => {\r\n toggleToolbarItem();\r\n setShowFrameMoreOptions(false);\r\n }\r\n\r\n document.addEventListener('closeAllToolbarItems', hideAllOPenDropdowns);\r\n return () => {\r\n document.removeEventListener('closeAllToolbarItems', hideAllOPenDropdowns);\r\n }\r\n }\r\n\r\n }, [node.selected])\r\n\r\n const toolbarItems = [\r\n {\r\n Component: StickyNoteTypesMenuItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, content, editor, setIsResized, node: currentNode },\r\n showIf: !node?.data?.locked && node.type === \"stickyNoteEditor\"\r\n },\r\n {\r\n Component: ShapesListToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, selectedNodes },\r\n showIf: !node?.data?.locked && selectedNodes?.data?.provider === \"shapes\"\r\n },\r\n {\r\n Component: BackgroundColorToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode },\r\n // showIf: !node?.data?.locked && !['document', 'TreeView'].includes(node?.type)\r\n showIf: !node?.data?.locked && !['document', 'TreeView'].includes(node?.type) && !['Curly_brace_note_1', 'Curly_brace_note', 'NoteIcon', 'Uml_Deletion_11'].includes(node?.data?.key)\r\n },\r\n {\r\n Component: BorderToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: node?.data?.provider === \"shapes\" ? {...currentNode, data: {...currentNode.data, showBorder: true }} : currentNode, onBorderColorChange,hideBorderFeature: node?.data?.provider === \"shapes\" ? true : false },\r\n showIf: !node?.data?.locked && node?.data?.provider === \"shapes\" && node?.data?.iconStyle !== \"3D\" && !['stickyNoteEditor', 'TreeView', 'simpleText', 'document'].includes(node?.type)\r\n },\r\n {\r\n Component: ContentTypeToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, editor },\r\n showIf: !node?.data?.locked && node?.type === \"document\"\r\n },\r\n {\r\n Component: FontFamilyToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, fontFamily: currentFontFamily },\r\n showIf: !node?.data?.locked && !node?.data?.className && node?.type !== \"document\" && isShowTextToolbar\r\n },\r\n {\r\n Component: FontSizeToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, updateNodeFontsize, isAutoFont, isSticky, currentFontSize: currFontSize, setChangingFontSize },\r\n showIf: !node?.data?.locked && node?.type !== \"document\" && isShowTextToolbar\r\n },\r\n {\r\n Component: FontStyleToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, editor, onlybgColor, textStyles },\r\n showIf: !node?.data?.locked && isShowTextToolbar\r\n },\r\n {\r\n Component: TextAlignmentToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, textStyles, onlybgColor },\r\n showIf: !node?.data?.locked && node?.type !== \"document\" && isShowTextToolbar\r\n },\r\n {\r\n Component: ListTypesToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, onlybgColor, textStyles },\r\n showIf: !node?.data?.locked && !['group', 'document'].includes(node?.type)\r\n },\r\n {\r\n Component: TextColorToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, onlybgColor, currentTextColor, handleChangeTextColor },\r\n showIf: !node?.data?.locked && isShowTextToolbar\r\n },\r\n {\r\n Component: HighlightTextToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, editor, node: currentNode, onlybgColor, setCurrentTextHighlightColor, currentTextHighlightColor },\r\n showIf: !node?.data?.locked && isShowTextToolbar\r\n },\r\n // {\r\n // Component: LinkToolbarItem,\r\n // props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor },\r\n // showIf: !node?.data?.locked && ['simpleText', 'document'].includes(node?.type) && isShowTextToolbar\r\n // },\r\n {\r\n Component: AuthorToolbarItem,\r\n props: { node: currentNode },\r\n showIf: !node?.data?.locked && node.type === \"stickyNoteEditor\"\r\n },\r\n {\r\n Component: LockUnlockToolbarItem,\r\n props: { node: currentNode, toggleToolbarItem },\r\n showIf: !floating\r\n },\r\n {\r\n Component: AIOptionsToolbarItem,\r\n props: { toggleToolbarItem, isActiveToolbarItem, node: currentNode, editor, currentTextColor, onlybgColor },\r\n showIf: !node?.data?.locked && (node?.type === \"stickyNoteEditor\" || node?.type === \"simpleText\" || node?.type === 'document' || node?.data?.provider === \"shapes\")\r\n },\r\n ]\r\n\r\n return (\r\n <Box\r\n display={\"flex\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n gap={\"8px\"}\r\n px={\"7px\"}\r\n height={\"48px\"}\r\n sx={{\r\n background: \"#FFFFFF\",\r\n backgroundColor: \"#FFFFFF\",\r\n // border: \"1px solid #00000024\",\r\n boxShadow: \"0px 5px 15.2px 0px #030B1614\",\r\n borderRadius: \"12px\",\r\n }}\r\n onClick={() => {\r\n toggleToolbarItem()\r\n }}\r\n >\r\n <RenderToolbarMenuItems\r\n toolbarItems={toolbarItems}\r\n />\r\n\r\n {\r\n !floating && (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => setShowFrameMoreOptions(false)}\r\n open={showFrameMoreOptions}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <FrameMoreMenus\r\n node={node}\r\n height={currentNode?.height / 2}\r\n width={currentNode?.width / 2}\r\n showCopyAsImage={true}\r\n showAddComment={true}\r\n showLockUnlock={true}\r\n showStyle={true}\r\n showDelete={true}\r\n showBringToFrontAndBack={true}\r\n showFrame={false}\r\n exportShow={true}\r\n setShowFrameMoreOptions={setShowFrameMoreOptions}\r\n simpleRef={simpleRef}\r\n showDuplicate={true}\r\n />\r\n }\r\n >\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"36px\"}\r\n width={\"36px\"}\r\n borderRadius={\"8px\"}\r\n sx={{\r\n cursor: \"pointer\",\r\n marginLeft: \"10px\",\r\n transition: \"all 0.3s\",\r\n transform: \"rotate(90deg)\",\r\n \"&:hover\": {\r\n background: \"#F5F5F5\",\r\n },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setShowFrameMoreOptions(!showFrameMoreOptions);\r\n toggleToolbarItem()\r\n }}\r\n >\r\n <IcMenuDotsVertical height=\"32\" width=\"32\" fill=\"#282828\" />\r\n </Stack>\r\n </CustomTooltip>\r\n </Box>\r\n )\r\n }\r\n </Box>\r\n );\r\n}\r\n ;\r\n\r\nconst MindMapNodesToolbar = ({\r\n updateFontfamily,\r\n editor,\r\n node,\r\n updateFontSize,\r\n currFontSize,\r\n isSticky = false,\r\n onlybgColor = false,\r\n isAutoFont = false,\r\n setIsResized,\r\n simpleRef,\r\n onBorderColorChange,\r\n content,\r\n isShowTextToolbar = true,\r\n}) => {\r\n const { getNodes } = useReactFlow();\r\n const isMultipleNodesSelected = getNodes().filter((node) => node.selected).length > 1;\r\n const [changingFontSize, setChangingFontSize] = useState(false);\r\n\r\n const getToolbarDynamicStyles = () => {\r\n const toolbarElementTransformStyle = document.querySelector(`#toolbar-${node.id}`)?.style.transform;\r\n if (node.selected && toolbarElementTransformStyle && changingFontSize) {\r\n return {\r\n style: { transform: toolbarElementTransformStyle }\r\n }\r\n }\r\n return {}\r\n }\r\n\r\n return (\r\n <>\r\n <NodeToolbar id={`toolbar-${node.id}`} isVisible={!isMultipleNodesSelected && !node.dragging && !node?.data?.globalDragging && node.selected} position={Position.Top} offset={30} {...getToolbarDynamicStyles()}>\r\n <ToolbarMenuItems\r\n updateFontfamily={updateFontfamily}\r\n editor={editor}\r\n node={node}\r\n updateFontSize={updateFontSize}\r\n currFontSize={currFontSize}\r\n isSticky={isSticky}\r\n onlybgColor={onlybgColor}\r\n isAutoFont={isAutoFont}\r\n setIsResized={setIsResized}\r\n simpleRef={simpleRef}\r\n onBorderColorChange={onBorderColorChange}\r\n content={content}\r\n setChangingFontSize={setChangingFontSize}\r\n isShowTextToolbar={isShowTextToolbar}\r\n />\r\n </NodeToolbar >\r\n </>\r\n );\r\n};\r\n\r\nexport default MindMapNodesToolbar;\r\n\r\nexport const tipTapExtensions = (placeholder = \"\") => {\r\n return [\r\n Color.configure({ types: [TextStyle.name, ListItem.name] }),\r\n TextStyle.configure({ types: [ListItem.name] }),\r\n StarterKit.configure({\r\n bulletList: {\r\n keepMarks: true,\r\n keepAttributes: false, // TODO : Making this as `false` because marks are not preserved when I try to preserve attrs, awaiting a bit of help\r\n },\r\n orderedList: {\r\n keepMarks: true,\r\n keepAttributes: false, // TODO : Making this as `false` because marks are not preserved when I try to preserve attrs, awaiting a bit of help\r\n },\r\n }),\r\n Underline.configure(),\r\n Highlight.configure({\r\n multicolor: true,\r\n }),\r\n TextAlign.configure({\r\n types: [\"heading\", \"paragraph\", \"left\", \"center\", \"right\", \"justify\"],\r\n }),\r\n FontSize.configure(),\r\n Placeholder.configure({\r\n placeholder: placeholder,\r\n }),\r\n ];\r\n};\r\n","import { Box, Grid } from \"@mui/material\";\r\nimport {\r\n IcDownArrow,\r\n IcShapesOutlined2,\r\n} from \"../../../../../../assets/icon-components\";\r\nimport ToolTipWithDisabled from \"../../../../../DrawBoard/top-toolbar/components/ToolTipWithDisabled\";\r\nimport { updateJson } from \"../../../../../../CommanFunctions/commanFunctions\";\r\nimport { CustomTooltip } from \"../../../../../DrawBoard/top-toolbar/components/CustomTooltip\";\r\nimport { omit } from \"lodash\";\r\nimport * as ICONS from \"../../../../../../Utils/Icons\";\r\nimport { useReactFlow, useUpdateNodeInternals } from \"reactflow\";\r\nimport { useUndoRedo } from \"../../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { iconTypes } from \"../../../../../DrawBoard/const\";\r\nimport { color } from \"../../../../../../Utils/style/color/color\";\r\n\r\nexport default function ShapesListToolbarItem({\r\n toggleToolbarItem,\r\n isActiveToolbarItem,\r\n selectedNodes,\r\n node,\r\n}) {\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { id } = useParams();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n const updateNodeInternals = useUpdateNodeInternals();\r\n\r\n const { setNodes } = useReactFlow();\r\n\r\n const excludedIcons = [\r\n \"SwimlessVertical\",\r\n \"SwimlessHorizontal\",\r\n \"Summing_junction\",\r\n \"Or\",\r\n \"Group\",\r\n \"Pool\",\r\n \"PoolOne\",\r\n \"Process_1\",\r\n \"Erd_Field_22\",\r\n \"Erd_Field_23\",\r\n \"Erd_Field_24\",\r\n \"Erd_Field_25\",\r\n \"Uml_Class\",\r\n \"Uml_Classifier_11\",\r\n \"Uml_Interface_with_Attributes_1\",\r\n \"Arrow_Right_Square_Fill\",\r\n \"Arrow_Left_Square_Fill\",\r\n \"Arrow_Square_Left\",\r\n \"Arrow_Square_Right\",\r\n \"Control_ExitPoint\",\r\n \"Uml_Deletion_11\",\r\n \"Uml_Required_Interface\",\r\n \"Uml_Vertical_Fork\",\r\n \"Uml_Horizontal_Fork\",\r\n \"Uml_Activation_11\",\r\n \"Swimlanes_Horizontal_Pool_3_11\",\r\n \"Swimlanes_Vertical_Pool_3\",\r\n \"Swimlanes_Horizontal_2\",\r\n \"Swimlanes_Vertical_2\",\r\n \"Conversation\",\r\n \"Getway\",\r\n \"Choreography\",\r\n \"Uml_Assembly_1_11\",\r\n \"Branch_Merge\",\r\n \"Uml_Provided_Interface\",\r\n \"Pin\",\r\n \"Uml_History_Pseudostate\",\r\n \"IcLineShapes\",\r\n \"IcLineArrowSquare\",\r\n ];\r\n\r\n const generateIcon = omit(\r\n ICONS?.Icons?.shapes[\r\n node.data?.catagory || \"flowcharts_and_containers_shapes\"\r\n ],\r\n excludedIcons\r\n );\r\n\r\n return (\r\n <Box>\r\n <CustomTooltip\r\n mt={9}\r\n PopperProps={{\r\n disablePortal: true,\r\n }}\r\n onClose={() => toggleToolbarItem(\"shapes\")}\r\n open={isActiveToolbarItem(\"shapes\")}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n title={\r\n <Grid\r\n container\r\n sx={{\r\n boxShadow: \"0px 3px 9px 0px #030B1614\",\r\n borderRadius: \"10px\",\r\n width: \"175px\",\r\n p: \"8px\",\r\n }}\r\n >\r\n {generateIcon &&\r\n Object.keys(generateIcon)?.map((item, key) => {\r\n const IconComponent = generateIcon[item];\r\n return (\r\n <Grid\r\n item\r\n xs={12}\r\n sm={4}\r\n md={4}\r\n key={key}\r\n sx={{\r\n textAlign: \"center\",\r\n p: 1,\r\n borderRadius: \"8px\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n bgcolor: color.commonHoverColor,\r\n },\r\n }}\r\n onClick={() => {\r\n let updatedNodes = [];\r\n setNodes((nds) => {\r\n updatedNodes = nds?.map((node1) => {\r\n if (node1.id === selectedNodes?.id) {\r\n return {\r\n ...node1,\r\n key: item,\r\n name: item,\r\n data: {\r\n ...node1.data,\r\n key: item,\r\n name: item,\r\n },\r\n };\r\n }\r\n return node1;\r\n });\r\n return updatedNodes;\r\n });\r\n updateNodeInternals(selectedNodes?.id);\r\n const user_data = localStorage.getItem(\"user_data\");\r\n // ! save data\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n takeSnapshot,\r\n a_id,\r\n });\r\n }}\r\n >\r\n <IconComponent\r\n width=\"30px\"\r\n height=\"30px\"\r\n isFromSidebar={false}\r\n isScale={false}\r\n iconStyle={node?.data?.iconStyle ?? \"3D\"}\r\n iconType={node?.data?.iconType ?? iconTypes.DARK_COLOR}\r\n fill={\r\n node?.data?.style?.background !== \"transparent\"\r\n ? node?.data?.style?.background\r\n : undefined\r\n }\r\n />\r\n </Grid>\r\n );\r\n })}\r\n </Grid>\r\n }\r\n >\r\n <Box\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n toggleToolbarItem(\"shapes\");\r\n }}\r\n >\r\n <ToolTipWithDisabled\r\n placement=\"top\"\r\n tooltipTitle={\"Shapes\"}\r\n disabled={false}\r\n >\r\n <Box\r\n sx={{\r\n height: \"36px !important\",\r\n width: \"62px !important\",\r\n borderRadius: \"8px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-evenly\",\r\n gap: \"7px\",\r\n transition: \"all 0.3s ease\",\r\n cursor: \"pointer\",\r\n bgcolor: isActiveToolbarItem(\"shapes\") ? \"#EFF0F3\" : \"#FFF\",\r\n \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n }}\r\n >\r\n <IcShapesOutlined2 />\r\n <IcDownArrow height=\"6\" width=\"12\" />\r\n </Box>\r\n </ToolTipWithDisabled>\r\n </Box>\r\n </CustomTooltip>\r\n </Box>\r\n );\r\n}\r\n","export const changeToneData = [\r\n {\r\n label: \"Friendly\",\r\n key: \"friendly\",\r\n },\r\n {\r\n label: \"Professional\",\r\n key: \"professional\",\r\n },\r\n {\r\n label: \"Business\",\r\n key: \"business\",\r\n },\r\n {\r\n label: \"Fun\",\r\n key: \"fun\",\r\n },\r\n];\r\n\r\nexport const documentTypesData = [\r\n {\r\n label: \"Retrospective Summary\",\r\n key: \"retrospective\",\r\n prompt:\r\n \"Create a retrospective summary document that includes a discussion summary, highlights of what went well, areas for improvement, ideas for improvement, key outcomes, action items, and open questions.\",\r\n },\r\n {\r\n label: \"Product Brief\",\r\n key: \"product_brief\",\r\n prompt:\r\n \"Create a comprehensive product brief for a {{context}} aimed at solving key problems identified from user feedback and data analysis, including an executive summary, problem statement, importance of solving the problem now, data points, opportunity, risks, target audience, definition of done, and success metrics/OKRs.\",\r\n },\r\n // {\r\n // label: \"Research Synthesis\",\r\n // key: \"research_synthesis\",\r\n // prompt:\r\n // \"Create a research synthesis document for a {{context}} that includes the title, goal of the study, key insights with supporting evidence, actionable recommendations with prioritization, and open questions with a note on why these questions are important.\",\r\n // },\r\n {\r\n label: \"Meeting Notes\",\r\n key: \"meeting_notes\",\r\n prompt:\r\n \"Create detailed meeting notes that include the meeting agenda, decisions taken, and action items with descriptions, assignees, and due dates.\",\r\n },\r\n // {\r\n // label: \"Summary\",\r\n // key: \"summary\",\r\n // prompt: \"\"\r\n // },\r\n // {\r\n // label: \"Custom Prompt\",\r\n // key: \"custom_prompt\",\r\n // prompt: null,\r\n // },\r\n];\r\n\r\nexport const translateData = [\r\n {\r\n label: \"English\",\r\n key: \"english\",\r\n },\r\n {\r\n label: \"Spanish\",\r\n key: \"spanish\",\r\n },\r\n {\r\n label: \"German\",\r\n key: \"german\",\r\n },\r\n {\r\n label: \"French\",\r\n key: \"french\",\r\n },\r\n {\r\n label: \"Japanese\",\r\n key: \"japanese\",\r\n },\r\n {\r\n label: \"Portuguese\",\r\n key: \"portuguese\",\r\n },\r\n {\r\n label: \"Hindi\",\r\n key: \"hindi\",\r\n },\r\n {\r\n label: \"Korean\",\r\n key: \"korean\",\r\n },\r\n {\r\n label: \"Polish\",\r\n key: \"polish\",\r\n },\r\n {\r\n label: \"Italian\",\r\n key: \"italian\",\r\n },\r\n {\r\n label: \"Arabic\",\r\n key: \"arabic\",\r\n },\r\n {\r\n label: \"Russian\",\r\n key: \"russian\",\r\n },\r\n {\r\n label: \"Danish\",\r\n key: \"danish\",\r\n },\r\n {\r\n label: \"Finnish\",\r\n key: \"finnish\",\r\n },\r\n {\r\n label: \"Norwegian\",\r\n key: \"norwegian\",\r\n },\r\n {\r\n label: \"Dutch\",\r\n key: \"dutch\",\r\n },\r\n {\r\n label: \"Swedish\",\r\n key: \"swedish\",\r\n },\r\n {\r\n label: \"Thai\",\r\n key: \"thai\",\r\n },\r\n];\r\n\r\nexport const fontFamilyArr = [\r\n { name: \"Inter\", family: \"Inter\" },\r\n { name: \"Comic Sans\", family: \"Comic Sans MS, Comic Sans\" },\r\n { name: \"Serif\", family: \"serif\" },\r\n { name: \"Monospace\", family: \"monospace\" },\r\n { name: \"Cursive\", family: \"cursive\" },\r\n // { name: \"Comic Sans quoted\", family: `\"Comic Sans MS\", \"Comic Sans\"` },\r\n {\r\n name: \"Abril Fatface\",\r\n family: \"Abril Fatface\",\r\n },\r\n { name: \"Arial\", family: \"Arial\" },\r\n {\r\n name: \"Bangers\",\r\n family: \"Bangers\",\r\n },\r\n {\r\n name: \"Caveat\",\r\n family: \"Caveat\",\r\n },\r\n {\r\n name: \"EB Garamond\",\r\n family: \"EB Garamond\",\r\n },\r\n {\r\n name: \"Fredoka One\",\r\n family: \"Fredoka Bold\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n family: \"Georgia\",\r\n },\r\n {\r\n name: \"Graduate\",\r\n family: \"Graduate\",\r\n },\r\n {\r\n name: \"Gravitas One\",\r\n family: \"Gravitas One\",\r\n },\r\n {\r\n name: \"IBM Plex Mono\",\r\n family: \"IBM Plex Mono\",\r\n },\r\n {\r\n name: \"IBM Plex Sans\",\r\n family: \"IBM Plex Sans\",\r\n },\r\n {\r\n name: \"IBM Plex Serif\",\r\n family: \"IBM Plex Serif\",\r\n },\r\n {\r\n name: \"Lemon Tuesday\",\r\n family: \"Lemon Tuesday\",\r\n },\r\n {\r\n name: \"Nixie One\",\r\n family: \"Nixie One\",\r\n },\r\n {\r\n name: \"Noto Sans\",\r\n family: \"Noto Sans\",\r\n },\r\n {\r\n name: \"Open Sans\",\r\n family: \"Open Sans\",\r\n },\r\n {\r\n name: \"PT Sans\",\r\n family: \"PT Sans\",\r\n },\r\n {\r\n name: \"PT Sans Narrow\",\r\n family: \"PT Sans Narrow\",\r\n },\r\n {\r\n name: \"PT Serif\",\r\n family: \"PT Serif\",\r\n },\r\n {\r\n name: \"Permanent Marker\",\r\n family: \"Permanent Marker\",\r\n },\r\n {\r\n name: \"Rammetto One\",\r\n family: \"Rammetto One\",\r\n },\r\n {\r\n name: \"Roboto\",\r\n family: \"Roboto\",\r\n },\r\n {\r\n name: \"Roboto Condensed\",\r\n family: \"Roboto Condensed\",\r\n },\r\n {\r\n name: \"Roboto Mono\",\r\n family: \"Roboto Mono\",\r\n },\r\n {\r\n name: \"Roboto Slab\",\r\n family: \"Roboto Slab\",\r\n },\r\n {\r\n name: \"Titan One\",\r\n family: \"Titan One\",\r\n },\r\n { name: \"CSS variable\", family: \"var(--title-font-family)\" },\r\n];","import React, { useEffect, useState, useMemo, useRef } from \"react\";\r\nimport { Box, Popover, Stack, Typography } from \"@mui/material\";\r\nimport { AlphaPicker } from \"react-color\";\r\nimport ColorPicker from \"react-best-gradient-color-picker\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport {\r\n convertToRgba,\r\n parseRGBColor,\r\n toRgba,\r\n updateJson,\r\n} from \"../../../../../CommanFunctions/commanFunctions\";\r\nimport {\r\n IcCloseThin,\r\n IcPlusCircleOutlined,\r\n} from \"../../../../../assets/icon-components\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport IcHighlightCircleTransparent from \"../../../../../assets/icon-components/IcHighlightCircleTransparent\";\r\nimport { useUndoRedo } from \"../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { color as globalColor } from \"../../../../../Utils/style/color/color\";\r\n\r\nconst getColorString = ({ r, g, b, a = 1 }) => `rgba(${r}, ${g}, ${b}, ${a})`;\r\n\r\nconst BackgroundTool = ({\r\n setCustomBgOpen,\r\n node,\r\n colorHeading,\r\n onChangeColor,\r\n selectedNodeColor,\r\n showOpacity = true,\r\n isEdge,\r\n setShowTextColor,\r\n}) => {\r\n const { setNodes, getNodes } = useReactFlow();\r\n const [selectedColor, setSelectedColor] = useState({\r\n rgb: null,\r\n r: 1,\r\n g: 1,\r\n b: 1,\r\n a: 1,\r\n });\r\n const [allCustomColors, setAllCustomColors] = useState([]);\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [customColor, setCustomColor] = useState(null);\r\n const [editCustomColor, setEditCustomColor] = useState(false);\r\n const location = useLocation();\r\n const { id } = useParams();\r\n const dispatch = useDispatch();\r\n const colorPickerContainerRef = useRef(null);\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n\r\n // const handleChangeOpacity = (newOpacity) => {\r\n // const updatedColor = { ...selectedColor, a: newOpacity };\r\n // setSelectedColor(updatedColor);\r\n\r\n // // Send updated rgba values to `opacitt`\r\n // // if (opacitt) {\r\n // // opacitt = {\r\n // // r: opacity.r,\r\n // // g: opacity.g,\r\n // // b: opacity.b,\r\n // // a: newOpacity,\r\n // // };\r\n // // }\r\n // };\r\n\r\n const open = Boolean(anchorEl);\r\n const popoverId = open ? \"simple-popover\" : undefined;\r\n\r\n // useEffect(() => {\r\n // if (!open && customColor !== null) {\r\n // const { r, g, b } = parseRGBColor(customColor);\r\n // setAllCustomColors((prev) => {\r\n // const updatedColors = [\r\n // {\r\n // rgb: customColor,\r\n // r,\r\n // g,\r\n // b,\r\n // a: 1,\r\n // },\r\n // ...prev,\r\n // ];\r\n\r\n // localStorage.setItem(\"customColors\", JSON.stringify(updatedColors));\r\n\r\n // return updatedColors;\r\n // });\r\n // setCustomColor(null);\r\n // }\r\n // }, [customColor, open]);\r\n\r\n useEffect(() => {\r\n const localCustomColors = localStorage.getItem(\"customColors\");\r\n\r\n if (localCustomColors && localCustomColors !== null) {\r\n const parsedCustomColors = JSON.parse(localCustomColors);\r\n setAllCustomColors(parsedCustomColors);\r\n }\r\n }, []);\r\n\r\n const updateNodeBackground = (node, selectedColor) => {\r\n const newColor = getColorString(selectedColor);\r\n const user_data = localStorage.getItem(\"user_data\");\r\n let updatedNodes = getNodes();\r\n let updatedNode;\r\n if (isEdge) {\r\n // Do some changes if required\r\n } else {\r\n setNodes((nodes) => {\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n style: {\r\n ...nd.data.style,\r\n ...(node.type === \"shape\" || node.type === \"resizable\"\r\n ? // && node.data?.provider === \"shapes\"\r\n { iconBg: newColor }\r\n : { background: newColor }),\r\n },\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n }\r\n\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n ...(isEdge ? { edges: updatedNodes } : { nodes: updatedNodes }),\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n };\r\n\r\n const initializeSelectedColor = (background, isStopUpdate = false) => {\r\n const {\r\n r,\r\n g,\r\n b,\r\n a = 1,\r\n } = background\r\n ? parseRGBColor(background)\r\n : { r: 255, g: 255, b: 255, a: 1 };\r\n if (!isStopUpdate) {\r\n setSelectedColor({ r, g, b, a, rgb: getColorString({ r, g, b, a }) });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedColor.rgb !== null) {\r\n if (onChangeColor) {\r\n if (selectedNodeColor) {\r\n const { r, b, g, a } = selectedColor;\r\n selectedNodeColor !== `rgba(${r}, ${g}, ${b}, ${a})` &&\r\n onChangeColor(`rgba(${r}, ${g}, ${b}, ${a})`);\r\n }\r\n } else if (\r\n (((node.type === \"shape\" || node.type === \"resizable\") &&\r\n // && node.data?.provider === \"shapes\"\r\n node.data.style?.iconBg !== getColorString(selectedColor)) ||\r\n (node.type !== \"shape\" &&\r\n node.data.style?.background !== getColorString(selectedColor))) &&\r\n !onChangeColor\r\n ) {\r\n updateNodeBackground(node, selectedColor, setNodes);\r\n }\r\n } else if (\r\n selectedNodeColor ||\r\n ((node.type === \"shape\" || node.type === \"resizable\") &&\r\n // && node.data?.provider === \"shapes\"\r\n node.data.style?.iconBg) ||\r\n (node.type !== \"shape\" && node.data.style?.background)\r\n ) {\r\n initializeSelectedColor(\r\n selectedNodeColor\r\n ? toRgba(selectedNodeColor)\r\n : node.type === \"shape\" || node.type === \"resizable\"\r\n ? // && node.data?.provider === \"shapes\"\r\n node?.data?.style?.iconBg\r\n : node?.data?.style.background\r\n // setSelectedColor,\r\n // !node?.data?.style?.iconBg\r\n );\r\n }\r\n }, [node?.id, selectedColor]);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n setCustomBgOpen && setCustomBgOpen(false);\r\n };\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n setCustomBgOpen && setCustomBgOpen(true);\r\n setAllCustomColors((prev) => {\r\n const transparentColor = { rgb: \"rgba(0,0,0,0)\", r: 0, g: 0, b: 0, a: 0 };\r\n return [...prev, transparentColor];\r\n });\r\n };\r\n\r\n const colorPickerAnchorPosition = useMemo(() => {\r\n if (anchorEl && colorPickerContainerRef.current) {\r\n const rect = colorPickerContainerRef.current.getBoundingClientRect();\r\n return { top: rect.top + 30, left: rect.left + rect.width };\r\n }\r\n }, [anchorEl]);\r\n\r\n const handleChangeColorPicker = (value) => {\r\n setCustomColor(value);\r\n\r\n setAllCustomColors((prev) => {\r\n const { r, g, b } = parseRGBColor(value);\r\n const updatedColor = { rgb: value, r, g, b, a: 1 };\r\n\r\n const updatedColors = [...prev.slice(0, -1), updatedColor]; // Replace last color\r\n\r\n localStorage.setItem(\"customColors\", JSON.stringify(updatedColors));\r\n return updatedColors;\r\n });\r\n\r\n if (onChangeColor) {\r\n onChangeColor(value);\r\n }\r\n };\r\n\r\n const CustomColorPopover = useMemo(\r\n () => (\r\n <Popover\r\n id={popoverId}\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorPosition={colorPickerAnchorPosition}\r\n anchorReference=\"anchorPosition\"\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n sx={{\r\n \"& .MuiPaper-root\": {\r\n p: { xs: \"8px\", xl: \"10px\" },\r\n ml: \"-10px\",\r\n boxShadow: \"none\",\r\n bgcolor: \"transparent\",\r\n },\r\n }}\r\n className=\"custom-color-popover\"\r\n >\r\n <Stack\r\n sx={{\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n border: \"1px solid #EFF0F3\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n p: \"5px\",\r\n bgcolor: \"#FFF\",\r\n borderRadius: \"6px\",\r\n gap: \"10px\",\r\n minWidth: \"205px\",\r\n fontSize: 12,\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }}\r\n >\r\n <ColorPicker\r\n width={260}\r\n height={240}\r\n value={customColor}\r\n onChange={(value) => {\r\n handleChangeColorPicker(value);\r\n }}\r\n hideOpacity\r\n hideGradientStop={true}\r\n hideAdvancedSliders={true}\r\n hideColorGuide={true}\r\n hideColorTypeBtns={true}\r\n hideControls={true}\r\n hidePresets={true}\r\n />\r\n </Stack>\r\n </Popover>\r\n ),\r\n [anchorEl, open, popoverId]\r\n );\r\n\r\n return (\r\n <>\r\n <Stack\r\n ref={colorPickerContainerRef}\r\n sx={{\r\n p: \"14px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n border: \"1px solid #EEEEEE\",\r\n width: \"300px\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setShowTextColor && setShowTextColor(false);\r\n }}\r\n className=\"bg-color-tool\"\r\n >\r\n <Stack>\r\n {showOpacity && (\r\n <>\r\n {\" \"}\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Opacity\r\n </Typography>\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n {Math.round(selectedColor.a * 100)}%\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n mt={\"9px\"}\r\n mb={\"14px\"}\r\n width={\"100%\"}\r\n position={\"relative\"}\r\n sx={{\r\n \"& .alpha-picker\": {\r\n borderRadius: \"100px\",\r\n overflow: \"hidden\",\r\n\r\n \"& div\": {\r\n \"& div:nth-of-type(3)\": {\r\n \"& div\": {\r\n \"& div\": {\r\n width: \"11px !important\",\r\n height: \"11px !important\",\r\n transform: \"translate(-6px, 0px) !important\",\r\n border: \"2px solid #FFFFFF !important\",\r\n boxShadow: \"0px 0px 5.7px 0px #28282859 !important\",\r\n background: \"transparent !important\",\r\n },\r\n },\r\n },\r\n },\r\n },\r\n }}\r\n >\r\n <AlphaPicker\r\n height=\"11px\"\r\n width=\"100%\"\r\n color={{\r\n r: selectedColor.r,\r\n g: selectedColor.g,\r\n b: selectedColor.b,\r\n a: selectedColor.a,\r\n }}\r\n onChange={(value) => {\r\n // handleChangeOpacity(value.rgb.a);\r\n setSelectedColor({\r\n ...selectedColor,\r\n a: value.rgb.a,\r\n });\r\n }}\r\n />\r\n </Stack>{\" \"}\r\n </>\r\n )}\r\n <Stack\r\n sx={{\r\n // maxHeight: \"172px\",\r\n overflow: \"scroll\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0px !important\",\r\n },\r\n }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n {colorHeading || \"Color\"}\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n mt={\"5px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"3px\"}\r\n flexWrap={\"wrap\"}\r\n width={\"100%\"}\r\n >\r\n {borderTransparentColors.map((color, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n border: `1px solid ${\r\n selectedColor.rgb === color.rgb\r\n ? globalColor.primaryColorRGBA\r\n : \"transparent\"\r\n }`,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n setSelectedColor(color);\r\n }}\r\n >\r\n {/* <Box\r\n sx={{\r\n background: color.rgb,\r\n width: \"90%\",\r\n height: \"90%\",\r\n borderRadius: \"50%\",\r\n border: \"1px solid rgba(142, 152, 171, 0.3)\",\r\n }}\r\n /> */}\r\n\r\n <IcHighlightCircleTransparent />\r\n </Stack>\r\n );\r\n })}\r\n {borderColors.map((color, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n border: `1px solid ${\r\n selectedColor.rgb === color.rgb\r\n ? globalColor.primaryColorRGBA\r\n : \"transparent\"\r\n }`,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n setSelectedColor(color);\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n background: color.rgb,\r\n width: \"90%\",\r\n height: \"90%\",\r\n borderRadius: \"50%\",\r\n border: \"1px solid rgba(142, 152, 171, 0.3)\",\r\n }}\r\n />\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n mt={\"14px\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Custom Color\r\n </Typography>\r\n {(allCustomColors.length > 0 || editCustomColor) &&\r\n (editCustomColor ? (\r\n <Typography\r\n fontSize={12}\r\n sx={{\r\n color: \"#848382\",\r\n transition: \"all 0.2s ease\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n color: globalColor?.primaryColor,\r\n },\r\n }}\r\n onClick={() => setEditCustomColor(false)}\r\n >\r\n Done\r\n </Typography>\r\n ) : (\r\n <Typography\r\n fontSize={12}\r\n sx={{\r\n color: \"#848382\",\r\n transition: \"all 0.2s ease\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n color: globalColor?.primaryColor,\r\n },\r\n }}\r\n onClick={() => setEditCustomColor(true)}\r\n >\r\n Edit\r\n </Typography>\r\n ))}\r\n </Stack>\r\n <Stack\r\n mt={\"5px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"3px\"}\r\n flexWrap={\"wrap\"}\r\n width={\"100%\"}\r\n >\r\n <Stack\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n cursor: \"pointer\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <IcPlusCircleOutlined height=\"22\" width=\"22\" fill=\"#848382\" />\r\n </Stack>\r\n\r\n {allCustomColors.map((color, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n position: \"relative\",\r\n border: `1px solid ${\r\n toRgba(selectedColor.rgb, 1) === toRgba(color.rgb, 1)\r\n ? globalColor.primaryColorRGBA\r\n : \"transparent\"\r\n }`,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n setSelectedColor(color);\r\n }}\r\n >\r\n <Box\r\n borderRadius={\"50%\"}\r\n sx={{\r\n width: \"90%\",\r\n height: \"90%\",\r\n bgcolor: color.rgb,\r\n }}\r\n ></Box>\r\n {editCustomColor && (\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"10px\"}\r\n width={\"10px\"}\r\n borderRadius={\"50%\"}\r\n sx={{\r\n position: \"absolute\",\r\n right: \"-4px\",\r\n top: \"-4px\",\r\n bgcolor: \"#FFF\",\r\n boxShadow: \"0px 3px 6px 0px #11192829\",\r\n zIndex: 10,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setAllCustomColors((prev) => {\r\n const updatedColors = prev.filter(\r\n (_, ci) => ci !== i\r\n );\r\n\r\n localStorage.setItem(\r\n \"customColors\",\r\n JSON.stringify(updatedColors)\r\n );\r\n\r\n return updatedColors;\r\n });\r\n }}\r\n >\r\n <IcCloseThin height=\"7\" width=\"7\" fill=\"#0F0F0F\" />\r\n </Stack>\r\n )}\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n\r\n {CustomColorPopover}\r\n </>\r\n );\r\n};\r\n\r\nexport default BackgroundTool;\r\n\r\nconst borderTransparentColors = [\r\n {\r\n rgb: \"rgba(0, 0, 0, 1)\",\r\n r: 0,\r\n g: 0,\r\n b: 0,\r\n a: 0,\r\n },\r\n];\r\n\r\nconst borderColors = [\r\n {\r\n rgb: \"rgba(255, 255, 255, 1)\",\r\n r: 255,\r\n g: 255,\r\n b: 255,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(142, 152, 171, 1)\",\r\n r: 142,\r\n g: 152,\r\n b: 171,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(3, 11, 22, 1)\",\r\n r: 3,\r\n g: 11,\r\n b: 22,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(65, 215, 251, 1)\",\r\n r: 65,\r\n g: 215,\r\n b: 251,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(183, 136, 114, 1)\",\r\n r: 183,\r\n g: 136,\r\n b: 114,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(255, 205, 153, 1)\",\r\n r: 255,\r\n g: 205,\r\n b: 153,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(245, 220, 78, 1)\",\r\n r: 245,\r\n g: 220,\r\n b: 78,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(85, 243, 188, 1)\",\r\n r: 85,\r\n g: 243,\r\n b: 188,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(173, 220, 255, 1)\",\r\n r: 173,\r\n g: 220,\r\n b: 255,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(248, 196, 237, 1)\",\r\n r: 248,\r\n g: 196,\r\n b: 237,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(236, 72, 153, 1)\",\r\n r: 236,\r\n g: 72,\r\n b: 153,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(244, 63, 94, 1)\",\r\n r: 244,\r\n g: 63,\r\n b: 94,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(139, 92, 246, 1)\",\r\n r: 139,\r\n g: 92,\r\n b: 246,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(0, 150, 242, 1)\",\r\n r: 0,\r\n g: 150,\r\n b: 242,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(246, 154, 24, 1)\",\r\n r: 246,\r\n g: 154,\r\n b: 24,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(249, 115, 22, 1)\",\r\n r: 249,\r\n g: 115,\r\n b: 22,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(250, 204, 21, 1)\",\r\n r: 250,\r\n g: 204,\r\n b: 21,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(16, 185, 129, 1)\",\r\n r: 16,\r\n g: 185,\r\n b: 129,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(14, 165, 233, 1)\",\r\n r: 14,\r\n g: 165,\r\n b: 233,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(238, 73, 214, 1)\",\r\n r: 238,\r\n g: 73,\r\n b: 214,\r\n a: 1,\r\n },\r\n];\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport { Box, Popover, Slider, Stack, Typography } from \"@mui/material\";\r\nimport { AlphaPicker } from \"react-color\";\r\nimport ColorPicker from \"react-best-gradient-color-picker\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport CustomSwitch from \"../../../../../common-components/CustomSwitch\";\r\nimport {\r\n IcCloseThin,\r\n IcPlusCircleOutlined,\r\n} from \"../../../../../assets/icon-components\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n parseRGBColor,\r\n updateJson,\r\n} from \"../../../../../CommanFunctions/commanFunctions\";\r\nimport { useUndoRedo } from \"../../../../DrawBoard/dndUndoRedo/UndoRedoProvider\";\r\nimport { debounce } from \"lodash\";\r\nimport { color as globalColor } from \"../../../../../Utils/style/color/color\";\r\n\r\nconst getColorString = ({ r, g, b, a = 1 }) => `rgba(${r}, ${g}, ${b}, ${a})`;\r\n\r\nconst BorderTool = ({\r\n node,\r\n showOnlyBorderColor = false,\r\n onBorderColorChange,\r\n}) => {\r\n const { setNodes, getNodes } = useReactFlow();\r\n const [selectedColor, setSelectedColor] = useState({\r\n rgb: \"rgba(3, 11, 22, 1)\",\r\n r: 3,\r\n g: 11,\r\n b: 22,\r\n a: 1,\r\n });\r\n const location = useLocation();\r\n const { id } = useParams();\r\n const dispatch = useDispatch();\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n const user_data = localStorage.getItem(\"user_data\");\r\n const [allCustomColors, setAllCustomColors] = useState([]);\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [customColor, setCustomColor] = useState(null);\r\n const [editCustomColor, setEditCustomColor] = useState(false);\r\n\r\n const open = Boolean(anchorEl);\r\n const popoverId = open ? \"simple-popover\" : undefined;\r\n\r\n useEffect(() => {\r\n if (!open && customColor !== null) {\r\n const { r, g, b } = parseRGBColor(customColor);\r\n setAllCustomColors((prev) => {\r\n const updatedColors = [\r\n {\r\n rgb: customColor,\r\n r,\r\n g,\r\n b,\r\n a: 1,\r\n },\r\n ...prev,\r\n ];\r\n\r\n localStorage.setItem(\"customColors\", JSON.stringify(updatedColors));\r\n\r\n return updatedColors;\r\n });\r\n setCustomColor(null);\r\n }\r\n }, [customColor, open]);\r\n\r\n useEffect(() => {\r\n const localCustomColors = localStorage.getItem(\"customColors\");\r\n\r\n if (localCustomColors && localCustomColors !== null) {\r\n const parsedCustomColors = JSON.parse(localCustomColors);\r\n setAllCustomColors(parsedCustomColors);\r\n }\r\n }, []);\r\n\r\n const updateNodeBorderColor = (node, selectedColor) => {\r\n const newColor = getColorString(selectedColor);\r\n const { a } = selectedColor;\r\n if (onBorderColorChange) {\r\n onBorderColorChange(newColor);\r\n } else {\r\n let updatedNodes = getNodes();\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n border: {\r\n ...nd.data.border,\r\n borderColor: newColor,\r\n opacity: a,\r\n },\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n }\r\n };\r\n\r\n const updateNodeBorderThickness = (node, thickness) => {\r\n let updatedNodes = getNodes();\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n border: {\r\n ...nd.data.border,\r\n width: thickness,\r\n },\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n };\r\n\r\n const updateNodeBorderStyle = (node, style) => {\r\n let updatedNodes = getNodes();\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: {\r\n ...nd.data,\r\n border: {\r\n ...nd.data.border,\r\n type: style,\r\n },\r\n },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (node.type === \"shapeTable\") {\r\n setSelectedColor({\r\n ...selectedColor,\r\n rgb: node?.data?.tableData?.borderColor,\r\n });\r\n } else if (\r\n node.type !== \"group\" &&\r\n node.data.showBorder &&\r\n selectedColor.rgb !== node.data.border.borderColor\r\n ) {\r\n setSelectedColor({\r\n ...selectedColor,\r\n rgb: node.data.border.borderColor,\r\n });\r\n } else if (\r\n node.type === \"group\" &&\r\n selectedColor.rgb !== node.data.borderColor\r\n ) {\r\n const { r, g, b, a } = parseRGBColor(\r\n node?.data?.borderColor || \"rgba(3, 11, 22, 1)\"\r\n );\r\n setSelectedColor({\r\n ...selectedColor,\r\n rgb: node.data.borderColor,\r\n r,\r\n g,\r\n b,\r\n a,\r\n });\r\n }\r\n }, [node, selectedColor]);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleClick = (event) => {\r\n event.stopPropagation();\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n return (\r\n <>\r\n <Stack\r\n sx={{\r\n p: \"14px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n border: \"1px solid #EEEEEE\",\r\n width: \"300px\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {node.type !== \"group\" && !showOnlyBorderColor && (\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n gap={\"25px\"}\r\n flexWrap={\"wrap\"}\r\n >\r\n <Typography fontSize={12} color={\"#282828\"} height={\"16px\"}>\r\n Show Border\r\n </Typography>\r\n <CustomSwitch\r\n checked={node.data.showBorder}\r\n onChange={(value) => {\r\n let updatedNodes = getNodes();\r\n let updatedNode;\r\n setNodes((nodes) => {\r\n updatedNodes = nodes.map((nd) => {\r\n if (nd.id === node.id) {\r\n updatedNode = {\r\n ...nd,\r\n data: { ...nd.data, showBorder: value },\r\n };\r\n return updatedNode;\r\n }\r\n return nd;\r\n });\r\n return updatedNodes;\r\n });\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n }}\r\n />\r\n </Stack>\r\n )}\r\n <Stack\r\n sx={{\r\n visibility:\r\n node.data.showBorder ||\r\n showOnlyBorderColor ||\r\n node.type === \"group\"\r\n ? \"visible\"\r\n : \"hidden\",\r\n opacity:\r\n node.data.showBorder ||\r\n showOnlyBorderColor ||\r\n node.type === \"group\"\r\n ? 1\r\n : 0,\r\n maxHeight:\r\n node.data.showBorder ||\r\n showOnlyBorderColor ||\r\n node.type === \"group\"\r\n ? \"350px\"\r\n : \"0px\",\r\n transition: \"max-height 0.3s ease, visibility 0.4s, opacity 0.4s\",\r\n }}\r\n >\r\n {!showOnlyBorderColor && node.type !== \"group\" && (\r\n <Stack mt={\"18px\"}>\r\n <Typography fontSize={12} color={\"#282828\"} height={\"16px\"}>\r\n Border Style\r\n </Typography>\r\n <Stack\r\n mt={\"8px\"}\r\n bgcolor={\"#F5F5F5\"}\r\n height={\"30px\"}\r\n borderRadius={\"4px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n px={\"2px\"}\r\n >\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"26px\"}\r\n borderRadius={\"4px\"}\r\n width={\"calc(33.33% - 5px)\"}\r\n sx={{\r\n boxShadow:\r\n node?.data?.border?.type === \"solid\"\r\n ? \"0px 2px 4px 0px #0000001A\"\r\n : \"none\",\r\n background:\r\n node?.data?.border?.type === \"solid\"\r\n ? \"#FFFFFF\"\r\n : \"transparent\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n }}\r\n onClick={() => updateNodeBorderStyle(node, \"solid\")}\r\n >\r\n <Box\r\n sx={{\r\n width: \"40px\",\r\n borderTop: \"3px solid #18181B\",\r\n }}\r\n />\r\n </Stack>\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"26px\"}\r\n borderRadius={\"4px\"}\r\n width={\"calc(33.33% - 5px)\"}\r\n sx={{\r\n boxShadow:\r\n node?.data?.border?.type === \"dashed\"\r\n ? \"0px 2px 4px 0px #0000001A\"\r\n : \"none\",\r\n background:\r\n node?.data?.border?.type === \"dashed\"\r\n ? \"#FFFFFF\"\r\n : \"transparent\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n }}\r\n onClick={() => updateNodeBorderStyle(node, \"dashed\")}\r\n >\r\n <Box\r\n sx={{\r\n width: \"40px\",\r\n borderTop: \"3px dashed #18181B\",\r\n }}\r\n />\r\n </Stack>\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"26px\"}\r\n borderRadius={\"4px\"}\r\n width={\"calc(33.33% - 5px)\"}\r\n sx={{\r\n boxShadow:\r\n node?.data?.border?.type === \"dotted\"\r\n ? \"0px 2px 4px 0px #0000001A\"\r\n : \"none\",\r\n background:\r\n node?.data?.border?.type === \"dotted\"\r\n ? \"#FFFFFF\"\r\n : \"transparent\",\r\n cursor: \"pointer\",\r\n transition: \"all 0.3s\",\r\n }}\r\n onClick={() => updateNodeBorderStyle(node, \"dotted\")}\r\n >\r\n <Box\r\n sx={{\r\n width: \"40px\",\r\n borderTop: \"3px dotted #18181B\",\r\n }}\r\n />\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n )}\r\n <Stack mt={node.type !== \"group\" ? \"18px\" : \"0px\"}>\r\n {!showOnlyBorderColor && node.type !== \"group\" && (\r\n <>\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n mb={\"9px\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Thickness\r\n </Typography>\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-end\"}\r\n gap={\"8px\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n {node?.data?.border?.width}\r\n </Typography>\r\n </Stack>\r\n </Stack>\r\n <Stack width={\"100%\"}>\r\n <Slider\r\n size=\"small\"\r\n aria-label=\"Small\"\r\n valueLabelDisplay=\"off\"\r\n max={10}\r\n min={1}\r\n value={node?.data?.border?.width}\r\n sx={{\r\n height: \"3px\",\r\n color: globalColor?.primaryColor,\r\n \"& .MuiSlider-rail\": {\r\n background: \"#3C3C432E\",\r\n opacity: 1,\r\n },\r\n \"& .MuiSlider-thumb\": {\r\n \"&:hover\": {\r\n boxShadow: \"0px 0px 0px 5px rgba(25, 118, 210, 0.16)\",\r\n },\r\n \"&:active\": {\r\n boxShadow: \"0px 0px 0px 5px rgba(25, 118, 210, 0.16)\",\r\n },\r\n },\r\n }}\r\n onChange={(e, value) => {\r\n updateNodeBorderThickness(node, value);\r\n }}\r\n />\r\n </Stack>\r\n </>\r\n )}\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n mt={node.type !== \"group\" ? \"10px\" : \"0px\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Opacity\r\n </Typography>\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n {Math.round(selectedColor?.a * 100)}%\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n mt={\"9px\"}\r\n width={\"100%\"}\r\n position={\"relative\"}\r\n sx={{\r\n \"& .alpha-picker\": {\r\n borderRadius: \"100px\",\r\n overflow: \"hidden\",\r\n\r\n \"& div\": {\r\n \"& div:nth-of-type(3)\": {\r\n \"& div\": {\r\n \"& div\": {\r\n width: \"11px !important\",\r\n height: \"11px !important\",\r\n transform: \"translate(-6px, 0px) !important\",\r\n border: \"2px solid #FFFFFF !important\",\r\n boxShadow: \"0px 0px 5.7px 0px #28282859 !important\",\r\n background: \"transparent !important\",\r\n },\r\n },\r\n },\r\n },\r\n },\r\n }}\r\n >\r\n <AlphaPicker\r\n height=\"11px\"\r\n width=\"100%\"\r\n color={{\r\n r: selectedColor.r,\r\n g: selectedColor.g,\r\n b: selectedColor.b,\r\n a: selectedColor.a,\r\n }}\r\n onChange={(value) => {\r\n setSelectedColor({\r\n ...selectedColor,\r\n a: value.rgb.a,\r\n });\r\n updateNodeBorderColor(node, {\r\n ...selectedColor,\r\n a: value.rgb.a,\r\n });\r\n }}\r\n />\r\n </Stack>\r\n <Stack\r\n mt={\"14px\"}\r\n sx={{\r\n maxHeight: \"172px\",\r\n overflow: \"auto\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0px !important\",\r\n },\r\n }}\r\n onWheelCapture={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Border Color\r\n </Typography>\r\n </Stack>\r\n <Stack\r\n mt={\"5px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"3px\"}\r\n flexWrap={\"wrap\"}\r\n width={\"100%\"}\r\n >\r\n {borderColors.map((color, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n border: `1px solid ${\r\n selectedColor.rgb === color.rgb\r\n ? globalColor.primaryColorRGBA\r\n : \"transparent\"\r\n }`,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n setSelectedColor(color);\r\n updateNodeBorderColor(node, color);\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n background: color.rgb,\r\n width: \"90%\",\r\n height: \"90%\",\r\n borderRadius: \"50%\",\r\n border: \"1px solid rgba(142, 152, 171, 0.3)\",\r\n }}\r\n />\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n <Stack\r\n width={\"100%\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"space-between\"}\r\n mt={\"14px\"}\r\n >\r\n <Typography fontSize={12} color={\"#18181B\"}>\r\n Custom Color\r\n </Typography>\r\n {(allCustomColors.length > 0 || editCustomColor) &&\r\n (editCustomColor ? (\r\n <Typography\r\n fontSize={12}\r\n sx={{\r\n color: \"#848382\",\r\n transition: \"all 0.2s ease\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n color: globalColor?.primaryColor,\r\n },\r\n }}\r\n onClick={() => setEditCustomColor(false)}\r\n >\r\n Done\r\n </Typography>\r\n ) : (\r\n <Typography\r\n fontSize={12}\r\n sx={{\r\n color: \"#848382\",\r\n transition: \"all 0.2s ease\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n color: globalColor?.primaryColor,\r\n },\r\n }}\r\n onClick={() => setEditCustomColor(true)}\r\n >\r\n Edit\r\n </Typography>\r\n ))}\r\n </Stack>\r\n <Stack\r\n mt={\"5px\"}\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"flex-start\"}\r\n gap={\"3px\"}\r\n flexWrap={\"wrap\"}\r\n width={\"100%\"}\r\n >\r\n <Stack\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n cursor: \"pointer\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <IcPlusCircleOutlined height=\"22\" width=\"22\" fill=\"#848382\" />\r\n </Stack>\r\n\r\n {allCustomColors.map((color, i) => {\r\n return (\r\n <Stack\r\n key={i + 1}\r\n height={\"24px\"}\r\n width={\"24px\"}\r\n borderRadius={\"50%\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n position: \"relative\",\r\n border: `1px solid ${\r\n selectedColor.rgb === color.rgb\r\n ? globalColor.primaryColorRGBA\r\n : \"transparent\"\r\n }`,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => {\r\n setSelectedColor(color);\r\n updateNodeBorderColor(node, color);\r\n }}\r\n >\r\n {editCustomColor && (\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n height={\"10px\"}\r\n width={\"10px\"}\r\n sx={{\r\n borderRadius: \"50%\",\r\n background: \"#FFFFFF\",\r\n position: \"absolute\",\r\n cursor: \"pointer\",\r\n top: 0,\r\n right: 0,\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setAllCustomColors((prev) => {\r\n const updatedColors = prev.filter(\r\n (_, ci) => ci !== i\r\n );\r\n\r\n localStorage.setItem(\r\n \"customColors\",\r\n JSON.stringify(updatedColors)\r\n );\r\n\r\n return updatedColors;\r\n });\r\n }}\r\n >\r\n <IcCloseThin height=\"8\" width=\"8\" fill=\"#848382\" />\r\n </Stack>\r\n )}\r\n <Box\r\n sx={{\r\n background: color.rgb,\r\n width: \"90%\",\r\n height: \"90%\",\r\n borderRadius: \"50%\",\r\n border: \"1px solid rgba(142, 152, 171, 0.3)\",\r\n }}\r\n />\r\n </Stack>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n </Stack>\r\n\r\n <Popover\r\n id={popoverId}\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: \"top\",\r\n horizontal: \"right\",\r\n }}\r\n sx={{\r\n \"& .MuiPaper-root\": {\r\n p: {\r\n xs: \"8px\",\r\n xl: \"10px\",\r\n },\r\n ml: \"-10px\",\r\n boxShadow: \"none\",\r\n bgcolor: \"transparent\",\r\n },\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Stack\r\n sx={{\r\n boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n border: \"1px solid #EFF0F3\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n p: \"5px\",\r\n bgcolor: \"#FFF\",\r\n borderRadius: \"6px\",\r\n gap: \"10px\",\r\n minWidth: \"205px\",\r\n fontSize: 12,\r\n }}\r\n >\r\n <ColorPicker\r\n width={260}\r\n height={240}\r\n value={customColor}\r\n onChange={(value) => {\r\n setCustomColor(value);\r\n }}\r\n hideOpacity\r\n hideGradientStop={true}\r\n hideAdvancedSliders={true}\r\n hideColorGuide={true}\r\n hideColorTypeBtns={true}\r\n hideControls={true}\r\n hidePresets={true}\r\n />\r\n </Stack>\r\n </Popover>\r\n </>\r\n );\r\n};\r\n\r\nexport default BorderTool;\r\n\r\nconst borderColors = [\r\n {\r\n rgb: \"rgba(255, 255, 255, 1)\",\r\n r: 255,\r\n g: 255,\r\n b: 255,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(142, 152, 171, 1)\",\r\n r: 142,\r\n g: 152,\r\n b: 171,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(3, 11, 22, 1)\",\r\n r: 3,\r\n g: 11,\r\n b: 22,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(65, 215, 251, 1)\",\r\n r: 65,\r\n g: 215,\r\n b: 251,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(183, 136, 114, 1)\",\r\n r: 183,\r\n g: 136,\r\n b: 114,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(255, 205, 153, 1)\",\r\n r: 255,\r\n g: 205,\r\n b: 153,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(245, 220, 78, 1)\",\r\n r: 245,\r\n g: 220,\r\n b: 78,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(85, 243, 188, 1)\",\r\n r: 85,\r\n g: 243,\r\n b: 188,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(173, 220, 255, 1)\",\r\n r: 173,\r\n g: 220,\r\n b: 255,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(248, 196, 237, 1)\",\r\n r: 248,\r\n g: 196,\r\n b: 237,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(236, 72, 153, 1)\",\r\n r: 236,\r\n g: 72,\r\n b: 153,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(244, 63, 94, 1)\",\r\n r: 244,\r\n g: 63,\r\n b: 94,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(139, 92, 246, 1)\",\r\n r: 139,\r\n g: 92,\r\n b: 246,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(0, 150, 242, 1)\",\r\n r: 0,\r\n g: 150,\r\n b: 242,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(246, 154, 24, 1)\",\r\n r: 246,\r\n g: 154,\r\n b: 24,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(249, 115, 22, 1)\",\r\n r: 249,\r\n g: 115,\r\n b: 22,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(250, 204, 21, 1)\",\r\n r: 250,\r\n g: 204,\r\n b: 21,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(16, 185, 129, 1)\",\r\n r: 16,\r\n g: 185,\r\n b: 129,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(14, 165, 233, 1)\",\r\n r: 14,\r\n g: 165,\r\n b: 233,\r\n a: 1,\r\n },\r\n {\r\n rgb: \"rgba(238, 73, 214, 1)\",\r\n r: 238,\r\n g: 73,\r\n b: 214,\r\n a: 1,\r\n },\r\n];\r\n","import React from \"react\";\r\nimport { Stack, TextField } from \"@mui/material\";\r\nimport { IcLinkOutlined3 } from \"../../../../../assets/icon-components\";\r\n\r\nconst LinkTool = ({\r\n onChange,\r\n type = \"text\",\r\n name = \"link-text\",\r\n value = \"\",\r\n placeholder = \"\",\r\n inputFontSize = 14,\r\n onKeyPress = () => {},\r\n height = 40,\r\n}) => {\r\n return (\r\n <>\r\n <Stack\r\n direction={\"row\"}\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n p: \"6px\",\r\n borderRadius: \"10px\",\r\n boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n border: \"1px solid #EEEEEE\",\r\n width: \"325px\",\r\n background: \"#FFF\",\r\n }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n >\r\n <Stack\r\n alignItems={\"center\"}\r\n justifyContent={\"center\"}\r\n sx={{\r\n height: \"36px\",\r\n width: \"36px\",\r\n borderRight: \"1px solid #EAECF0\",\r\n }}\r\n >\r\n <IcLinkOutlined3 />\r\n </Stack>\r\n <TextField\r\n fullWidth\r\n type={type}\r\n label=\"\"\r\n name={name}\r\n value={value}\r\n placeholder={placeholder}\r\n onKeyPress={onKeyPress}\r\n sx={{\r\n \"& .MuiOutlinedInput-input\": {\r\n border: \"none !important\",\r\n },\r\n input: {\r\n py: 0,\r\n fontSize: inputFontSize,\r\n height: `${Number(height) - 2}px !important`,\r\n borderColor: \"none !important\",\r\n color: \"#18181B !important\",\r\n \"&::placeholder\": {\r\n fontSize: \"13.5px !important\",\r\n color: \"#959BA3 !important\",\r\n opacity: 1,\r\n fontWeight: 400,\r\n },\r\n },\r\n \"& fieldset\": {\r\n display: \"none !important\",\r\n },\r\n }}\r\n onChange={onChange}\r\n />\r\n </Stack>\r\n </>\r\n );\r\n};\r\n\r\nexport default LinkTool;\r\n"],"names":["Extension","create","name","addOptions","types","addGlobalAttributes","this","options","attributes","fontSize","default","parseHTML","element","style","replace","renderHTML","concat","addCommands","setFontSize","_ref","chain","setMark","run","unsetFontSize","_ref2","removeEmptyTextStyle","AIOptionsToolbarItem","_editor$getText","_editor$getText$trim","_editor$getText2","_editor$getText2$trim","toggleToolbarItem","isActiveToolbarItem","editor","node","toolbarItemName","currentTextColor","onlybgColor","dispatch","useDispatch","setCenter","getZoom","getNodes","useReactFlow","aiLoading","setAILoading","useState","activeSubMenu","setActiveSubMenu","toggleSubMenuItem","subMenu","arguments","length","undefined","isActiveSubMenu","handleChangeContentWithAI","async","_editor$state","_editor$data","setEditable","commands","focus","state","selection","empty","selectAll","content","data","title","getHTML","getText","doc","textBetween","from","to","result","commanService","postApi","prompt","content_type","startsWith","endsWith","insertContentAt","setColor","error","_error$response2","_error$response2$data","_error$response$data3","response","status","warningToast","message","errorToast","_jsx","Box","onClick","e","stopPropagation","sx","height","width","children","CustomTooltip","mt","bg","PopperProps","disablePortal","onClose","open","disableFocusListener","disableHoverListener","disableTouchListener","Stack","minWidth","position","boxShadow","p","borderRadius","background","_jsxs","gap","direction","alignItems","justifyContent","px","cursor","transition","Ic3StarsColored","Typography","color","transform","IcArrowDown2","fill","overflow","top","left","changeToneData","map","tone","i","key","label","maxHeight","border","backgroundImage","backgroundOrigin","backgroundClip","pointerEvents","pr","onWheelCapture","translateData","translate","minHeight","documentTypesData","_node$data$editorHTML","_node$data","_node$data$editorHTML2","_node$data2","CustomPromptEvent","CustomEvent","detail","selectedNodeId","id","document","dispatchEvent","JSON","stringify","topic","removeHTMLTags","editorHTML","parent_context","DOMParser","parseFromString","querySelector","textContent","body","wordCount","innerHTML","trim","split","filter","word","textNode","Node","getId","type","backgroundColor","boundingClient","getNodesBoundingClient","x","y","_objectSpread","positionAbsolute","selected","isInitialContent","toString","maxPosition","borderStyle","catagory","editorState","isAutoFont","lastFontSize","provider","duration","zoom","GenAIResponse","nodes","edges","_error$response","_error$response$data","_error$response$data2","handleDocumentGeneration","marginRight","borderRight","ToolTipWithDisabled","placement","tooltipTitle","aiLoader","disabled","IconButton","display","padding","flexDirection","SimpleCircularProgress","size","loaderColor","loaderPathColor","Ic3StartsFill","TextColorToolbarItem","handleChangeTextColor","BackgroundTool","colorHeading","selectedNodeColor","toRgba","showOpacity","onChangeColor","bgcolor","IcTextColor","ml","outline","HighlightTextToolbarItem","setCurrentTextHighlightColor","currentTextHighlightColor","match","selectParentNode","toggleHighlight","IcFillColor","IcHighlightTransparent","ListTypesToolbarItem","textStyles","listType","lightPrimary","_","toggleBulletList","IcListOutlined","primaryColor","toggleOrderedList","IcNumberListOutlined","paddingRight","textAlignmentIcons","IcTextAlignLeft","center","IcTextAlignCenter","right","IcTextAlignRight","TextAlignmentToolbarItem","_node$data$style","_node$data2$style","_node$data3","_node$data3$style","_node$data4","_node$data4$style","_node$data5","_node$data5$style","setNodes","useParams","location","useLocation","undo","takeSnapshot","useUndoRedo","currentTextAlignment","textAlign","TextAlignmentIcon","includes","handleTextAlignmentChange","alignment","updateAttributes","setTextAlign","prevNodes","updatedNodes","prevNode","updateLocalStorage","architecture_json","lastEvent","userRowData","localStorage","getItem","userData","parse","a_id","URLSearchParams","search","get","updateJson","json","lastUpdatedBy","user_id","flexWrap","Object","keys","_Fragment","CommonDivider","my","margin","n","IcTextAlignItemCenter","IcTextAlignItemBottom","FontStyleToolbarItem","CustomNameTooltip","arrow","isBold","toggleBold","IcTextBold","isItalic","toggleItalic","IcTextItalic","isUnderline","toggleUnderline","IcTextUnderline","isStrikethrough","toggleStrike","IcTextStrickTrough","IcFontStyle","FontSizeToolbarItem","updateNodeFontsize","currentFontSize","setChangingFontSize","fontSizeArr","Array","splittedFont","String","font","parseFloat","handleUpdateFontSize","debounce","onMouseOver","onMouseLeave","val","fontWeight","titleDark","whiteColor","min","max","value","onChange","target","IcDecresFontSize","IcIncreseFontSize","FontFamilyToolbarItem","fontFamily","fontFamilyArr","family","setFontFamily","_n$data","updateFontFamily","CheckCircleOutlineIcon","whiteSpace","textOverflow","maxWidth","normalizedInput","fontObj","find","getFontName","ContentTypeToolbarItem","contentTypeKeyMap","orderedList","text","bulletList","heading1","heading2","heading3","contentTypes","icon","IcPlainText","setParagraph","IcHeadingOne","toggleHeading","level","IcHeadingTwo","IcHeadingThree","paddingLeft","getSelectedContentType","selectedType","nodesBetween","attrs","BorderToolbarItem","_node$data9","_node$data9$border","_node$data10","onBorderColorChange","hideBorderFeature","boardRef","useSelector","drawboard","useEffect","_node$data$border","currentBorderColor","borderColor","nodeElement","detectedBorderColor","_node$data7","_node$data7$style","_node$data8","_node$data8$style","_node$data6","_node$data6$style","paths","querySelectorAll","rects","lines","getAttributeFromElements","elements","attribute","getAttribute","nd","_nd$data","BorderTool","FrameBorderToolbar","BackgroundColorToolbarItem","_node$data10$style","_node$data11","_node$data11$style","_node$data12","_node$data12$style","_node$data13","_node$data13$style","_node$data14","_node$data14$style","isColorTransparent","test","determineBackgroundColor","iconBg","svgs","shapes","shape","fillColor","window","getComputedStyle","bgColorFromDom","setBgColorFromDom","getBgFromDomTimeoutRef","useRef","current","setTimeout","bgColor","iconStyle","iconType","FrameBackgroundToolbar","isBackgroundTransparent","IcTransparentCircle","StickyNoteTypesMenuItem","setIsResized","handleChangeStickyNotesType","_parsedData2","parsedData","user_data","updatedNode","_parsedData","setItem","variant","darkGray","setContent","IcSquareStickyOutline","editorIcon","IcRectangleStickyOutline","IcCircleStickyOutline","IcDownArrow","AuthorToolbarItem","showAuthor","toggleHideShow","_nd$data$showAuthor","IcHideShowAuthor","LockUnlockToolbarItem","_node$data$data","_node$data2$data","locked","_nd$data2","_nd$data3","_nd$data3$data","IcLockLocked","IcLockUnLocked","RenderToolbarMenuItems","toolbarItems","item","index","Component","props","showIf","ToolbarMenuItems","_getNodes","_selectedNodes$data","_node$data15","_node$data16","_node$data17","_node$data18","_node$data19","_node$data20","_node$data21","_node$data22","_node$data23","_node$data24","_node$data25","_node$data26","updateFontSize","currFontSize","isSticky","simpleRef","floating","isShowTextToolbar","setCurrentTextColor","showFrameMoreOptions","setShowFrameMoreOptions","currentFontFamily","setCurrentFontFamily","_ref3","_ref4","_editor$getAttributes","getAttributes","getFontFamily","activeToolbarItem","setActiveToolbarItem","setTextStyles","itemName","prev","handleSelectedTextState","highlightAttrs","getMarkAttributes","colorAttrs","isFocused","useCallback","_prev$data","omit","getNode","currentNode","selectedNodes","updateTextStyles","currentStyles","isActive","textColor","highlightColor","getCurrentStyles","currentColor","currentHighlightColor","on","off","frame","nds","console","hideAllOPenDropdowns","addEventListener","removeEventListener","ShapesListToolbarItem","showBorder","className","FrameMoreMenus","showCopyAsImage","showAddComment","showLockUnlock","showStyle","showDelete","showBringToFrontAndBack","showFrame","exportShow","showDuplicate","marginLeft","IcMenuDotsVertical","_ref5","_node$data27","updateFontfamily","isMultipleNodesSelected","changingFontSize","NodeToolbar","isVisible","dragging","globalDragging","Position","Top","offset","getToolbarDynamicStyles","_document$querySelect","toolbarElementTransformStyle","_ICONS$Icons","_Object$keys","updateNodeInternals","useUpdateNodeInternals","generateIcon","ICONS","Grid","container","_node$data$iconStyle","_node$data$iconType","IconComponent","xs","sm","md","commonHoverColor","node1","isFromSidebar","isScale","iconTypes","DARK_COLOR","IcShapesOutlined2","getColorString","r","g","b","a","setCustomBgOpen","isEdge","setShowTextColor","selectedColor","setSelectedColor","rgb","allCustomColors","setAllCustomColors","anchorEl","setAnchorEl","customColor","setCustomColor","editCustomColor","setEditCustomColor","colorPickerContainerRef","Boolean","popoverId","localCustomColors","parsedCustomColors","_node$data$style3","_node$data$style4","_node$data$style2","updateNodeBackground","newColor","_node$data$style5","isStopUpdate","parseRGBColor","initializeSelectedColor","handleClose","colorPickerAnchorPosition","useMemo","rect","getBoundingClientRect","CustomColorPopover","Popover","anchorPosition","anchorReference","anchorOrigin","vertical","horizontal","xl","preventDefault","ColorPicker","updatedColor","updatedColors","slice","handleChangeColorPicker","hideOpacity","hideGradientStop","hideAdvancedSliders","hideColorGuide","hideColorTypeBtns","hideControls","hidePresets","ref","Math","round","mb","AlphaPicker","borderTransparentColors","globalColor","primaryColorRGBA","IcHighlightCircleTransparent","borderColors","event","currentTarget","IcPlusCircleOutlined","zIndex","ci","IcCloseThin","_node$data3$border","_node$data4$border","_node$data5$border","_node$data6$border","_node$data7$border","_node$data8$border","_node$data10$border","showOnlyBorderColor","updateNodeBorderColor","opacity","updateNodeBorderStyle","_parsedData3","_node$data$tableData","tableData","CustomSwitch","checked","_parsedData4","visibility","borderTop","Slider","valueLabelDisplay","updateNodeBorderThickness","thickness","placeholder","inputFontSize","onKeyPress","IcLinkOutlined3","TextField","fullWidth","input","py","Number"],"sourceRoot":""}