{"version":3,"file":"static/js/main-827e22a9.40fa69e9.js","mappings":"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","sources":["Components/DrawBoard/resizables/CustomNodeResizeControl.jsx","Components/DrawBoard/resizables/CustomNodeHandles.jsx","Components/DrawBoard/resizables/CenterEditor.jsx","Components/DrawBoard/resizables/BottomEditor.jsx","Components/DrawBoard/resizables/UmlComponent.jsx","Components/DrawBoard/resizables/resizables.jsx","Components/DrawBoard/resizables/index.js","Components/DrawBoard/ReactFlowConstants.js","Components/DrawBoard/dnd-context/DndContext.js","Components/DrawBoard/dnd-context/dnd-actions.js","Components/DrawBoard/dndCopyPaste/useCopyPaste.js","Components/DrawBoard/dndUndoRedo/UndoRedoProvider.js","Components/DrawBoard/forms/CreateBlankBoard.js","Components/DrawBoard/forms/CreateBoardModelSideBar.jsx","Components/DrawBoard/forms/ForYou.js","Components/DrawBoard/forms/TemplateListComponent.js","Components/DrawBoard/forms/CreateBoardFromTemplate.js","Components/DrawBoard/forms/UpgradePlanAccess.js","Components/DrawBoard/resizables/constants.js","Components/DrawBoard/tip-tap-editor/fontSize.js","Components/DrawBoard/tip-tap-editor/index.jsx","Components/DrawBoard/top-toolbar/components/CustomTooltip.js","Components/DrawBoard/top-toolbar/components/ToolTipWithDisabled.js","Components/DrawBoard/utils.js"],"sourcesContent":["import React from \"react\";\r\nimport { NodeResizeControl, NodeResizer, useViewport } from \"reactflow\";\r\nimport useZoomPercentages from \"../../../Utils/hooks/useZoomPercentages\";\r\nimport { Box } from \"@mui/material\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\n\r\nconst CustomNodeResizeControl = ({ node, handleOnResize, onResizeEnd }) => {\r\n const { isWidthLessthan100, isWidthLessthan50, isWidthLessthan25 } =\r\n useZoomPercentages({ selected: node?.selected });\r\n const { zoom } = useViewport();\r\n const sizeAsPerZoom = node?.width * zoom || 100;\r\n\r\n if (sizeAsPerZoom < 25) {\r\n return null;\r\n }\r\n return (\r\n <>\r\n {node?.data?.provider === \"shapes\" && (\r\n onResizeEnd(e, node)}\r\n onResize={handleOnResize}\r\n />\r\n )}\r\n onResizeEnd(e, node)}\r\n onResize={handleOnResize}\r\n style={{\r\n zIndex: 999999999999,\r\n backgroundColor: \"transparent\",\r\n border: \"1px solid transparent\",\r\n }}\r\n >\r\n \r\n \r\n onResizeEnd(e, node)}\r\n onResize={handleOnResize}\r\n minWidth={5}\r\n minHeight={5}\r\n style={{\r\n zIndex: 999999999999,\r\n backgroundColor: \"transparent\",\r\n border: \"1px solid transparent\",\r\n }}\r\n >\r\n \r\n \r\n onResizeEnd(e, node)}\r\n onResize={handleOnResize}\r\n style={{\r\n zIndex: 999999999999,\r\n backgroundColor: \"transparent\",\r\n border: \"1px solid transparent\",\r\n }}\r\n >\r\n \r\n \r\n onResizeEnd(e, node)}\r\n onResize={handleOnResize}\r\n style={{\r\n zIndex: 999999999999,\r\n backgroundColor: \"transparent\",\r\n border: \"1px solid transparent\",\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default React.memo(CustomNodeResizeControl);\r\n","import { Box } from \"@mui/material\";\r\nimport { Handle, useViewport } from \"reactflow\";\r\nimport useZoomPercentages from \"../../../Utils/hooks/useZoomPercentages\";\r\nimport {\r\n bottomHandleMapping,\r\n defaultHandlePosition,\r\n leftHandleMapping,\r\n rightHandleMapping,\r\n topHandleMapping,\r\n} from \"./constants\";\r\nimport React, {\r\n forwardRef,\r\n useEffect,\r\n useImperativeHandle,\r\n useState,\r\n} from \"react\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\n\r\nconst CustomNodeHandles = ({\r\n node,\r\n isNodeSelectionStarted,\r\n showDots,\r\n setShowDots,\r\n}) => {\r\n const { isWidthLessthan100, isWidthLessthan50, isWidthLessthan25 } =\r\n useZoomPercentages({ selected: node?.selected });\r\n\r\n const [hoveredItem, setHoveredItem] = useState(\"\");\r\n const { zoom } = useViewport();\r\n const sizeAsPerZoom = node?.width * zoom || 100;\r\n\r\n // if (sizeAsPerZoom < 25) {\r\n // return null;\r\n // }\r\n\r\n return (\r\n <>\r\n console.log(\"handle onConnect\", params)}\r\n onMouseOver={() => {\r\n setShowDots(true);\r\n setHoveredItem(\"top\");\r\n }}\r\n onMouseLeave={() => {\r\n setShowDots(false);\r\n setHoveredItem(\"\");\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n }}\r\n >\r\n {(!isNodeSelectionStarted || node.selected <= 0) && (\r\n \r\n )}\r\n \r\n console.log(\"handle onConnect\", params)}\r\n onMouseOver={() => {\r\n setShowDots(true);\r\n setHoveredItem(\"left\");\r\n }}\r\n onMouseLeave={() => {\r\n setShowDots(false);\r\n setHoveredItem(\"\");\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n }}\r\n >\r\n {(!isNodeSelectionStarted || node.selected <= 0) && (\r\n \r\n )}\r\n \r\n console.log(\"handle onConnect\", params)}\r\n onMouseOver={() => {\r\n setShowDots(true);\r\n setHoveredItem(\"right\");\r\n }}\r\n onMouseLeave={() => {\r\n setShowDots(false);\r\n setHoveredItem(\"\");\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n }}\r\n >\r\n {(!isNodeSelectionStarted || node.selected <= 0) && (\r\n \r\n )}\r\n \r\n console.log(\"handle onConnect\", params)}\r\n onMouseOver={() => {\r\n setShowDots(true);\r\n setHoveredItem(\"bottom\");\r\n }}\r\n onMouseLeave={() => {\r\n setShowDots(false);\r\n setHoveredItem(\"\");\r\n }}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n }}\r\n >\r\n {(!isNodeSelectionStarted || node.selected <= 0) && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default React.memo(CustomNodeHandles);\r\n","import React from 'react'\r\nimport { ShapesForBottomEditor } from './constants';\r\n\r\nconst CenterEditor = React.forwardRef(({ node, editor }, ref) => {\r\n const isShowBottomEditor = ShapesForBottomEditor?.includes(node?.name);\r\n\r\n const newTextLength = editor?.getText()?.length || 0;\r\n\r\n const isRightAngleTriangle = node?.data?.key === \"Right_triangle\";\r\n\r\n const nodeIsProcessOrConnector = [\"decision\", \"connector\"].includes(node?.data?.key.toLowerCase());\r\n\r\n const needLeftPadding = node?.data?.key === 'Curly_brace_note';\r\n\r\n\r\n const isTriangleNode = node?.name?.toLowerCase() === 'triangle';\r\n const isMergeNode = node?.name?.toLowerCase() === 'merge';\r\n\r\n return (\r\n \r\n 0 ? \"\" : \"no-text-editor\"\r\n }\r\n style={{\r\n cursor: !editor?.isFocused ? 'move' : \"text\",\r\n width: isRightAngleTriangle ? \"50%\" : \"100%\",\r\n height: \"100%\",\r\n display: isShowBottomEditor ? \"none\" : \"flex\",\r\n justifyContent: isRightAngleTriangle\r\n ? \"left\"\r\n : \"center\",\r\n alignItems: \"center\",\r\n textAlign: \"center\",\r\n fontSize: node?.data?.style?.fontSize ?? (isTriangleNode ? 12 : 15),\r\n fontFamily: node?.data?.style?.fontFamily ?? \"Inter\",\r\n wordBreak: \"break-word\",\r\n maxHeight:\r\n `${node?.style?.height + 12\r\n }px !important` || \"100% !important\",\r\n pointerEvents: editor?.isFocused ? \"auto\" : 'none',\r\n lineHeight: 'normal'\r\n }}\r\n />\r\n \r\n )\r\n})\r\n\r\nexport default CenterEditor","import React, { useMemo } from 'react'\r\nimport { leftCurlyNode, rightCurlyNode, thinNode } from './constants'\r\n\r\nconst BottomEditor = React.forwardRef(({ node, editor }, ref) => {\r\n const width = useMemo(() => {\r\n return node?.width + 40\r\n }, [node])\r\n return (\r\n \r\n \r\n \r\n )\r\n})\r\n\r\nexport default BottomEditor","import React from 'react';\r\nimport UmlComponentBoxInner from '../../../Utils/Icons/shapes/uml/UmlComponentBoxInner';\r\nimport UmlComponentInner from '../../../Utils/Icons/shapes/uml/UmlComponentInner';\r\nimport { Box } from '@mui/material';\r\nimport { iconTypes } from '../const';\r\n\r\n\r\n\r\nconst UmlComponent = ({ node }) => {\r\n\r\n if (![\"Uml_Component_Box\", \"Uml_Component\"].includes(node?.data?.key)) return null;\r\n\r\n const UmlComponents = {\r\n Uml_Component_Box: {\r\n component: UmlComponentBoxInner,\r\n containerStyles: {\r\n position: \"absolute\",\r\n top: \"15px\",\r\n right: \"15px\",\r\n zIndex: 1,\r\n }\r\n },\r\n Uml_Component: {\r\n component: UmlComponentInner,\r\n containerStyles: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n left: \"-12px\",\r\n zIndex: 1,\r\n }\r\n }\r\n }\r\n\r\n const RenderUmlComponent = UmlComponents[node?.data?.key].component;\r\n const containerStyles = UmlComponents[node?.data?.key].containerStyles;\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default React.memo(UmlComponent)","import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { Box } from \"@mui/material\";\r\nimport { useReactFlow, useUpdateNodeInternals, useViewport } from \"reactflow\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\n\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useUndoRedo } from \"../dndUndoRedo/UndoRedoProvider\";\r\nimport {\r\n removeHTMLTags,\r\n updateJson,\r\n} from \"../../../CommanFunctions/commanFunctions\";\r\nimport { debounce, omit, throttle } from \"lodash\";\r\nimport { useEditor } from \"@tiptap/react\";\r\nimport MindMapNodesToolbar from \"../../Node/common-components/nodeTopToolbar/MindMapNodesToolbar/MindMapNodesToolbar\";\r\nimport { iconTypes } from \"../const\";\r\nimport { Icons } from \"../../../Utils/Icons\";\r\nimport * as ICONS from \"../../../Utils/Icons\"; // new logic load component\r\nimport VotingCommon from \"../../mind-map/VotingCommon\";\r\nimport {\r\n editorDisabled,\r\n iconMapping,\r\n leftCurlyNode,\r\n noEditorShow,\r\n rightCurlyNode,\r\n ShapesForBottomEditor,\r\n} from \"./constants\";\r\nimport { tipTapExtensions } from \"../tip-tap-editor\";\r\nimport useZoomPercentages from \"../../../Utils/hooks/useZoomPercentages\";\r\nimport CustomNodeResizeControl from \"./CustomNodeResizeControl\";\r\nimport CustomNodeHandles from \"./CustomNodeHandles\";\r\nimport CenterEditor from \"./CenterEditor\";\r\nimport BottomEditor from \"./BottomEditor\";\r\nimport UmlComponent from \"./UmlComponent\";\r\nimport clsx from \"clsx\";\r\nimport { sanitizeHtml, updateLocalStorage } from \"../utils\";\r\nimport useNodeSelectionStarted from \"../../../Utils/hooks/useNodeSelectionStarted\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\n\r\nconst ResizableNodeSelected = ({ id: nodeId, data }) => {\r\n const { setNodes, getNodes, getNode } = useReactFlow();\r\n const node = getNode(nodeId);\r\n\r\n const { zoom } = useViewport();\r\n const location = useLocation();\r\n const { permission, showExport, copyAsImage, isDownload } = useSelector(\r\n (state) => state?.mindMapStore\r\n );\r\n const startVoting = useSelector(\r\n ({ archBoard }) => archBoard?.votingData?.startVotingSession\r\n );\r\n\r\n const { isNodeSelectionStarted } = useNodeSelectionStarted({\r\n selected: node?.selected,\r\n });\r\n\r\n const { id } = useParams();\r\n const user_data = localStorage.getItem(\"user_data\");\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n const dispatch = useDispatch();\r\n const mainRef = useRef(null);\r\n const textRef = useRef(null);\r\n\r\n const userRowData = localStorage.getItem(\"user_data\");\r\n const userData = userRowData ? JSON.parse(userRowData) : {};\r\n const selectedNodes = getNodes()?.filter((val) => val?.selected)?.length > 1;\r\n\r\n const { isItemToSmall } = useZoomPercentages({ selected: node.selected });\r\n\r\n const [showDots, setShowDots] = useState(false);\r\n\r\n const isAutoFont = false;\r\n // const isAutoFont = node?.data?.isAutoFont || true;\r\n\r\n const isShowBottomEditor = ShapesForBottomEditor?.includes(node?.name);\r\n const extensions = tipTapExtensions();\r\n const editorContentRef = useRef(node?.name);\r\n\r\n const shouldShowCenteredEditor =\r\n !noEditorShow?.includes(node?.name) &&\r\n node?.data?.provider === \"shapes\" &&\r\n !isShowBottomEditor;\r\n\r\n const shouldShowBottomEditor =\r\n (!node?.data?.isGroupHead && node?.data?.provider !== \"shapes\") ||\r\n isShowBottomEditor;\r\n\r\n const editor = useEditor(\r\n {\r\n element: textRef.current,\r\n editable: false,\r\n autofocus: true,\r\n extensions: extensions,\r\n content: sanitizeHtml(node?.data?.editorHTML, \"font-size\") ?? node?.name,\r\n onBlur: ({ editor }) => {\r\n editor.setEditable(false);\r\n\r\n if (editorContentRef.current !== editor?.getText()) {\r\n takeSnapshot({ nodes: getNodes(), edges: null });\r\n }\r\n },\r\n onUpdate: ({ editor }) => {\r\n if (\r\n node?.data?.provider === \"shapes\" &&\r\n editor?.getText() === node?.name\r\n )\r\n return;\r\n\r\n // onEditorUpdateAdjustFontSize();\r\n debouncedUpdateHTML(editor?.getHTML(), isAutoFont);\r\n },\r\n onFocus: ({ editor }) => {\r\n if (\r\n !node?.data?.editorHTML &&\r\n node?.data?.provider === \"shapes\" &&\r\n editor?.getText() === node?.name\r\n )\r\n editor.commands.clearContent();\r\n\r\n editorContentRef.current = editor.getText();\r\n },\r\n editorProps: {\r\n handlePaste: (view, event) => {\r\n const pastedContent = event.clipboardData.getData(\"text/plain\");\r\n try {\r\n JSON.parse(pastedContent);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n },\r\n },\r\n },\r\n [textRef.current, node?.data?.hideDescriptions]\r\n );\r\n\r\n useEffect(() => {\r\n if (editor && !editor.isFocused && node?.data?.editorHTML) {\r\n editor.commands.setContent(\r\n sanitizeHtml(node?.data?.editorHTML, \"font-size\")\r\n );\r\n } else {\r\n if (!editor?.isFocused) editor?.commands?.setContent(node?.name);\r\n }\r\n }, [editor, node?.data?.editorHTML]);\r\n\r\n const updateFontSize = debounce((fontSize = null) => {\r\n setNodes((prev) => {\r\n const updatedNodes = prev?.map((prev) => {\r\n if (prev.id === node.id) {\r\n return {\r\n ...prev,\r\n data: {\r\n ...omit(prev.data, [\"lastFontSize\"]),\r\n isResized: true,\r\n style: {\r\n ...prev.data?.style,\r\n fontSize: fontSize || textRef?.current?.style?.fontSize,\r\n },\r\n },\r\n style: {\r\n ...omit(prev.style, [\"maxWidth\"]),\r\n fontSize: fontSize || textRef?.current?.style?.fontSize,\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 // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\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 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 }, 100);\r\n\r\n const debouncedUpdateHTML = useMemo(\r\n () =>\r\n debounce((value, isAutoFont) => {\r\n if (!editor?.getText()?.trim()?.length) return;\r\n if (!node.selected) return;\r\n const oldContent = sanitizeHtml(node?.data?.editorHTML, \"font-size\");\r\n const currentContent = sanitizeHtml(value, \"font-size\");\r\n if (oldContent === currentContent) return;\r\n\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: getNodes(),\r\n lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n let updatedNode;\r\n const prev = getNodes()?.map((_) => {\r\n if (_?.id === node?.id) {\r\n _ = JSON.parse(JSON.stringify(_));\r\n _.data = {\r\n ...(omit(_?.data, [\"initial, lastFontSize\", \"editorState\"]) ||\r\n {}),\r\n isAiGenerated: false,\r\n editorHTML: currentContent,\r\n isAutoFont: isAutoFont,\r\n // style: {\r\n // ..._?.data?.style,\r\n // fontSize: textRef.current.style.fontSize\r\n // }\r\n };\r\n updatedNode = _;\r\n return _;\r\n } else {\r\n _ = JSON.parse(JSON.stringify(_));\r\n _.data = {\r\n ...(omit(_?.data, [\"editorState\"]) || {}),\r\n isAiGenerated: false,\r\n };\r\n return _;\r\n }\r\n });\r\n setNodes(prev);\r\n const search = new URLSearchParams(location.search);\r\n const a_id = search.get(\"a_id\");\r\n\r\n const shouldTakeSnapshot =\r\n removeHTMLTags(oldContent) === removeHTMLTags(currentContent)\r\n ? { takeSnapshot }\r\n : {};\r\n\r\n updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: prev,\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 ...shouldTakeSnapshot,\r\n a_id,\r\n });\r\n }, 500),\r\n [\r\n editor,\r\n node.selected,\r\n node?.data?.editorHTML,\r\n node?.id,\r\n getNodes,\r\n userData?.user_id,\r\n setNodes,\r\n location.search,\r\n takeSnapshot,\r\n id,\r\n dispatch,\r\n undo,\r\n ]\r\n );\r\n\r\n const onResizeEnd = (event, node) => {\r\n let parsedData = {};\r\n if (user_data) {\r\n parsedData = JSON.parse(user_data);\r\n }\r\n\r\n const nodes = getNodes().map((n) => {\r\n if (n.id === node.id) {\r\n return {\r\n ...n,\r\n data: {\r\n ...omit(n.data, [\"lastFontSize\"]),\r\n style: {\r\n ...(n.data.style || {}),\r\n fontSize:\r\n textRef.current.style.fontSize || node?.data?.style.fontSize,\r\n },\r\n },\r\n style: {\r\n ...n.style,\r\n fontSize: textRef.current.style.fontSize || node?.style.fontSize,\r\n },\r\n };\r\n }\r\n return n;\r\n });\r\n\r\n // Call updateJson once\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: updatedNode,\r\n nodes: nodes,\r\n lastUpdatedBy: parsedData?.user_id,\r\n lastEvent: `editor_changed_${node?.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 Icon = iconMapping?.[node?.data?.key];\r\n const ICON =\r\n ICONS[\"Icons\"]?.[node?.data.provider]?.[node?.data?.catagory]?.[\r\n node?.data?.key\r\n ]; // gettting icons component\r\n\r\n // useEffect(() => {\r\n // if (socket) {\r\n // socket.on(socketEvents.NODE_UPDATED, (data) => {\r\n // const jsonData = data?.architecture_json;\r\n // const currNode = jsonData?.nodes?.find((data) => data?.id === node?.id);\r\n // if (currNode) {\r\n // const currentNode =\r\n // jsonData?.lastEvent === `editor_changed_${node?.id}`\r\n // ? jsonData?.nodes?.find((val) => val?.id === node?.id)\r\n // : null;\r\n // if (\r\n // jsonData?.lastUpdatedBy !== userData?.user_id &&\r\n // currentNode?.data?.editorHTML &&\r\n // currentNode?.data?.editorHTML !== editor?.getHTML()\r\n // ) {\r\n // editor.commands.setContent(sanitizeHtml(currentNode?.data?.editorHTML));\r\n // setSocketCount((prev) => prev + 1);\r\n // }\r\n // }\r\n // });\r\n // }\r\n // }, [node?.id, socket]);\r\n\r\n const [imageData, setImageData] = useState(null);\r\n\r\n useEffect(() => {\r\n const fetchImageData = async () => {\r\n try {\r\n const response = await fetch(node?.data?.url);\r\n\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch image: ${response.statusText}`);\r\n }\r\n\r\n const blob = await response.blob();\r\n const reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n const base64Data = reader.result;\r\n // const imageType = response.headers.get(\"content-type\");\r\n\r\n setImageData(base64Data);\r\n };\r\n\r\n reader.readAsDataURL(blob);\r\n } catch (error) {}\r\n };\r\n if (node?.data?.url) {\r\n fetchImageData();\r\n }\r\n }, [node?.data?.url]);\r\n\r\n let fileType = \"\";\r\n const nodeUrl = node?.data?.url;\r\n if (nodeUrl) {\r\n const imageTypes = [\"jpeg\", \"png\", \"jpg\", \"svg\", \"gif\"];\r\n const splittedStr = nodeUrl?.split(\".\");\r\n const extension = splittedStr?.[splittedStr?.length - 1];\r\n fileType =\r\n imageTypes?.includes(extension) ||\r\n nodeUrl?.includes(\"giphy\") ||\r\n nodeUrl?.includes(\"bing\") ||\r\n node?.data?.urlType === \"image\"\r\n ? \"image\"\r\n : \"video\";\r\n }\r\n\r\n const borderWidth = node?.data?.border?.width;\r\n const borderStyle = node?.data?.border?.type;\r\n const borderColor = node?.data?.border?.borderColor;\r\n const opacity = node?.data?.border?.opacity;\r\n\r\n const adjustOpacity = (rgba, newOpacity) => {\r\n const parts = rgba.match(/rgba?\\((\\d+), (\\d+), (\\d+), ([\\d.]+)\\)/);\r\n if (!parts) return rgba;\r\n return `rgba(${parts[1]}, ${parts[2]}, ${parts[3]}, ${newOpacity})`;\r\n };\r\n\r\n const newBorderColor =\r\n borderColor && opacity ? adjustOpacity(borderColor, opacity) : \"\";\r\n\r\n const showNodeHandles =\r\n !node?.data?.locked &&\r\n !node?.dragging &&\r\n !showExport &&\r\n !isItemToSmall &&\r\n !copyAsImage &&\r\n !isDownload;\r\n\r\n const showResizeControlHandles =\r\n !node?.data?.locked &&\r\n node?.selected &&\r\n !showExport &&\r\n !isItemToSmall &&\r\n !isNodeSelectionStarted &&\r\n !copyAsImage &&\r\n !isDownload;\r\n\r\n useEffect(() => {\r\n if (node.data.locked) return;\r\n if (!editor) return;\r\n if (!node.selected) {\r\n editor.setEditable(false);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [node.selected, editor]);\r\n\r\n useEffect(() => {\r\n const currentNodeDom = document.querySelector(`[data-id=\"${nodeId}\"]`);\r\n if (!currentNodeDom || !editor) return;\r\n\r\n const handleNodeKeyDown = (e) => {\r\n if (!node.selected) return; // Prevent typing if node is not selected\r\n const isValidKey = /^[a-zA-Z\\d~!@#$%^&*()_+\\-={}\\[\\]|\\\\:;\"'<>,.?/]$/.test(\r\n e.key\r\n );\r\n\r\n if (!editor.isFocused && isValidKey) {\r\n editor.setEditable(true); // Enable editing\r\n editor.commands.clearContent(); // Clear existing content\r\n editor.commands.focus(\"end\"); // Focus on the editor\r\n editor.commands.insertContent(e.key);\r\n }\r\n };\r\n\r\n if (node.selected && !editor?.isEditable && !editor?.isFocused) {\r\n currentNodeDom.addEventListener(\"keydown\", handleNodeKeyDown, {\r\n once: true,\r\n });\r\n }\r\n if (!node.selected) {\r\n currentNodeDom.removeEventListener(\"keydown\", handleNodeKeyDown);\r\n }\r\n return () => {\r\n currentNodeDom.removeEventListener(\"keydown\", handleNodeKeyDown);\r\n if (!node.selected) {\r\n editor.setEditable(false);\r\n }\r\n };\r\n }, [node.selected, editor, nodeId]);\r\n\r\n const handleSingleClick = () => {\r\n if (node.data.locked) return;\r\n if (editor.isEditable) return;\r\n if (!node.selected) return;\r\n if (noEditorShow?.includes(node?.name)) return;\r\n if (node?.data?.hideDescriptions) return;\r\n editor.setEditable(true);\r\n if (!editor.isFocused) {\r\n editor.commands.focus(\"end\");\r\n }\r\n };\r\n\r\n const handleDoubleClick = () => {\r\n if (node.data.locked) return;\r\n if (noEditorShow?.includes(node?.name)) return;\r\n if (node?.data?.hideDescriptions) return;\r\n editor.setEditable(true);\r\n editor.commands.selectAll();\r\n };\r\n\r\n useEffect(() => {\r\n if (node.data.locked) editor?.setEditable(false);\r\n }, [node.data.locked, editor]);\r\n\r\n const shouldRenderToolbar =\r\n node.selected &&\r\n !node.dragging &&\r\n !isNodeSelectionStarted &&\r\n !selectedNodes &&\r\n editor &&\r\n !startVoting &&\r\n !editorDisabled?.includes(node.name);\r\n\r\n const onEditorUpdateAdjustFontSize = (fontSize = 100) => {\r\n if (!node.selected) return;\r\n if (shouldShowBottomEditor) return;\r\n if (!isAutoFont) return;\r\n\r\n const container = document.querySelector(`#sticky_notes_${node?.id}`);\r\n const textElement = textRef.current;\r\n if (container && textElement) {\r\n const containerWidth = container.offsetWidth;\r\n const containerHeight = container.offsetHeight;\r\n\r\n const min = Math.min(containerWidth, containerHeight) * 0.025;\r\n\r\n let calculatedFontSize = fontSize / min; // Start with a large font size\r\n textElement.style.fontSize = `${calculatedFontSize}cqmin`;\r\n\r\n // Reduce font size until content fits\r\n while (\r\n (textElement.scrollWidth > containerWidth ||\r\n textElement.scrollHeight > containerHeight) &&\r\n calculatedFontSize > 1\r\n ) {\r\n calculatedFontSize -= calculatedFontSize / min;\r\n textElement.style.fontSize = `${calculatedFontSize}cqmin`;\r\n }\r\n }\r\n };\r\n\r\n const toggleCustomHandles = () => setShowDots((prev) => !prev);\r\n\r\n const adjustFontSizeOnResize = throttle(\r\n () => onEditorUpdateAdjustFontSize(300),\r\n 80,\r\n { leading: true }\r\n );\r\n\r\n const handleOnResize = (_, { height, width }) => {\r\n // if (node.selected && isAutoFont && shouldShowCenteredEditor) adjustFontSizeOnResize({ height, width })\r\n };\r\n\r\n useEffect(() => {\r\n if (!node.selected) setShowDots(false);\r\n }, [node.selected]);\r\n\r\n const updateNodeInternals = useUpdateNodeInternals();\r\n\r\n // ! Do not remove this line. added to fix the edge position for the node. If this line is removed then edge position will not start from the handle position.\r\n useEffect(() => {\r\n updateNodeInternals(nodeId);\r\n }, [nodeId, updateNodeInternals]);\r\n\r\n function addPreserveAspectRatioIfMissing(svgElement) {\r\n if (!svgElement || svgElement.tagName !== \"svg\") {\r\n return;\r\n }\r\n\r\n if (!svgElement.hasAttribute(\"preserveAspectRatio\")) {\r\n svgElement.setAttribute(\"preserveAspectRatio\", \"none\");\r\n }\r\n }\r\n\r\n // !Add preserveAspectRatio=\"none\" to SVG elements if not exists to prevent shape resize issue\r\n useEffect(() => {\r\n if (mainRef.current && node.selected) {\r\n const svgElement = mainRef?.current.querySelector(\"svg\");\r\n addPreserveAspectRatioIfMissing(svgElement);\r\n }\r\n }, [node.id, mainRef.current, node.selected]);\r\n\r\n return (\r\n <>\r\n {showResizeControlHandles && (\r\n \r\n )}\r\n setShowDots(true)}\r\n onMouseOut={() => setShowDots(false)}\r\n >\r\n {!node?.data?.isTextArea && (\r\n \r\n {[\"Uml_Component_Box\", \"Uml_Component\"].includes(\r\n node?.data?.key\r\n ) && }\r\n {iconMapping?.[node?.data?.key] ? (\r\n
\r\n \r\n
\r\n ) : !Icons[node?.data.provider]?.[node?.data?.catagory]?.[\r\n node?.data?.key\r\n ]\r\n ?.toString()\r\n ?.includes(\".svg\") && ICON ? ( // to load ICON Components Example >> drop AWS >> Games >> first icon \"Game Kit\"\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {Icons[node?.data.provider]?.[node?.data?.catagory]?.[\r\n node?.data?.key\r\n ] &&\r\n Icons[node?.data.provider]?.[node?.data?.catagory]?.[\r\n node?.data?.key\r\n ]\r\n ?.toString()\r\n ?.includes(\".svg\") ? (\r\n \r\n ) : (\r\n <>\r\n {node?.data?.url ? (\r\n fileType === \"image\" ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \"\"\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n\r\n {shouldRenderToolbar && (\r\n \r\n )}\r\n\r\n {shouldShowCenteredEditor && (\r\n \r\n )}\r\n\r\n {shouldShowBottomEditor && !node?.data?.hideDescriptions && (\r\n \r\n )}\r\n \r\n\r\n {showNodeHandles && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default React.memo(ResizableNodeSelected, (prevProps, nextProps) => {\r\n return prevProps.data.globalDragging && nextProps.data.globalDragging;\r\n});\r\n","import ResizableNodeSelected from './resizables';\r\n\r\nexport default ResizableNodeSelected;","import ResizableNodeSelected from \"./resizables\";\r\nimport AnimatedDashedEdge from \"./Edges/AnimatedDashedEdge\";\r\nimport CustomEdge from \"./Edges/CustomEdge\";\r\nimport EdgeWithAminatedBall from \"./Edges/EdgeWithAminatedBall\";\r\nimport SimpleText from \"./Nodes-Types/SimpleText\";\r\nimport StickyNoteEditor from \"../Node/StickyNoteEditor\";\r\nimport EditableEdge from \"./Edges/EditableEdge/EditableEdge\";\r\nimport StepEdge from \"./Edges/EditableEdge/path/StepEdge\";\r\nimport GroupNode from \"./Nodes-Types/GroupNode\";\r\nimport TreeViewNode from \"./Nodes-Types/TreeViewNodeComponents/TreeViewNode.js\";\r\nimport ResizeLink from \"../Node/ResizeLink\";\r\nimport EmbedIframe from \"./Nodes-Types/EmbedIframe\";\r\nimport ListNode from \"./Nodes-Types/TodoListNodeComponents/ListNode\";\r\nimport ColumnNode from \"../Node/ColumnNode\";\r\nimport Comment from \"../Node/Comment\";\r\nimport Document from \"../Node/Document\";\r\nimport Upload from \"../Node/import-file/Upload\";\r\nimport UploadImage from \"./Nodes-Types/UploadImage\";\r\nimport TableNode from \"./Nodes-Types/TableNode\";\r\nimport Frame from \"../Node/frameNode/Frame\";\r\nimport KanbanContainorNode from \"./Nodes-Types/KanbanNodeComponents/KanbanContainerNode.js\";\r\nimport DrawingNode from \"./Nodes-Types/DrawingNode\";\r\nimport TreeNodeEdgeType1 from \"./Edges/TreeNodeEdgeType1\";\r\nimport TreeNodeEdgeType2 from \"./Edges/TreeNodeEdgeType2\";\r\nimport TreeNodeEdgeType3 from \"./Edges/TreeNodeEdgeType3\";\r\nimport TreeNodeEdgeType5 from \"./Edges/TreeNodeEdgeType5\";\r\nimport TreeNodeEdgeType8 from \"./Edges/TreeNodeEdgeType8\";\r\nimport DotVoting from \"./Nodes-Types/DotVotingNodeComponents/DotVoting.js\";\r\nimport DotVotingNode from \"./Nodes-Types/DotVotingNodeComponents/DotVotingNode.js\";\r\nimport StoryPoint from \"./Nodes-Types/StoryPointNodeComponents/StoryPoint.js\";\r\nimport StoryPointNode from \"./Nodes-Types/StoryPointNodeComponents/StoryPointNode.js\";\r\nimport Polling from \"../Node/polling/Polling\";\r\nimport OrgChartNode from \"./Nodes-Types/OrgChartNodeComponents/OrgChartNode.js\";\r\nimport PeopleDraggingNode from \"./Nodes-Types/PeopleNodeComponents/PeopleDraggingNode.js\";\r\nimport PeopleNode from \"./Nodes-Types/PeopleNodeComponents/PeopleNode.js\";\r\nimport UserStoryMapNode from \"./Nodes-Types/UserStoryMapNode\";\r\nimport UserCardNode from \"./Nodes-Types/UserCardNode\";\r\nimport ChartNode from \"./Nodes-Types/ChartNode\";\r\nimport CardNode from \"./Nodes-Types/CardNodeComponents/CardNode.js\";\r\nimport resizables from \"./resizables\";\r\nimport RotatableNode from \"../Node/RotatableNode/RotatableNode.js\";\r\nimport ShapeTableNode from \"./Nodes-Types/shape-table/ShapeTableNode\";\r\nimport PipeNode from \"../Node/StickyNoteEditor/PipeNode\";\r\nimport { Handle } from \"reactflow\";\r\n\r\nexport const proOptions = { account: \"paid-pro\", hideAttribution: true };\r\n\r\nexport const GhostNode = () => (\r\n //
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n);\r\n\r\nexport const nodeTypes = {\r\n rotatableNode: RotatableNode,\r\n resizable: ResizableNodeSelected,\r\n stickyNoteEditor: StickyNoteEditor,\r\n simpleText: SimpleText,\r\n group: GroupNode,\r\n shape: resizables,\r\n TreeView: TreeViewNode,\r\n resizeLink: ResizeLink,\r\n embedIframe: EmbedIframe,\r\n todoList: ListNode,\r\n columnNode: ColumnNode,\r\n comment: Comment,\r\n document: Document,\r\n Upload: Upload,\r\n uploadImage: UploadImage,\r\n Table: TableNode,\r\n frame: Frame,\r\n kanbanSmartContainor: KanbanContainorNode,\r\n drawingNode: DrawingNode,\r\n dotVoting: DotVoting,\r\n dotVotingNode: DotVotingNode,\r\n storyPoints: StoryPoint,\r\n storyPointNode: StoryPointNode,\r\n polling: Polling,\r\n orgChart: OrgChartNode,\r\n card: CardNode,\r\n chart: ChartNode,\r\n userCard: UserCardNode,\r\n userStoryMap: UserStoryMapNode,\r\n people: PeopleNode,\r\n PeopleNode: PeopleDraggingNode,\r\n shapeTable: ShapeTableNode,\r\n pipe: PipeNode,\r\n ghost: GhostNode,\r\n};\r\n\r\nexport const edgeTypes = {\r\n animatedBall: EdgeWithAminatedBall,\r\n animatedDash: AnimatedDashedEdge,\r\n smoothstep: (edge) => ,\r\n straight: (edge) => ,\r\n default: (edge) => ,\r\n \"editable-edge\": (edge) => {\r\n return (\r\n \r\n );\r\n },\r\n \"step-edge\": (edge) => {\r\n return (\r\n \r\n );\r\n },\r\n treeNodeEdgeType1: TreeNodeEdgeType1,\r\n treeNodeEdgeType2: TreeNodeEdgeType2,\r\n treeNodeEdgeType3: TreeNodeEdgeType3,\r\n treeNodeEdgeType5: TreeNodeEdgeType5,\r\n treeNodeEdgeType8: TreeNodeEdgeType8,\r\n};\r\n","import { React, createContext, useContext, useReducer } from \"react\";\r\nimport { dndActions } from \"./dnd-actions\";\r\n\r\nexport const initialState = {\r\n /**Background */\r\n mainBackgroundStyles: { background: \"#F5F5F5\" },\r\n cropBox: {\r\n startX: (window.innerWidth - 0) / 2,\r\n startY: (window.innerHeight - 0) / 2 + 40,\r\n width: 0,\r\n height: 0,\r\n },\r\n};\r\n\r\n// Define a reducer function\r\nconst reducer = (state, { payload, type }) => {\r\n switch (type) {\r\n case dndActions.change_bg_styles: {\r\n let stateLocal = { ...state };\r\n stateLocal.mainBackgroundStyles = {\r\n ...stateLocal.mainBackgroundStyles,\r\n ...payload,\r\n };\r\n return stateLocal;\r\n }\r\n case dndActions.update_cropbox: {\r\n let stateLocal = { ...state };\r\n stateLocal.cropBox = {\r\n ...stateLocal.cropBox,\r\n ...payload,\r\n };\r\n return stateLocal;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const DNDContextCreate = createContext();\r\n\r\nexport function DNDContext(props) {\r\n let [state, dispatch] = useReducer(reducer, initialState);\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\n// Consume the context in any child component by using a Custom Hook\r\nexport function useDNDContext(cb) {\r\n return cb(useContext(DNDContextCreate));\r\n}\r\n","export const dndActions = {\r\n /**background main*/\r\n change_bg_styles: \"change_bg_styles\",\r\n update_cropbox: \"changes_cropbox\"\r\n};\r\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useReactFlow, getConnectedEdges, useStore } from \"reactflow\";\r\nimport { ContentState, EditorState } from \"draft-js\";\r\nimport {\r\n extractShapeTableEdgeHandleId,\r\n getId,\r\n getNodeById,\r\n hasSelectedTextInInput,\r\n isInputFocused,\r\n removeDuplicatesById,\r\n updateJson,\r\n} from \"../../../CommanFunctions/commanFunctions\";\r\nimport commanService from \"../../../CommanFunctions/commanService\";\r\nimport { getChildrenAndSelf } from \"../utils\";\r\nimport { useUndoRedo } from \"../dndUndoRedo/UndoRedoProvider\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { debounce } from \"lodash\";\r\nimport { getUnderlyingElementInfo } from \"../Nodes-Types/KanbanNodeComponents/KanbanUtils\";\r\n\r\nexport function useCopyPaste({ setShowShapesLimitModal }) {\r\n const mousePosRef = useRef({ x: 0, y: 0 });\r\n const rfDomNode = useStore((state) => state.domNode);\r\n const { id } = useParams();\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n const { isMainPickerOpen } = useSelector((state) => state?.mindMapStore);\r\n const { currentSubscriptionData } = useSelector((state) => state.common);\r\n const lastPastePosition = useRef({ x: 0, y: 0 });\r\n const pasteCount = useRef(0);\r\n const { undo, takeSnapshot } = useUndoRedo();\r\n\r\n const { getNodes, setNodes, getEdges, setEdges, screenToFlowPosition } =\r\n useReactFlow();\r\n\r\n const debouncedUpdateJson = useMemo(\r\n () =>\r\n debounce((architecture_json) => {\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 ...architecture_json,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n takeSnapshot,\r\n });\r\n }, 500),\r\n [updateJson, location, undo, takeSnapshot]\r\n );\r\n\r\n const handlePasteEvent = useCallback(\r\n async (event) => {\r\n const isColorPickerOpen = document.getElementById(\"rbgcp-wrapper\");\r\n const isAnyInputFocused = isInputFocused();\r\n const currentNodes = getNodes();\r\n\r\n if (isColorPickerOpen || isAnyInputFocused) {\r\n return;\r\n }\r\n\r\n let { x: pasteX, y: pasteY } = screenToFlowPosition({\r\n x: mousePosRef.current.x,\r\n y: mousePosRef.current.y,\r\n });\r\n\r\n // Calculate offset based on paste count\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n if (\r\n pasteX === lastPastePosition.current.x &&\r\n pasteY === lastPastePosition.current.y\r\n ) {\r\n pasteCount.current++;\r\n offsetX = pasteCount.current * 15;\r\n offsetY = pasteCount.current * 15;\r\n } else {\r\n pasteCount.current = 0;\r\n }\r\n lastPastePosition.current = { x: pasteX, y: pasteY };\r\n\r\n // Check for image files in the paste event\r\n const items = event.clipboardData.items;\r\n const imageItems = Array.from(items).filter(\r\n (item) => item.type.indexOf(\"image\") !== -1\r\n );\r\n\r\n // Check node limit before processing\r\n if (\r\n currentSubscriptionData?.subscriptionData?.package === \"Free\" &&\r\n currentNodes.length + imageItems.length > 30\r\n ) {\r\n setShowShapesLimitModal(true);\r\n return;\r\n }\r\n\r\n // Upload image to S3 and get dimensions\r\n const uploadImageWithDimensions = async (file) => {\r\n // First get dimensions\r\n const dimensionsPromise = new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n const img = new Image();\r\n img.onload = () => {\r\n resolve({\r\n width: img.width,\r\n height: img.height,\r\n });\r\n };\r\n img.onerror = reject;\r\n img.src = reader.result;\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(file);\r\n });\r\n \r\n // Upload to S3\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n \r\n try {\r\n const res = await commanService.uploadApi(\r\n \"drawboard\",\r\n \"upload/files\",\r\n formData\r\n );\r\n \r\n const s3Url = res.data.data[0].location;\r\n const dimensions = await dimensionsPromise;\r\n \r\n return {\r\n s3Url,\r\n width: dimensions.width,\r\n height: dimensions.height\r\n };\r\n } catch (error) {\r\n console.error(\"S3 upload failed\", error);\r\n throw error;\r\n }\r\n };\r\n\r\n // Process all images\r\n try {\r\n // Upload all images to S3 and get their dimensions\r\n const imageData = await Promise.all(\r\n imageItems.map((item) => uploadImageWithDimensions(item.getAsFile()))\r\n );\r\n\r\n const newImageNodes = imageData.reduce((nodes, imageInfo, index) => {\r\n // Calculate position for each image\r\n const pastePosition =\r\n index === 0\r\n ? { x: pasteX + offsetX, y: pasteY + offsetY } // First image at original paste position\r\n : {\r\n x:\r\n nodes[index - 1].position.x +\r\n nodes[index - 1].data.width +\r\n 50 +\r\n offsetX, // Previous node's x + width + 50px gap\r\n y: pasteY + offsetY,\r\n };\r\n\r\n const imageNode = {\r\n id: getId(),\r\n type: \"uploadImage\",\r\n position: pastePosition,\r\n positionAbsolute: pastePosition,\r\n url: imageInfo.s3Url, // Use S3 URL instead of data URL\r\n data: {\r\n filename: \"pasted image\",\r\n provider: \"s3\", // Change provider to s3\r\n Label: imageInfo.s3Url,\r\n width: imageInfo.width, // Store actual image width\r\n height: imageInfo.height, // Store actual image height\r\n scale: false,\r\n imageShow: true,\r\n hide: false,\r\n showBorder: false,\r\n frameName: \"Frame 1\",\r\n frameNo: 1,\r\n frame: false,\r\n label: \"frame\",\r\n locked: false,\r\n zIndex: 1000,\r\n border: {\r\n type: \"solid\",\r\n width: 1,\r\n opacity: 1,\r\n borderColor: \"rgba(3, 11, 22, 1)\",\r\n },\r\n },\r\n style: {\r\n zIndex: 1000,\r\n },\r\n selected: true,\r\n };\r\n\r\n return [...nodes, imageNode];\r\n }, []);\r\n\r\n const clipboardItems = await navigator.clipboard.read();\r\n\r\n if (clipboardItems[0].types.length === 0 && newImageNodes.length > 0) {\r\n // Update nodes and JSON\r\n const updatedNodes = [\r\n ...newImageNodes,\r\n ...currentNodes.map((node) => ({\r\n ...node,\r\n selected: false,\r\n })),\r\n ];\r\n\r\n setNodes(updatedNodes);\r\n\r\n debouncedUpdateJson({ nodes: updatedNodes });\r\n } else {\r\n paste();\r\n }\r\n } catch (error) {\r\n console.error(\"Image upload failed\", error);\r\n }\r\n },\r\n [\r\n getNodes,\r\n dispatch,\r\n undo,\r\n id,\r\n screenToFlowPosition,\r\n currentSubscriptionData,\r\n ]\r\n );\r\n\r\n useEffect(() => {\r\n const events = [\"cut\", \"copy\"];\r\n let pasteTriggered = false; // Flag to track if onPaste was triggered\r\n\r\n if (rfDomNode) {\r\n const preventDefault = (e) => {\r\n const isAnyInputFocused = hasSelectedTextInInput();\r\n if (!isAnyInputFocused) e.preventDefault();\r\n };\r\n\r\n const onMouseMove = (event) => {\r\n mousePosRef.current = {\r\n x: event.clientX,\r\n y: event.clientY,\r\n };\r\n };\r\n\r\n const onPaste = (event) => {\r\n const isAnyInputFocused = isInputFocused();\r\n if (!isAnyInputFocused) {\r\n pasteTriggered = true; // Set the flag when onPaste is triggered\r\n event.preventDefault();\r\n handlePasteEvent(event);\r\n }\r\n };\r\n\r\n const onKeyDown = (event) => {\r\n if (\r\n event.ctrlKey &&\r\n event.key.toLowerCase() === \"v\" &&\r\n !isInputFocused()\r\n ) {\r\n // Reset the flag before potential paste\r\n pasteTriggered = false;\r\n setTimeout(() => {\r\n if (!pasteTriggered) {\r\n event.preventDefault();\r\n paste();\r\n } else {\r\n }\r\n }, 50); // Small delay to allow onPaste to fire first if it's going to\r\n }\r\n };\r\n\r\n for (const event of events) {\r\n rfDomNode.addEventListener(event, preventDefault);\r\n }\r\n rfDomNode.addEventListener(\"mousemove\", onMouseMove);\r\n document.addEventListener(\"paste\", onPaste);\r\n document.addEventListener(\"keydown\", onKeyDown);\r\n\r\n return () => {\r\n for (const event of events) {\r\n rfDomNode.removeEventListener(event, preventDefault);\r\n }\r\n rfDomNode.removeEventListener(\"mousemove\", onMouseMove);\r\n document.removeEventListener(\"paste\", onPaste);\r\n document.removeEventListener(\"keydown\", onKeyDown);\r\n };\r\n }\r\n }, [rfDomNode, handlePasteEvent]);\r\n\r\n const isNodeInside = (innerNode, outerNode) => {\r\n return (\r\n innerNode.positionAbsolute.x >= outerNode.positionAbsolute.x &&\r\n innerNode.positionAbsolute.y >= outerNode.positionAbsolute.y &&\r\n innerNode?.style?.width !== outerNode?.style?.width &&\r\n innerNode?.style?.height !== outerNode?.style?.height &&\r\n innerNode.positionAbsolute.x + (innerNode.width || 0) <=\r\n outerNode.positionAbsolute.x + (outerNode.width || 0) &&\r\n innerNode.positionAbsolute.y + (innerNode.height || 0) <=\r\n outerNode.positionAbsolute.y + (outerNode.height || 0)\r\n );\r\n };\r\n\r\n const getNodesInsideSelected = (allNodes, selectedNodes) => {\r\n const insideNodes = new Set();\r\n\r\n selectedNodes.forEach((selectedNode) => {\r\n allNodes.forEach((node) => {\r\n if (node.id !== selectedNode.id && isNodeInside(node, selectedNode)) {\r\n insideNodes.add(node);\r\n }\r\n });\r\n });\r\n\r\n return Array.from(insideNodes);\r\n };\r\n\r\n const updateParentIds = (nodes) => {\r\n // Create a set of all node IDs for fast lookup\r\n const nodeIds = new Set(nodes.map((node) => node.id));\r\n\r\n nodes.forEach((node) => {\r\n // Update orphan treeview nodes without valid parents\r\n if (node.type === \"TreeView\" && node.parentNode) {\r\n // Check if the parentNode exists in the node array\r\n if (!nodeIds.has(node.parentNode)) {\r\n // Update the node as a top-level parent if the parent is not found\r\n node.parentNode = null;\r\n node.data = {\r\n ...node.data,\r\n type: \"parent\",\r\n rootParentId: node.id,\r\n topChildrenOrder: [],\r\n bottomChildrenOrder: [],\r\n leftChildrenOrder: [],\r\n rightChildrenOrder: [],\r\n [`${node.data.side}ChildrenOrder`]: node.data.childrenOrder,\r\n };\r\n\r\n // Remove childrenOrder key\r\n delete node.data.childrenOrder;\r\n }\r\n }\r\n });\r\n\r\n return nodes;\r\n };\r\n\r\n const assignRootParentIds = (nodes) => {\r\n function assignToChildren(parentNode, nodes) {\r\n nodes.forEach((node) => {\r\n if (node.type === \"TreeView\" && node.parentNode === parentNode.id) {\r\n node.data.rootParentId = parentNode.data.rootParentId;\r\n // Recursively assign rootParentId to the sub-children\r\n assignToChildren(node, nodes);\r\n }\r\n });\r\n }\r\n\r\n nodes.forEach((node) => {\r\n if (node.type === \"TreeView\" && !node.parentNode) {\r\n node.data.rootParentId = node.id;\r\n // Assign rootParentId to all its children and sub-children\r\n assignToChildren(node, nodes);\r\n }\r\n });\r\n\r\n return nodes;\r\n };\r\n\r\n const copy = useCallback(async () => {\r\n const isColorPickerOpen = document.getElementById(\"rbgcp-wrapper\");\r\n const isAnyInputFocused = hasSelectedTextInInput();\r\n\r\n let selectedNodes = getNodes().filter((node) => node.selected);\r\n\r\n selectedNodes = selectedNodes.map((node) => {\r\n if (node.type === \"polling\") {\r\n const removeVote =\r\n node?.data?.pollData?.answers?.map((val) => ({\r\n ...val,\r\n voteCount: 0,\r\n votedUsersIds: [],\r\n votedUsersData: [],\r\n error: \"\",\r\n })) || [];\r\n\r\n return {\r\n ...node,\r\n data: {\r\n ...node.data,\r\n pollData: {\r\n ...node.data.pollData,\r\n answers: removeVote,\r\n pollStarted: false,\r\n pollEnded: false,\r\n votedUsersData: [],\r\n votedUsersIds: [],\r\n },\r\n },\r\n };\r\n }\r\n return node;\r\n });\r\n\r\n if (!isColorPickerOpen && !isAnyInputFocused && selectedNodes.length > 0) {\r\n const allNodes = getNodes();\r\n\r\n // Use a Set to avoid duplicates\r\n const nodesToCopy = new Set();\r\n\r\n // Function to add a node and all its children\r\n const addNodeAndChildren = (node) => {\r\n if (!nodesToCopy.has(node)) {\r\n nodesToCopy.add(node);\r\n const children = getChildrenAndSelf(allNodes, node.id);\r\n children.forEach((child) => {\r\n if (child.id !== node.id) addNodeAndChildren(child);\r\n });\r\n }\r\n };\r\n\r\n // Add all selected nodes and their children\r\n selectedNodes.forEach(addNodeAndChildren);\r\n\r\n // Add all nodes inside selected nodes\r\n const insideNodes = getNodesInsideSelected(allNodes, selectedNodes);\r\n insideNodes.forEach(addNodeAndChildren);\r\n\r\n const nodesToCopyArray = Array.from(nodesToCopy);\r\n\r\n const selectedEdges = getConnectedEdges(\r\n nodesToCopyArray,\r\n getEdges()\r\n ).filter((edge) => {\r\n return (\r\n nodesToCopyArray.some((n) => n.id === edge.source) &&\r\n nodesToCopyArray.some((n) => n.id === edge.target)\r\n );\r\n });\r\n\r\n const copyData = {\r\n nodes: nodesToCopyArray,\r\n edges: selectedEdges,\r\n };\r\n\r\n // Check for clipboard-write permission\r\n // const writePermission = await navigator.permissions.query({\r\n // name: \"clipboard-write\",\r\n // });\r\n // const readPermission = await navigator.permissions.query({\r\n // name: \"clipboard-read\",\r\n // });\r\n\r\n // if (\r\n // writePermission.state === \"granted\" &&\r\n // readPermission.state === \"granted\"\r\n // ) {\r\n // Both permissions are granted, proceed with write and read\r\n await navigator.clipboard.writeText(JSON.stringify(copyData));\r\n // } else {\r\n // // If either permission is denied, show a warning\r\n // dispatch(\r\n // warningToast({\r\n // message:\r\n // \"Clipboard access is blocked. Please enable it in your browser settings.\",\r\n // })\r\n // );\r\n // }\r\n }\r\n }, [getNodes, getEdges]);\r\n\r\n const cut = useCallback(async () => {\r\n const isColorPickerOpen = document.getElementById(\"rbgcp-wrapper\");\r\n const isAnyInputFocused = hasSelectedTextInInput();\r\n let selectedNodes = getNodes().filter((node) => node.selected);\r\n\r\n selectedNodes = selectedNodes.map((node) => {\r\n if (node.type === \"polling\") {\r\n const removeVote =\r\n node?.data?.pollData?.answers?.map((val) => ({\r\n ...val, // Copy existing properties\r\n voteCount: 0,\r\n votedUsersIds: [],\r\n votedUsersData: [],\r\n error: \"\",\r\n })) || []; // Ensure it's an array even if `answers` is undefined\r\n\r\n return {\r\n ...node,\r\n data: {\r\n ...node.data,\r\n pollData: {\r\n ...node.data.pollData,\r\n answers: removeVote,\r\n pollStarted: false,\r\n pollEnded: false,\r\n votedUsersData: [],\r\n votedUsersIds: [],\r\n },\r\n },\r\n };\r\n }\r\n return node;\r\n });\r\n\r\n if (!isColorPickerOpen && !isAnyInputFocused && selectedNodes.length > 0) {\r\n const allNodes = getNodes();\r\n\r\n const nodesToCut = new Set();\r\n\r\n const addNodeAndChildren = (node) => {\r\n if (!nodesToCut.has(node)) {\r\n nodesToCut.add(node);\r\n const children = getChildrenAndSelf(allNodes, node.id);\r\n children.forEach((child) => {\r\n if (child.id !== node.id) addNodeAndChildren(child);\r\n });\r\n }\r\n };\r\n\r\n // Add all selected nodes and their children\r\n selectedNodes.forEach(addNodeAndChildren);\r\n\r\n // Add all nodes inside selected nodes\r\n const insideNodes = getNodesInsideSelected(allNodes, selectedNodes);\r\n insideNodes.forEach(addNodeAndChildren);\r\n\r\n const nodesToCutArray = Array.from(nodesToCut);\r\n\r\n const selectedEdges = getConnectedEdges(\r\n nodesToCutArray,\r\n getEdges()\r\n ).filter((edge) => {\r\n return (\r\n nodesToCutArray.some((n) => n.id === edge.source) &&\r\n nodesToCutArray.some((n) => n.id === edge.target)\r\n );\r\n });\r\n\r\n const cutData = {\r\n nodes: nodesToCutArray,\r\n edges: selectedEdges,\r\n };\r\n\r\n // Check for clipboard-write permission\r\n // const writePermission = await navigator.permissions.query({\r\n // name: \"clipboard-write\",\r\n // });\r\n // const readPermission = await navigator.permissions.query({\r\n // name: \"clipboard-read\",\r\n // });\r\n\r\n // if (\r\n // writePermission.state === \"granted\" &&\r\n // readPermission.state === \"granted\"\r\n // ) {\r\n // Both permissions are granted, proceed with write and read\r\n await navigator.clipboard.writeText(JSON.stringify(cutData));\r\n\r\n let updatedEdges = [];\r\n let updatedNodes = [];\r\n const deletedNodes = [];\r\n const deletedEdges = [];\r\n\r\n setNodes((nodes) => {\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedNodes = nodes.filter((node) => {\r\n const isRemove = !nodesToCutArray.some((n) => n.id === node.id);\r\n if (!isRemove) {\r\n deletedNodes.push(node?.id);\r\n }\r\n return isRemove;\r\n });\r\n return updatedNodes;\r\n });\r\n\r\n setEdges((edges) => {\r\n localStorage.setItem(\r\n \"architectureJsonEdges\",\r\n JSON.stringify({\r\n architecture_json: {\r\n edges: updatedEdges,\r\n // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedEdges = edges.filter((edge) => {\r\n const isRemove = !selectedEdges.some((ed) => ed.id === edge.id);\r\n if (!isRemove) {\r\n deletedEdges.push(edge?.id);\r\n }\r\n return isRemove;\r\n });\r\n return updatedEdges;\r\n });\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 edges: updatedEdges,\r\n },\r\n },\r\n id,\r\n dispatch,\r\n undo,\r\n a_id,\r\n should_delete: !updatedNodes || updatedNodes?.length === 0,\r\n takeSnapshot,\r\n });\r\n // } else {\r\n // // If either permission is denied, show a warning\r\n // dispatch(\r\n // warningToast({\r\n // message:\r\n // \"Clipboard access is blocked. Please enable it in your browser settings.\",\r\n // })\r\n // );\r\n // }\r\n }\r\n }, [\r\n getNodes,\r\n setNodes,\r\n getEdges,\r\n setEdges,\r\n dispatch,\r\n id,\r\n location.search,\r\n undo,\r\n ]);\r\n\r\n const getImageDimensions = (file) => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event) => {\r\n const img = new Image();\r\n img.onload = () => {\r\n resolve({ width: img.width, height: img.height });\r\n };\r\n img.onerror = (err) =>\r\n reject(new Error(\"Image loading failed: \" + err));\r\n img.src = event.target.result;\r\n };\r\n\r\n reader.onerror = (err) => reject(new Error(\"FileReader failed: \" + err));\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n const paste = useCallback(\r\n async (\r\n { x: pasteX, y: pasteY } = screenToFlowPosition({\r\n x: mousePosRef.current.x,\r\n y: mousePosRef.current.y,\r\n })\r\n ) => {\r\n const storedFrameSize = localStorage.getItem(\"frameCopiedImage\");\r\n const frameSize = storedFrameSize ? JSON.parse(storedFrameSize) : null;\r\n // Calculate offset based on paste count\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n if (\r\n pasteX === lastPastePosition.current.x &&\r\n pasteY === lastPastePosition.current.y\r\n ) {\r\n pasteCount.current++;\r\n offsetX = pasteCount.current * 15;\r\n offsetY = pasteCount.current * 15;\r\n } else {\r\n pasteCount.current = 0;\r\n }\r\n lastPastePosition.current = { x: pasteX, y: pasteY };\r\n\r\n const nodes = getNodes();\r\n\r\n const isColorPickerOpen = document.getElementById(\"rbgcp-wrapper\");\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: nodes,\r\n // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n\r\n const isAnyInputFocused = isInputFocused();\r\n const nodeCounts = getNodes().length;\r\n\r\n if (isColorPickerOpen || isAnyInputFocused) {\r\n return;\r\n }\r\n\r\n let clipboardItems;\r\n\r\n // Check for clipboard-write permission\r\n // const writePermission = await navigator.permissions.query({\r\n // name: \"clipboard-write\",\r\n // });\r\n // const readPermission = await navigator.permissions.query({\r\n // name: \"clipboard-read\",\r\n // });\r\n\r\n // if (\r\n // writePermission.state === \"granted\" &&\r\n // readPermission.state === \"granted\"\r\n // ) {\r\n // Attempt to read from the clipboard to confirm\r\n clipboardItems = await navigator.clipboard.read();\r\n // } else {\r\n // // If either permission is denied, show a warning\r\n // dispatch(\r\n // warningToast({\r\n // message:\r\n // \"Clipboard access is blocked. Please enable it in your browser settings.\",\r\n // })\r\n // );\r\n // }\r\n\r\n const textItems = [];\r\n const imageItems = [];\r\n const fileItems = [];\r\n let textContent = \"\";\r\n\r\n for (const item of clipboardItems) {\r\n if (item.types.includes(\"text/plain\")) {\r\n const textBlob = await item.getType(\"text/plain\");\r\n textContent = await textBlob.text();\r\n }\r\n\r\n if (\r\n item.types.includes(\"image/png\") ||\r\n item.types.includes(\"image/jpeg\") ||\r\n item.types.includes(\"image/gif\")\r\n ) {\r\n imageItems.push(item);\r\n } else if (\r\n item.types.includes(\"text/plain\") ||\r\n item.types.includes(\"text/html\")\r\n ) {\r\n const text = await item\r\n .getType(\"text/plain\" || \"text/html\")\r\n .then((blob) => blob.text());\r\n textItems.push(text);\r\n } else if (item.types.includes(\"Files\")) {\r\n fileItems.push(item);\r\n }\r\n }\r\n\r\n // Handle files directly\r\n if (fileItems.length > 0) {\r\n for (const fileItem of fileItems) {\r\n const files = await fileItem.getType(\"Files\");\r\n for (const file of files) {\r\n if (file.type.startsWith(\"image/\")) {\r\n imageItems.push({ file });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (imageItems.length > 0) {\r\n if (\r\n currentSubscriptionData?.subscriptionData?.package === \"Free\" &&\r\n nodeCounts + imageItems.length > 30\r\n ) {\r\n setShowShapesLimitModal(true);\r\n return;\r\n }\r\n\r\n for (const imageItem of imageItems) {\r\n let file;\r\n if (imageItem.file) {\r\n // Directly copied file\r\n file = imageItem.file;\r\n } else {\r\n // Clipboard image\r\n const blob = await imageItem.getType(\r\n imageItem.types.find((type) => type.startsWith(\"image/\"))\r\n );\r\n\r\n file = new File([blob], `${blob?.type}.png`, {\r\n type: \"image/png\",\r\n });\r\n }\r\n const { width, height } = await getImageDimensions(file);\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n formData.append(\"fileName\", file.name || `image-${Date.now()}`);\r\n\r\n // const placeholderNodeId = getId();\r\n const position = { x: pasteX + offsetX, y: pasteY + offsetY };\r\n\r\n // const placeholderNode = {\r\n // id: placeholderNodeId,\r\n // type: \"simpleText\",\r\n // position: position,\r\n // data: {\r\n // editorState: EditorState.createWithContent(\r\n // ContentState.createFromText(\"\")\r\n // ),\r\n // editorHTML: \"Please Wait...\",\r\n // maxPosition: {\r\n // x: position?.x - 10,\r\n // y: position?.y - 10,\r\n // },\r\n // label: \"simpleText\",\r\n // minWidth: 30,\r\n // color: \"#18181B\",\r\n // name: \"\",\r\n // style: {\r\n // fontSize: 10,\r\n // fontWeight: 400,\r\n // fontStyle: \"normal\",\r\n // textDecoration: \"none\",\r\n // textAlign: \"start\",\r\n // backgroundColor: \"transparent\",\r\n // lineHeight: \"14px !important\",\r\n // boxShadow: \"none !important\",\r\n // color: \"#18181B\",\r\n // },\r\n // },\r\n // selected: true,\r\n // style: {\r\n // background: \"transparent\",\r\n // fontSize: 12,\r\n // borderRadius: 3,\r\n // padding: 0,\r\n // minWidth: 30,\r\n // zIndex: 1000,\r\n // border: 0,\r\n // outline: \"none\",\r\n // },\r\n // fields: {},\r\n // teraFormData: {},\r\n // positionAbsolute: {\r\n // x: position.x - 10,\r\n // y: position.y - 10,\r\n // },\r\n // draggable: true,\r\n // minWidth: 30,\r\n // };\r\n\r\n // setNodes((nodes) => [...nodes, placeholderNode]);\r\n\r\n try {\r\n const newId = getId();\r\n // Upload the image file using your existing upload function\r\n const res = await commanService.uploadApi(\r\n \"drawboard\",\r\n \"upload/files\",\r\n formData\r\n );\r\n const url = res.data.data[0].location;\r\n let imageNode = {};\r\n if (textContent === \"frameImg\") {\r\n imageNode = {\r\n id: newId,\r\n type: \"uploadImage\",\r\n position,\r\n url,\r\n data: {\r\n width: frameSize.width,\r\n height: frameSize.height,\r\n imageWidth: frameSize.width,\r\n imageHeigth: frameSize.height,\r\n filename: file.name || \"copy node\",\r\n provider: \"custom\",\r\n Label: url,\r\n scale: false,\r\n flipUrl: url,\r\n originalUrl: url,\r\n emoji: [],\r\n imageShow: true,\r\n hide: false,\r\n showBorder: false,\r\n frameName: \"Frame 1\",\r\n frameNo: 1,\r\n frame: false,\r\n label: \"frame\",\r\n locked: false,\r\n zIndex: 1000,\r\n border: {\r\n type: \"solid\",\r\n width: 1,\r\n opacity: 1,\r\n borderColor: \"rgba(3, 11, 22, 1)\",\r\n },\r\n },\r\n style: {\r\n zIndex: 1000,\r\n width: frameSize.width,\r\n height: frameSize.height,\r\n },\r\n };\r\n } else {\r\n imageNode = {\r\n id: newId,\r\n type: \"uploadImage\",\r\n position,\r\n url,\r\n data: {\r\n imageWidth: width,\r\n imageHeigth: height,\r\n filename: file.name || \"copy node\",\r\n width: width,\r\n height: height,\r\n provider: \"custom\",\r\n Label: url,\r\n scale: false,\r\n imageShow: true,\r\n hide: false,\r\n showBorder: false,\r\n flipUrl: url,\r\n originalUrl: url,\r\n emoji: [],\r\n frameName: \"Frame 1\",\r\n frameNo: 1,\r\n frame: false,\r\n label: \"frame\",\r\n locked: false,\r\n zIndex: 1000,\r\n border: {\r\n type: \"solid\",\r\n width: 1,\r\n opacity: 1,\r\n borderColor: \"rgba(3, 11, 22, 1)\",\r\n },\r\n },\r\n style: {\r\n zIndex: 1000,\r\n width: width,\r\n height: height,\r\n },\r\n };\r\n }\r\n\r\n // Replace placeholder node with the actual image node\r\n let updatedNodes = [];\r\n setNodes((nodes) => {\r\n updatedNodes = [\r\n { ...imageNode, selected: true },\r\n ...nodes.map((node) => ({\r\n ...node,\r\n selected: false,\r\n })),\r\n ];\r\n return updatedNodes;\r\n });\r\n debouncedUpdateJson({ nodes: updatedNodes });\r\n } catch (error) {\r\n console.error(\"Image upload failed\", error);\r\n }\r\n }\r\n }\r\n\r\n if (textItems.length > 0) {\r\n if (\r\n currentSubscriptionData?.subscriptionData?.package === \"Free\" &&\r\n nodeCounts + textItems.length > 30\r\n ) {\r\n setShowShapesLimitModal(true);\r\n return;\r\n }\r\n\r\n const clipboardContent = textItems.join(\" \");\r\n let pasteData;\r\n\r\n try {\r\n pasteData = JSON.parse(clipboardContent);\r\n } catch (error) {\r\n // If the clipboard content is not JSON, handle it as a node JSON\r\n const nodeId = getId();\r\n const position = { x: pasteX + offsetX, y: pasteY + offsetY };\r\n const newNode = {\r\n type: \"simpleText\",\r\n name: \"Simple Text\",\r\n key: \"simpleText\",\r\n data: {\r\n editorState: EditorState.createWithContent(\r\n ContentState.createFromText(\"\")\r\n ),\r\n editorHTML: clipboardContent,\r\n maxPosition: {\r\n x: position.x - 10,\r\n y: position.y - 10,\r\n },\r\n label: \"simpleText\",\r\n minWidth: 30,\r\n color: \"#18181B\",\r\n name: \"\",\r\n style: {\r\n fontSize: 10,\r\n fontWeight: 400,\r\n fontStyle: \"normal\",\r\n textDecoration: \"none\",\r\n textAlign: \"start\",\r\n backgroundColor: \"transparent\",\r\n lineHeight: \"14px !important\",\r\n boxShadow: \"none !important\",\r\n color: \"#18181B\",\r\n },\r\n },\r\n id: nodeId,\r\n position: {\r\n x: position.x - 10,\r\n y: position.y - 10,\r\n },\r\n selected: true,\r\n style: {\r\n background: \"transparent\",\r\n fontSize: 12,\r\n borderRadius: 3,\r\n padding: 0,\r\n minWidth: 30,\r\n zIndex: 1000,\r\n border: 0,\r\n outline: \"none\",\r\n },\r\n fields: {},\r\n teraFormData: {},\r\n positionAbsolute: {\r\n x: position.x - 10,\r\n y: position.y - 10,\r\n },\r\n draggable: true,\r\n minWidth: 30,\r\n };\r\n\r\n let updatedNodes = [];\r\n setNodes((nodes) => {\r\n updatedNodes = [\r\n ...nodes.map((nd) => ({ ...nd, selected: false })),\r\n newNode,\r\n ];\r\n return updatedNodes;\r\n });\r\n debouncedUpdateJson({ nodes: updatedNodes });\r\n return;\r\n }\r\n\r\n if (!isColorPickerOpen && pasteData.nodes) {\r\n const minX = Math.min(\r\n ...pasteData.nodes.map((s) => s.positionAbsolute.x)\r\n );\r\n const minY = Math.min(\r\n ...pasteData.nodes.map((s) => s.positionAbsolute.y)\r\n );\r\n\r\n const now = Date.now();\r\n const idMapping = {};\r\n // const stickyNodeData = {};\r\n\r\n let newNodes = removeDuplicatesById(\r\n JSON.parse(clipboardContent).nodes\r\n );\r\n\r\n newNodes = updateParentIds(newNodes);\r\n newNodes = assignRootParentIds(newNodes);\r\n\r\n // newNodes = newNodes.map((node) => {\r\n // const id = `${node.id}-${now}`;\r\n // idMapping[node.id] = id;\r\n // return { ...node, id };\r\n // });\r\n\r\n newNodes = newNodes.map((node) => {\r\n const id = `${node.id}-${now}`;\r\n idMapping[node.id] = id;\r\n // stickyNodeData[id] = { ...node, id };\r\n\r\n if (node?.type === \"comment\") {\r\n const stickyNodeId = idMapping[node.parentNode];\r\n // const stickyNode = stickyNodeData[stickyNodeId];\r\n idMapping[node.id] = `${node.id}-${now}`;\r\n // const position = {\r\n // x: stickyNode?.positionAbsolute?.x,\r\n // y: stickyNode?.positionAbsolute?.y,\r\n // };\r\n return {\r\n ...node,\r\n id: `${node.id}-${now}`,\r\n parentNode: stickyNodeId,\r\n // data: {\r\n // ...node?.data,\r\n // maxPosition: position,\r\n // },\r\n // position: position,\r\n // positionAbsolute: position,\r\n };\r\n }\r\n\r\n return { ...node, id };\r\n });\r\n\r\n newNodes = newNodes.map((node) => {\r\n if (node.type === \"TreeView\" && node.data?.type === \"parent\") {\r\n return {\r\n ...node,\r\n data: {\r\n ...node.data,\r\n rootParentId: idMapping[node.data.rootParentId],\r\n leftChildrenOrder: (node.data?.leftChildrenOrder || []).map(\r\n (child) => ({\r\n ...child,\r\n id: idMapping[child.id],\r\n parentNode: idMapping[child.parentNode],\r\n })\r\n ),\r\n rightChildrenOrder: (node.data?.rightChildrenOrder || []).map(\r\n (child) => ({\r\n ...child,\r\n id: idMapping[child.id],\r\n parentNode: idMapping[child.parentNode],\r\n })\r\n ),\r\n topChildrenOrder: (node.data?.topChildrenOrder || []).map(\r\n (child) => ({\r\n ...child,\r\n id: idMapping[child.id],\r\n parentNode: idMapping[child.parentNode],\r\n })\r\n ),\r\n bottomChildrenOrder: (\r\n node.data?.bottomChildrenOrder || []\r\n ).map((child) => ({\r\n ...child,\r\n id: idMapping[child.id],\r\n parentNode: idMapping[child.parentNode],\r\n })),\r\n },\r\n };\r\n } else if (\r\n node.type === \"TreeView\" &&\r\n node.data?.type === \"child\"\r\n ) {\r\n return {\r\n ...node,\r\n data: {\r\n ...node.data,\r\n rootParentId: idMapping[node.data.rootParentId],\r\n childrenOrder:\r\n node.data?.childrenOrder?.map((child) => ({\r\n ...child,\r\n id: idMapping[child.id],\r\n parentNode: idMapping[child.parentNode],\r\n })) || [],\r\n },\r\n hiddenBy: node?.hiddenBy ? idMapping[node.hiddenBy] : null,\r\n };\r\n }\r\n return node;\r\n });\r\n\r\n // Helper function to check if a node is visually inside another node\r\n const isInside = (node, group) => {\r\n return (\r\n node?.style?.width !== group?.style?.width &&\r\n node?.style?.height !== group?.style?.height &&\r\n node.positionAbsolute.x >= group.positionAbsolute.x &&\r\n node.positionAbsolute.x + node.width <=\r\n group.positionAbsolute.x + group.width &&\r\n node.positionAbsolute.y >= group.positionAbsolute.y &&\r\n node.positionAbsolute.y + node.height <=\r\n group.positionAbsolute.y + group.height\r\n );\r\n };\r\n\r\n // Second pass: Adjust positions and handle parentNode\r\n newNodes = newNodes.map((node) => {\r\n let x, y;\r\n let newParentNode = null;\r\n\r\n if (node.parentNode) {\r\n if (idMapping[node.parentNode]) {\r\n // Parent is available in copied nodes\r\n newParentNode = idMapping[node.parentNode];\r\n x = node.position.x;\r\n y = node.position.y;\r\n } else {\r\n // Parent is not in copied nodes, find potential new parents\r\n const potentialParents = newNodes.filter(\r\n (potentialParent) =>\r\n potentialParent.id !== node.id &&\r\n isInside(node, potentialParent)\r\n );\r\n\r\n if (potentialParents.length > 0) {\r\n // If the node is inside multiple potential parents\r\n if (potentialParents.length > 1) {\r\n // Check if the original parent is among the potential parents\r\n const originalParent = potentialParents.find(\r\n (p) => p.id === node.parentNode\r\n );\r\n if (originalParent) {\r\n newParentNode = originalParent.id;\r\n x = node.position.x;\r\n y = node.position.y;\r\n } else {\r\n // If original parent not found, keep the current parent\r\n newParentNode = node.parentNode;\r\n x = node.positionAbsolute.x;\r\n y = node.positionAbsolute.y;\r\n }\r\n } else {\r\n // If only one potential parent, assign it\r\n newParentNode = potentialParents[0].id;\r\n x =\r\n node.positionAbsolute.x -\r\n potentialParents[0].positionAbsolute.x;\r\n y =\r\n node.positionAbsolute.y -\r\n potentialParents[0].positionAbsolute.y;\r\n }\r\n } else {\r\n // If no new parent found, make it top-level\r\n newParentNode = null;\r\n x = pasteX + (node.positionAbsolute.x - minX) + offsetX;\r\n y = pasteY + (node.positionAbsolute.y - minY) + offsetY;\r\n }\r\n }\r\n } else {\r\n // Node is already top-level\r\n x = pasteX + (node.positionAbsolute.x - minX) + offsetX;\r\n y = pasteY + (node.positionAbsolute.y - minY) + offsetY;\r\n }\r\n\r\n return {\r\n ...node,\r\n position: { x, y },\r\n positionAbsolute: { x, y },\r\n parentNode: newParentNode,\r\n selected: false,\r\n dragging: false,\r\n };\r\n });\r\n\r\n newNodes = newNodes.filter((nds) => nds?.type !== \"comment\");\r\n\r\n let newEdges = pasteData.edges\r\n .filter((edge) => idMapping[edge.source] && idMapping[edge.target])\r\n .map((edge) => {\r\n const id = `${edge.id}-${now}`;\r\n const source = idMapping[edge.source] || edge.source;\r\n const target = idMapping[edge.target] || edge.target;\r\n const edgeDataPoints = edge?.data?.points?.map((val) => ({\r\n ...val,\r\n x: val.x + (pasteX - minX) + offsetX,\r\n y: val.y + (pasteY - minY) + offsetY,\r\n }));\r\n\r\n return {\r\n ...edge,\r\n id,\r\n source,\r\n target,\r\n data: { ...edge?.data, points: edgeDataPoints, isCopied: true },\r\n selected: false,\r\n };\r\n });\r\n\r\n newEdges = newEdges.map((edge) => {\r\n const sourceNode = getNodeById(newNodes, edge.source);\r\n const targetNode = getNodeById(newNodes, edge.target);\r\n\r\n return {\r\n ...edge,\r\n sourceHandle:\r\n [\"shapeTable\", \"pipe\"].includes(sourceNode?.type) &&\r\n extractShapeTableEdgeHandleId(edge.sourceHandle)\r\n ? `${extractShapeTableEdgeHandleId(edge.sourceHandle)?.type}${\r\n edge.source\r\n }`\r\n : edge.sourceHandle,\r\n targetHandle:\r\n [\"shapeTable\", \"pipe\"].includes(targetNode?.type) &&\r\n extractShapeTableEdgeHandleId(edge.targetHandle)\r\n ? `${extractShapeTableEdgeHandleId(edge.targetHandle)?.type}${\r\n edge.target\r\n }`\r\n : edge.targetHandle,\r\n };\r\n });\r\n\r\n let updatedNodes = [];\r\n let updatedEdges = [];\r\n\r\n setNodes((nodes) => {\r\n localStorage.setItem(\r\n \"architectureJson\",\r\n JSON.stringify({\r\n architecture_json: {\r\n nodes: updatedNodes,\r\n // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedNodes = [\r\n ...nodes.map((node) => ({ ...node, selected: false })),\r\n ...newNodes.map((node) => ({ ...node, selected: true })),\r\n ];\r\n\r\n if (newNodes.length === 1 && newNodes[0].type === \"card\") {\r\n const kanbanInfo = getUnderlyingElementInfo({\r\n clientX: mousePosRef.current.x,\r\n clientY: mousePosRef.current.y,\r\n });\r\n const currentNode = newNodes[0];\r\n if (kanbanInfo) {\r\n updatedNodes = updatedNodes.map((n) => {\r\n if (n.id === kanbanInfo?.nodeId) {\r\n return {\r\n ...n,\r\n data: {\r\n ...n.data,\r\n containers: n.data.containers.map((cont) => {\r\n if (cont.id === kanbanInfo?.containerId) {\r\n let itemIndex = cont.items.findIndex(\r\n (i) => i.id === kanbanInfo?.cardId\r\n );\r\n\r\n let updatedItems = [...cont.items];\r\n if (itemIndex !== -1) {\r\n // Insert the new item **before** the existing one\r\n updatedItems.splice(itemIndex, 0, {\r\n ...currentNode.data,\r\n id: currentNode.id,\r\n });\r\n } else {\r\n // Append to the end if no specific index is found\r\n updatedItems.push({\r\n ...currentNode.data,\r\n id: currentNode.id,\r\n });\r\n }\r\n\r\n return {\r\n ...cont,\r\n items: updatedItems,\r\n };\r\n }\r\n return cont;\r\n }),\r\n },\r\n };\r\n }\r\n return n;\r\n });\r\n\r\n updatedNodes = updatedNodes.filter(\r\n (n) => n.id !== currentNode?.id\r\n );\r\n }\r\n }\r\n\r\n return updatedNodes;\r\n });\r\n\r\n setEdges((edges) => {\r\n localStorage.setItem(\r\n \"architectureJsonEdges\",\r\n JSON.stringify({\r\n architecture_json: {\r\n edges: updatedEdges,\r\n // lastUpdatedBy: userData?.user_id,\r\n lastEvent: ``,\r\n },\r\n })\r\n );\r\n updatedEdges = [\r\n ...edges.map((edge) => ({ ...edge, selected: false })),\r\n ...newEdges.map((edge) => ({ ...edge, selected: true })),\r\n ];\r\n return updatedEdges;\r\n });\r\n\r\n debouncedUpdateJson({ nodes: updatedNodes, edges: updatedEdges });\r\n }\r\n }\r\n localStorage.removeItem(\"frameCopiedImage\");\r\n },\r\n [\r\n getNodes,\r\n dispatch,\r\n undo,\r\n id,\r\n screenToFlowPosition,\r\n currentSubscriptionData,\r\n ]\r\n );\r\n\r\n useShortcut([\"Meta+x\", \"Control+x\"], cut, isMainPickerOpen);\r\n useShortcut([\"Meta+c\", \"Control+c\"], copy, isMainPickerOpen);\r\n // useShortcut([\"Meta+v\", \"Control+v\"], paste, isMainPickerOpen);\r\n\r\n return { cut, copy, paste };\r\n}\r\n\r\nfunction useShortcut(keyCode, callback, isEnabled) {\r\n const keyPressRef = useRef(false);\r\n\r\n useEffect(() => {\r\n // if (isEnabled) {\r\n // return; // Don't set up listeners if disabled\r\n // }\r\n\r\n const handleKeyDown = (event) => {\r\n const isAnyInputFocused = hasSelectedTextInInput();\r\n if (\r\n !isAnyInputFocused &&\r\n keyCode.some((key) => {\r\n const [modifier, letter] = key.split(\"+\");\r\n return (\r\n ((modifier === \"Control\" && event.ctrlKey) ||\r\n (modifier === \"Meta\" && event.metaKey)) &&\r\n event.key.toLowerCase() === letter\r\n );\r\n })\r\n ) {\r\n if (!keyPressRef.current) {\r\n event.preventDefault(); // Prevent default browser behavior\r\n keyPressRef.current = true;\r\n callback();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyUp = (event) => {\r\n if (keyCode.some((key) => key.endsWith(event.key.toLowerCase()))) {\r\n keyPressRef.current = false;\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown, true);\r\n window.addEventListener(\"keyup\", handleKeyUp, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"keydown\", handleKeyDown, true);\r\n window.removeEventListener(\"keyup\", handleKeyUp, true);\r\n };\r\n }, [keyCode, callback, isEnabled]);\r\n}\r\n\r\nexport default useCopyPaste;\r\n","import { debounce } from \"lodash\";\r\nimport React, {\r\n createContext,\r\n useContext,\r\n useCallback,\r\n useEffect,\r\n} from \"react\";\r\nimport { useReactFlow } from \"reactflow\";\r\nimport { checkEditorFocus, updateJson } from \"../../../CommanFunctions/commanFunctions\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { captureSnapShot, redoWithNextState, undoWithPreviousState } from \"../../../Redux/undoRedoSlice\";\r\n\r\nconst UndoRedoContext = createContext(undefined);\r\n\r\nexport const UndoRedoProvider = ({ children }) => {\r\n const { setNodes, setEdges } = useReactFlow();\r\n\r\n const location = useLocation();\r\n const { id: architectureId } = useParams();\r\n const user_data = localStorage.getItem(\"user_data\");\r\n const dispatch = useDispatch();\r\n\r\n // Improved takeSnapshot function\r\n const takeSnapshot = useCallback((payload) => {\r\n const newState = {\r\n nodes: payload?.nodes ? JSON.parse(JSON.stringify(payload.nodes)) : null,\r\n edges: payload?.edges ? JSON.parse(JSON.stringify(payload.edges)) : null,\r\n };\r\n if (!document.activeElement.classList.contains(\"tiptap\")) {\r\n dispatch(captureSnapShot(newState));\r\n }\r\n }, []);\r\n\r\n const debouncedUpdateJson = useCallback(\r\n debounce((nodes, edges) => {\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 updateJson({\r\n json: {\r\n architecture_json: {\r\n nodes: nodes,\r\n edges: edges,\r\n lastUpdatedBy: parsedData?.user_id,\r\n },\r\n },\r\n id: architectureId,\r\n dispatch,\r\n a_id,\r\n should_delete: nodes?.length === 0,\r\n isDeleted: nodes?.length === 0,\r\n });\r\n }, 500), // Adjust the delay (in milliseconds) as needed\r\n [updateJson, user_data, location, architectureId, dispatch]\r\n );\r\n\r\n const undo = useCallback(() => {\r\n const previousState = dispatch(undoWithPreviousState());\r\n if (previousState && !location.pathname.includes(\"/edittemplate\")) {\r\n setNodes(previousState.nodes);\r\n setEdges(previousState.edges);\r\n debouncedUpdateJson(previousState.nodes, previousState.edges);\r\n }\r\n }, [setNodes, setEdges, location]);\r\n\r\n const redo = useCallback(() => {\r\n const nextState = dispatch(redoWithNextState());\r\n if (nextState && !location.pathname.includes(\"/edittemplate\")) {\r\n setNodes(nextState.nodes);\r\n setEdges(nextState.edges);\r\n debouncedUpdateJson(nextState.nodes, nextState.edges);\r\n }\r\n }, [setNodes, setEdges, location]);\r\n\r\n // Add keyboard shortcuts for undo/redo\r\n useEffect(() => {\r\n const handleKeyDown = (event) => {\r\n const isAnyDialogOpen = document.querySelector(\".MuiDialog-container\");\r\n if (checkEditorFocus() || isAnyDialogOpen) {\r\n return; // Skip undo/redo if the editor is focused or a dialog is open\r\n }\r\n\r\n if (event.ctrlKey || event.metaKey) {\r\n if (event.key.toLowerCase() === \"z\") {\r\n event.preventDefault();\r\n if (event.shiftKey) {\r\n redo(); // Ctrl+Shift+Z for redo\r\n } else {\r\n undo(); // Ctrl+Z for undo\r\n }\r\n } else if (event.key.toLowerCase() === \"y\") {\r\n event.preventDefault();\r\n redo(); // Ctrl+Y for redo\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n };\r\n }, [undo, redo, checkEditorFocus]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// Custom hook to use the UndoRedo context\r\nexport const useUndoRedo = () => {\r\n const context = useContext(UndoRedoContext);\r\n if (context === undefined) {\r\n throw new Error(\"useUndoRedo must be used within a UndoRedoProvider\");\r\n }\r\n return context;\r\n};\r\n","import { useEffect, useState } from \"react\";\r\nimport commanService from \"../../../CommanFunctions/commanService\";\r\nimport CustomModal from \"../../../common-components/CustomModal\";\r\nimport {\r\n Box,\r\n FormControlLabel,\r\n IconButton,\r\n Radio,\r\n RadioGroup,\r\n Stack,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport {\r\n IcCheck,\r\n IcCloseThin,\r\n IcCloudChartLogoColored,\r\n IcCloudCollabLogoColored,\r\n IcPremiumColored,\r\n} from \"../../../assets/icon-components\";\r\nimport LargeSimpleInput from \"../../../common-components/LargeSimpleInput\";\r\nimport BtnGradient from \"../../../common-components/buttons/BtnGradient\";\r\nimport BtnColoredOutlined from \"../../../common-components/buttons/BtnColoredOutlined\";\r\nimport {\r\n errorToast,\r\n successToast,\r\n warningToast,\r\n} from \"../../../Redux/toastSlice\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport SaveToAutoSelect from \"../../../common-components/SaveToAutoSelect\";\r\nimport UpgradePlanAccess from \"./UpgradePlanAccess\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useGetProjectsListQuery } from \"../../../Redux/api/teamsApi\";\r\nimport { fontWeight } from \"../../../Utils/style/weight/fontWeight\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\nimport { fontSizes } from \"../../../Utils/style/font/fontsizes\";\r\nimport UpgradeModel from \"../../user-sections/components/UpgradeModel\";\r\nimport { updateBoardCountInCurrentSubscription } from \"../../../CommanFunctions/commanFunctions\";\r\nimport BtnBorderd from \"../../../common-components/buttons/BtnBorderd\";\r\nimport { subscriptionDataSelect } from \"../../../Redux/common-reducer\";\r\nimport { useLocation, useNavigate } from \"react-router-dom\";\r\nimport { updateLoading } from \"../../../Redux/mindMapSlice\";\r\n\r\nconst style = {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: {\r\n xs: \"90%\",\r\n md: \"730px\",\r\n xl: \"700px\",\r\n },\r\n bgcolor: \"#FFF\",\r\n border: \"none\",\r\n boxShadow: \"none\",\r\n p: {\r\n xs: \"20px 24px 18px\",\r\n xl: \"28px 24px\",\r\n },\r\n borderRadius: \"12px\",\r\n maxHeight: \"97%\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n \"&:focus-visible\": { outline: \"none !important\" },\r\n};\r\n\r\nconst CreateBlankBoard = ({\r\n open,\r\n handleClose,\r\n setOpen,\r\n project_id,\r\n isReload = false,\r\n isCloudChartTemplate = true,\r\n isHideCategory = true,\r\n showBoardLocation = true,\r\n id,\r\n // categoriesList,\r\n}) => {\r\n const { currentSubscriptionData } = useSelector((state) => state.common);\r\n const [projects, setProjects] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const location = useLocation();\r\n const navigate = useNavigate();\r\n // const [openCategoryModal, setOpenCategoryModal] = useState(false);\r\n const [formData, setFormData] = useState({\r\n name: \"\",\r\n category_id: {},\r\n new_category_name: \"\",\r\n });\r\n const [errors, setErrors] = useState({\r\n name: \"\",\r\n folder: \"\",\r\n category_id: \"\",\r\n new_category_name: \"\",\r\n });\r\n const [selectedDocs, setSelectedDocs] = useState({});\r\n // const [categories, setCategories] = useState([]);\r\n // const [newCategories, setNEwCategories] = useState([]);\r\n const [showLimitModal, setShowLimitModal] = useState(false);\r\n const [openedFolders, setOpenedFolders] = useState([]);\r\n // const [prevOpenedFolderIds, setPrevOpenedFolderIds] = useState([]);\r\n const [isCloudChart, setIsCloudChart] = useState(true);\r\n const [openDropdown, setOpenDropdown] = useState(false);\r\n const [isAddNewProject, setIsAddNewProject] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState(\"document\");\r\n const [folderIsCreating, setFolderIsCreating] = useState(false);\r\n const currentSubscription = subscriptionDataSelect();\r\n const dispatch = useDispatch();\r\n const [form, setForm] = useState({\r\n name: \"\",\r\n });\r\n const [formErrors, setFormErrors] = useState({\r\n name: \"\",\r\n });\r\n\r\n const [openUpgradePopup, setOpenUpgradePopup] = useState(false);\r\n const activeTeam = useSelector((state) => state?.sidebar?.currentTeam);\r\n // const generalCategory = categoriesList?.filter(\r\n // (category) => category?.category_name === \"General\"\r\n // )[0];\r\n\r\n // const keyValue = generalCategory?.category_id\r\n // ? { category_id: generalCategory?.category_id }\r\n // : { category_name: \"General\" };\r\n\r\n const { data: projectList, refetch: refetchProjectList } =\r\n useGetProjectsListQuery(\r\n {\r\n team_id: activeTeam,\r\n search: \"\",\r\n },\r\n { skip: !activeTeam }\r\n );\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n setSelectedOption(\"document\");\r\n setSelectedDocs({});\r\n setIsAddNewProject(false);\r\n } else {\r\n if (project_id) {\r\n setSelectedOption(\"space\");\r\n if (projectList && projectList?.resData) {\r\n const selectedSpace = projectList?.resData?.filter(\r\n (spaceData) => spaceData?.project_id === project_id\r\n );\r\n setSelectedDocs(selectedSpace[0] || {});\r\n }\r\n } else if (projectList) {\r\n let makeData = projectList?.resData.map((project_data) => ({\r\n value: project_data.project_id,\r\n label: project_data.project_name,\r\n parent: null,\r\n }));\r\n setProjects(makeData);\r\n setSelectedDocs({\r\n project_id:\r\n makeData?.[isAddNewProject ? makeData.length - 1 : 0]?.value,\r\n project_name:\r\n makeData?.[isAddNewProject ? makeData.length - 1 : 0]?.label,\r\n });\r\n setIsAddNewProject(false);\r\n }\r\n }\r\n }, [open, projectList]);\r\n\r\n // const fetchCategories = async () => {\r\n // try {\r\n // const res = await commanService.getApi(\r\n // \"drawboard\",\r\n // \"categories?type=custom_category\"\r\n // );\r\n // setCategories([...res?.data?.data, ...newCategories]);\r\n // setFormData((prev) => ({\r\n // ...prev,\r\n // category_id: {\r\n // label: res?.data?.data[0]?.category_name,\r\n // value: res?.data?.data[0]?.category_id,\r\n // },\r\n // }));\r\n // } catch (error) {}\r\n // };\r\n\r\n // const getProjects = useCallback(\r\n // async (projectId) => {\r\n // try {\r\n // setLoading(true);\r\n // const response = await commanService.getApi(\r\n // \"drawboard/v1\",\r\n // `projects/architectures/${project_id}?&team_id=${activeTeam}&nolimit=true`\r\n // );\r\n // const data = response.data.data.resData\r\n // .filter((doc) => doc.type === \"project\")\r\n // .map((project_data) => ({\r\n // value: project_data.project_id,\r\n // label: project_data.project_name,\r\n // parent: projectId ? projectId : null,\r\n // }));\r\n\r\n // if (data.length > 0) {\r\n // setSelectedDocs(\r\n // {\r\n // project_id: data[0].value,\r\n // project_name: data[0].label,\r\n // },\r\n // );\r\n // }\r\n // setProjects((prev) => [...prev, ...data]);\r\n // } catch (error) {\r\n // } finally {\r\n // setLoading(false);\r\n // }\r\n // },\r\n // [activeTeam]\r\n // );\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setOpenedFolders([]);\r\n // setPrevOpenedFolderIds([]);\r\n // fetchCategories();\r\n } else {\r\n setFormData({ name: \"\", category_id: {} });\r\n }\r\n }, [open]);\r\n\r\n const validateForm = () => {\r\n let valid = true;\r\n if (formData.name.trim().length <= 0) {\r\n // setErrors((prev) => ({\r\n // ...prev,\r\n // name: `${isCloudChart ? \"Chart name\" : \"Board name\"} is required`,\r\n // }));\r\n setErrors((prev) => ({\r\n ...prev,\r\n name: \"Board name is required\",\r\n }));\r\n valid = false;\r\n }\r\n\r\n return valid;\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const valid = validateForm();\r\n let type = currentSubscription?.package?.includes(\"Professional\")\r\n ? currentSubscription?.package?.includes(\"Suite\")\r\n ? isCloudChart ? \"cloudchart\" : \"cloudcollab\"\r\n : currentSubscription?.package?.includes(\"Cloudchart\")\r\n ? \"cloudchart\"\r\n : \"cloudcollab\"\r\n : isCloudChart ? \"cloudchart\" : \"cloudcollab\";\r\n if (valid) {\r\n try {\r\n setLoading(true);\r\n setFolderIsCreating(true);\r\n // const image = getRandomThumbnailImage();\r\n const response = await commanService.postApi(\r\n \"drawboard/v1\",\r\n \"architectures\",\r\n {\r\n architecture_name: formData.name,\r\n type: type === \"cloudchart\" ? \"cloudchart\" : \"whiteboard\",\r\n team_id: activeTeam,\r\n project_id:\r\n selectedOption !== \"document\"\r\n ? project_id\r\n ? project_id\r\n : selectedDocs?.project_id === null\r\n ? projects[0]?.value\r\n : selectedDocs?.project_id\r\n : id\r\n ? id\r\n : \"\",\r\n // category_name: \"General\",\r\n // ...keyValue,\r\n // category_name: \"General\",\r\n // category_id: category_id,\r\n // ...(typeof formData?.category_id?.value === \"string\"\r\n // ? {\r\n // category_id: isCloudChart\r\n // ? formData?.category_id?.value\r\n // : categories.filter(\r\n // (cat) => cat.category_name === \"General\"\r\n // )[0].category_id,\r\n // }\r\n // : {\r\n // category_name: isCloudChart\r\n // ? formData?.category_id?.label\r\n // : categories.filter(\r\n // (cat) => cat.category_name === \"General\"\r\n // )[0].category_name,\r\n // }),\r\n // thumbnail_image: image,\r\n icon: null,\r\n // categories.filter(\r\n // (cat) => cat.category_id === formData?.category_id?.value\r\n // )[0]?.icon || null,\r\n }\r\n );\r\n localStorage.setItem(\"firstTimeAfterCreate\", JSON.stringify(true));\r\n // localStorage.setItem(\"first\", true);\r\n setOpen(false);\r\n handleClose(false);\r\n setFolderIsCreating(false);\r\n updateBoardCountInCurrentSubscription({\r\n dispatch,\r\n currentSubscriptionData,\r\n isMinus: true,\r\n });\r\n\r\n dispatch(updateLoading(true));\r\n if (location.pathname.includes(\"cloudchart\") || location.pathname.includes(\"cloudcollab\")) {\r\n window.location.href = `/${type}/${response.data.data[0].architecture_id}?a_id=${response.data.data[0]?.account_id}`;\r\n } else {\r\n navigate(\r\n `/${type}/${response.data.data[0].architecture_id}?a_id=${response.data.data[0]?.account_id}`\r\n );\r\n }\r\n \r\n } catch (error) {\r\n if (error?.response?.data?.message?.includes(\"You've reached your\")) {\r\n setShowLimitModal(true);\r\n // setOpen(false);\r\n setFolderIsCreating(false);\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 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 }\r\n } finally {\r\n setLoading(false);\r\n setFolderIsCreating(false);\r\n }\r\n }\r\n };\r\n\r\n // const handleCloseCategoryModal = () => {\r\n // setOpen(true);\r\n // setOpenCategoryModal(false);\r\n // setFormData((prev) => ({\r\n // ...prev,\r\n // new_category_name: \"\",\r\n // }));\r\n // };\r\n\r\n // const handleSaveNewCategory = () => {\r\n // const newCategoryName = formData.new_category_name.trim();\r\n\r\n // if (newCategoryName.length <= 0) {\r\n // setErrors((prev) => ({\r\n // ...prev,\r\n // new_category_name: \"Category name is required\",\r\n // }));\r\n // } else if (\r\n // categories.some((category) => category.category_name === newCategoryName)\r\n // ) {\r\n // setErrors((prev) => ({\r\n // ...prev,\r\n // new_category_name: \"Category name already exists\",\r\n // }));\r\n // } else {\r\n // setErrors((prev) => ({\r\n // ...prev,\r\n // new_category_name: \"\",\r\n // }));\r\n\r\n // const newCat = {\r\n // category_id: Math.floor(Math.random() * 10000000),\r\n // category_name: newCategoryName,\r\n // };\r\n // setNEwCategories((prev) => [\r\n // ...prev,\r\n // {\r\n // ...newCat,\r\n // },\r\n // ]);\r\n // setFormData((prev) => ({\r\n // ...prev,\r\n // category_id: {\r\n // value: newCat.category_id,\r\n // label: newCat.category_name,\r\n // },\r\n // new_category_name: \"\",\r\n // }));\r\n // setCategories([...categories, newCat]);\r\n // }\r\n // };\r\n\r\n const handleAddProject = () => {\r\n validateField(\"name\", form.name);\r\n if (formErrors.name.trim().length <= 0 && form.name) {\r\n setLoading(true);\r\n commanService\r\n .postApi(\"drawboard/v1\", \"projects\", {\r\n name: form.name,\r\n team_id: activeTeam,\r\n })\r\n .then(({ data }) => {\r\n dispatch(successToast({ message: data.message }));\r\n setForm({ name: \"\" });\r\n setProjects([]);\r\n setOpenedFolders([]);\r\n // setPrevOpenedFolderIds([]);\r\n setProjects(() => [\r\n ...projects,\r\n {\r\n value: data.data[0].project_id,\r\n label: data.data[0].project_name,\r\n parent: data.data[0].parent_project_id,\r\n },\r\n ]);\r\n // fetchCategories();\r\n refetchProjectList();\r\n })\r\n .catch((error) => {\r\n if (error.response.status !== 401) {\r\n dispatch(\r\n warningToast({\r\n message: error.response?.data?.message || \"Error occurred\",\r\n })\r\n );\r\n }\r\n })\r\n .finally(() => setLoading(false));\r\n }\r\n };\r\n\r\n const validateField = (fieldName, value) => {\r\n let fieldValidationErrors = { ...formErrors };\r\n let valid = true;\r\n switch (fieldName) {\r\n case \"name\":\r\n if (value?.trim().length <= 0) {\r\n fieldValidationErrors.name = \"Space name is required\";\r\n valid = false;\r\n } else {\r\n fieldValidationErrors.name = \"\";\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n setFormErrors(fieldValidationErrors);\r\n return valid;\r\n };\r\n\r\n const handleChange = (event) => {\r\n setSelectedOption(event.target.value);\r\n if (event.target.value === \"document\") {\r\n if (projectList?.resData?.length > 0) {\r\n const firstProject = projectList.resData[0];\r\n setSelectedDocs({\r\n project_id: firstProject.project_id,\r\n project_name: firstProject.project_name,\r\n });\r\n } else {\r\n setSelectedDocs({});\r\n }\r\n }\r\n };\r\n\r\n const getLabelStyle = (option) => ({\r\n color: selectedOption === option ? color.titleDark : color.subTitle,\r\n });\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n setOpenDropdown(false);\r\n }\r\n }, [open]);\r\n\r\n return (\r\n <>\r\n {/* {loading && } */}\r\n {} : () => handleClose(false)}\r\n sx={{ opacity: showLimitModal ? 0 : 1 }}\r\n >\r\n setOpenDropdown(false)}>\r\n \r\n \r\n Create a New Board\r\n \r\n handleClose(false)}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n Start your next project or idea with a new board. Customize it to\r\n fit your needs and collaborate effortlessly with your team.\r\n \r\n {(!currentSubscription?.package?.includes(\"Professional\") ||\r\n currentSubscription?.package?.includes(\"Suite\")) && (\r\n \r\n {\r\n setIsCloudChart(true);\r\n }}\r\n hoverSx={{\r\n bgcolor: \"#794CE214 !important\",\r\n border: \"1px solid #794CE24D !important\",\r\n }}\r\n />\r\n {\r\n setIsCloudChart(false);\r\n }}\r\n >\r\n \r\n Cloudcollab\r\n \r\n \r\n {/* \r\n */}\r\n \r\n )}\r\n \r\n {\r\n setFormData((prev) => ({\r\n ...prev,\r\n name: e.target.value,\r\n }));\r\n setErrors((prev) => ({\r\n ...prev,\r\n name: \"\",\r\n }));\r\n }}\r\n errorMessage={errors.name}\r\n />\r\n\r\n {/* {isCloudChart && (\r\n \r\n \r\n \r\n )} */}\r\n\r\n {showBoardLocation &&\r\n currentSubscriptionData &&\r\n currentSubscriptionData?.subscriptionData?.package !== \"Free\" && (\r\n \r\n \r\n Create location\r\n \r\n\r\n \r\n \r\n }\r\n label={\r\n \r\n My Document\r\n \r\n }\r\n />\r\n \r\n }\r\n label={\r\n \r\n Space\r\n \r\n }\r\n />\r\n \r\n \r\n )}\r\n\r\n {/* {!project_id && ( */}\r\n {showBoardLocation && selectedOption !== \"document\" && (\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n handleClose(false)}\r\n >\r\n \r\n Cancel\r\n \r\n \r\n {\r\n // if (\r\n // currentSubscriptionData?.subscriptionData?.package ===\r\n // \"Free\" &&\r\n // !isCloudChart\r\n // ) {\r\n // setOpenUpgradePopup(true);\r\n // setFolderIsCreating(true);\r\n // } else {\r\n handleSubmit();\r\n // }\r\n }}\r\n loading={folderIsCreating}\r\n >\r\n \r\n Create Board\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* {} : () => handleCloseCategoryModal()}\r\n >\r\n \r\n \r\n \r\n Add New Category\r\n \r\n handleCloseCategoryModal()}\r\n >\r\n \r\n \r\n \r\n \r\n {\r\n setFormData((prev) => ({\r\n ...prev,\r\n new_category_name: e.target.value,\r\n }));\r\n setErrors((prev) => ({\r\n ...prev,\r\n new_category_name: \"\",\r\n }));\r\n }}\r\n errorMessage={errors.new_category_name}\r\n />\r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n Create\r\n \r\n \r\n \r\n \r\n */}\r\n\r\n {/* {\r\n setOpen(false);\r\n setShowLimitModal(false);\r\n }}\r\n open={showLimitModal}\r\n content=\"You have reached the maximum number of cloudcharts allowed for your current subscription plan. To create more Cloudcharts and enhance your experience, consider upgrading your plan.\"\r\n heading=\"Cloudchart Limit Reached!\"\r\n /> */}\r\n setOpen(false)}\r\n handleChoosePlanClose={() => setOpen(false)}\r\n />\r\n {\r\n setOpenUpgradePopup(false);\r\n setOpen(true);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default CreateBlankBoard;\r\n","import { Stack, Typography } from \"@mui/material\";\r\nimport React, { useEffect } from \"react\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\nimport { Ic3StarsColored } from \"../../../assets/icon-components\";\r\nimport { fontWeight } from \"../../../Utils/style/weight/fontWeight\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { fontSizes } from \"../../../Utils/style/font/fontsizes\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n resetState,\r\n setCategories,\r\n setIsCustomCategorySelected,\r\n setSelectedCategory,\r\n setSelectedUseCase,\r\n setWithoutUseCaseTemplateData,\r\n} from \"../../../Redux/templatesSlices\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst CreateBoardModelSideBar = ({\r\n isModel,\r\n setSearchValue,\r\n mainCategoryList,\r\n filteredCategories,\r\n}) => {\r\n const templateState = useSelector((state) => state.templates);\r\n // const { useCaseList } = useSelector((store) => {\r\n // return store?.common;\r\n // });\r\n const selectedUseCase = templateState.selectedUseCase;\r\n // const activeTeam = useSelector((state) => state?.sidebar?.currentTeam);\r\n const dispatch = useDispatch();\r\n // const [templates, setTemplates] = useState([]);\r\n\r\n useEffect(() => {\r\n if (mainCategoryList) {\r\n dispatch(setCategories(mainCategoryList));\r\n }\r\n }, [mainCategoryList]);\r\n\r\n useEffect(() => {\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n }, []);\r\n\r\n const location = useLocation();\r\n\r\n return (\r\n \r\n \r\n {location.pathname === \"/templates\" && (\r\n {\r\n setSelectedUseCase(\"forYou\");\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n dispatch(setWithoutUseCaseTemplateData({ pageNumber: 1 }));\r\n setSearchValue(\"\");\r\n }}\r\n >\r\n \r\n \r\n For You\r\n \r\n \r\n )}\r\n\r\n \r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(\"allTemplates\"));\r\n // getTemplatesWithoutUseCase(1);\r\n dispatch(setWithoutUseCaseTemplateData({ pageNumber: 1 }));\r\n setSearchValue(\"\");\r\n }}\r\n sx={{\r\n cursor: \"pointer\",\r\n backgroundColor:\r\n selectedUseCase === \"allTemplates\"\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n \"&:hover\": {\r\n backgroundColor:\r\n selectedUseCase === \"allTemplates\"\r\n ? color.lightPrimary\r\n : \"#F2F4F7b3\",\r\n },\r\n }}\r\n >\r\n \r\n All Templates\r\n \r\n \r\n\r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(\"newTemplates\"));\r\n dispatch(\r\n setWithoutUseCaseTemplateData({ pageNumber: 1, is_new: true })\r\n );\r\n setSearchValue(\"\");\r\n }}\r\n >\r\n {/* */}\r\n \r\n New Templates\r\n \r\n \r\n\r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(\"premiumTemplates\"));\r\n dispatch(\r\n setWithoutUseCaseTemplateData({\r\n pageNumber: 1,\r\n is_premium: true,\r\n })\r\n );\r\n setSearchValue(\"\");\r\n }}\r\n >\r\n \r\n Premium Templates\r\n \r\n \r\n\r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(\"favouriteTemplates\"));\r\n setSearchValue(\"\");\r\n // getFavouriteTemplates(1);\r\n }}\r\n >\r\n \r\n Favorites\r\n \r\n \r\n \r\n \r\n\r\n {/* {useCaseList.length > 0 && (\r\n \r\n \r\n Use cases\r\n \r\n {useCaseList.map((useCase, i) => {\r\n return (\r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(useCase?.use_case_id));\r\n // setTimeout(() => {\r\n // getSpecificUseCaseWiseCategory(useCase?.use_case_id, 1);\r\n // }, 0);\r\n }}\r\n sx={{\r\n cursor: \"pointer\",\r\n backgroundColor:\r\n selectedUseCase === useCase?.use_case_name ||\r\n selectedUseCase === useCase?.use_case_id\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n }}\r\n >\r\n {useCase?.logo ? (\r\n \"use\r\n ) : (\r\n \r\n )}\r\n \r\n {useCase?.use_case_name}\r\n \r\n \r\n );\r\n })}\r\n \r\n )} */}\r\n\r\n {mainCategoryList?.length > 0 && (\r\n \r\n \r\n Use Cases\r\n \r\n\r\n {mainCategoryList?.map((category, i) => {\r\n return (\r\n {\r\n // dispatch(resetState());\r\n // // dispatch(setSelectedUseCase(useCase?.use_case_id));\r\n // // setTimeout(() => {\r\n // // getSpecificUseCaseWiseCategory(useCase?.use_case_id, 1);\r\n // // }, 0);\r\n // }}\r\n onClick={() => {\r\n dispatch(resetState());\r\n dispatch(setIsCustomCategorySelected(false));\r\n dispatch(setSelectedCategory(category?.category_id));\r\n dispatch(setSelectedUseCase(\"\"));\r\n setSelectedUseCase(category?.category_id);\r\n dispatch(setSelectedUseCase(category?.category_id));\r\n setSearchValue(\"\");\r\n }}\r\n sx={{\r\n cursor: \"pointer\",\r\n backgroundColor:\r\n selectedUseCase === category?.category_name ||\r\n selectedUseCase === category?.category_id\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n \"&:hover\": {\r\n backgroundColor:\r\n selectedUseCase === category?.category_name ||\r\n selectedUseCase === category?.category_id\r\n ? color.lightPrimary\r\n : \"#F2F4F7b3\",\r\n },\r\n }}\r\n >\r\n {/* {category?.icon ? (\r\n \"img\"\r\n ) : (\r\n \r\n )} */}\r\n \r\n {category?.category_name}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n \r\n Custom\r\n \r\n \r\n {filteredCategories?.length > 0 && (\r\n \r\n {filteredCategories?.map((category, i) => {\r\n return (\r\n {\r\n // dispatch(resetState());\r\n // // dispatch(setSelectedUseCase(useCase?.use_case_id));\r\n // // setTimeout(() => {\r\n // // getSpecificUseCaseWiseCategory(useCase?.use_case_id, 1);\r\n // // }, 0);\r\n // }}\r\n onClick={() => {\r\n dispatch(resetState());\r\n dispatch(setIsCustomCategorySelected(true));\r\n dispatch(setSelectedCategory(category?.category_id));\r\n dispatch(setSelectedUseCase(\"\"));\r\n setSelectedUseCase(category?.category_id);\r\n dispatch(setSelectedUseCase(category?.category_id));\r\n setSearchValue(\"\");\r\n }}\r\n sx={{\r\n cursor: \"pointer\",\r\n backgroundColor:\r\n selectedUseCase === category?.category_name ||\r\n selectedUseCase === category?.category_id\r\n ? color.lightPrimary\r\n : \"transparent\",\r\n \"&:hover\": {\r\n backgroundColor:\r\n selectedUseCase === category?.category_name ||\r\n selectedUseCase === category?.category_id\r\n ? color.lightPrimary\r\n : \"#F2F4F7b3\",\r\n },\r\n }}\r\n >\r\n {/* {category?.icon ? (\r\n \"img\"\r\n ) : (\r\n \r\n )} */}\r\n \r\n {category?.category_name}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n {\r\n dispatch(resetState());\r\n dispatch(setIsCustomCategorySelected(false));\r\n dispatch(setSelectedUseCase(\"personal\"));\r\n setSelectedUseCase(\"personal\");\r\n setSelectedUseCase(\"\");\r\n dispatch(setSelectedUseCase(\"personal\"));\r\n dispatch(setWithoutUseCaseTemplateData(\"\"));\r\n setSearchValue(\"\");\r\n }}\r\n >\r\n \r\n Created by you\r\n \r\n \r\n\r\n {\r\n dispatch(resetState());\r\n dispatch(setIsCustomCategorySelected(false));\r\n dispatch(setSelectedUseCase(\"teamSpace\"));\r\n setSelectedUseCase(\"personal\");\r\n\r\n // getTemplatesWithoutUseCase(1, { is_new: true });\r\n // dispatch(\r\n // setWithoutUseCaseTemplateData({ pageNumber: 1, is_new: true })\r\n // );\r\n // dispatch(setSelectedUseCase(\"personal\"));\r\n setSearchValue(\"\");\r\n }}\r\n >\r\n \r\n Shared with you\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateBoardModelSideBar;\r\n","import { Stack, Typography, useMediaQuery, useTheme } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport BtnGradient from \"../../../common-components/buttons/BtnGradient\";\r\nimport { fontWeight } from \"../../../Utils/style/weight/fontWeight\";\r\nimport { IcRightShortArrow } from \"../../../assets/icon-components\";\r\nimport { fontSizes } from \"../../../styles/font/fontsizes\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { commonStyles } from \"../../../Utils/style/common/commonStyles\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n resetState,\r\n setSelectedUseCase,\r\n setWithoutUseCaseTemplateData,\r\n} from \"../../../Redux/templatesSlices\";\r\nimport { s3AssetsUrl } from \"../const\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\n\r\nfunction ForYou() {\r\n const location = useLocation();\r\n const theme = useTheme();\r\n const match1180 = useMediaQuery(theme.breakpoints.down(1180));\r\n const match1080 = useMediaQuery(theme.breakpoints.down(1080));\r\n const dispatch = useDispatch();\r\n\r\n return (\r\n \r\n {!match1080 && (\r\n \r\n )}\r\n \r\n \r\n {/* {location.pathname !== \"/templates\" && (\r\n \r\n \r\n \r\n )} */}\r\n \r\n {/* {location.pathname === \"/templates\"\r\n ? \"Unlock Premium Templates\"\r\n : \"Try Premium Templates\"} */}\r\n Try{\" \"}\r\n \r\n Premium Templates\r\n \r\n \r\n \r\n \r\n {location.pathname === \"/templates\"\r\n ? \"Discover a wide range of professionally designed templates to streamline your projects and maximize productivity. Try them today to elevate your workflow!\"\r\n : \"Access Cloudairy’s premium templates to create professional, customizable designs effortlessly. Save time and elevate your projects with industry-specific solutions.\"}\r\n \r\n\r\n {\r\n dispatch(resetState());\r\n dispatch(setSelectedUseCase(\"premiumTemplates\"));\r\n dispatch(\r\n setWithoutUseCaseTemplateData({\r\n pageNumber: 1,\r\n is_premium: true,\r\n })\r\n );\r\n }}\r\n >\r\n \r\n \r\n Explore Templates\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ForYou;\r\n","import {\r\n Box,\r\n Card,\r\n CardContent,\r\n Grid,\r\n Skeleton,\r\n Stack,\r\n Typography,\r\n useMediaQuery,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport React, { forwardRef, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { fontWeight } from \"../../../styles/weight/fontWeight\";\r\nimport { fontSizes } from \"../../../styles/font/fontsizes\";\r\nimport SimpleCircularProgress from \"../../../common-components/SimpleCircularProgress\";\r\nimport BtnGradient from \"../../../common-components/buttons/BtnGradient\";\r\nimport Loader from \"../../../CommanUI/Loader/loader\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n setCategories,\r\n setOpenBoardFromTemplate,\r\n setOpenViewTemplate,\r\n} from \"../../../Redux/templatesSlices\";\r\nimport ForYou from \"./ForYou\";\r\nimport commanService from \"../../../CommanFunctions/commanService\";\r\nimport {\r\n errorToast,\r\n setTemplateData,\r\n warningToast,\r\n} from \"../../../Redux/toastSlice\";\r\n// import CommonPlaceHolder from \"../../../common-components/commonPlaceholder/CommonPlaceHolder\";\r\nimport CommonPlaceHolder from \"../../../common-components/CommonPlaceHolder\";\r\n// import TemplateUI from \"./TemplateUI\";\r\n// import { IcPlusSquareFillLarge,IcPlusSquaredOutlinedLarge } from \"../../../assets/icon-components\";\r\nimport {\r\n IcPlusSquaredOutlinedLarge,\r\n IcPlusSquareFillLarge,\r\n} from \"../../../assets/icon-components\";\r\nimport { debounce } from \"../../../CommanFunctions/commanFunctions\";\r\nimport { s3AssetsUrl } from \"../const\";\r\nimport TemplateUI from \"../../../common-components/templateUI/TemplateUI\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\n\r\nconst TemplatesBoardPlaceHolder = ({\r\n title,\r\n showTab = true,\r\n isPersonal = false,\r\n searchValue = \"\",\r\n matchDown1281,\r\n matchDown1581,\r\n setSelectedTemplateData,\r\n userData,\r\n currentSubscriptionData,\r\n setShowUseTemplate,\r\n setOpenUpgradePopup,\r\n setViewTemplate,\r\n selectedUseCase,\r\n handleClose,\r\n viewTemplate,\r\n handleTemplateData,\r\n isBoard,\r\n searchCustomValue,\r\n setSearchCustomValue,\r\n}) => {\r\n const navigate = useNavigate();\r\n const dispatch = useDispatch();\r\n\r\n const theme = useTheme();\r\n const isXLarge = useMediaQuery(theme.breakpoints.up(\"xl\"));\r\n const isLarge = useMediaQuery(theme.breakpoints.up(\"lg\"));\r\n\r\n const numCards = isXLarge ? 6 : isLarge ? 3 : 2;\r\n // const activeTeam = useSelector((state) => state?.sidebar?.currentTeam);\r\n const activeTeam = localStorage.getItem(\"active_team\");\r\n const [select, setSelect] = useState(\"workspace\");\r\n const [templates, setTemplates] = useState([]);\r\n const [pageNum, setPageNum] = useState(0);\r\n const [totalPages, setTotalPages] = useState(0);\r\n const [isScrollLoading, setIsScrollLoading] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const templatesContainerRef = useRef(null);\r\n const teamId = localStorage.getItem(\"active_team\");\r\n\r\n // const fetchCategories = async () => {\r\n // try {\r\n // const res = await commanService.getApi(\r\n // \"drawboard\",\r\n // \"categories?type=custom_category\"\r\n // );\r\n // dispatch(setCategories(res?.data?.data));\r\n // return res?.data?.data || [];\r\n // } catch (error) {}\r\n // };\r\n\r\n const handleCreateTemplateChart = async () => {\r\n try {\r\n // const categories = await fetchCategories();\r\n\r\n // const generalCategory = categories.find(\r\n // (cat) => cat.category_name === \"General\"\r\n // );\r\n const response = await commanService.postApi(\r\n \"drawboard/v1\",\r\n \"architectures\",\r\n {\r\n type: \"template\",\r\n architecture_name: \"New Template\",\r\n team_id: teamId,\r\n // category_id: categories[0]?.category_id,\r\n }\r\n );\r\n dispatch(setOpenBoardFromTemplate(false));\r\n localStorage.removeItem(\"firstTimeAfterCreate\");\r\n dispatch(setOpenViewTemplate(false));\r\n setTimeout(() => {\r\n navigate(\r\n `/${\"cloudchart\"}/${response.data.data[0].architecture_id}?a_id=${\r\n response.data.data[0]?.account_id\r\n }`\r\n );\r\n // window.location.href = `/${\"cloudchart\"}/${\r\n // response.data.data[0].architecture_id\r\n // }?a_id=${response.data.data[0]?.account_id}`;\r\n }, 100);\r\n handleClose && handleClose();\r\n dispatch(setTemplateData());\r\n } catch (error) {\r\n if (\r\n error?.response?.status === 403 &&\r\n error?.response?.data?.message?.includes(\"You've reached your\")\r\n ) {\r\n dispatch(\r\n warningToast({\r\n message: error?.response?.data?.message,\r\n })\r\n );\r\n } else {\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 }\r\n }\r\n };\r\n\r\n const getCreateTemplateChart = async ({\r\n currentPage,\r\n personal = false,\r\n team_id = \"\",\r\n workspace = false,\r\n search = \"\",\r\n }) => {\r\n try {\r\n if (userData?.is_admin) {\r\n setLoading(true);\r\n const response = await commanService.getApi(\r\n \"drawboard/v1\",\r\n `templates?page=${currentPage}&pageSize=20&search=${search}`\r\n );\r\n setPageNum(currentPage);\r\n setTotalPages(response?.data?.data?.total_pages);\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? response?.data?.data?.resData\r\n : [...prev, ...response?.data?.data?.resData]\r\n );\r\n } else if (isPersonal) {\r\n setLoading(true);\r\n const response = await commanService.getApi(\r\n \"drawboard/v1\",\r\n `templates?page=${currentPage}&pageSize=20&personal=true&type=private&search=${search}&workspace=false`\r\n );\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? response?.data?.data?.resData\r\n : [...prev, ...response?.data?.data?.resData]\r\n );\r\n localStorage.removeItem(\"delete\");\r\n setLoading(false);\r\n } else {\r\n setLoading(true);\r\n const response = await commanService.getApi(\r\n \"drawboard/v1\",\r\n `templates?page=${currentPage}&pageSize=20&personal=${personal}&type=private&search=${search}&team_id=${team_id}&workspace=${workspace}`\r\n );\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? response?.data?.data?.resData\r\n : [...prev, ...response?.data?.data?.resData]\r\n );\r\n }\r\n setLoading(false);\r\n setIsScrollLoading(false);\r\n } catch (error) {\r\n if (\r\n error?.response?.status === 403 &&\r\n error?.response?.data?.message?.includes(\"You've reached your\")\r\n ) {\r\n } else {\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 }\r\n setLoading(false);\r\n setIsScrollLoading(false);\r\n }\r\n };\r\n\r\n const debouncedSearch = useMemo(\r\n () =>\r\n debounce((value) => {\r\n if (select === \"team\") {\r\n getCreateTemplateChart({\r\n currentPage: 1,\r\n personal: isPersonal ? true : false,\r\n team_id: activeTeam,\r\n search: value,\r\n workspace: false,\r\n });\r\n } else {\r\n getCreateTemplateChart({\r\n currentPage: 1,\r\n personal: isPersonal ? true : false,\r\n workspace: true,\r\n search: value,\r\n });\r\n }\r\n }, 800),\r\n [activeTeam, isPersonal]\r\n );\r\n\r\n useEffect(() => {\r\n if (searchValue || searchCustomValue) {\r\n setLoading(true);\r\n debouncedSearch(searchValue);\r\n setSearchCustomValue(false);\r\n }\r\n }, [searchValue, searchCustomValue]);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n setTemplates([]);\r\n if (select === \"team\") {\r\n getCreateTemplateChart({\r\n currentPage: 1,\r\n personal: isPersonal ? true : false,\r\n team_id: activeTeam,\r\n workspace: false,\r\n });\r\n } else {\r\n getCreateTemplateChart({\r\n currentPage: 1,\r\n personal: isPersonal ? true : false,\r\n workspace: true,\r\n });\r\n }\r\n }, [isPersonal, select]);\r\n\r\n const deleteData = localStorage.getItem(\"delete\");\r\n useEffect(() => {\r\n if (deleteData && !viewTemplate) {\r\n setLoading(true);\r\n setTemplates([]);\r\n getCreateTemplateChart({\r\n currentPage: 1,\r\n personal: true,\r\n workspace: false,\r\n });\r\n }\r\n }, [viewTemplate, deleteData, isPersonal, select]);\r\n\r\n const handleScroll = () => {\r\n const scrollEle = templatesContainerRef.current;\r\n if (scrollEle) {\r\n const isBottom =\r\n scrollEle.scrollHeight - scrollEle.scrollTop === scrollEle.clientHeight;\r\n\r\n if (isBottom && pageNum !== totalPages) {\r\n setIsScrollLoading(true);\r\n if (selectedUseCase === \"teamSpace\") {\r\n if (select === \"team\") {\r\n getCreateTemplateChart({\r\n currentPage: pageNum + 1,\r\n // personal: isPersonal ? true : false,\r\n team_id: activeTeam,\r\n search: searchValue,\r\n workspace: false,\r\n });\r\n } else {\r\n getCreateTemplateChart({\r\n currentPage: pageNum + 1,\r\n // personal: isPersonal ? true : false,\r\n workspace: true,\r\n search: searchValue,\r\n });\r\n }\r\n } else {\r\n getCreateTemplateChart({\r\n currentPage: pageNum + 1,\r\n personal: isPersonal ? true : false,\r\n search: searchValue,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n const filteredTemplate = templates;\r\n // searchValue.trim().length > 0\r\n // ? templates.filter(\r\n // (temp) =>\r\n // searchValue\r\n // .toLowerCase()\r\n // .includes(temp.template_name.toLowerCase()) ||\r\n // temp.template_name.toLowerCase().includes(searchValue.toLowerCase())\r\n // )\r\n // : templates;\r\n\r\n // useEffect(() => {\r\n // if (templatesContainerRef.current && templates.length > 0) {\r\n\r\n // const scrollEle = templatesContainerRef.current;\r\n // scrollEle.addEventListener(\"scroll\", handleScroll);\r\n // return () => {\r\n // scrollEle.removeEventListener(\"scroll\", handleScroll);\r\n // };\r\n // }\r\n // }, [filteredTemplate, templatesContainerRef, templates]);\r\n\r\n useEffect(() => {\r\n if (templatesContainerRef.current && templates.length > 0) {\r\n const scrollEle = templatesContainerRef.current;\r\n scrollEle.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n scrollEle.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n }\r\n }, [templates.length]);\r\n\r\n return (\r\n \r\n \r\n \r\n {title ? title : \"Shared Templates\"}\r\n \r\n \r\n Explore pre-designed templates to streamline your projects and\r\n workflows.\r\n \r\n {showTab &&\r\n currentSubscriptionData?.subscriptionData?.package !== \"Free\" && (\r\n \r\n {\r\n setSelect(\"workspace\");\r\n }}\r\n >\r\n \r\n Workspace\r\n \r\n \r\n\r\n {\r\n setSelect(\"team\");\r\n }}\r\n >\r\n \r\n Team\r\n \r\n \r\n \r\n )}\r\n \r\n {templates.length <= 0 && !loading && (\r\n \r\n \r\n \r\n {isPersonal ? \"No Created Template Yet!\" : \"No Shared Templates\"}\r\n \r\n\r\n \r\n {isPersonal\r\n ? \"Explore pre-designed templates to streamline your projects and workflows.\"\r\n : \"Templates shared with you will appear here\"}\r\n \r\n\r\n {isPersonal !== false && (\r\n {\r\n handleCreateTemplateChart();\r\n dispatch(setTemplateData({}));\r\n }}\r\n >\r\n \r\n Create Template\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {[...Array(numCards)].map((_, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {templates.length > 0 && (\r\n \r\n {/* {\r\n handleCreateTemplateChart();\r\n dispatch(setTemplateData({}));\r\n }}\r\n > */}\r\n handleCreateTemplateChart()}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Create new template\r\n \r\n \r\n {filteredTemplate?.map((template, i) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n\r\n {isScrollLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {loading && !isScrollLoading && }\r\n \r\n );\r\n};\r\nconst TemplateListComponent = forwardRef(\r\n (\r\n {\r\n selectedUseCase,\r\n setTemplates,\r\n getTemplateList,\r\n selectedCategory,\r\n searchValue,\r\n setViewTemplate,\r\n viewTemplate,\r\n setSelectedTemplateData,\r\n templates,\r\n loading,\r\n openUpgradePopup,\r\n setOpenUpgradePopup,\r\n setShowUseTemplate,\r\n isModel = true,\r\n isScrollLoading = false,\r\n categories,\r\n handleClose,\r\n handleTemplateData,\r\n isBoard,\r\n searchCustomValue,\r\n setSearchCustomValue,\r\n },\r\n ref\r\n ) => {\r\n const { userData, currentSubscriptionData } = useSelector(\r\n (state) => state.common\r\n );\r\n const templateState = useSelector((state) => state.templates);\r\n const isForYou = templateState?.selectedUseCase === \"forYou\";\r\n // const categories = templateState.categories;\r\n const globalTheme = useTheme();\r\n const matchDown1281 = useMediaQuery(globalTheme.breakpoints.down(1281));\r\n const matchDown1581 = useMediaQuery(globalTheme.breakpoints.down(1581));\r\n const filteredTemplate = templates;\r\n // searchValue.trim().length > 0\r\n // ? templates.filter(\r\n // (temp) =>\r\n // searchValue\r\n // .toLowerCase()\r\n // .includes(temp.template_name.toLowerCase()) ||\r\n // temp.template_name\r\n // .toLowerCase()\r\n // .includes(searchValue.toLowerCase())\r\n // )\r\n // : templates;\r\n\r\n const selectedCategoryName = categories?.filter(\r\n (category) => category?.category_id === selectedUseCase\r\n );\r\n\r\n return (\r\n \r\n {/* {selectedUseCase !== \"allTemplates\" &&\r\n selectedUseCase !== \"newTemplates\" &&\r\n selectedUseCase !== \"favouriteTemplates\" &&\r\n selectedUseCase !== \"personal\" &&\r\n selectedUseCase !== \"teamSpace\" &&\r\n selectedUseCase !== \"forYou\" &&\r\n selectedUseCase !== \"premiumTemplates\" && (\r\n \r\n {categories?.map((category, i) => {\r\n return (\r\n {\r\n setTemplates([]);\r\n dispatch(setSelectedCategory(category?.category_id));\r\n getTemplateList(category, selectedUseCase, 1);\r\n }}\r\n >\r\n \r\n \r\n {category?.category_name}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n )} */}\r\n\r\n {!!isModel && selectedUseCase === \"forYou\" && (\r\n \r\n \r\n \r\n )}\r\n\r\n {![\"personal\", \"teamSpace\"].includes(selectedUseCase) && (\r\n \r\n {selectedUseCase === \"forYou\"\r\n ? \"For You\"\r\n : selectedUseCase === \"allTemplates\"\r\n ? \"All Templates\"\r\n : selectedUseCase === \"newTemplates\"\r\n ? \"New Templates\"\r\n : selectedUseCase === \"premiumTemplates\"\r\n ? \"Premium Templates\"\r\n : selectedUseCase === \"favouriteTemplates\"\r\n ? \"Favourite Templates\"\r\n : selectedCategoryName && selectedCategoryName?.length > 0\r\n ? selectedCategoryName[0]?.category_name\r\n : \"general\"}\r\n \r\n )}\r\n \r\n {loading && !isScrollLoading && }\r\n\r\n \r\n {!loading && filteredTemplate.length <= 0 ? (\r\n selectedUseCase !== \"teamSpace\" &&\r\n selectedUseCase !== \"personal\" ? (\r\n \r\n ) : selectedUseCase === \"personal\" ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n\r\n \r\n {filteredTemplate?.map((template, i) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {isScrollLoading && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default TemplateListComponent;\r\n","import React, { memo, useEffect, useMemo, useState } from \"react\";\r\nimport CustomModal from \"../../../common-components/CustomModal\";\r\nimport CreateBoardModelSideBar from \"./CreateBoardModelSideBar\";\r\nimport {\r\n Box,\r\n IconButton,\r\n MenuItem,\r\n Popover,\r\n Select,\r\n Stack,\r\n Typography,\r\n useMediaQuery,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport PropTypes from \"prop-types\";\r\nimport commanService from \"../../../CommanFunctions/commanService\";\r\nimport { IcCloseThin } from \"../../../assets/icon-components\";\r\nimport UseTemplate from \"../../templates/UseTemplate\";\r\nimport {\r\n errorToast,\r\n warningToast,\r\n successToast,\r\n} from \"../../../Redux/toastSlice\";\r\nimport TemplateListComponent from \"./TemplateListComponent\";\r\nimport DeleteDialog from \"../../DialogBox/DeleteDialog\";\r\nimport SearchInput from \"../../../common-components/SearchInput\";\r\nimport CreateBlankBoard from \"./CreateBlankBoard\";\r\nimport { fontWeight } from \"../../../Utils/style/weight/fontWeight\";\r\nimport { color } from \"../../../Utils/style/color/color\";\r\nimport SimpleCheckBox from \"../../../common-components/SimpleCheckBox\";\r\nimport {\r\n setCategories,\r\n setSelectedCategory,\r\n setSelectedUseCase,\r\n setWithoutUseCaseTemplateData,\r\n} from \"../../../Redux/templatesSlices\";\r\nimport ForYou from \"./ForYou\";\r\nimport {\r\n useGetShowWhenCreateBoardQuery,\r\n useUpdateShowWhenCreateBoardMutation,\r\n} from \"../../../Redux/api/templatesApi\";\r\nimport { debounce } from \"../../../CommanFunctions/commanFunctions\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { useGetCategoriesQuery } from \"../../../Redux/api/chartsApi\";\r\n\r\nconst style = {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"90%\",\r\n maxWidth: \"1390px\",\r\n bgcolor: \"#FFF\",\r\n border: \"none\",\r\n boxShadow: \"none\",\r\n p: \"10px 24px 24px\",\r\n borderRadius: \"12px\",\r\n maxHeight: \"97%\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n \"&:focus-visible\": { outline: \"none !important\" },\r\n};\r\n\r\n// function a11yProps(index) {\r\n// return {\r\n// id: `simple-tab-${index}`,\r\n// \"aria-controls\": `simple-tabpanel-${index}`,\r\n// };\r\n// }\r\n\r\nconst CreateBoardFromTemplate = memo(\r\n ({\r\n open,\r\n handleClose,\r\n setOpen,\r\n project_id,\r\n isReload,\r\n isSidebar = true,\r\n isShowCreateSection = true,\r\n handleTemplateData,\r\n isModel = true,\r\n selectedTemplateData,\r\n setSelectedTemplateData,\r\n viewTemplate,\r\n setViewTemplate,\r\n searchValue,\r\n setSearchValue,\r\n useCaseList,\r\n setUseCaseList,\r\n setShowUseTemplate,\r\n showUseTemplate,\r\n setTemplates,\r\n templates,\r\n templatesContainerRef,\r\n setIsScrollLoading,\r\n isScrollLoading,\r\n templateState,\r\n isBoard,\r\n openUpgradePopup,\r\n setOpenUpgradePopup,\r\n }) => {\r\n const theme = useTheme();\r\n const match1220 = useMediaQuery(theme.breakpoints.down(1220));\r\n const match1500 = useMediaQuery(theme.breakpoints.down(1500));\r\n const match950 = useMediaQuery(theme.breakpoints.down(950));\r\n const dispatch = useDispatch();\r\n const [templatesOpt, setTemplatesOpt] = useState(\"All\");\r\n const [updateShowWhenCreateBoard] = useUpdateShowWhenCreateBoardMutation();\r\n const { data: showWhenCreateBoard } = useGetShowWhenCreateBoardQuery();\r\n const { isCustomCategorySelected } = useSelector(\r\n (state) => state.templates\r\n );\r\n\r\n const filteredTemplate = templates;\r\n\r\n const { data: customCategory } = useGetCategoriesQuery(\"custom_category\", {\r\n skip: !useCaseList,\r\n });\r\n const { data: mainCategoryList } = useGetCategoriesQuery(\r\n useCaseList?.[0]?.use_case_id,\r\n {\r\n skip: !useCaseList,\r\n }\r\n );\r\n\r\n const categoryIds =\r\n mainCategoryList?.map((cat) => String(cat.category_id)) || [];\r\n const filteredCategories = customCategory?.filter(\r\n (category) => !categoryIds.includes(String(category.category_id))\r\n );\r\n const filteredCategorieIds =\r\n filteredCategories?.map((cat) => cat?.category_id) || [];\r\n\r\n const sortOptions = [\"All\", \"Free\", \"Paid\"];\r\n\r\n const [templatesOpt2, setTemplatesOpt2] = useState(\"Recommended\");\r\n\r\n const sortOptions2 = [\"Recommended\", \"Newest\", \"Popular\", \"Trending\"];\r\n const [loading, setLoading] = useState(false);\r\n\r\n // const [isScrollLoading, setIsScrollLoading] = useState(false);\r\n // const templatesContainerRef = useRef(null);\r\n // const { userData, currentSubscriptionData } = useSelector(\r\n // (state) => state.common\r\n // );\r\n // const [value, setValue] = useState(0);\r\n // const [selectedCategory, setSelectedCategory] = useState(\"\");\r\n // const [viewTemplate, setViewTemplate] = useState(false);\r\n // const [templates, setTemplates] = useState([]);\r\n // const [selectedTemplateData, setSelectedTemplateData] = useState(null);\r\n // const [categories, setCategories] = useState([]);\r\n const [anchorEl2, setAnchorEl2] = useState(null);\r\n // const [showUseTemplate, setShowUseTemplate] = useState(false);\r\n // const [isCloudChart, setIsCloudChart] = useState(true);\r\n // const [searchValue, setSearchValue] = useState(\"\");\r\n const [searchCustomValue, setSearchCustomValue] = useState(false);\r\n const [openCreateBlankModal, setOpenCreateBlankModal] = useState(false);\r\n // const [selectedUseCase, setSelectedUseCase] = useState(\"allTemplates\");\r\n const [pageNum, setPageNum] = useState(0);\r\n const [totalPages, setTotalPages] = useState(0);\r\n // const templateState = useSelector((state) => state.templates);\r\n const selectedCategory = templateState?.selectedCategory;\r\n const selectedUseCase = templateState?.selectedUseCase;\r\n // const selectedCategory = templateState.selectedCategory;\r\n\r\n // useEffect(() => {\r\n // setSearchValue(\"\");\r\n // }, [selectedCategory, selectedUseCase]);\r\n\r\n // const [templateMetaData, setTemplateMetaData] = useState({\r\n // pageNum: 0,\r\n // category_id: \"\",\r\n // useCaseId: \"\",\r\n // });\r\n // const [trigger, { data, isLoading, isFetching }] =\r\n // useLazyGetTemplatesByUseCaseQuery(templateMetaData);\r\n // const shortingOption = [{ label: \"Most popular\" }, { label: \"popular\" }];\r\n // const [selectedOption, setSelectedOption] = useState(shortingOption[0]);\r\n // const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n // const openPopover = Boolean(anchorEl);\r\n // const id = open ? \"simple-popover\" : undefined;\r\n useEffect(() => {\r\n if (templatesContainerRef?.current) {\r\n templatesContainerRef.current.scrollTop = 0;\r\n }\r\n let excludeUseCase = [\r\n \"forYou\",\r\n \"allTemplates\",\r\n \"newTemplates\",\r\n \"personal\",\r\n \"teamSpace\",\r\n \"favouriteTemplates\",\r\n \"premiumTemplates\",\r\n ];\r\n\r\n if (selectedUseCase === \"favouriteTemplates\") {\r\n getFavouriteTemplates(1);\r\n } else if (selectedUseCase === \"teamSpace\") {\r\n setPageNum(0);\r\n setTotalPages(0);\r\n setTemplates([]);\r\n } else if (selectedUseCase === \"personal\") {\r\n setPageNum(0);\r\n setTotalPages(0);\r\n setTemplates([]);\r\n } else if (!excludeUseCase.includes(selectedUseCase)) {\r\n // getSpecificUseCaseWiseCategory(selectedUseCase, 1);\r\n }\r\n }, [selectedUseCase]);\r\n useEffect(() => {\r\n let excludeUseCase = [\r\n \"forYou\",\r\n \"allTemplates\",\r\n \"newTemplates\",\r\n // \"personal\",\r\n // \"teamSpace\",\r\n \"favouriteTemplates\",\r\n \"premiumTemplates\",\r\n ];\r\n if (open && templateState && excludeUseCase.includes(selectedUseCase)) {\r\n let temp = { ...templateState.withoutUseCaseTemplateData };\r\n delete temp.pageNumber;\r\n getTemplatesWithoutUseCase(\r\n templateState.withoutUseCaseTemplateData?.pageNumber || 1,\r\n { ...temp }\r\n );\r\n }\r\n }, [templateState?.withoutUseCaseTemplateData, open]);\r\n\r\n const [deleteTemplate, setDeleteTemplate] = useState({\r\n open: false,\r\n name: \"\",\r\n id: null,\r\n });\r\n // const [openUpgradePopup, setOpenUpgradePopup] = useState(false);\r\n // const [useCaseList, setUseCaseList] = useState([]);\r\n\r\n const open2 = Boolean(anchorEl2);\r\n const id2 = open2 ? \"simple-popover\" : undefined;\r\n\r\n // const resetAllStates = () => {\r\n // setTemplates([]);\r\n // dispatch(setCategories([]));\r\n // dispatch(setSelectedCategory(\"\"));\r\n // setPageNum(0);\r\n // setTotalPages(0);\r\n // };\r\n\r\n // const handleClickMenu = (event, data) => {\r\n // setAnchorEl2(event.currentTarget);\r\n // setSelectedTemplateData(data);\r\n // };\r\n\r\n // const filteredTemplate = templates;\r\n // searchValue.trim().length > 0\r\n // ? templates.filter(\r\n // (temp) =>\r\n // searchValue\r\n // .toLowerCase()\r\n // .includes(temp.template_name.toLowerCase()) ||\r\n // temp.template_name\r\n // .toLowerCase()\r\n // .includes(searchValue.toLowerCase())\r\n // )\r\n // : templates;\r\n // const getSpecificUseCaseWiseCategory = async (useCaseId, currentPage) => {\r\n // try {\r\n // const category = await commanService.getApi(\r\n // \"drawboard/v1\",\r\n // `categories/?use_case_id=${useCaseId}`\r\n // );\r\n // dispatch(setCategories(category.data.data));\r\n // // setCategories(category.data.data);\r\n // if (category.data.data.length > 0) {\r\n // const firstCategory = category?.data.data[0];\r\n // getTemplateList(firstCategory, useCaseId, currentPage);\r\n // dispatch(setSelectedCategory(firstCategory?.category_id));\r\n // } else {\r\n // setTemplates([]);\r\n // }\r\n // } catch (error) {\r\n // } finally {\r\n // }\r\n // };\r\n\r\n const handleScroll = () => {\r\n const scrollEle = templatesContainerRef?.current;\r\n if (scrollEle) {\r\n const isBottom =\r\n scrollEle.scrollHeight - scrollEle.scrollTop <=\r\n scrollEle.clientHeight + 1;\r\n if (isBottom && pageNum !== totalPages) {\r\n setIsScrollLoading(true);\r\n if (selectedUseCase === \"allTemplates\") {\r\n getTemplatesWithoutUseCase(pageNum + 1, {}, searchValue);\r\n } else if (selectedUseCase === \"newTemplates\") {\r\n getTemplatesWithoutUseCase(\r\n pageNum + 1,\r\n { is_new: true },\r\n searchValue\r\n );\r\n } else if (selectedUseCase === \"personal\") {\r\n // getTemplatesWithoutUseCase(\r\n // pageNum + 1,\r\n // { personal: true },\r\n // searchValue\r\n // );\r\n } else if (selectedUseCase === \"teamSpace\") {\r\n // getTemplatesWithoutUseCase(\r\n // pageNum + 1,\r\n // { team_id: activeTeam },\r\n // searchValue\r\n // );\r\n } else if (selectedUseCase === \"favouriteTemplates\") {\r\n getFavouriteTemplates(pageNum + 1, searchValue);\r\n } else if (selectedUseCase === \"premiumTemplates\") {\r\n getTemplatesWithoutUseCase(\r\n pageNum + 1,\r\n { is_premium: true },\r\n searchValue\r\n );\r\n } else if (selectedUseCase === \"forYou\") {\r\n getTemplatesWithoutUseCase(pageNum + 1, {}, searchValue);\r\n } else {\r\n getTemplateList(\r\n { category_id: selectedCategory },\r\n selectedUseCase,\r\n pageNum + 1,\r\n searchValue\r\n );\r\n }\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (\r\n open &&\r\n templatesContainerRef?.current &&\r\n filteredTemplate.length > 0\r\n ) {\r\n const scrollEle = templatesContainerRef?.current;\r\n scrollEle.addEventListener(\"scroll\", handleScroll);\r\n return () => {\r\n scrollEle.removeEventListener(\"scroll\", handleScroll);\r\n };\r\n }\r\n }, [filteredTemplate?.length, open, templatesContainerRef]);\r\n\r\n const handleCloseMenu = () => {\r\n setAnchorEl2(null);\r\n setSelectedTemplateData(null);\r\n };\r\n\r\n const getTemplateList = async (\r\n categories,\r\n use_case_id,\r\n currentPage,\r\n search = \"\"\r\n ) => {\r\n try {\r\n setLoading(true);\r\n const templatesList = await commanService.getApi(\r\n \"drawboard/v1\",\r\n `templates/?page=${currentPage}&pageSize=20&type=${\r\n filteredCategorieIds.includes(categories?.category_id)\r\n ? \"private\"\r\n : \"cloudboard\"\r\n }&use_case_id=${useCaseList?.[0]?.use_case_id}&category=${\r\n categories?.category_id\r\n }${\r\n search.trim().length > 0\r\n ? `&search=${encodeURIComponent(search)}`\r\n : \"\"\r\n }`\r\n );\r\n\r\n setPageNum(currentPage);\r\n setTotalPages(templatesList.data?.data?.total_pages);\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? templatesList?.data?.data?.resData\r\n : [...prev, ...templatesList?.data?.data?.resData]\r\n );\r\n } catch (error) {\r\n setPageNum(0);\r\n setTemplates([]);\r\n } finally {\r\n setLoading(false);\r\n setIsScrollLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (selectedCategory) {\r\n getTemplateList({ category_id: selectedCategory }, \"\", 1);\r\n }\r\n }, [selectedCategory]);\r\n\r\n const getTemplatesWithoutUseCase = async (\r\n currentPage,\r\n queries = {},\r\n search = \"\"\r\n ) => {\r\n try {\r\n setLoading(true);\r\n const queryParams = `\r\n templates?page=${currentPage}&pageSize=20\r\n ${queries?.is_new ? \"&is_new=true\" : \"\"}\r\n ${queries?.is_premium ? \"&is_premium=true\" : \"\"}\r\n ${queries?.team_id ? `&team_id=${queries.team_id}&type=private` : \"\"}\r\n ${queries?.personal ? \"&personal=true&type=private\" : \"\"}\r\n ${\r\n search.trim().length > 0\r\n ? `&search=${encodeURIComponent(search)}`\r\n : \"\"\r\n }\r\n `\r\n .trim()\r\n .replace(/\\s+/g, \"\"); // Clean up query string\r\n\r\n const templatesList = await commanService.getApi(\r\n \"drawboard/v1\",\r\n queryParams\r\n );\r\n\r\n setPageNum(currentPage);\r\n setTotalPages(templatesList.data?.data?.total_pages);\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? templatesList?.data?.data?.resData\r\n : [...prev, ...templatesList?.data?.data?.resData]\r\n );\r\n } catch (error) {\r\n setPageNum(0);\r\n setTemplates([]);\r\n console.error(error);\r\n } finally {\r\n setLoading(false);\r\n setIsScrollLoading(false);\r\n }\r\n };\r\n\r\n const getFavouriteTemplates = async (currentPage, search = \"\") => {\r\n try {\r\n setLoading(true);\r\n const templatesList = await commanService.getApi(\r\n \"drawboard/v1\",\r\n `templates/favourite?page=${currentPage}&pageSize=20${\r\n search.trim().length > 0 ? `&search=${search}` : \"\"\r\n }`\r\n );\r\n\r\n setPageNum(currentPage);\r\n setTotalPages(templatesList.data?.data?.total_pages);\r\n setTemplates((prev) =>\r\n currentPage === 1\r\n ? templatesList?.data?.data?.resData\r\n : [...prev, ...templatesList?.data?.data?.resData]\r\n );\r\n } catch (error) {\r\n setPageNum(0);\r\n setTotalPages(0);\r\n setTemplates([]);\r\n } finally {\r\n setLoading(false);\r\n setIsScrollLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n setTemplates && setTemplates([]);\r\n dispatch(setSelectedCategory(\"\"));\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n setPageNum(0);\r\n setTotalPages(0);\r\n dispatch(setCategories([]));\r\n }\r\n }, [open]);\r\n\r\n // const handleChange = (event, newValue) => {\r\n // setValue(newValue);\r\n // if (newValue === 0) {\r\n // setSearchValue(\"\");\r\n // fetchCategories(newValue);\r\n // } else if (newValue === 1) {\r\n // setSearchValue(\"\");\r\n // fetchCategories(newValue);\r\n // } else if (newValue === 2) {\r\n // setSearchValue(\"\");\r\n // fetchCategories(newValue);\r\n // }\r\n // };\r\n\r\n // const FavoriteTemplatesPlaceHolder = () => {\r\n // return (\r\n // \r\n // \r\n // \r\n // \r\n // No Favorite Templates Yet\r\n // \r\n // \r\n // You haven't marked any templates as favorites. Let's get started!\r\n // \r\n // \r\n // \r\n // );\r\n // };\r\n\r\n // const handleClick = (event) => {\r\n // setAnchorEl(event.currentTarget);\r\n // };\r\n\r\n // const handleClosePopover = () => {\r\n // setAnchorEl(null);\r\n // };\r\n\r\n // const handleOptionClick = (option) => {\r\n // setSelectedOption(option);\r\n // handleClosePopover();\r\n // };\r\n\r\n const deleteCustomTemplate = async () => {\r\n try {\r\n const { data } = await commanService.deleteApi(\r\n \"drawboard\",\r\n `templates/${deleteTemplate.id}`\r\n );\r\n dispatch(successToast({ message: data.message }));\r\n setTemplates((prev) =>\r\n prev.filter(\r\n (prevTemplate) => prevTemplate.template_id !== deleteTemplate.id\r\n )\r\n );\r\n handleCloseDelete();\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 }\r\n };\r\n\r\n const getUseCase = async () => {\r\n try {\r\n const res = await commanService.getApi(\"drawboard/v1\", \"usecase\");\r\n const useCase = res?.data?.data?.find(\r\n (val) => val?.use_case_id\r\n )?.use_case_id;\r\n localStorage.setItem(\"use_case_id\", useCase);\r\n setUseCaseList(res?.data?.data);\r\n } catch (error) {}\r\n };\r\n\r\n useEffect(() => {\r\n getUseCase();\r\n }, []);\r\n\r\n const handleCloseDelete = () => {\r\n setDeleteTemplate({ open: false, name: \"\", id: null });\r\n };\r\n\r\n const moreMenus = (templateData) => {\r\n return [\r\n {\r\n label: \"Delete\",\r\n onClick: () => {\r\n setDeleteTemplate({\r\n id: templateData.template_id,\r\n name: templateData.template_name,\r\n open: true,\r\n });\r\n },\r\n },\r\n ];\r\n };\r\n\r\n const debouncedSearch = useMemo(\r\n () =>\r\n debounce((value) => {\r\n if (selectedUseCase === \"allTemplates\") {\r\n getTemplatesWithoutUseCase(1, {}, value);\r\n } else if (selectedUseCase === \"newTemplates\") {\r\n getTemplatesWithoutUseCase(1, { is_new: true }, value);\r\n } else if (selectedUseCase === \"personal\") {\r\n // getTemplatesWithoutUseCase(1, { personal: true }, value);\r\n } else if (selectedUseCase === \"teamSpace\") {\r\n // getTemplatesWithoutUseCase(1, { team_id: activeTeam }, value);\r\n } else if (selectedUseCase === \"favouriteTemplates\") {\r\n getFavouriteTemplates(1, value);\r\n } else if (selectedUseCase === \"premiumTemplates\") {\r\n getTemplatesWithoutUseCase(1, { is_premium: true }, value);\r\n } else if (selectedUseCase === \"forYou\") {\r\n getTemplatesWithoutUseCase(1, {}, value);\r\n } else {\r\n getTemplateList(\r\n { category_id: selectedCategory },\r\n selectedUseCase,\r\n 1,\r\n value\r\n );\r\n }\r\n }, 800),\r\n [selectedCategory, selectedUseCase]\r\n );\r\n\r\n const handleSearchChange = (e) => {\r\n setSearchCustomValue(true);\r\n setPageNum(0);\r\n const value = e.target.value;\r\n setSearchValue(value);\r\n debouncedSearch(value);\r\n };\r\n\r\n const handleCloseCreateBlankBoard = () => {\r\n setOpenCreateBlankModal(false);\r\n setOpen(true);\r\n };\r\n\r\n return (\r\n <>\r\n {!isModel ? (\r\n \r\n <>\r\n \r\n \r\n {isModel ? (\r\n \r\n {\r\n updateShowWhenCreateBoard({\r\n show_template_modal:\r\n !showWhenCreateBoard?.show_template_modal || false,\r\n });\r\n }}\r\n />\r\n \r\n ) : (\r\n \r\n {\r\n setTemplatesOpt(e.target.value);\r\n if (e.target.value === \"Free\") {\r\n } else if (e.target.value === \"Paid\") {\r\n } else {\r\n }\r\n }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n sx={{\r\n width: \"160px\",\r\n border: \"1px solid #E1E1E1\",\r\n borderRadius: \"8px !important\",\r\n boxShadow: \"none\",\r\n pr: \"8px\",\r\n height: \"32px\",\r\n \"& .MuiSelect-select\": {\r\n pr: \"0px !important\",\r\n pl: \"14px !important\",\r\n py: 0,\r\n height: \"16px !important\",\r\n fontSize: \"12.6px\",\r\n fontWeight: \"400\",\r\n color: \"#18181B\",\r\n },\r\n \"& fieldset\": {\r\n display: \"none\",\r\n },\r\n }}\r\n MenuProps={{\r\n PaperProps: {\r\n sx: {\r\n borderRadius: \"16px\",\r\n boxShadow: \"0px 5px 24px 8px #10182814\",\r\n mt: 1,\r\n \"& .MuiMenuItem-root\": {\r\n fontSize: \"14px\",\r\n fontWeight: 400,\r\n color: \"#848382\",\r\n \"&:hover\": {\r\n backgroundColor: \"#F5F5F5\",\r\n },\r\n \"&.Mui-selected\": {\r\n color: \"#18181B\",\r\n backgroundColor: \"transparent !important\",\r\n },\r\n },\r\n },\r\n },\r\n }}\r\n >\r\n {sortOptions.map((option) => (\r\n \r\n {option}\r\n \r\n ))}\r\n \r\n\r\n {\r\n setTemplatesOpt2(e.target.value);\r\n if (e.target.value === \"Recommended\") {\r\n } else if (e.target.value === \"Newest\") {\r\n } else if (e.target.value === \"Popular\") {\r\n } else if (e.target.value === \"Trending\") {\r\n } else {\r\n }\r\n }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n sx={{\r\n minWidth: \"143px\",\r\n border: \"1px solid #E1E1E1\",\r\n borderRadius: \"8px !important\",\r\n boxShadow: \"none\",\r\n pr: \"8px\",\r\n height: \"32px\",\r\n \"& .MuiSelect-select\": {\r\n pr: \"0px !important\",\r\n pl: \"14px !important\",\r\n py: 0,\r\n height: \"16px !important\",\r\n fontSize: \"12.6px\",\r\n fontWeight: \"400\",\r\n color: \"#18181B\",\r\n },\r\n \"& fieldset\": {\r\n display: \"none\",\r\n },\r\n }}\r\n MenuProps={{\r\n PaperProps: {\r\n sx: {\r\n borderRadius: \"16px\",\r\n boxShadow: \"0px 5px 24px 8px #10182814\",\r\n mt: 1,\r\n \"& .MuiMenuItem-root\": {\r\n fontSize: \"14px\",\r\n fontWeight: 400,\r\n color: \"#848382\",\r\n \"&:hover\": {\r\n backgroundColor: \"#F5F5F5\",\r\n },\r\n \"&.Mui-selected\": {\r\n color: \"#18181B\",\r\n backgroundColor: \"transparent !important\",\r\n },\r\n },\r\n },\r\n },\r\n }}\r\n >\r\n {sortOptions2.map((option) => (\r\n \r\n {option}\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n \r\n\r\n {selectedUseCase === \"forYou\" && }\r\n\r\n {/* */}\r\n \r\n ) : (\r\n {}\r\n : () => {\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n handleClose();\r\n localStorage.removeItem(\"firstTimeAfterCreate\");\r\n }\r\n }\r\n >\r\n \r\n <>\r\n \r\n {\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n dispatch(\r\n setWithoutUseCaseTemplateData({ pageNumber: 1 })\r\n );\r\n }}\r\n >\r\n \r\n For You\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateShowWhenCreateBoard({\r\n show_template_modal:\r\n !showWhenCreateBoard?.show_template_modal ||\r\n false,\r\n });\r\n }}\r\n />\r\n \r\n\r\n {\r\n handleClose();\r\n setTemplates([]);\r\n dispatch(setSelectedCategory(\"\"));\r\n setSelectedUseCase(\"forYou\");\r\n dispatch(setSelectedUseCase(\"forYou\"));\r\n setPageNum(0);\r\n setTotalPages(0);\r\n dispatch(setCategories([]));\r\n localStorage.removeItem(\"firstTimeAfterCreate\");\r\n // setSelectedCategory(null);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n {deleteTemplate.open && (\r\n \r\n )}\r\n {openCreateBlankModal && (\r\n \r\n )}\r\n {showUseTemplate && (\r\n {\r\n setShowUseTemplate(value);\r\n setSelectedTemplateData(null);\r\n setViewTemplate(false);\r\n setOpen(true);\r\n }}\r\n selectedTemplateData={selectedTemplateData}\r\n project_id={project_id}\r\n isReload={isReload}\r\n />\r\n )}\r\n \r\n \r\n {moreMenus(selectedTemplateData).map(({ label, onClick }, i) => {\r\n return (\r\n {\r\n onClick && onClick();\r\n handleCloseMenu();\r\n }}\r\n >\r\n \r\n {label}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n {/* {openUpgradePopup && (\r\n {\r\n setOpenUpgradePopup(false);\r\n }}\r\n />\r\n )} */}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default CreateBoardFromTemplate;\r\n\r\nfunction CustomTabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n
\r\n );\r\n}\r\n\r\nCustomTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.number.isRequired,\r\n value: PropTypes.number.isRequired,\r\n};\r\n","import Box from \"@mui/material/Box\";\r\nimport CustomModal from \"../../../common-components/CustomModal\";\r\nimport { IconButton, Stack, Typography } from \"@mui/material\";\r\nimport {\r\n IcCheckCircleOutlined,\r\n IcCloseThin,\r\n IcCloudCollabLogoColored,\r\n IcUpgrade,\r\n} from \"../../../assets/icon-components\";\r\nimport { useEffect, useState } from \"react\";\r\nimport ChoosePlan from \"../../upgrade-plan/ChoosePlan\";\r\nimport UpgradeModel from \"../../user-sections/components/UpgradeModel\";\r\n\r\nconst style = {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n maxWidth: \"850px\",\r\n width: {\r\n xs: \"80%\",\r\n sm: \"70%\",\r\n md: \"70%\",\r\n lg: \"50%\",\r\n xl: \"45%\",\r\n },\r\n bgcolor: \"#fff\",\r\n boxShadow: \"none\",\r\n borderRadius: \"12px\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n maxHeight: \"97%\",\r\n overflow: \"auto\",\r\n \"&::-webkit-scrollbar\": {\r\n width: \"0 !important\",\r\n height: \"0 !important\",\r\n },\r\n \"&:focus-visible\": { outline: \"none !important\" },\r\n};\r\n\r\nfunction UpgradePlanAccess({ open, onClose }) {\r\n const [showPlans, setShowPlans] = useState(false);\r\n\r\n useEffect(() => {\r\n if (showPlans) {\r\n onClose();\r\n }\r\n }, [showPlans]);\r\n\r\n if (open) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Create Projects with Cloudcollab Access!\r\n \r\n \r\n Upgrade to our Professional or Business plan to access\r\n Cloudcollab and take your projects to new heights.\r\n \r\n \r\n \r\n \r\n With Cloudcollab, you'll gain:\r\n \r\n \r\n \r\n \r\n \r\n Innovative AI Tools\r\n {\" \"}\r\n for smarter ideation and accelerated project development.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Brainstorming & Retrospective Sessions\r\n {\" \"}\r\n to foster creativity and reflect on successes.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Mind Mapping & Flowcharting\r\n {\" \"}\r\n for visualizing ideas and workflows clearly.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Real-time Team Collaboration\r\n {\" \"}\r\n to work seamlessly with your team, anytime, anywhere.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ready to elevate your productivity?\r\n \r\n \r\n Upgrade now and experience the full power of Cloudairy's\r\n all-in-one design solutions with Cloudcollab.\r\n \r\n \r\n {\r\n setShowPlans(!showPlans);\r\n }}\r\n >\r\n \r\n \r\n Upgrade Now\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default UpgradePlanAccess;\r\n","import {\r\n IcAddWithThreeSquare,\r\n IcCircleOutlined,\r\n IcDataStore,\r\n IcDataStore1,\r\n IcDataStore2,\r\n IcDownArrow,\r\n IcExternalEntity,\r\n IcGroupOutlined,\r\n IcHexagonOutlined,\r\n IcPentagonOutlined,\r\n IcProcess,\r\n IcProcess1,\r\n IcProcess2,\r\n IcRectangleOutlined,\r\n IcRhombusOutlined,\r\n IcShapesOutlined,\r\n IcSquareOutlined,\r\n IcStarFilled,\r\n IcStarOutlined,\r\n IcStickyNoteOutlined,\r\n IcTextSquaredColoredOutline,\r\n IcTriangleOutlined,\r\n} from \"../../../assets/icon-components\";\r\n\r\nexport const iconMapping = {\r\n IcAddWithThreeSquare,\r\n IcCircleOutlined,\r\n IcDownArrow,\r\n IcGroupOutlined,\r\n IcHexagonOutlined,\r\n IcPentagonOutlined,\r\n IcRectangleOutlined,\r\n IcRhombusOutlined,\r\n IcExternalEntity,\r\n IcProcess,\r\n IcProcess1,\r\n IcProcess2,\r\n IcDataStore1,\r\n IcDataStore2,\r\n IcDataStore,\r\n IcShapesOutlined,\r\n IcSquareOutlined,\r\n IcStarFilled,\r\n IcStarOutlined,\r\n IcStickyNoteOutlined,\r\n IcTextSquaredColoredOutline,\r\n IcTriangleOutlined,\r\n};\r\n\r\nexport const ShapesForBottomEditor = [\r\n \"Text Annotation\",\r\n \"Pool\",\r\n \"Pool One\",\r\n \"Uml Activation\",\r\n \"Uml Actor\",\r\n \"Swimless Horizontal\",\r\n \"Swimless Vertical\",\r\n \"Choreography\",\r\n \"Swimlanes Horizontal\",\r\n \"Data Object\",\r\n \"End Event\",\r\n \"Intermediate Event\",\r\n \"Non-Interrupting Intermediate Event\",\r\n \"Non-Interrupting Start Event\",\r\n \"Start Event\",\r\n];\r\n\r\nexport const noEditorShow = [\r\n \"Assembly\",\r\n \"Provided Interface\",\r\n \"Pin Left\",\r\n \"Pin Right\",\r\n \"Pin Filled Right\",\r\n \"Pin Filled Left\",\r\n // \"End\",\r\n \"Flow Final\",\r\n // \"Start\",\r\n \"Pin\",\r\n \"History Pseudostate\",\r\n \"Deletion\",\r\n \"Required Interface\",\r\n \"Vertical Fork/Join\",\r\n \"Horizontal Fork/Join\",\r\n \"Activation\",\r\n \"Conversation\",\r\n \"Gateway\",\r\n \"One\",\r\n \"Many\",\r\n \"One and Only One\",\r\n \"One or many\",\r\n \"Zero or One\",\r\n \"Zero or many\",\r\n \"Branch/Merge\",\r\n \"Or\",\r\n \"Summing Junction\",\r\n \"Container\",\r\n \"Line arrow\",\r\n \"Line\",\r\n];\r\n\r\nexport const editorDisabled = [\"End\", \"Start\"];\r\nexport const thinNode = [\"Note\", \"Annotation\", \"Uml_Vertical_Fork\"];\r\nexport const leftCurlyNode = [\"Curly_brace_note_1\"];\r\nexport const isCurlyNote = [\"Curly_brace_note_1\", \"Curly_brace_note\"];\r\nexport const rightCurlyNode = [\r\n \"Curly_brace_note\",\r\n \"NoteIcon\",\r\n \"TextAnnotation\",\r\n];\r\nexport const breakShapeText = [\"Merge\"];\r\nexport const topHandleMapping = {\r\n \"Paper Tape\": \"4%\",\r\n \"Manual Input\": \"8%\",\r\n \"Provided Interface\": \"12.5%\",\r\n};\r\nexport const rightHandleMapping = {\r\n Merge: \"15%\",\r\n Data: \"5%\",\r\n \"Stored Data\": \"5%\",\r\n \"Manual Operation\": \"6%\",\r\n Triangle: \"21%\",\r\n Star: \"12%\",\r\n Pentagon: \"0.1%\",\r\n};\r\nexport const bottomHandleMapping = {\r\n \"Paper Tape\": \"4%\",\r\n Document: \"5%\",\r\n \"Multiple Documents\": \"1%\",\r\n Star: \"20.5%\",\r\n \"Provided Interface\": \"12.5%\",\r\n};\r\nexport const leftHandleMapping = {\r\n Merge: \"15%\",\r\n Data: \"5%\",\r\n \"Receive Signal\": \"23.4px\",\r\n \"Manual Operation\": \"6%\",\r\n Triangle: \"21%\",\r\n Star: \"12%\",\r\n Pentagon: \"0.1%\",\r\n};\r\n\r\nexport const defaultHandlePosition = \"0.1%\";\r\n","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 getFontSize: () => ({ editor }) => {\r\n const { fontSize } = editor.getAttributes('textStyle');\r\n return fontSize || null; // return 'null' if no font size is set\r\n },\r\n };\r\n },\r\n});\r\n\r\nexport default FontSize;\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 TextAlign from \"@tiptap/extension-text-align\";\r\nimport FontSize from \"./fontSize\";\r\nimport Paragraph from \"@tiptap/extension-paragraph\";\r\nimport Link from \"@tiptap/extension-link\";\r\nimport FontFamily from \"@tiptap/extension-font-family\";\r\nimport TaskList from \"@tiptap/extension-task-list\";\r\nimport TaskItem from \"@tiptap/extension-task-item\";\r\n\r\nexport const tipTapExtensions = (placeholder = \"\", nodeType) => {\r\n return [\r\n Color.configure({ types: [TextStyle.name, ListItem.name] }),\r\n TextStyle.configure({ types: [ListItem.name] }),\r\n ...(nodeType === \"stickyNoteEditor\"\r\n ? [\r\n Paragraph.extend({\r\n addKeyboardShortcuts() {\r\n return {\r\n Enter: () => this.editor.commands.insertContent(\"
\"),\r\n \"Control-A\": () => this.editor.commands.selectAll(), // Use
instead of

\r\n };\r\n },\r\n }),\r\n ]\r\n : []),\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 types: [\"heading\", \"paragraph\"],\r\n alignments: [\"left\", \"center\", \"right\", \"justify\"],\r\n }),\r\n FontSize.configure(),\r\n Placeholder.configure({\r\n placeholder: placeholder,\r\n showOnlyWhenEditable: false,\r\n considerAnyAsEmpty: false,\r\n }),\r\n FontFamily.configure({\r\n types: [\"textStyle\"],\r\n }),\r\n Link.configure({\r\n openOnClick: true,\r\n linkOnPaste: false,\r\n }),\r\n TaskList,\r\n TaskItem.configure({\r\n nested: true,\r\n }),\r\n ];\r\n};\r\n","import styled from \"@emotion/styled\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport { tooltipClasses } from \"@mui/material\";\r\n\r\nexport const CustomTooltip = styled(\r\n ({\r\n className,\r\n mt = 7,\r\n bg = \"#FFFFFF\",\r\n arrowLeft = \"50%\",\r\n top = \"0px\",\r\n width = \"32.44px\",\r\n height = \"22.8px\",\r\n marginTop = \"0px\",\r\n marginLeft = \"0px\",\r\n transform,\r\n ...props\r\n }) => \r\n)(\r\n ({\r\n theme,\r\n mt = 7,\r\n transform,\r\n border = \"#EFF0F3\",\r\n arrowLeft = \"50%\",\r\n top = \"0px\",\r\n width = \"32.44px\",\r\n height = \"22.8px\",\r\n bg = \"#FFFFFF\",\r\n marginTop = \"0px\",\r\n marginLeft = \"0px\",\r\n maxWidth = 300,\r\n }) => ({\r\n [`& .${tooltipClasses.tooltip}`]: {\r\n padding: \"0px !important\",\r\n minWidth: \"40px !important\",\r\n backgroundColor: `${bg} !important`,\r\n borderRadius: \"10px !important\",\r\n margin: `${mt}px 8px 8px !important`,\r\n maxWidth: `${maxWidth}px !important`,\r\n },\r\n [`& .${tooltipClasses.arrow}`]: {\r\n transform: \"translate(-50%, -13px) !important\",\r\n left: `${arrowLeft} !important`,\r\n width: `${width}`,\r\n height: `${height}`,\r\n top: `${top} !important`,\r\n \"&::before\": {\r\n backgroundColor: `${bg} !important`,\r\n boxShadow: \"0px 2px 12px 0px #18181B0A !important\",\r\n border: `1px solid ${border} !important`,\r\n },\r\n },\r\n boxShadow: \"none\",\r\n borderRadius: \"10px !important\",\r\n marginTop: `${marginTop} !important`,\r\n marginLeft: `${marginLeft} !important`,\r\n ...(transform ? { transform } : {}),\r\n })\r\n);\r\n\r\nexport const CustomNameTooltip = styled(\r\n ({ className, mt = null, ml = null, ...props }) => (\r\n \r\n )\r\n)(({ theme, mt = null, ml = null }) => ({\r\n [`& .${tooltipClasses.tooltip}`]: {\r\n padding: \"3px 5px !important\",\r\n wordBreak: \"break-all\",\r\n minWidth: \"40px !important\",\r\n backgroundColor: \"#030B16 !important\",\r\n borderRadius: \"4px !important\",\r\n fontSize: 10,\r\n minHeight : \"22px\",\r\n color: \"#EFEFEF\",\r\n textAlign: \"center\",\r\n marginTop: mt ? `${mt}px !important` : \"0px\",\r\n marginLeft: ml ? `${ml}px !important` : \"0px\",\r\n },\r\n [`& .${tooltipClasses.arrow}`]: { color: \"#030B16\" },\r\n borderRadius: 0,\r\n boxShadow: \"none\",\r\n}));\r\n","import React from \"react\";\r\nimport { CustomNameTooltip } from \"./CustomTooltip\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nconst ToolTipWithDisabled = ({\r\n tooltipTitle = \"\",\r\n children,\r\n disabled = false,\r\n placement = \"bottom\",\r\n}) => {\r\n return (\r\n <>\r\n {disabled ? (\r\n {children}\r\n ) : (\r\n \r\n {children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ToolTipWithDisabled;\r\n","import { debounce } from \"lodash\";\r\n\r\nexport function getChildrenAndSelf(data, parentId, visited = new Set()) {\r\n const children = [];\r\n\r\n data.forEach((obj) => {\r\n if (\r\n !visited.has(obj.id) &&\r\n (obj.id === parentId || obj.parentNode === parentId)\r\n ) {\r\n children.push(obj);\r\n visited.add(obj.id);\r\n if (obj.hasOwnProperty(\"parentNode\")) {\r\n children.push(...getChildrenAndSelf(data, obj.id, visited));\r\n }\r\n }\r\n });\r\n\r\n return children;\r\n}\r\n\r\nexport function sanitizeHtml(htmlString = null, tagToRemove = null) {\r\n if (!htmlString) {\r\n return htmlString;\r\n }\r\n if (!tagToRemove) {\r\n return htmlString;\r\n }\r\n if (typeof htmlString !== \"string\") {\r\n console.warn(\"tag to remove shoule be string\");\r\n return htmlString;\r\n }\r\n // Create a temporary DOM element to parse the HTML string\r\n const tempElement = document.createElement(\"div\");\r\n tempElement.innerHTML = htmlString;\r\n\r\n // Select all elements with a style attribute\r\n const styledElements = tempElement.querySelectorAll(\"[style]\");\r\n\r\n // Iterate over the elements and remove font-size from the style\r\n styledElements.forEach((element) => {\r\n const styles = element.style.cssText.split(\";\").filter((style) => {\r\n return style.trim().length && !style.trim().startsWith(tagToRemove);\r\n });\r\n\r\n if (styles.length > 1) {\r\n element.style.cssText = styles.join(\";\");\r\n } else {\r\n element.style.cssText = styles;\r\n }\r\n if (!element.getAttribute(\"style\")) {\r\n element.removeAttribute(\"style\");\r\n }\r\n });\r\n\r\n // Select all span elements\r\n const spanElements = tempElement.querySelectorAll(\"span\");\r\n\r\n // Iterate over the span elements and remove those without attributes\r\n spanElements.forEach((span) => {\r\n if (!span.attributes.length) {\r\n // Replace the span with its content\r\n const parent = span.parentNode;\r\n while (span.firstChild) {\r\n parent.insertBefore(span.firstChild, span);\r\n }\r\n parent.removeChild(span);\r\n }\r\n });\r\n\r\n // Trim unnecessary spaces inside elements\r\n // tempElement.querySelectorAll(\"*\").forEach((element) => {\r\n // element.childNodes.forEach((node) => {\r\n // if (node.nodeType === Node.TEXT_NODE) {\r\n // node.textContent = node.textContent.replace(/\\s+/g, \" \").trim();\r\n // }\r\n // });\r\n // });\r\n\r\n // Return the modified HTML string\r\n return tempElement.innerHTML;\r\n}\r\n\r\nexport const updateLocalStorage = debounce((key = null, value = null) => {\r\n try {\r\n if (key && value) localStorage.setItem(key, value);\r\n } catch (error) { }\r\n}, 50);\r\n\r\n// export const pxToCqmin = (px) => {\r\n// if (!px) return null;\r\n\r\n// // Extract numeric value if px is a string like \"12px\"\r\n// const numericValue = typeof px === 'string' ?\r\n// parseFloat(px.replace('px', '')) : px;\r\n\r\n// // Convert px to cqmin (approximate ratio)\r\n// const cqminValue = Math.round(numericValue * 0.2000);\r\n\r\n// return `${cqminValue}cqmin`;\r\n// };\r\n\r\nexport const pxToCqmin = (\r\n pxValue = null,\r\n nodeId = null,\r\n { container = null } = {}\r\n) => {\r\n if (!pxValue) throw new Error(\"font pixel value is required\");\r\n if (!nodeId) throw new Error(\"nodeId is required\");\r\n // Remove 'px' if present and convert to number\r\n const numericValue =\r\n typeof pxValue === \"string\"\r\n ? parseFloat(pxValue.replace(\"px\", \"\"))\r\n : pxValue;\r\n\r\n // Get container width (assuming parent container width)\r\n const containerElement =\r\n container ?? document.querySelector(`#sticky_notes_${nodeId}`);\r\n const containerWidth = containerElement?.offsetWidth;\r\n\r\n // Convert to cqmin (as percentage of container width)\r\n const cqminValue = (numericValue / containerWidth) * 100;\r\n\r\n // Return formatted string with 2 decimal places\r\n return `${cqminValue.toFixed(2)}cqmin`;\r\n};\r\n\r\nexport const cqminToPx = (cqminValue, nodeId) => {\r\n // Handle null/undefined\r\n if (!cqminValue) throw new Error(\"font cqmin value is required\");\r\n if (!nodeId) throw new Error(\"nodeId is required\");\r\n\r\n // Extract numeric value from string (e.g. \"4cqmin\")\r\n const numericValue =\r\n typeof cqminValue === \"string\"\r\n ? parseFloat(cqminValue.replace(\"cqmin\", \"\"))\r\n : cqminValue;\r\n\r\n // Get container width\r\n const containerWidth =\r\n document.querySelector(`#sticky_notes_${nodeId}`)?.offsetWidth || 1000;\r\n\r\n // Convert cqmin to px: (cqmin * containerWidth) / 100\r\n const pxValue = (numericValue * containerWidth) / 100;\r\n\r\n // Return formatted px value\r\n return `${Math.round(pxValue)}px`;\r\n};\r\n\r\nexport const calculateOptimalFontSize = (\r\n container,\r\n textElement,\r\n initialFontSize = 100\r\n) => {\r\n // Validation\r\n if (!container || !textElement) return null;\r\n\r\n // Get dimensions\r\n const containerWidth = container.offsetWidth;\r\n const containerHeight = container.offsetHeight;\r\n\r\n // Calculate minimum dimension ratio\r\n const min = Math.min(containerWidth, containerHeight) * 0.035;\r\n\r\n // Binary search bounds\r\n let minSize = 1;\r\n let maxSize = initialFontSize / min;\r\n let iterations = 0;\r\n const MAX_ITERATIONS = 10;\r\n\r\n // Test size function\r\n const testSize = (size) => {\r\n textElement.style.fontSize = `${size}cqmin`;\r\n return !(\r\n textElement.scrollWidth > containerWidth ||\r\n textElement.scrollHeight > containerHeight\r\n );\r\n };\r\n\r\n // Binary search\r\n while (iterations < MAX_ITERATIONS) {\r\n const mid = (minSize + maxSize) / 2;\r\n\r\n if (!testSize(mid)) {\r\n maxSize = mid;\r\n } else {\r\n minSize = mid;\r\n }\r\n\r\n if (Math.abs(maxSize - minSize) < 0.1) break;\r\n iterations++;\r\n }\r\n\r\n return minSize;\r\n};\r\n\r\nexport const getCalculatedFontSize = (\r\n fontSize,\r\n nodeId,\r\n { container = null } = {}\r\n) => {\r\n const isFontSizeInPx =\r\n typeof fontSize === \"string\" && fontSize.includes(\"px\");\r\n const isFontSizeInNumber = typeof fontSize === \"number\";\r\n if (isFontSizeInPx) {\r\n return pxToCqmin(fontSize, nodeId, { container });\r\n }\r\n if (isFontSizeInNumber) {\r\n return pxToCqmin(fontSize, nodeId, { container });\r\n }\r\n return fontSize;\r\n};\r\n\r\nexport const onEditorUpdateAdjustFontSize = (textElement, containerElement) => {\r\n requestAnimationFrame(() => {\r\n const fontSize = calculateOptimalFontSize(containerElement, textElement);\r\n if (fontSize) {\r\n textElement.style.fontSize = `${fontSize}cqmin`;\r\n }\r\n });\r\n};\r\n\r\nexport const getFontFaceRulesFromDom = () => {\r\n const targetUrl = process.env.REACT_APP_S3_ASSETS_URL;\r\n const matchingFontFaces = [];\r\n\r\n // Iterate through all stylesheets in the document\r\n for (const sheet of document.styleSheets) {\r\n try {\r\n const rules = sheet.cssRules || sheet.rules;\r\n\r\n // Iterate through the rules\r\n for (const rule of rules) {\r\n // Check if the rule is a CSSFontFaceRule\r\n if (rule instanceof CSSFontFaceRule) {\r\n const src = rule.style.getPropertyValue(\"src\").trim();\r\n\r\n // Check if the src contains the target URL and the keyword\r\n if (src.includes(targetUrl)) {\r\n const fontFamily = rule.style\r\n .getPropertyValue(\"font-family\")\r\n .trim();\r\n const urlPattern = /url\\([\"']?(.*?)[\"']?\\)/;\r\n\r\n // Execute the regular expression on the input string\r\n const match = urlPattern.exec(src);\r\n\r\n if (match && match[1]) {\r\n matchingFontFaces.push({ fontFamily, src: match[1] });\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.warn(`Unable to access stylesheet: ${sheet.href}`, e);\r\n continue;\r\n }\r\n }\r\n\r\n return matchingFontFaces;\r\n};\r\n\r\nexport const downloadFontAndCovertToBase64 = async (fontSrcUrl) => {\r\n try {\r\n // Fetch the font file\r\n const response = await fetch(fontSrcUrl);\r\n if (!response.ok) {\r\n return null;\r\n }\r\n\r\n // Read the response as a Blob\r\n const blob = await response.blob();\r\n\r\n // Create a FileReader to read the Blob as a Data URL\r\n const reader = new FileReader();\r\n const dataUrlPromise = new Promise((resolve, reject) => {\r\n reader.onloadend = () => resolve(reader.result);\r\n reader.onerror = reject;\r\n });\r\n\r\n // Start reading the Blob\r\n reader.readAsDataURL(blob);\r\n\r\n // Wait for the Data URL to be generated\r\n const dataUrl = await dataUrlPromise;\r\n return dataUrl;\r\n } catch (error) {\r\n console.error(\"Error:\", error);\r\n return null;\r\n }\r\n};\r\n\r\nexport function getAllFontFamiliesFromBoard(rootElement) {\r\n const fontFamilies = new Set();\r\n\r\n function traverse(element) {\r\n if (element.nodeType === Node.ELEMENT_NODE) {\r\n const computedStyle = window.getComputedStyle(element);\r\n const fontFamily = computedStyle.fontFamily;\r\n if (fontFamily) {\r\n fontFamilies.add(fontFamily);\r\n }\r\n\r\n // Recursively traverse child nodes\r\n Array.from(element.children).forEach(traverse);\r\n }\r\n }\r\n\r\n traverse(rootElement);\r\n return Array.from(fontFamilies);\r\n}\r\n\r\nexport const generateFontEmbedCss = async () => {\r\n const fontFamiliesFromBoard = getAllFontFamiliesFromBoard(\r\n document.querySelector(\".react-flow__container\")\r\n );\r\n const fontFaces = getFontFaceRulesFromDom().filter((fontFace) =>\r\n fontFamiliesFromBoard.includes(fontFace.fontFamily)\r\n );\r\n\r\n const formattedFontFaces = [];\r\n\r\n for (const fontFace of fontFaces) {\r\n const fontSrc = fontFace.src;\r\n const response = await downloadFontAndCovertToBase64(fontSrc);\r\n const fontFaceString = `\r\n @font-face {\r\n font-family: ${String(fontFace.fontFamily)};\r\n src: url('${response}');\r\n }\r\n `;\r\n\r\n formattedFontFaces.push(fontFaceString);\r\n }\r\n return formattedFontFaces.join(\"\\n\");\r\n};\r\n\r\nexport function isFirefoxOrSafari() {\r\n const userAgent = navigator.userAgent;\r\n return (\r\n userAgent.includes(\"Firefox\") ||\r\n (userAgent.includes(\"Safari\") && !userAgent.includes(\"Chrome\"))\r\n );\r\n}\r\n"],"names":["CustomNodeResizeControl","_ref","_node$data","node","handleOnResize","onResizeEnd","isWidthLessthan100","isWidthLessthan50","isWidthLessthan25","useZoomPercentages","selected","zoom","useViewport","width","_jsxs","_Fragment","children","data","provider","_jsx","NodeResizer","color","handleStyle","display","minWidth","minHeight","keepAspectRatio","e","onResize","NodeResizeControl","position","style","zIndex","backgroundColor","border","Box","sx","background","height","borderRadius","transform","concat","transformOrigin","primaryColor","bgcolor","React","CustomNodeHandles","_topHandleMapping$nod","_leftHandleMapping$no","_rightHandleMapping$n","_bottomHandleMapping$","isNodeSelectionStarted","showDots","setShowDots","hoveredItem","setHoveredItem","useState","sizeAsPerZoom","Handle","id","connectionMode","isConnectable","className","visibility","left","transitionDuration","maxWidth","maxHeight","justifyContent","alignItems","top","topHandleMapping","name","onConnect","params","console","log","onMouseOver","onMouseLeave","onClick","preventDefault","pointerEvents","leftHandleMapping","right","rightHandleMapping","bottom","bottomHandleMapping","ref","_editor$getText","_node$data2","_node$data3","_node$name","_node$name2","_node$data4","_node$data4$style","_node$data$style$font","_node$data5","_node$data5$style","_node$data$style$font2","_node$data6","_node$data6$style","_node$style","editor","isShowBottomEditor","ShapesForBottomEditor","includes","newTextLength","getText","length","isRightAngleTriangle","key","nodeIsProcessOrConnector","toLowerCase","needLeftPadding","isTriangleNode","isMergeNode","paddingLeft","overflow","cursor","isFocused","textAlign","fontSize","fontFamily","wordBreak","lineHeight","_node$data$style","_ref2","_node$data2$style","_ref$current","_ref$current$style","useMemo","paddingTop","leftCurlyNode","rightCurlyNode","thinNode","current","UmlComponent","_node$data4$border","_node$data7","_node$data7$style","_node$data8","_node$data9","UmlComponents","Uml_Component_Box","component","UmlComponentBoxInner","containerStyles","Uml_Component","UmlComponentInner","RenderUmlComponent","_objectSpread","borderColor","fill","iconStyle","iconType","iconTypes","THIRD_DIMENSION","ResizableNodeSelected","_getNodes","_getNodes$filter","_sanitizeHtml","_node$data11","_node$data13","_node$data15","_ICONS$Icons","_ICONS$Icons$node$dat","_ICONS$Icons$node$dat2","_node$data16","_node$data17","_node$data20","_node$data21","_node$data23","_node$data23$border","_node$data24","_node$data24$border","_node$data25","_node$data25$border","_node$data26","_node$data26$border","_node$data27","_node$data28","_node$data31","_node$data32","_node$data33","_node$data34","_node$data35","_editor$getHTML","_node$data36","_node$data37","_node$data38","_node$data39","_node$data40","_node$data41","_node$data42","_node$data43","_node$data44","_node$data45","_node$data46","_Icons$node$data$prov","_Icons$node$data$prov2","_Icons$node$data$prov3","_Icons$node$data$prov4","_node$data47","_node$data48","_node$data49","_node$data50","_node$data51","_node$data52","_node$data53","_node$data54","_node$data54$border","_node$data55","_node$data55$style","_node$data56","_node$data56$style","_node$data57","_node$data57$style","_node$data58","_node$data59","_Icons$node$data$prov5","_Icons$node$data$prov6","_node$data60","_node$data61","_Icons$node$data$prov7","_Icons$node$data$prov8","_Icons$node$data$prov9","_Icons$node$data$prov10","_node$data62","_node$data63","_Icons$node$data$prov11","_Icons$node$data$prov12","_node$data64","_node$data65","_node$data66","_node$data67","_node$data68","_node$data69","_node$data70","_node$data71","_ref10","_node$data72","_node$data72$style","_textRef$current3","_textRef$current3$sty","_node$data73","nodeId","setNodes","getNodes","getNode","useReactFlow","location","useLocation","permission","showExport","copyAsImage","isDownload","useSelector","state","mindMapStore","startVoting","_archBoard$votingData","archBoard","votingData","startVotingSession","useNodeSelectionStarted","useParams","user_data","localStorage","getItem","undo","takeSnapshot","useUndoRedo","dispatch","useDispatch","mainRef","useRef","textRef","userRowData","userData","JSON","parse","selectedNodes","filter","val","isItemToSmall","isAutoFont","extensions","tipTapExtensions","editorContentRef","shouldShowCenteredEditor","noEditorShow","shouldShowBottomEditor","isGroupHead","useEditor","element","editable","autofocus","content","sanitizeHtml","editorHTML","onBlur","_ref3","setEditable","nodes","edges","onUpdate","_ref4","debouncedUpdateHTML","getHTML","onFocus","_ref5","commands","clearContent","editorProps","handlePaste","view","event","pastedContent","clipboardData","getData","hideDescriptions","useEffect","_node$data10","_editor$commands","setContent","updateFontSize","debounce","arguments","undefined","prev","updatedNodes","map","_prev$data","_textRef$current","_textRef$current$styl","_textRef$current2","_textRef$current2$sty","omit","isResized","updateLocalStorage","stringify","architecture_json","lastEvent","a_id","URLSearchParams","search","get","updateJson","json","lastUpdatedBy","user_id","value","_editor$getText$trim","_node$data12","_getNodes2","trim","oldContent","currentContent","updatedNode","setItem","_","_ref6","_ref7","_ref8","isAiGenerated","shouldTakeSnapshot","removeHTMLTags","Icon","iconMapping","ICON","ICONS","catagory","imageData","setImageData","_node$data19","url","async","_node$data18","response","fetch","ok","Error","statusText","blob","reader","FileReader","onload","base64Data","result","readAsDataURL","error","fetchImageData","fileType","nodeUrl","_node$data22","imageTypes","splittedStr","split","extension","urlType","borderWidth","borderStyle","type","opacity","newBorderColor","adjustOpacity","rgba","newOpacity","parts","match","showNodeHandles","locked","dragging","showResizeControlHandles","currentNodeDom","document","querySelector","handleNodeKeyDown","isValidKey","test","focus","insertContent","isEditable","addEventListener","once","removeEventListener","shouldRenderToolbar","editorDisabled","throttle","leading","updateNodeInternals","useUpdateNodeInternals","svgElement","tagName","hasAttribute","setAttribute","addPreserveAspectRatioIfMissing","_ref9","_parsedData","parsedData","n","_node$data14","boxShadow","containerType","contain","clsx","custom_node","nodrag","handleSingleClick","_node$data29","onDoubleClick","handleDoubleClick","_node$data30","selectAll","onMouseOut","isTextArea","nodeBorderStyle","showBorder","bgColor","Icons","toString","src","alt","objectFit","autoPlay","loop","isNewIcon","unit","MindMapNodesToolbar","currFontSize","String","isSticky","simpleRef","CenterEditor","BottomEditor","VotingCommon","prevProps","nextProps","globalDragging","proOptions","account","hideAttribution","nodeTypes","rotatableNode","RotatableNode","resizable","stickyNoteEditor","StickyNoteEditor","simpleText","SimpleText","group","GroupNode","shape","resizables","TreeView","TreeViewNode","resizeLink","ResizeLink","embedIframe","EmbedIframe","todoList","ListNode","columnNode","ColumnNode","comment","Comment","Document","Upload","uploadImage","UploadImage","Table","TableNode","frame","Frame","kanbanSmartContainor","KanbanContainorNode","drawingNode","DrawingNode","dotVoting","DotVoting","dotVotingNode","DotVotingNode","storyPoints","StoryPoint","storyPointNode","StoryPointNode","polling","Polling","orgChart","OrgChartNode","card","CardNode","chart","ChartNode","userCard","UserCardNode","userStoryMap","UserStoryMapNode","people","PeopleNode","PeopleDraggingNode","shapeTable","ShapeTableNode","pipe","PipeNode","ghost","GhostNode","edgeTypes","animatedBall","EdgeWithAminatedBall","animatedDash","AnimatedDashedEdge","smoothstep","edge","CustomEdge","straight","default","EditableEdge","sourceX","sourcePosition","sourceY","targetX","targetPosition","targetY","StepEdge","treeNodeEdgeType1","TreeNodeEdgeType1","treeNodeEdgeType2","TreeNodeEdgeType2","treeNodeEdgeType3","TreeNodeEdgeType3","treeNodeEdgeType5","TreeNodeEdgeType5","treeNodeEdgeType8","TreeNodeEdgeType8","initialState","mainBackgroundStyles","cropBox","startX","window","innerWidth","startY","innerHeight","reducer","payload","dndActions","change_bg_styles","stateLocal","update_cropbox","DNDContextCreate","createContext","DNDContext","props","useReducer","Provider","useDNDContext","cb","useContext","useShortcut","keyCode","callback","isEnabled","keyPressRef","handleKeyDown","hasSelectedTextInInput","some","modifier","letter","ctrlKey","metaKey","handleKeyUp","endsWith","setShowShapesLimitModal","mousePosRef","x","y","rfDomNode","useStore","domNode","isMainPickerOpen","currentSubscriptionData","common","lastPastePosition","pasteCount","getEdges","setEdges","screenToFlowPosition","debouncedUpdateJson","handlePasteEvent","useCallback","_currentSubscriptionD","isColorPickerOpen","getElementById","isAnyInputFocused","isInputFocused","currentNodes","pasteX","pasteY","offsetX","offsetY","items","imageItems","Array","from","item","indexOf","subscriptionData","package","newImageNodes","Promise","all","dimensionsPromise","resolve","reject","onloadend","img","Image","onerror","file","formData","FormData","append","s3Url","commanService","uploadApi","dimensions","uploadImageWithDimensions","getAsFile","reduce","imageInfo","index","pastePosition","imageNode","getId","positionAbsolute","filename","Label","scale","imageShow","hide","frameName","frameNo","label","navigator","clipboard","read","types","paste","events","pasteTriggered","onMouseMove","clientX","clientY","onPaste","onKeyDown","setTimeout","getNodesInsideSelected","allNodes","insideNodes","Set","forEach","selectedNode","isNodeInside","innerNode","outerNode","_innerNode$style","_outerNode$style","_innerNode$style2","_outerNode$style2","add","assignRootParentIds","assignToChildren","parentNode","rootParentId","copy","_node$data$pollData","_node$data$pollData$a","removeVote","pollData","answers","voteCount","votedUsersIds","votedUsersData","pollStarted","pollEnded","nodesToCopy","addNodeAndChildren","has","getChildrenAndSelf","child","nodesToCopyArray","selectedEdges","getConnectedEdges","source","target","copyData","writeText","cut","_node$data2$pollData","_node$data2$pollData$","_updatedNodes","nodesToCut","nodesToCutArray","cutData","updatedEdges","deletedNodes","deletedEdges","isRemove","push","ed","should_delete","getImageDimensions","err","storedFrameSize","frameSize","nodeCounts","clipboardItems","textItems","fileItems","textContent","textBlob","getType","text","then","fileItem","files","startsWith","_currentSubscriptionD2","imageItem","find","File","Date","now","newId","imageWidth","imageHeigth","flipUrl","originalUrl","emoji","_currentSubscriptionD3","clipboardContent","join","pasteData","newNode","editorState","EditorState","createWithContent","ContentState","createFromText","maxPosition","fontWeight","fontStyle","textDecoration","padding","outline","fields","teraFormData","draggable","nd","minX","Math","min","s","minY","idMapping","newNodes","removeDuplicatesById","nodeIds","topChildrenOrder","bottomChildrenOrder","leftChildrenOrder","rightChildrenOrder","side","childrenOrder","updateParentIds","stickyNodeId","_node$data9$childrenO","hiddenBy","isInside","_group$style","_node$style2","_group$style2","newParentNode","potentialParents","potentialParent","originalParent","p","nds","newEdges","_edge$data","_edge$data$points","edgeDataPoints","points","isCopied","_extractShapeTableEdg","_extractShapeTableEdg2","sourceNode","getNodeById","targetNode","sourceHandle","extractShapeTableEdgeHandleId","targetHandle","kanbanInfo","getUnderlyingElementInfo","currentNode","containers","cont","containerId","itemIndex","findIndex","i","cardId","updatedItems","splice","removeItem","UndoRedoContext","UndoRedoProvider","architectureId","newState","activeElement","classList","contains","captureSnapShot","isDeleted","previousState","undoWithPreviousState","pathname","redo","nextState","redoWithNextState","isAnyDialogOpen","checkEditorFocus","shiftKey","context","xs","md","xl","_currentSubscription$4","_currentSubscription$5","open","handleClose","setOpen","project_id","isReload","isCloudChartTemplate","isHideCategory","showBoardLocation","projects","setProjects","loading","setLoading","navigate","useNavigate","setFormData","category_id","new_category_name","errors","setErrors","folder","selectedDocs","setSelectedDocs","showLimitModal","setShowLimitModal","openedFolders","setOpenedFolders","isCloudChart","setIsCloudChart","openDropdown","setOpenDropdown","isAddNewProject","setIsAddNewProject","selectedOption","setSelectedOption","folderIsCreating","setFolderIsCreating","currentSubscription","subscriptionDataSelect","form","setForm","formErrors","setFormErrors","openUpgradePopup","setOpenUpgradePopup","activeTeam","_state$sidebar","sidebar","currentTeam","projectList","refetch","refetchProjectList","useGetProjectsListQuery","team_id","skip","resData","_projectList$resData","selectedSpace","spaceData","_makeData","_makeData2","makeData","project_data","project_name","parent","handleSubmit","_currentSubscription$","_currentSubscription$2","_currentSubscription$3","valid","validateForm","_projects$","postApi","architecture_name","icon","_response$data$data$","_response$data$data$2","updateBoardCountInCurrentSubscription","isMinus","updateLoading","href","architecture_id","account_id","_error$response","_error$response$data","_error$response$data$","_error$response2","_error$response2$data","_error$response$data2","message","status","warningToast","errorToast","validateField","fieldName","fieldValidationErrors","getLabelStyle","option","titleDark","subTitle","CustomModal","Stack","direction","Typography","fontSizes","titleFont","modelTitle","modelTitle1","weight800","letterSpacing","IconButton","transition","IcCloseThin","weight400","my","flexDirection","gap","mt","mb","BtnBorderd","IcCheck","IcCloudChartLogoColored","iconBg","px","hoverSx","IcCloudCollabLogoColored","LargeSimpleInput","placeholder","autoFocus","onChange","errorMessage","weight600","fontSize14","RadioGroup","row","_projectList$resData2","firstProject","FormControlLabel","marginRight","control","Radio","checkRadioBorder","SaveToAutoSelect","handleAddProject","successToast","parent_project_id","catch","_error$response3","_error$response3$data","finally","isDropDown","BtnColoredOutlined","greyHover","commonBorderColor","darkGray","fontSize13","btnTextHeight","BtnGradient","UpgradeModel","isNavigateOnClose","title","subtitle","handleChoosePlanClose","UpgradePlanAccess","onClose","isModel","setSearchValue","mainCategoryList","filteredCategories","selectedUseCase","templates","setCategories","setSelectedUseCase","py","pr","lightPrimary","inset","WebkitMask","WebkitMaskComposite","maskComposite","setWithoutUseCaseTemplateData","pageNumber","Ic3StarsColored","resetState","is_new","is_premium","weight700","category","setIsCustomCategorySelected","setSelectedCategory","category_name","marginBottom","theme","useTheme","match1180","useMediaQuery","breakpoints","down","match1080","commonStyles","borderRadius10","s3AssetsUrl","backgroundPosition","backgroundRepeat","backgroundSize","variant","WebkitBackgroundClip","WebkitTextFillColor","lg","weight500","whiteColor","IcRightShortArrow","TemplatesBoardPlaceHolder","showTab","isPersonal","searchValue","matchDown1281","matchDown1581","setSelectedTemplateData","setShowUseTemplate","setViewTemplate","viewTemplate","handleTemplateData","isBoard","searchCustomValue","setSearchCustomValue","isXLarge","up","isLarge","numCards","select","setSelect","setTemplates","pageNum","setPageNum","totalPages","setTotalPages","isScrollLoading","setIsScrollLoading","templatesContainerRef","teamId","handleCreateTemplateChart","setOpenBoardFromTemplate","setOpenViewTemplate","setTemplateData","_error$response2$data2","_error$response4","_error$response5","_error$response6","_error$response6$data","_error$response7","_error$response7$data","getCreateTemplateChart","currentPage","personal","workspace","is_admin","_response$data","_response$data$data","getApi","total_pages","_response$data2","_response$data2$data","_response$data3","_response$data3$data","_response$data4","_response$data4$data","_response$data5","_response$data5$data","_response$data6","_response$data6$data","_response$data7","_response$data7$data","_error$response8","_error$response9","_error$response9$data","_error$response9$data2","_error$response10","_error$response10$dat","debouncedSearch","deleteData","handleScroll","scrollEle","scrollHeight","scrollTop","clientHeight","filteredTemplate","overflowY","fontSize20","btnColor","cardLiteBgColor","fontSize30","blackColor","fontSize16","backgroundImage","backgroundOrigin","backgroundClip","flexWrap","Card","Skeleton","CardContent","Grid","container","spacing","marginTop","paddingRight","sm","marginLeft","pt","pl","IcPlusSquaredOutlinedLarge","IcPlusSquareFillLarge","template","scrollbarWidth","TemplateUI","backToTemplate","SimpleCircularProgress","Loader","forwardRef","_selectedCategoryName","getTemplateList","selectedCategory","categories","templateState","isForYou","globalTheme","selectedCategoryName","ForYou","fontSize18px","CommonPlaceHolder","imgWidth","imgHeight","imgXsWidth","imgXsHeight","imageAndDescGapXl","titleFontSize","descFontSize","desc","pb","memo","_useCaseList$","isSidebar","isShowCreateSection","selectedTemplateData","useCaseList","setUseCaseList","showUseTemplate","match1220","match1500","match950","templatesOpt","setTemplatesOpt","updateShowWhenCreateBoard","useUpdateShowWhenCreateBoardMutation","showWhenCreateBoard","useGetShowWhenCreateBoardQuery","isCustomCategorySelected","customCategory","useGetCategoriesQuery","use_case_id","categoryIds","cat","filteredCategorieIds","templatesOpt2","setTemplatesOpt2","anchorEl2","setAnchorEl2","openCreateBlankModal","setOpenCreateBlankModal","getFavouriteTemplates","_templateState$withou","temp","withoutUseCaseTemplateData","getTemplatesWithoutUseCase","deleteTemplate","setDeleteTemplate","open2","Boolean","id2","handleCloseMenu","_useCaseList$2","_templatesList$data","_templatesList$data$d","templatesList","encodeURIComponent","_templatesList$data2","_templatesList$data2$","_templatesList$data3","_templatesList$data3$","queries","_templatesList$data4","_templatesList$data4$","queryParams","replace","_templatesList$data5","_templatesList$data5$","_templatesList$data6","_templatesList$data6$","_templatesList$data7","_templatesList$data7$","_templatesList$data8","_templatesList$data8$","_templatesList$data9","_templatesList$data9$","_res$data","_res$data$data","_res$data$data$find","_res$data2","res","useCase","getUseCase","handleCloseDelete","handleSearchChange","SearchInput","isdoubleborder","formControlSx","SimpleCheckBox","labelStyle","checked","show_template_modal","CreateBoardModelSideBar","TemplateListComponent","xsHeight","Select","size","MenuProps","PaperProps","MenuItem","DeleteDialog","handleOk","deleteApi","prevTemplate","template_id","heading","CreateBlankBoard","handleCloseCreateBlankBoard","UseTemplate","Popover","anchorEl","anchorOrigin","vertical","horizontal","ml","templateData","template_name","showPlans","setShowPlans","msOverflowStyle","IcCheckCircleOutlined","IcUpgrade","ChoosePlan","IcAddWithThreeSquare","IcCircleOutlined","IcDownArrow","IcGroupOutlined","IcHexagonOutlined","IcPentagonOutlined","IcRectangleOutlined","IcRhombusOutlined","IcExternalEntity","IcProcess","IcProcess1","IcProcess2","IcDataStore1","IcDataStore2","IcDataStore","IcShapesOutlined","IcSquareOutlined","IcStarFilled","IcStarOutlined","IcStickyNoteOutlined","IcTextSquaredColoredOutline","IcTriangleOutlined","Merge","Data","Triangle","Star","Pentagon","Extension","create","addOptions","addGlobalAttributes","this","options","attributes","parseHTML","renderHTML","addCommands","setFontSize","chain","setMark","run","unsetFontSize","removeEmptyTextStyle","getFontSize","getAttributes","nodeType","Color","configure","TextStyle","ListItem","Paragraph","extend","addKeyboardShortcuts","Enter","Control-A","StarterKit","bulletList","keepMarks","keepAttributes","orderedList","Underline","Highlight","multicolor","TextAlign","alignments","FontSize","Placeholder","showOnlyWhenEditable","considerAnyAsEmpty","FontFamily","Link","openOnClick","linkOnPaste","TaskList","TaskItem","nested","CustomTooltip","styled","bg","arrowLeft","_objectWithoutProperties","_excluded","Tooltip","classes","popper","tooltipClasses","tooltip","margin","arrow","CustomNameTooltip","_excluded2","tooltipTitle","disabled","placement","parentId","visited","obj","hasOwnProperty","htmlString","tagToRemove","warn","tempElement","createElement","innerHTML","querySelectorAll","styles","cssText","getAttribute","removeAttribute","span","firstChild","insertBefore","removeChild","downloadFontAndCovertToBase64","fontSrcUrl","dataUrlPromise","generateFontEmbedCss","fontFamiliesFromBoard","rootElement","fontFamilies","traverse","Node","ELEMENT_NODE","getComputedStyle","getAllFontFamiliesFromBoard","fontFaces","getFontFaceRulesFromDom","matchingFontFaces","sheet","styleSheets","rules","cssRules","rule","CSSFontFaceRule","getPropertyValue","process","exec","fontFace","formattedFontFaces","fontSrc","fontFaceString","isFirefoxOrSafari","userAgent"],"sourceRoot":""}