{"version":3,"file":"static/js/main-4c708c34.084a306a.js","mappings":"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","sources":["Components/DrawBoard/Nodes-Types/TableNode.js"],"sourcesContent":["import React, {\r\n  useState,\r\n  useRef,\r\n  useEffect,\r\n  useMemo,\r\n  useCallback,\r\n  Fragment,\r\n  memo,\r\n} from \"react\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { DateTimePicker } from \"@mui/x-date-pickers/DateTimePicker\";\r\nimport {\r\n  IcAddRow,\r\n  IcAddCol,\r\n  IcChangeBg,\r\n  IcChangeBorder,\r\n  IcChangeStyle,\r\n  IcAddRowCol,\r\n  IcMenuDotsVertical,\r\n  IcTextBold,\r\n  IcTextItalic,\r\n  IcTextUnderline,\r\n  IcTextStrickTrough,\r\n  IcLinkOutlined3,\r\n  IcLockLocked,\r\n  IcLockUnLocked,\r\n  IcTextAlignCenter,\r\n  IcTextAlignLeft,\r\n  IcTextAlignRight,\r\n  IcTextColor,\r\n  IcTableOutlined,\r\n  IcArrowDown2,\r\n  IcTableVariant1,\r\n  IcTableVariant3,\r\n  IcTableVariant4,\r\n  IcTableVariant7,\r\n  IcTableVariant8,\r\n  IcDeleteOutlined,\r\n  IcMergeCellOutlined,\r\n  IcUnMergeCellOutlined,\r\n  IcTextAlignItemTop,\r\n  IcTextAlignItemCenter,\r\n  IcTextAlignItemBottom,\r\n  IcDecresFontSize,\r\n  IcIncreseFontSize,\r\n  IcPlus2,\r\n} from \"../../../assets/icon-components\";\r\nimport {\r\n  useReactFlow,\r\n  Handle,\r\n  Position,\r\n  NodeResizeControl,\r\n  NodeToolbar,\r\n  useStore,\r\n  useUpdateNodeInternals,\r\n  useViewport,\r\n} from \"reactflow\";\r\nimport {\r\n  TextField,\r\n  Stack,\r\n  ClickAwayListener,\r\n  Box,\r\n  IconButton,\r\n  Typography,\r\n} from \"@mui/material\";\r\nimport ToolTipWithDisabled from \"../top-toolbar/components/ToolTipWithDisabled\";\r\nimport { CustomTooltip } from \"../top-toolbar/components/CustomTooltip\";\r\nimport \"./style.scss\";\r\nimport { CustomNameTooltip } from \"../top-toolbar/components/CustomTooltip\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport dayjs from \"dayjs\";\r\nimport { DisabledByDefault } from \"@mui/icons-material\";\r\nimport { useSelector } from \"react-redux\";\r\nimport BackgroundTool from \"../../Node/common-components/nodeTopToolbar/components/BackgroundTool\";\r\nimport BorderTool from \"../../Node/common-components/nodeTopToolbar/components/BorderTool\";\r\nimport LinkTool from \"../../Node/common-components/nodeTopToolbar/components/LinkTool\";\r\nimport FrameMoreMenus from \"../../Node/frameNode/FrameMoreMenus\";\r\nimport { useLocation, useParams } from \"react-router-dom\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n  convertToRgba,\r\n  toRgba,\r\n  updateJson,\r\n} from \"../../../CommanFunctions/commanFunctions\";\r\nimport debounce from \"lodash.debounce\";\r\nimport commanService from \"../../../CommanFunctions/commanService\";\r\nimport TableInput from \"./tableNodeComponents/TableInput\";\r\nimport { useUndoRedo } from \"../dndUndoRedo/UndoRedoProvider\";\r\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\r\nimport { useSocketContext } from \"../../../Utils/hooks/useSocketContext\";\r\nimport { socketEvents } from \"../const\";\r\nimport { color as colorsConst } from \"../../../Utils/style/color/color\";\r\nimport useNodeSelectionStarted from \"../../../Utils/hooks/useNodeSelectionStarted\";\r\nimport CommonDivider from \"../../../common-components/CommonDivider\";\r\nimport { fontFamilyArr } from \"../../Node/common-components/nodeTopToolbar/MindMapNodesToolbar/ToolbarMenuItems/constants\";\r\n\r\nconst fontSizeArr = [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22];\r\n\r\nfunction checkSingleRowOrColumn(selectedCellsKey) {\r\n  const rows = [];\r\n  const columns = [];\r\n\r\n  selectedCellsKey.forEach((key) => {\r\n    const [row, column] = key.split(\"-\");\r\n    rows.push(row);\r\n    columns.push(column);\r\n  });\r\n\r\n  const allInSingleRow = rows.every((row) => row === rows[0]);\r\n  const allInSingleColumn = columns.every((column) => column === columns[0]);\r\n\r\n  return {\r\n    singleRow: allInSingleRow,\r\n    singleColumn: allInSingleColumn,\r\n  };\r\n}\r\n\r\nexport const computeNewRow = (\r\n  row,\r\n  rIdx,\r\n  column,\r\n  editorHTML,\r\n  editorHeight,\r\n  multiActiveCells,\r\n  isVertical\r\n) => {\r\n  const cellKey = `${rIdx}-${column}`;\r\n  if (!multiActiveCells.includes(cellKey)) return row;\r\n\r\n  return {\r\n    ...row,\r\n    [column]: {\r\n      ...row?.[column],\r\n      editorHTML,\r\n      width: isVertical\r\n        ? Math.max(editorHeight, row?.[column]?.width)\r\n        : row?.[column]?.width,\r\n      height: !isVertical\r\n        ? Math.max(editorHeight, row?.[column]?.height)\r\n        : row?.[column]?.height,\r\n    },\r\n  };\r\n};\r\n\r\nconst TableNode = (node) => {\r\n  const updateNodeInternals = useUpdateNodeInternals();\r\n  const user_data = localStorage.getItem(\"user_data\");\r\n  const { socket } = useSocketContext();\r\n  const userRowData = localStorage.getItem(\"user_data\");\r\n  const userData = userRowData ? JSON.parse(userRowData) : {};\r\n  const [isEditorShow, setIsEditorShow] = useState(false);\r\n  const [hoverPlus, setHoverPlus] = useState(false);\r\n  const [cellEditors, setCellEditores] = useState([]);\r\n  const [row, setRow] = useState();\r\n  const { showExport, copyAsImage, isDownload } = useSelector(\r\n    (state) => state.mindMapStore\r\n  );\r\n\r\n  const { isNodeSelectionStarted } = useNodeSelectionStarted({\r\n    selected: node?.selected,\r\n  });\r\n  const zoomLevel =\r\n    useStore((s) => Math.round(s.transform[2] * 100) / 100) * 100;\r\n  const mainZoomPercentages = Math.floor(zoomLevel);\r\n  const [columnPop, setColumnPop] = useState();\r\n  const [selectedCell, setSelectedCell] = useState(null);\r\n  // const [anchorEl, setAnchorEl] = useState(null);\r\n  const [showBgColor, setShowBgColor] = useState(false);\r\n  const [showBorderColor, setShowBorderColor] = useState(false);\r\n  const [showTextColor, setShowTextColor] = useState(false);\r\n  const [showLink, setShowLink] = useState(false);\r\n  const [showAlignment, setShowAlignment] = useState(false);\r\n  const [showTextDecoration, setShowTextDecoration] = useState(false);\r\n  const [openDatePicker, setOpenDatePicker] = useState(false);\r\n  const [anchorEl1, setAnchorEl1] = useState(null);\r\n  const [date, setDate] = useState(\"\");\r\n  const [time, setTime] = useState(\"\");\r\n  // const [formulaType, setFormulaType] = useState(\"\");\r\n  // const [borderColor, setBorderColor] = useState(\"#E1E1E1\");\r\n  // const [formula, setFormula] = useState(false);\r\n  const { setNodes, getNode, getNodes } = useReactFlow();\r\n  const nodes = getNodes();\r\n  const [isResizeRowCol, setIsResizeRowCol] = useState(false);\r\n  const currentNode = getNode(node?.id);\r\n  const [activeCell, setActiveCell] = useState(\"false\");\r\n  const [isCellShow, setIsCellShow] = useState(\"\");\r\n  const [activeCellData, setActiveCellData] = useState({});\r\n  const [linkText, setLinkText] = useState(\"\");\r\n  const [zoomPercentages, setZoomPercentages] = useState(100);\r\n  const [showDots, setShowDots] = useState(false);\r\n  const [hoveredItem, setHoveredItem] = useState(\"\");\r\n  const [showTableMoreOptions, setShowTableMoreOptions] = useState(false);\r\n  const [showTableVariations, setShowTableVariations] = useState(false);\r\n  const [tableCells, setTableCells] = useState([]);\r\n  const [customBgOpen, setCustomBgOpen] = useState(false);\r\n  const [isInputFocused, setIsInputFocused] = useState(false);\r\n  const [multiActiveCells, setMultiActiveCells] = useState([]);\r\n  const [hoveredRowCol, setHoveredRowCol] = useState({\r\n    row: null,\r\n    col: null,\r\n  });\r\n  const [rowDelete, setRowDelete] = useState();\r\n  const [color, setColor] = useState();\r\n  const [moreOption, setMoreOption] = useState(false);\r\n  const location = useLocation();\r\n  const { id } = useParams();\r\n  const dispatch = useDispatch();\r\n  const { undo, takeSnapshot } = useUndoRedo();\r\n  const resizingRef = useRef(false);\r\n  const clickTimeout1 = useRef(null);\r\n  const mainRef = useRef(null);\r\n  const isResizing = useRef(false);\r\n  const inputSpanRef = useRef(null);\r\n  const inputRef = useRef(null);\r\n  const editorRef = useRef(null);\r\n  const firstRowRef = useRef(null);\r\n  const keyRef = useRef(null);\r\n  const tableHeaderRef = useRef(null);\r\n  const eachRowHeight = useMemo(() => {\r\n    return firstRowRef?.current?.offsetHeight;\r\n  }, [firstRowRef?.current?.offsetHeight]);\r\n  const tableHeaderHeight = useMemo(() => {\r\n    return tableHeaderRef?.current?.offsetHeight;\r\n  }, [tableHeaderRef?.current?.offsetHeight]);\r\n  let simpleRef = useRef(null);\r\n\r\n  const tableType = node?.data?.type;\r\n\r\n  const { singleRow, singleColumn } = checkSingleRowOrColumn(multiActiveCells);\r\n\r\n  const timeoutRef = useRef();\r\n  const updateEdgeHandles = () => {\r\n    if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n\r\n    timeoutRef.current = setTimeout(() => {\r\n      updateNodeInternals(node.id);\r\n    }, 100);\r\n  };\r\n\r\n  useEffect(() => {\r\n    updateEdgeHandles();\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    if (activeCellData?.backgroundColor) {\r\n      setColor(activeCellData?.backgroundColor);\r\n    }\r\n  }, [activeCellData?.backgroundColor]);\r\n\r\n  useEffect(() => {\r\n    if (!node.selected) {\r\n      setActiveCell(\"\");\r\n      setIsCellShow(\"\");\r\n      setActiveCellData({});\r\n      setShowTableVariations(false);\r\n      setShowBgColor(false);\r\n      setShowBorderColor(false);\r\n      setShowFontFamily(false);\r\n      setShowFontSizeOpt(false);\r\n      setShowTextDecoration(false);\r\n      setShowAlignment(false);\r\n      setShowTextColor(false);\r\n      setShowTableMoreOptions(false);\r\n      setMultiActiveCells([]);\r\n      setHoveredRowCol({\r\n        row: null,\r\n        col: null,\r\n      });\r\n    } else {\r\n      setActiveCell(\"table\");\r\n    }\r\n  }, [node.selected]);\r\n\r\n  const updateNodeJson = (updatedData) => {\r\n    let parsedData = {};\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n\r\n    let updatedNodes = getNodes();\r\n    let updatedNode;\r\n    setNodes((nds) => {\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: nds,\r\n            // lastUpdatedBy: parsedData?.user_id,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      updatedNodes = nds.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          updatedNode = {\r\n            ...n,\r\n            data: {\r\n              ...n?.data,\r\n              ...updatedData,\r\n            },\r\n          };\r\n          return updatedNode;\r\n        }\r\n        return n;\r\n      });\r\n      return updatedNodes;\r\n    });\r\n    const search = new URLSearchParams(location.search);\r\n    const a_id = search.get(\"a_id\");\r\n    updateJson({\r\n      json: {\r\n        architecture_json: {\r\n          nodes: updatedNodes,\r\n          lastUpdatedBy: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n  };\r\n\r\n  const tableRef = useRef(null);\r\n\r\n  const toggleLockedTabel = () => {\r\n    updateNodeJson({ ...node.data, locked: !node.data.locked });\r\n  };\r\n\r\n  const handleClosePopover1 = () => {\r\n    setAnchorEl1(null);\r\n  };\r\n  const debouncedUpdateHTML = useMemo(\r\n    () =>\r\n      debounce((newRows) => {\r\n        let totalHeight = newRows.reduce((totalHeight, row) => {\r\n          const rowHeight = Math.max(\r\n            ...Object.values(row).map((cell) => {\r\n              return cell?.height || 0;\r\n            })\r\n          );\r\n          return totalHeight + rowHeight;\r\n        }, 0);\r\n        let updatedNode;\r\n        let updatedNodes = getNodes().map((nd) => {\r\n          if (nd.id === node.id) {\r\n            updatedNode = {\r\n              ...nd,\r\n              data: {\r\n                ...nd.data,\r\n                tableCells: newRows,\r\n                tableData: {\r\n                  ...nd.data.tableData,\r\n                  tableCells: newRows,\r\n                },\r\n                height: totalHeight + 5,\r\n                style: {\r\n                  ...nd.data.style,\r\n                  height: totalHeight + 5,\r\n                },\r\n              },\r\n              style: {\r\n                ...nd.style,\r\n                height: totalHeight + 5,\r\n              },\r\n            };\r\n            return updatedNode;\r\n          }\r\n          return nd;\r\n        });\r\n\r\n        setNodes(updatedNodes);\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          a_id: new URLSearchParams(location.search).get(\"a_id\"),\r\n        });\r\n      }, 500),\r\n    [id, dispatch, undo, location.search]\r\n  );\r\n\r\n  useEffect(() => {\r\n    if (\r\n      JSON.stringify(node?.data?.tableData?.tableCells) !==\r\n      JSON.stringify(tableCells)\r\n    ) {\r\n      setTableCells(node?.data?.tableData?.tableCells);\r\n    }\r\n  }, [node?.data?.tableData?.tableCells]);\r\n\r\n  const handleFontSizeChange = (action) => {\r\n    const currentSize = parseInt(fontSize || 16, 10);\r\n    const newSize = action === \"increase\" ? currentSize + 1 : currentSize - 1;\r\n\r\n    // Prevent font size going below 1\r\n    if (newSize < 1) return;\r\n\r\n    updateFontSize(newSize);\r\n  };\r\n\r\n  const updateFontSize = (size) => {\r\n    let coppiedTableCells = structuredClone(tableCells);\r\n    cellEditors.forEach(({ editor, rowIndex, column }) => {\r\n      if (editor.state.selection.empty) {\r\n        editor.chain().focus().selectAll().setFontSize(`${size}px`).run();\r\n      } else {\r\n        editor.chain().focus().setFontSize(`${size}px`).run();\r\n      }\r\n      coppiedTableCells[rowIndex][column] = {\r\n        ...coppiedTableCells[rowIndex][column],\r\n        editorHTML: editor?.getHTML(),\r\n      };\r\n    });\r\n    setFontSize(size);\r\n    debouncedUpdateHTML(coppiedTableCells);\r\n    setShowFontSizeOpt(false);\r\n  };\r\n\r\n  const debouncedHandleChange = useMemo(\r\n    () =>\r\n      debounce(async (updatedNodes) => {\r\n        localStorage.setItem(\r\n          \"architectureJson\",\r\n          JSON.stringify({\r\n            architecture_json: {\r\n              nodes: getNodes(),\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        let parsedData = {};\r\n        if (user_data) {\r\n          parsedData = JSON.parse(user_data);\r\n        }\r\n        updateJson({\r\n          json: {\r\n            architecture_json: {\r\n              nodes: updatedNodes,\r\n              lastUpdatedBy: parsedData?.user_id,\r\n            },\r\n          },\r\n          id,\r\n          dispatch,\r\n          undo,\r\n          a_id,\r\n        });\r\n      }, 300),\r\n    []\r\n  );\r\n\r\n  const handleChange = (e, rowIndex, column) => {\r\n    const newRows = node?.data?.tableData?.tableCells?.map((row, rIdx) =>\r\n      rIdx === rowIndex\r\n        ? {\r\n            ...row,\r\n            [column]: {\r\n              ...row?.[column],\r\n              text: e.target.value,\r\n            },\r\n          }\r\n        : row\r\n    );\r\n    setTableCells(newRows);\r\n    let updatedNode;\r\n    let updatedNodes = getNodes()?.map((nd) => {\r\n      if (nd.id === node.id) {\r\n        updatedNode = {\r\n          ...nd,\r\n          data: {\r\n            ...nd.data,\r\n            tableData: {\r\n              ...nd.data.tableData,\r\n              tableCells: newRows,\r\n            },\r\n          },\r\n        };\r\n        return updatedNode;\r\n      }\r\n      return nd;\r\n    });\r\n    setNodes(updatedNodes);\r\n    debouncedHandleChange(updatedNodes);\r\n  };\r\n  const isNodeSelected = getNodes().filter(\r\n    (nd) => nd.id === node.id && node.selected === true\r\n  );\r\n\r\n  const isItemToSmall = useMemo(\r\n    () => zoomPercentages <= 12.5,\r\n    [zoomPercentages]\r\n  );\r\n\r\n  const [floatingMenu, setFloatingMenu] = useState(null);\r\n\r\n  const handleCloseFloatingMenu = () => {\r\n    setFloatingMenu(null);\r\n  };\r\n\r\n  const zoom = useStore((state) =>\r\n    (node?.selected || showDots) && !isNodeSelectionStarted\r\n      ? state?.transform?.[2]\r\n      : 1\r\n  );\r\n  const sizeAsPerZoom =\r\n    (currentNode?.width < currentNode?.height\r\n      ? currentNode?.width\r\n      : currentNode?.height) * zoom || 100;\r\n  const isWidthLessthan25 = useMemo(\r\n    () => 12.5 < zoomPercentages && zoomPercentages <= 25,\r\n    [zoomPercentages]\r\n  );\r\n\r\n  const isWidthLessthan50 = useMemo(\r\n    () => 25 < zoomPercentages && zoomPercentages <= 50,\r\n    [zoomPercentages]\r\n  );\r\n\r\n  const isWidthLessthan100 = useMemo(\r\n    () => 50 < zoomPercentages && zoomPercentages <= 100,\r\n    [zoomPercentages]\r\n  );\r\n\r\n  useEffect(() => {\r\n    if (mainRef.current && !isNodeSelectionStarted) {\r\n      setZoomPercentages(zoom * 100);\r\n    }\r\n  }, [zoom]);\r\n\r\n  const handleDeleteRow = (index = -1) => {\r\n    let d = [...node?.data?.tableData?.tableCells];\r\n\r\n    // Check if index is valid and within the bounds\r\n    if (index !== -1 && index < d?.length) {\r\n      // Remove the row at the specified index\r\n      d = d.filter((_, ind) => ind !== index);\r\n    }\r\n    setTableCells(d);\r\n\r\n    let updatedNodes = getNodes();\r\n    let updatedNode;\r\n\r\n    setNodes((nds) => {\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: nds,\r\n            // lastUpdatedBy: parsedData?.user_id,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      updatedNodes = nds?.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          updatedNode = {\r\n            ...n,\r\n            selected: true,\r\n            data: {\r\n              ...n?.data,\r\n              rowsAndCols: {\r\n                ...n.data.rowsAndCols,\r\n                row: n.data.rowsAndCols.row - 1, // Decrease row count\r\n              },\r\n              tableData: {\r\n                ...(n?.data?.tableData || {}),\r\n                rowsAndCols: {\r\n                  ...n.data.tableData.rowsAndCols,\r\n                  row: n.data.tableData.rowsAndCols.row - 1, // Decrease row count\r\n                },\r\n                tableCells: d, // Update table cells without the deleted row\r\n              },\r\n            },\r\n            style: {\r\n              ...n.style,\r\n              height: n.height - 22, // Adjust the height after deleting a row\r\n            },\r\n          };\r\n          return updatedNode;\r\n        }\r\n        return n;\r\n      });\r\n      return updatedNodes;\r\n    });\r\n\r\n    const search = new URLSearchParams(location.search);\r\n    const a_id = search.get(\"a_id\");\r\n    let parsedData = {};\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n\r\n    updateJson({\r\n      json: {\r\n        architecture_json: {\r\n          nodes: updatedNodes,\r\n          lastUpdatedBy: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n  };\r\n\r\n  // const handleFormula = (formulaType) => {\r\n  //   const applyFormula = (formulaType) => {\r\n  //     switch (formulaType) {\r\n  //       case \"sum\":\r\n  //         return `=Sum()`;\r\n  //       case \"average\":\r\n  //         return `=Average()`;\r\n  //       case \"count\":\r\n  //         return `=Count()`;\r\n  //       case \"max\":\r\n  //         return `=Max()`;\r\n  //       case \"min\":\r\n  //         return `=Min()`;\r\n  //       default:\r\n  //         return \"\";\r\n  //     }\r\n  //   };\r\n\r\n  //   const newCellContent = applyFormula(formulaType);\r\n  //   const rowIndex = parseInt(activeCell.split(\"-\")[0]);\r\n  //   const columnIndex = activeCell.split(\"-\")[1];\r\n  //   const newRows = node?.data?.tableData?.tableCells?.map((row, rIdx) =>\r\n  //     rIdx === rowIndex\r\n  //       ? {\r\n  //           ...row,\r\n  //           [columnIndex]: { text: newCellContent },\r\n  //         }\r\n  //       : row\r\n  //   );\r\n\r\n  //   setNodes((nodes) =>\r\n  //     nodes.map((nd) =>\r\n  //       nd.id === node.id\r\n  //         ? {\r\n  //             ...nd,\r\n  //             data: {\r\n  //               ...nd.data,\r\n  //               tableData: {\r\n  //                 ...nd.data.tableData,\r\n  //                 tableCells: newRows,\r\n  //               },\r\n  //             },\r\n  //           }\r\n  //         : nd\r\n  //     )\r\n  //   );\r\n  //   setFormula(false);\r\n  //   setFormulaType(formulaType);\r\n  //   setAnchorEl(null);\r\n  //   setTimeout(() => {\r\n  //     const input = inputRef.current;\r\n  //     if (input) {\r\n  //       const formulaEndIndex = newCellContent.length - 1;\r\n  //       input.focus();\r\n  //       input.setSelectionRange(formulaEndIndex, formulaEndIndex);\r\n  //     }\r\n  //   }, 0);\r\n  // };\r\n\r\n  const onChangeDate = (value) => {\r\n    if (value) {\r\n      const formattedDate = dayjs(value).format(date);\r\n      const formattedTime = dayjs(value).format(time);\r\n      const formattedDateTime = `${formattedDate} ${formattedTime}`;\r\n      const rowIndex = parseInt(selectedCell.split(\"-\")[0]);\r\n      const columnIndex = selectedCell.split(\"-\")[1];\r\n      const newRows = node?.data?.tableData?.tableCells?.map((row, rIdx) =>\r\n        rIdx === rowIndex ? { ...row, [columnIndex]: formattedDateTime } : row\r\n      );\r\n      setTableCells(newRows);\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: getNodes(),\r\n            // lastUpdatedBy: parsedData?.user_id,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: getNodes(),\r\n            // lastUpdatedBy: parsedData?.user_id,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      setNodes((nodes) =>\r\n        nodes?.map((nd) =>\r\n          nd.id === node.id\r\n            ? {\r\n                ...nd,\r\n                data: {\r\n                  ...nd.data,\r\n                  tableData: {\r\n                    ...nd.data.tableData,\r\n                    tableCells: newRows,\r\n                  },\r\n                },\r\n              }\r\n            : nd\r\n        )\r\n      );\r\n    }\r\n  };\r\n\r\n  const [showFontSizeOpt, setShowFontSizeOpt] = useState(false);\r\n  const [showFontFamily, setShowFontFamily] = useState(false);\r\n  const [fontSize, setFontSize] = useState(\"14px\");\r\n  const [fontFamily, setFontFamily] = useState(\"Inter\");\r\n\r\n  const style = {\r\n    width: currentNode?.width || \"auto\",\r\n    height: currentNode?.height,\r\n    overflow: \"visible\",\r\n    position: \"relative\",\r\n  };\r\n\r\n  const currentBorderColor =\r\n    currentNode?.data?.tableData?.borderColor || \"#E1E1E1\";\r\n  const currentFontSize = currentNode?.data?.tableData?.fontSize || \"14px\";\r\n  const currentFontFamily = currentNode?.data?.tableData?.fontFamily || \"Inter\";\r\n\r\n  const updateHeaderStyle = (isBoolean, key, value) => {\r\n    const splittedVal = activeCell?.split(\"-\");\r\n\r\n    if (activeCell === \"table\") {\r\n      const updatedData = node?.data?.tableData?.tableCells?.map(\r\n        (item, rowIndex) => {\r\n          const updatedItem = {};\r\n          Object.keys(item).forEach((currKey) => {\r\n            updatedItem[currKey] = {\r\n              ...item[currKey],\r\n              [key]: isBoolean\r\n                ? !!!item[currKey]?.[splittedVal?.[1]]?.[currKey]\r\n                : node?.data?.variant === 1\r\n                ? value\r\n                : node?.data?.variant === 5\r\n                ? rowIndex === 0 || rowIndex % 2 === 0\r\n                  ? value // convertToRgba(value, 0.12)\r\n                  : \"FFFFFF\"\r\n                : node?.data?.variant === 6\r\n                ? rowIndex === 0\r\n                  ? value // convertToRgba(value, 0.12)\r\n                  : \"FFFFFF\"\r\n                : rowIndex === 0\r\n                ? value\r\n                : rowIndex % 2 === 0\r\n                ? convertToRgba(value, 0.12)\r\n                : \"FFFFFF\",\r\n            };\r\n          });\r\n          return updatedItem;\r\n        }\r\n      );\r\n      setTableCells(updatedData);\r\n      updateNodeJson({\r\n        ...node.data,\r\n        tableData: {\r\n          ...node.data.tableData,\r\n          tableCells: updatedData,\r\n          backgroundColor: value,\r\n        },\r\n        tableStyle: {\r\n          headerColor: value,\r\n          evenRowColor: convertToRgba(value, 0.12),\r\n        },\r\n      });\r\n    } else {\r\n      if (splittedVal?.[0] !== \"header\") {\r\n        const rowIndex = parseInt(splittedVal?.[0]);\r\n        const newRows = node?.data?.tableData?.tableCells?.map((row, rIdx) => {\r\n          const updatedCellData = {\r\n            [splittedVal?.[1]]: {\r\n              ...row?.[splittedVal?.[1]],\r\n              [key]: isBoolean ? !!!row?.[splittedVal?.[1]]?.[key] : value,\r\n            },\r\n          };\r\n          setActiveCellData(updatedCellData);\r\n\r\n          return rIdx === rowIndex\r\n            ? {\r\n                ...row,\r\n                ...updatedCellData,\r\n              }\r\n            : row;\r\n        });\r\n        setTableCells(newRows);\r\n        updateNodeJson({\r\n          ...node.data,\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: newRows,\r\n          },\r\n        });\r\n      } else {\r\n        const headerIndex = parseInt(splittedVal?.[1]);\r\n        updateNodeJson({\r\n          ...node?.data,\r\n          tableData: {\r\n            ...(node?.data?.tableData || {}),\r\n            headers: node?.data?.tableData?.headers?.map((data, ind) => {\r\n              if (ind === headerIndex) {\r\n                return {\r\n                  ...data,\r\n                  [key]: isBoolean ? !!!data?.[key] : value,\r\n                };\r\n              } else {\r\n                return data;\r\n              }\r\n            }),\r\n          },\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  const updateTableColor = (updatedObject) => {\r\n    updateNodeJson({\r\n      ...node?.data,\r\n      tableData: {\r\n        ...(node?.data?.tableData || {}),\r\n        ...updatedObject,\r\n      },\r\n    });\r\n  };\r\n  function checkWidthsByIndex(data, index) {\r\n    if (tableCells.length && hoveredRowCol?.col !== null) {\r\n      const key = `A${index + 1}`;\r\n      const referenceWidth = data[0][key]?.width;\r\n\r\n      const allMatch = data.every(\r\n        (record) => record[key]?.width === referenceWidth\r\n      );\r\n      return { key, allMatch, referenceWidth };\r\n    }\r\n  }\r\n\r\n  const widthDynamic = checkWidthsByIndex(tableCells, hoveredRowCol?.col);\r\n\r\n  function checkHeightsByIndex(data, index) {\r\n    if (tableCells.length && hoveredRowCol?.row !== null) {\r\n      const referenceRecord = data[index];\r\n      const heights = Object.values(referenceRecord).map(\r\n        (field) => field.height\r\n      );\r\n      const allMatch = heights.every((height) => height === heights[0]);\r\n      return { allMatch, heights };\r\n    }\r\n  }\r\n\r\n  const heightDynamic = checkHeightsByIndex(tableCells, hoveredRowCol?.row);\r\n\r\n  const onResizeStart = (node) => {\r\n    resizingRef.current = true;\r\n    // const clearedTableCells = tableCells.map((row) =>\r\n    //   Object.fromEntries(\r\n    //     Object.entries(row).map(([key, cell]) => [\r\n    //       key,\r\n    //       { ...cell, height: \"auto\", width: \"auto\" },\r\n    //     ])\r\n    //   )\r\n    // );\r\n    // setTableCells(clearedTableCells);\r\n  };\r\n\r\n  const onResize = () => {\r\n    const newNodeWidth = Number(mainRef?.current?.offsetWidth || 0);\r\n    const newNodeHeight = Number(mainRef?.current?.offsetHeight || 0);\r\n    const oldNodeHeight = currentNode.data.height || 0;\r\n    const oldNodeWidth = currentNode.data.width || 0;\r\n    const heightDiff = newNodeHeight - oldNodeHeight;\r\n    const widthDiff = newNodeWidth - oldNodeWidth;\r\n\r\n    if (widthDiff < 0 && heightDiff < 0) {\r\n      const updatedTableCells = tableCells.map((row, rowIndex) => {\r\n        return Object.fromEntries(\r\n          Object.entries(row).map(([key, cell]) => {\r\n            if (currentNode.data.key === \"Uml_Frame\" && rowIndex === 0) {\r\n              return [key, cell];\r\n            }\r\n            const oldHeight = cell.height || 45;\r\n            const oldWidth = cell.width || 100;\r\n            const proportionalHeightIncrease =\r\n              (oldHeight / oldNodeHeight) * heightDiff;\r\n            const proportionalWidthIncrease =\r\n              (oldWidth / oldNodeWidth) * widthDiff;\r\n            const newHeight = Math.max(\r\n              20,\r\n              oldHeight + proportionalHeightIncrease\r\n            );\r\n            const newWidth = Math.max(20, oldWidth + proportionalWidthIncrease);\r\n            return [\r\n              key,\r\n              {\r\n                ...cell,\r\n                height: newHeight,\r\n                width: newWidth,\r\n                // fontSize: newFontSize,\r\n              },\r\n            ];\r\n          })\r\n        );\r\n      });\r\n\r\n      setTableCells(updatedTableCells);\r\n    }\r\n  };\r\n\r\n  const onResizeEnd = (event, node) => {\r\n    resizingRef.current = false;\r\n    let updatedNodes = [];\r\n    let parsedData = {};\r\n\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n    isResizing.current = false;\r\n\r\n    setNodes((prev) => {\r\n      updatedNodes = prev.map((_) => {\r\n        if (_.id === node.id) {\r\n          const newNodeWidth = Number(mainRef?.current?.offsetWidth || 0);\r\n          const newNodeHeight = Number(mainRef?.current?.offsetHeight || 0);\r\n          const oldNodeHeight = _.data.height || 0;\r\n          const oldNodeWidth = _.data.width || 0;\r\n          const heightDiff = newNodeHeight - oldNodeHeight;\r\n          const widthDiff = newNodeWidth - oldNodeWidth;\r\n\r\n          // const widthScale = newNodeWidth / oldNodeWidth || 1;\r\n          // const heightScale = newNodeHeight / oldNodeHeight || 1;\r\n          // const scale = Math.min(widthScale, heightScale);\r\n\r\n          _ = JSON.parse(JSON.stringify(_));\r\n          _.style.width = newNodeWidth;\r\n          _.style.height = newNodeHeight;\r\n\r\n          _.data.width = newNodeWidth;\r\n          _.data.height = newNodeHeight;\r\n\r\n          // const oldFontSize = _.data.style?.fontSize || 14;\r\n          // let adjustedZoom;\r\n          // if (zoomPercentages < 100) {\r\n          //   adjustedZoom = 100 / zoomPercentages;\r\n          // } else {\r\n          //   adjustedZoom = zoomPercentages / 100;\r\n          // }\r\n          // const newFontSize = Math.max(8, oldFontSize * scale * adjustedZoom);\r\n\r\n          const updatedTableCells = tableCells.map((row, rowIndex) => {\r\n            return Object.fromEntries(\r\n              Object.entries(row).map(([key, cell]) => {\r\n                if (node.data.key === \"Uml_Frame\" && rowIndex === 0) {\r\n                  return [key, cell];\r\n                }\r\n                const oldHeight = cell.height || 45;\r\n                const oldWidth = cell.width || 100;\r\n\r\n                const proportionalHeightIncrease =\r\n                  (oldHeight / oldNodeHeight) * heightDiff;\r\n                const proportionalWidthIncrease =\r\n                  (oldWidth / oldNodeWidth) * widthDiff;\r\n\r\n                const newHeight = Math.max(\r\n                  20,\r\n                  oldHeight + proportionalHeightIncrease\r\n                );\r\n                const newWidth = Math.max(\r\n                  20,\r\n                  oldWidth + proportionalWidthIncrease\r\n                );\r\n\r\n                return [\r\n                  key,\r\n                  {\r\n                    ...cell,\r\n                    height: newHeight,\r\n                    width: newWidth,\r\n                    // fontSize: newFontSize,\r\n                  },\r\n                ];\r\n              })\r\n            );\r\n          });\r\n          _.data.tableCells = updatedTableCells;\r\n          _.data.tableData.tableCells = updatedTableCells;\r\n\r\n          setTableCells(updatedTableCells);\r\n\r\n          return _;\r\n        }\r\n        return _;\r\n      });\r\n\r\n      return updatedNodes;\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: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n    // handleChangeDynamic();\r\n  };\r\n\r\n  const removeBgFromCell = (tableCells) => {\r\n    return tableCells?.map((row, i) => {\r\n      let updatedRow = {};\r\n      Object.keys(row).forEach((cell) => {\r\n        Object.keys(row[cell]).forEach((key) => {\r\n          if (key !== \"backgroundColor\") {\r\n            updatedRow = {\r\n              ...updatedRow,\r\n              [cell]: {\r\n                ...(updatedRow[cell] || {}),\r\n                [key]: row[cell][key],\r\n              },\r\n            };\r\n          }\r\n        });\r\n      });\r\n      return updatedRow;\r\n    });\r\n  };\r\n\r\n  const tableVariants = [\r\n    {\r\n      label: \"Table\",\r\n      Icon: IcTableVariant1,\r\n      onClick: () => {\r\n        let tableCells;\r\n        tableCells = [...node.data.tableData.tableCells];\r\n        tableCells = removeBgFromCell(tableCells);\r\n\r\n        updateNodeJson({\r\n          ...node.data,\r\n          variant: 1,\r\n          tableStyle: {\r\n            headerColor: \"#FFFFFF\",\r\n            evenRowColor: \"#FFFFFF\",\r\n          },\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: tableCells,\r\n          },\r\n        });\r\n        setTableCells(tableCells);\r\n      },\r\n    },\r\n    {\r\n      label: \"Table\",\r\n      Icon: IcTableVariant3,\r\n      onClick: () => {\r\n        let tableCells;\r\n        tableCells = [...node.data.tableData.tableCells];\r\n        tableCells = removeBgFromCell(tableCells);\r\n\r\n        updateNodeJson({\r\n          ...node.data,\r\n          variant: 3,\r\n          tableStyle: {\r\n            headerColor: colorsConst?.primaryColor,\r\n            evenRowColor: \"#F4F9FF\",\r\n          },\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: tableCells,\r\n          },\r\n        });\r\n        setTableCells(tableCells);\r\n      },\r\n    },\r\n    {\r\n      label: \"Table\",\r\n      Icon: IcTableVariant4,\r\n      onClick: () => {\r\n        let tableCells;\r\n        tableCells = [...node.data.tableData.tableCells];\r\n        tableCells = removeBgFromCell(tableCells);\r\n\r\n        updateNodeJson({\r\n          ...node.data,\r\n          variant: 4,\r\n          tableStyle: {\r\n            headerColor: colorsConst?.primaryColor,\r\n            evenRowColor: \"#F4F9FF\",\r\n          },\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: tableCells,\r\n          },\r\n        });\r\n        setTableCells(tableCells);\r\n      },\r\n    },\r\n    {\r\n      label: \"Table\",\r\n      Icon: IcTableVariant7,\r\n      onClick: () => {\r\n        let tableCells;\r\n        tableCells = [...node.data.tableData.tableCells];\r\n        tableCells = removeBgFromCell(tableCells);\r\n\r\n        updateNodeJson({\r\n          ...node.data,\r\n          variant: 5,\r\n          tableStyle: {\r\n            headerColor: \"#F4F9FF\",\r\n            evenRowColor: \"#F4F9FF\",\r\n          },\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: tableCells,\r\n          },\r\n        });\r\n        setTableCells(tableCells);\r\n      },\r\n    },\r\n    {\r\n      label: \"Table\",\r\n      Icon: IcTableVariant8,\r\n      onClick: () => {\r\n        let tableCells;\r\n        tableCells = [...node.data.tableData.tableCells];\r\n        tableCells = removeBgFromCell(tableCells);\r\n\r\n        updateNodeJson({\r\n          ...node.data,\r\n          variant: 6,\r\n          tableStyle: {\r\n            headerColor: \"#F4F9FF\",\r\n            evenRowColor: \"#FFFFFF\",\r\n          },\r\n          tableData: {\r\n            ...node.data.tableData,\r\n            tableCells: tableCells,\r\n          },\r\n        });\r\n        setTableCells(tableCells);\r\n      },\r\n    },\r\n  ];\r\n\r\n  const tabeleVariationsTypesRef = useRef(null);\r\n  const backgroundPopupRef = useRef(null);\r\n  const borderPopupRef = useRef(null);\r\n  const fontFamilyPopupRef = useRef(null);\r\n  const fontSizePopupRef = useRef(null);\r\n  const textDecorationPopupRef = useRef(null);\r\n  const alignmentPopupRef = useRef(null);\r\n  const textColorPopupRef = useRef(null);\r\n  const moreOptionsPopupRef = useRef(null);\r\n\r\n  const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n  const handleClickOutside = (event) => {\r\n    if (\r\n      tabeleVariationsTypesRef.current &&\r\n      !tabeleVariationsTypesRef.current.contains(event.target)\r\n    ) {\r\n      setShowTableVariations(false);\r\n    }\r\n    if (\r\n      backgroundPopupRef.current &&\r\n      !backgroundPopupRef.current.contains(event.target) &&\r\n      event.target.classList?.length > 0 &&\r\n      !event.target.classList.contains(\"MuiBackdrop-root\") &&\r\n      !event.target.id.includes(\"rbgcp\") &&\r\n      !customBgOpen\r\n    ) {\r\n      setShowBgColor(false);\r\n    }\r\n    if (\r\n      borderPopupRef.current &&\r\n      !borderPopupRef.current.contains(event.target) &&\r\n      event.target.classList?.length > 0 &&\r\n      !event.target.classList.contains(\"MuiBackdrop-root\") &&\r\n      !event.target.id.includes(\"rbgcp\")\r\n    ) {\r\n      setShowBorderColor(false);\r\n    }\r\n    if (\r\n      fontFamilyPopupRef.current &&\r\n      !fontFamilyPopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowFontFamily(false);\r\n    }\r\n    if (\r\n      fontSizePopupRef.current &&\r\n      !fontSizePopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowFontSizeOpt(false);\r\n    }\r\n    if (\r\n      textDecorationPopupRef.current &&\r\n      !textDecorationPopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowTextDecoration(false);\r\n    }\r\n    if (\r\n      alignmentPopupRef.current &&\r\n      !alignmentPopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowAlignment(false);\r\n    }\r\n    if (\r\n      textColorPopupRef.current &&\r\n      !textColorPopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowTextColor(false);\r\n    }\r\n    if (\r\n      moreOptionsPopupRef.current &&\r\n      !moreOptionsPopupRef.current.contains(event.target)\r\n    ) {\r\n      setShowTableMoreOptions(false);\r\n    } else {\r\n      setShowTableVariations(false);\r\n      setShowBgColor(false);\r\n      setShowBorderColor(false);\r\n      setShowFontFamily(false);\r\n      setShowFontSizeOpt(false);\r\n      setShowTextDecoration(false);\r\n      setShowAlignment(false);\r\n      setShowTextColor(false);\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    document.addEventListener(\"mousedown\", handleClickOutside);\r\n    return () => {\r\n      document.removeEventListener(\"mousedown\", handleClickOutside);\r\n    };\r\n  }, []);\r\n\r\n  const handleFocusInput = (id) => {\r\n    const input = document.getElementById(id);\r\n    if (input) {\r\n      input.focus();\r\n    }\r\n  };\r\n\r\n  const handleChangeCellOnTab = (e, row, colIndex, rowIndex) => {\r\n    e.stopPropagation();\r\n\r\n    let newCell;\r\n    const cellKey = Object.keys(row)[colIndex];\r\n    const totalRows = node?.data?.tableData?.tableCells?.length || 0;\r\n    const totalCols = Object.keys(row).length;\r\n\r\n    if ([\"Tab\", \"ArrowLeft\", \"ArrowRight\"].includes(e.key)) {\r\n      if ((e.key === \"Tab\" && e.shiftKey) || e.key === \"ArrowLeft\") {\r\n        // Move Left\r\n        if (colIndex === 0) {\r\n          const prevRowIndex = rowIndex === 0 ? totalRows - 1 : rowIndex - 1;\r\n          const prevRow = node?.data?.tableData?.tableCells[prevRowIndex] || {};\r\n          const lastColKey = Object.keys(prevRow).slice(-1)[0];\r\n          newCell = `${prevRowIndex}-${lastColKey}`;\r\n        } else {\r\n          const prevColKey = Object.keys(row)[colIndex - 1];\r\n          newCell = `${rowIndex}-${prevColKey}`;\r\n        }\r\n      } else {\r\n        // Move Right\r\n        if (colIndex === totalCols - 1) {\r\n          const nextRowIndex = rowIndex === totalRows - 1 ? 0 : rowIndex + 1;\r\n          const nextRow = node?.data?.tableData?.tableCells[nextRowIndex] || {};\r\n          const firstColKey = Object.keys(nextRow)[0];\r\n          newCell = `${nextRowIndex}-${firstColKey}`;\r\n        } else {\r\n          const nextColKey = Object.keys(row)[colIndex + 1];\r\n          newCell = `${rowIndex}-${nextColKey}`;\r\n        }\r\n      }\r\n    } else if (e.key === \"ArrowDown\") {\r\n      // Move Down\r\n      const nextRowIndex = rowIndex === totalRows - 1 ? 0 : rowIndex + 1;\r\n      const nextRow = node?.data?.tableData?.tableCells[nextRowIndex] || {};\r\n      const nextRowHasCell = nextRow[cellKey];\r\n\r\n      if (nextRowHasCell) {\r\n        newCell = `${nextRowIndex}-${cellKey}`;\r\n      } else {\r\n        const prevCellKey = Object.keys(row)[colIndex - 1] || cellKey;\r\n        newCell = `${nextRowIndex}-${prevCellKey}`;\r\n      }\r\n    } else if (e.key === \"ArrowUp\") {\r\n      // Move Up\r\n      const prevRowIndex = rowIndex === 0 ? totalRows - 1 : rowIndex - 1;\r\n      const prevRow = node?.data?.tableData?.tableCells[prevRowIndex] || {};\r\n      const prevRowHasCell = prevRow[cellKey];\r\n\r\n      if (prevRowHasCell) {\r\n        newCell = `${prevRowIndex}-${cellKey}`;\r\n      } else {\r\n        const prevCellKey = Object.keys(row)[colIndex - 1] || cellKey;\r\n        newCell = `${prevRowIndex}-${prevCellKey}`;\r\n      }\r\n    }\r\n\r\n    if (newCell) {\r\n      if (e.shiftKey) {\r\n        // Multi-selection logic: Add new cell to selection instead of replacing\r\n        setMultiActiveCells((prevCells) => [\r\n          ...new Set([...prevCells, newCell]),\r\n        ]);\r\n      } else {\r\n        // Single cell selection\r\n        setMultiActiveCells([newCell]);\r\n      }\r\n      setActiveCell(newCell);\r\n      if (![\"Tab\"].includes(e.key)) {\r\n        handleFocusInput(`${node?.id}-${newCell}`);\r\n      }\r\n    }\r\n  };\r\n\r\n  const handleClickOutsideTable = (event) => {\r\n    if (\r\n      !node?.selected &&\r\n      mainRef.current &&\r\n      !mainRef.current.contains(event.target)\r\n    ) {\r\n      window.getSelection().removeAllRanges();\r\n    }\r\n  };\r\n\r\n  const handleChangeDynamic = () => {\r\n    setTimeout(() => {\r\n      let updatedNode;\r\n      let updatedNodes = getNodes().map((nd) => {\r\n        if (nd.id === node.id) {\r\n          updatedNode = {\r\n            ...nd,\r\n            data: {\r\n              ...nd.data,\r\n              // tableCells: newRows,\r\n              tableData: {\r\n                ...nd.data.tableData,\r\n                // tableCells: newRows,\r\n                height: tableRef?.current?.offsetHeight,\r\n                width: tableRef?.current?.offsetWidth,\r\n              },\r\n              height: tableRef?.current?.offsetHeight,\r\n              width: tableRef?.current?.offsetWidth,\r\n              style: {\r\n                ...nd.data.style,\r\n                height: tableRef?.current?.offsetHeight,\r\n                width: tableRef?.current?.offsetWidth,\r\n              },\r\n            },\r\n            style: {\r\n              ...nd.style,\r\n              height: tableRef?.current?.offsetHeight,\r\n              width: tableRef?.current?.offsetWidth,\r\n            },\r\n          };\r\n          return updatedNode;\r\n        }\r\n        return nd;\r\n      });\r\n\r\n      setNodes(updatedNodes);\r\n    }, 500);\r\n  };\r\n\r\n  useEffect(() => {\r\n    document.addEventListener(\"mousedown\", handleClickOutsideTable);\r\n    return () => {\r\n      document.removeEventListener(\"mousedown\", handleClickOutsideTable);\r\n    };\r\n  }, [node?.selected]);\r\n\r\n  useEffect(() => {\r\n    if (node?.id) {\r\n      mainRef?.current?.click();\r\n      setTableCells(node?.data?.tableData?.tableCells);\r\n    }\r\n  }, [node?.id]);\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 currentNode = jsonData?.nodes?.find(\r\n          (val) => val?.id === node?.id\r\n        );\r\n        if (jsonData?.lastUpdatedBy !== userData?.user_id) {\r\n          setTableCells(currentNode?.data?.tableData?.tableCells);\r\n          // setContent(currentNode?.data?.label);\r\n        }\r\n      });\r\n    }\r\n  }, [socket, node?.id]);\r\n\r\n  const [clickTimeout, setClickTimeout] = useState(null);\r\n  const handleClick = (e, row, column) => {\r\n    if (clickTimeout) {\r\n      clearTimeout(clickTimeout);\r\n      setClickTimeout(null);\r\n      return;\r\n    }\r\n\r\n    const timeout = setTimeout(() => {\r\n      const selection = window.getSelection();\r\n\r\n      if (selection && selection.type === \"Range\") {\r\n        selection.removeAllRanges();\r\n        selection.empty();\r\n      }\r\n\r\n      if (row[column]?.linkText) {\r\n        e.stopPropagation();\r\n        window.open(row[column]?.linkText, \"_blank\");\r\n      }\r\n\r\n      setClickTimeout(null);\r\n    }, 200);\r\n\r\n    setClickTimeout(timeout);\r\n  };\r\n\r\n  function checkState(keysArray) {\r\n    const suffixNumbers = keysArray.map((key) =>\r\n      parseInt(key.split(\"-\")[1].substring(1), 10)\r\n    );\r\n    const minNumber = Math.min(...suffixNumbers);\r\n    const maxNumber = Math.max(...suffixNumbers);\r\n    const fullRange = Array.from(\r\n      { length: maxNumber - minNumber + 1 },\r\n      (_, i) => minNumber + i\r\n    );\r\n    const missingNumbers = fullRange.filter(\r\n      (num) => !suffixNumbers.includes(num)\r\n    );\r\n    return missingNumbers.length > 0;\r\n  }\r\n\r\n  const [copyContent, setCopyContent] = useState(null);\r\n  const toggleMultipleActiveCells = (event, cellKey) => {\r\n    setDisableMerge(false);\r\n    const firstRecord = tableCells[0];\r\n    const activeCell = multiActiveCells.includes(cellKey)\r\n      ? [...multiActiveCells?.filter((prevKey) => prevKey !== cellKey)]\r\n      : [...multiActiveCells, cellKey];\r\n    const expectedState = activeCell[0].split(\"-\")[0];\r\n\r\n    const checkValues = activeCell.every(\r\n      (value) => value.split(\"-\")[1] === activeCell[0].split(\"-\")[1]\r\n    );\r\n\r\n    const allSameState = activeCell.every((key) =>\r\n      key.startsWith(`${expectedState}-`)\r\n    );\r\n    const firstRecordKeys = Object.keys(tableCells[0])?.length;\r\n    const rowSpanCount = Object.values(firstRecord).filter(\r\n      (value) => value.rowSpan === tableCells.length\r\n    );\r\n    const checkColspanInDynamicKeys = (data, keys) => {\r\n      for (let key of keys) {\r\n        const [index, dynamicKey] = key.split(\"-\");\r\n        const record = data[parseInt(index)];\r\n        if (record && record[dynamicKey] && record[dynamicKey].colSpan) {\r\n          return true;\r\n        }\r\n      }\r\n      return false;\r\n    };\r\n\r\n    const colSpanCheck = checkColspanInDynamicKeys(tableCells, activeCell);\r\n    const missingCharcter = checkState(activeCell);\r\n\r\n    const checkRowspanInFirstRecord = (data, keys) => {\r\n      const record = data[expectedState];\r\n      for (let key of keys) {\r\n        const dynamicKey = key.split(\"-\")[1];\r\n\r\n        if (record && record[dynamicKey] && record[dynamicKey].rowSpan) {\r\n          return true;\r\n        }\r\n      }\r\n\r\n      return false;\r\n    };\r\n\r\n    const rowSpanCheck = checkRowspanInFirstRecord(tableCells, activeCell);\r\n\r\n    if (rowSpanCount?.length + activeCell?.length === firstRecordKeys) {\r\n      if (allSameState && missingCharcter) {\r\n        setDisableMerge(true);\r\n      } else {\r\n        if (checkValues) {\r\n          if (colSpanCheck) {\r\n            setDisableMerge(true);\r\n          } else {\r\n            setDisableMerge(false);\r\n          }\r\n        } else {\r\n          setDisableMerge(false);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (rowSpanCount?.length + activeCell?.length !== firstRecordKeys) {\r\n      if (allSameState && missingCharcter) {\r\n        setDisableMerge(true);\r\n      } else {\r\n        if (checkValues) {\r\n          if (colSpanCheck) {\r\n            setDisableMerge(true);\r\n          } else {\r\n            setDisableMerge(false);\r\n          }\r\n        } else {\r\n          setDisableMerge(false);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (rowSpanCheck && allSameState) {\r\n      setDisableMerge(true);\r\n    }\r\n\r\n    if (event.ctrlKey || event.metaKey) {\r\n      if (multiActiveCells.includes(cellKey)) {\r\n        setMultiActiveCells((prev) =>\r\n          prev.filter((prevKey) => prevKey !== cellKey)\r\n        );\r\n        setActiveCell(\"\");\r\n      } else {\r\n        setMultiActiveCells([...multiActiveCells, cellKey]);\r\n      }\r\n    }\r\n  };\r\n\r\n  const multipleActiveCells = (event, cellKey) => {\r\n    setDisableMerge(false);\r\n\r\n    const parseCellKey = (key) => {\r\n      const [row, col] = key.split(\"-\");\r\n      const match = col.match(/([A-Z]+)(\\d+)/);\r\n      return {\r\n        row: parseInt(row, 10),\r\n        colLetter: match ? match[1] : \"\",\r\n        colNumber: match ? parseInt(match[2], 10) : 0,\r\n      };\r\n    };\r\n\r\n    const getColumnIndex = (letter) => letter.charCodeAt(0) - \"A\".charCodeAt(0);\r\n    const getColumnLetter = (index) =>\r\n      String.fromCharCode(\"A\".charCodeAt(0) + index);\r\n\r\n    if (event.ctrlKey || event.metaKey) {\r\n      setMultiActiveCells((prev) =>\r\n        prev.includes(cellKey)\r\n          ? prev.filter((prevKey) => prevKey !== cellKey)\r\n          : [...prev, cellKey]\r\n      );\r\n      setActiveCell(\"\");\r\n    } else if (event.shiftKey && activeCell) {\r\n      // Shift + Click: Select a range of cells\r\n      const {\r\n        row: startRow,\r\n        colLetter: startColLetter,\r\n        colNumber: startColNumber,\r\n      } = parseCellKey(activeCell);\r\n      const {\r\n        row: endRow,\r\n        colLetter: endColLetter,\r\n        colNumber: endColNumber,\r\n      } = parseCellKey(cellKey);\r\n\r\n      let newSelection = [];\r\n\r\n      let startColIndex = getColumnIndex(startColLetter);\r\n      let endColIndex = getColumnIndex(endColLetter);\r\n\r\n      for (\r\n        let row = Math.min(startRow, endRow);\r\n        row <= Math.max(startRow, endRow);\r\n        row++\r\n      ) {\r\n        for (\r\n          let colIndex = Math.min(startColIndex, endColIndex);\r\n          colIndex <= Math.max(startColIndex, endColIndex);\r\n          colIndex++\r\n        ) {\r\n          for (\r\n            let colNum = Math.min(startColNumber, endColNumber);\r\n            colNum <= Math.max(startColNumber, endColNumber);\r\n            colNum++\r\n          ) {\r\n            let colLetter = getColumnLetter(colIndex);\r\n            let cellId = `${row}-${colLetter}${colNum}`;\r\n            newSelection.push(cellId);\r\n          }\r\n        }\r\n      }\r\n      setMultiActiveCells((prev) => [...new Set([...newSelection])]);\r\n    } else {\r\n      setMultiActiveCells([cellKey]);\r\n    }\r\n  };\r\n\r\n  const handleMergeCells = () => {\r\n    const sortedCells = multiActiveCells.sort((a, b) => {\r\n      const [rowA, colA] = a.split(\"-\");\r\n      const [rowB, colB] = b.split(\"-\");\r\n\r\n      const rowComparison = Number(rowA) - Number(rowB);\r\n\r\n      if (rowComparison !== 0) {\r\n        return rowComparison;\r\n      }\r\n\r\n      return colA.localeCompare(colB);\r\n    });\r\n\r\n    const [rowIndex, cellKey] = sortedCells[0]?.split(\"-\");\r\n\r\n    const updatedCellsData = tableCells?.map((row, i) => {\r\n      let copyRow = { ...row };\r\n      if (i === Number(rowIndex)) {\r\n        let updatedCellData = { ...copyRow[cellKey] };\r\n        if (singleRow) {\r\n          updatedCellData.colSpan = updatedCellData.colSpan\r\n            ? updatedCellData.colSpan + sortedCells.length - 1\r\n            : sortedCells.length;\r\n          const columns = [];\r\n          sortedCells\r\n            .filter((_, i) => i !== 0)\r\n            .forEach((cell) => {\r\n              const [, col] = cell.split(\"-\");\r\n              columns.push(col);\r\n            });\r\n\r\n          if (updatedCellData?.text?.trim()?.length <= 0) {\r\n            let textAdded = false;\r\n            columns.forEach((cellK) => {\r\n              if (copyRow[cellK]?.text?.trim()?.length > 0 && !textAdded) {\r\n                updatedCellData.text = copyRow[cellK]?.text;\r\n                textAdded = true;\r\n              }\r\n              delete copyRow[cellK];\r\n            });\r\n          } else {\r\n            columns.forEach((cellK) => {\r\n              delete copyRow[cellK];\r\n            });\r\n          }\r\n        } else if (singleColumn) {\r\n          updatedCellData.rowSpan = updatedCellData.rowSpan\r\n            ? updatedCellData.rowSpan + sortedCells.length - 1\r\n            : sortedCells.length;\r\n\r\n          if (updatedCellData?.text?.trim()?.length <= 0) {\r\n            let textAdded = false;\r\n            sortedCells\r\n              .filter((_, i) => i !== 0)\r\n              .forEach((cell) => {\r\n                const [row, col] = cell.split(\"-\");\r\n                const nextText = tableCells[row][col]?.text;\r\n\r\n                if (nextText?.trim()?.length > 0 && !textAdded) {\r\n                  updatedCellData.text = nextText;\r\n                  textAdded = true;\r\n                }\r\n              });\r\n          }\r\n        }\r\n\r\n        setMultiActiveCells([sortedCells[0]]);\r\n        setActiveCellData(updatedCellData);\r\n        return {\r\n          ...copyRow,\r\n          [cellKey]: updatedCellData,\r\n        };\r\n      } else {\r\n        if (singleColumn) {\r\n          sortedCells\r\n            .filter((_, i) => i !== 0)\r\n            .forEach((cell) => {\r\n              const [row, col] = cell.split(\"-\");\r\n\r\n              if (i === Number(row)) {\r\n                delete copyRow[col];\r\n              }\r\n            });\r\n\r\n          return copyRow;\r\n        } else {\r\n          return row;\r\n        }\r\n      }\r\n    });\r\n\r\n    setTableCells(updatedCellsData);\r\n    updateNodeJson({\r\n      ...node?.data,\r\n      tableData: {\r\n        ...(node?.data?.tableData || {}),\r\n        tableCells: updatedCellsData,\r\n      },\r\n    });\r\n  };\r\n\r\n  const handleUnMergeCells = () => {\r\n    const [rowIndex, cellKey] = multiActiveCells[0]?.split(\"-\");\r\n\r\n    const updatedCellsData = tableCells?.map((row, i) => {\r\n      let copyRow = { ...row };\r\n      if (i === Number(rowIndex)) {\r\n        let cellData = { ...copyRow[cellKey] };\r\n        if (cellData?.colSpan && cellData?.rowSpan) {\r\n          const cellToAdd = cellData?.colSpan - 1;\r\n          delete cellData?.colSpan;\r\n          delete cellData?.rowSpan;\r\n          copyRow = {\r\n            ...copyRow,\r\n            [cellKey]: cellData,\r\n          };\r\n\r\n          let addedKey = null;\r\n          for (let index = 1; index <= cellToAdd; index++) {\r\n            const [keyAlpha, keyNum] = cellKey.split(\"\");\r\n            const newKey = `${keyAlpha}${\r\n              (addedKey ? addedKey : Number(keyNum)) + 1\r\n            }`;\r\n            addedKey = (addedKey ? addedKey : Number(keyNum)) + 1;\r\n            setActiveCellData({\r\n              ...copyRow[cellKey],\r\n              text: \"\",\r\n            });\r\n            copyRow = {\r\n              ...copyRow,\r\n              [newKey]: {\r\n                ...copyRow[cellKey],\r\n                text: \"\",\r\n              },\r\n            };\r\n\r\n            const sortedEntries = Object.entries(copyRow).sort(\r\n              ([keyA], [keyB]) => {\r\n                const numA = parseInt(keyA.slice(1));\r\n                const numB = parseInt(keyB.slice(1));\r\n                return numA - numB;\r\n              }\r\n            );\r\n\r\n            copyRow = Object.fromEntries(sortedEntries);\r\n          }\r\n        } else if (cellData?.colSpan) {\r\n          const cellToAdd = cellData?.colSpan - 1;\r\n          delete cellData?.colSpan;\r\n          copyRow = {\r\n            ...copyRow,\r\n            [cellKey]: cellData,\r\n          };\r\n\r\n          let addedKey = null;\r\n          for (let index = 1; index <= cellToAdd; index++) {\r\n            const [keyAlpha, keyNum] = cellKey.split(\"\");\r\n            const newKey = `${keyAlpha}${\r\n              (addedKey ? addedKey : Number(keyNum)) + 1\r\n            }`;\r\n            addedKey = (addedKey ? addedKey : Number(keyNum)) + 1;\r\n            setActiveCellData({\r\n              ...copyRow[cellKey],\r\n              text: \"\",\r\n            });\r\n            copyRow = {\r\n              ...copyRow,\r\n              [newKey]: {\r\n                ...copyRow[cellKey],\r\n                text: \"\",\r\n              },\r\n            };\r\n\r\n            const sortedEntries = Object.entries(copyRow).sort(\r\n              ([keyA], [keyB]) => {\r\n                const numA = parseInt(keyA.slice(1));\r\n                const numB = parseInt(keyB.slice(1));\r\n                return numA - numB;\r\n              }\r\n            );\r\n\r\n            copyRow = Object.fromEntries(sortedEntries);\r\n          }\r\n        } else if (cellData?.rowSpan) {\r\n          delete cellData?.rowSpan;\r\n          setActiveCellData(cellData);\r\n          copyRow = {\r\n            ...copyRow,\r\n            [cellKey]: cellData,\r\n          };\r\n        }\r\n      } else {\r\n        let cellData = { ...tableCells[rowIndex][cellKey] };\r\n        if (cellData?.colSpan && cellData?.rowSpan) {\r\n          const rowCellToAdd = cellData?.rowSpan - 1;\r\n          const cellToAdd = cellData?.colSpan - 1;\r\n          if (i > Number(rowIndex) && i <= Number(rowIndex) + rowCellToAdd) {\r\n            delete cellData?.rowSpan;\r\n            delete cellData?.colSpan;\r\n\r\n            let addedKey = null;\r\n            // if (copyRow[cellKey]) {\r\n            for (let index = 0; index <= cellToAdd; index++) {\r\n              const [keyAlpha, keyNum] = cellKey.split(\"\");\r\n              const newKey = addedKey\r\n                ? `${keyAlpha}${addedKey ? addedKey : Number(keyNum) + 1}`\r\n                : cellKey;\r\n              addedKey = (addedKey ? addedKey : Number(keyNum)) + 1;\r\n              copyRow = {\r\n                ...copyRow,\r\n                [newKey]: {\r\n                  ...cellData,\r\n                  text: \"\",\r\n                  addedKey,\r\n                },\r\n              };\r\n            }\r\n\r\n            const sortedEntries = Object.entries(copyRow).sort(\r\n              ([keyA], [keyB]) => {\r\n                const numA = parseInt(keyA.slice(1));\r\n                const numB = parseInt(keyB.slice(1));\r\n                return numA - numB;\r\n              }\r\n            );\r\n            copyRow = Object.fromEntries(sortedEntries);\r\n          }\r\n        } else if (cellData?.rowSpan) {\r\n          const cellToAdd = cellData?.rowSpan - 1;\r\n\r\n          delete cellData?.rowSpan;\r\n          if (i > Number(rowIndex) && i <= Number(rowIndex) + cellToAdd) {\r\n            copyRow = {\r\n              ...copyRow,\r\n              [cellKey]: { ...cellData, text: \"\" },\r\n            };\r\n\r\n            const sortedEntries = Object.entries(copyRow).sort(\r\n              ([keyA], [keyB]) => {\r\n                const numA = parseInt(keyA.slice(1));\r\n                const numB = parseInt(keyB.slice(1));\r\n                return numA - numB;\r\n              }\r\n            );\r\n\r\n            copyRow = Object.fromEntries(sortedEntries);\r\n          }\r\n        }\r\n      }\r\n\r\n      return copyRow;\r\n    });\r\n\r\n    setTableCells(updatedCellsData);\r\n    updateNodeJson({\r\n      ...node?.data,\r\n      tableData: {\r\n        ...(node?.data?.tableData || {}),\r\n        tableCells: updatedCellsData,\r\n      },\r\n    });\r\n  };\r\n  const [disableMerge, setDisableMerge] = useState(false);\r\n\r\n  const handleSelectRowCol = (type, data) => {\r\n    if (type === \"row\") {\r\n      let selectedCellKeys;\r\n\r\n      selectedCellKeys = Object.keys(data).map(\r\n        (ck) => `${hoveredRowCol.row}-${ck}`\r\n      );\r\n\r\n      const arrayLength = tableCells.length;\r\n\r\n      const hasMatchingRowSpan = tableCells.some((obj) =>\r\n        Object.values(obj).some((value) => value.rowSpan === arrayLength)\r\n      );\r\n\r\n      if (hasMatchingRowSpan) {\r\n        setDisableMerge(true);\r\n      } else {\r\n        setDisableMerge(false);\r\n      }\r\n      setMultiActiveCells(selectedCellKeys);\r\n    } else {\r\n      let selectableCellsKey = [];\r\n      for (let index = 0; index < tableCells.length; index++) {\r\n        selectableCellsKey.push(`${index}-${data}`);\r\n      }\r\n\r\n      const hasSingleKeyObject = tableCells.some(\r\n        (obj) => Object.keys(obj).length === 1\r\n      );\r\n\r\n      if (hasSingleKeyObject) {\r\n        setDisableMerge(true);\r\n      } else {\r\n        setDisableMerge(false);\r\n      }\r\n\r\n      // const isAnyObjectMissingProperties = tableCells.some(\r\n      //   (item) => Object.keys(item).length < maxPropertyCount\r\n      // );\r\n      // // const rowKeys = Object.keys(tableCells[1]).length;\r\n      // //     const expectedLength = Object.keys(tableCells[0]).length;\r\n\r\n      // //     if (rowKeys === expectedLength) {\r\n      // //       setDisableMerge(false);\r\n      // //     } else {\r\n      // //       setDisableMerge(true);\r\n      // //     }\r\n      setMultiActiveCells(selectableCellsKey);\r\n    }\r\n    setActiveCellData({});\r\n    setActiveCell(\"\");\r\n    setSelectedCell(null);\r\n  };\r\n\r\n  const handleChangeMultiCellStyle = (data) => {\r\n    let updatedTableCells = [...tableCells];\r\n    multiActiveCells.forEach((activeCellKey) => {\r\n      const [rowI, cellKey] = activeCellKey.split(\"-\");\r\n      let updatedRow = { ...updatedTableCells[rowI] };\r\n      updatedRow[cellKey] = {\r\n        ...updatedRow[cellKey],\r\n        ...data,\r\n      };\r\n\r\n      setActiveCellData(updatedRow[cellKey]);\r\n      updatedTableCells[rowI] = updatedRow;\r\n    });\r\n    setTableCells(updatedTableCells);\r\n    updateNodeJson({\r\n      ...node.data,\r\n      tableData: {\r\n        ...node.data.tableData,\r\n        tableCells: updatedTableCells,\r\n      },\r\n    });\r\n  };\r\n\r\n  const checkAllSelectedCellHasKey = useCallback(\r\n    (keyName = \"\") => {\r\n      let hasKey = true;\r\n      let value = undefined;\r\n      let hasSameValue = true;\r\n      multiActiveCells.forEach((activeCellKey) => {\r\n        const [rowI, cellKey] = activeCellKey.split(\"-\");\r\n\r\n        const selectedCellData = tableCells[rowI][cellKey];\r\n\r\n        if (selectedCellData && keyName in selectedCellData) {\r\n          if (hasKey === true) {\r\n            if (value === undefined) {\r\n              value = selectedCellData[keyName];\r\n            } else if (value !== selectedCellData[keyName]) {\r\n              hasSameValue = false;\r\n            }\r\n          } else {\r\n            hasSameValue = false;\r\n          }\r\n        } else {\r\n          hasKey = false;\r\n        }\r\n      });\r\n\r\n      return {\r\n        hasKey,\r\n        value,\r\n        hasSameValue,\r\n      };\r\n    },\r\n    [multiActiveCells, tableCells]\r\n  );\r\n\r\n  const multiCellTextColor = useMemo(() => {\r\n    const { hasSameValue, value } = checkAllSelectedCellHasKey(\"textColor\");\r\n\r\n    if (multiActiveCells.length > 1 && hasSameValue) return value;\r\n\r\n    return \"rgb(0, 0, 0)\";\r\n  }, [checkAllSelectedCellHasKey, multiActiveCells.length]);\r\n\r\n  const checkSingleRowOrColumn2 = (selectedCells) => {\r\n    const rows = [];\r\n    const cols = [];\r\n\r\n    selectedCells.forEach((cell) => {\r\n      const [row, col] = cell.split(\"-\");\r\n      rows.push(Number(row));\r\n      cols.push(col);\r\n    });\r\n\r\n    const isSingleRow = rows.every((row) => row === rows[0]);\r\n\r\n    const isSingleColumn = cols.every((col) => col === cols[0]);\r\n\r\n    return { isSingleRow, isSingleColumn };\r\n  };\r\n\r\n  const isEntireRowOrCol = useMemo(() => {\r\n    if (multiActiveCells.length > 0) {\r\n      const [rowIndex, cellKey] = multiActiveCells[0].split(\"-\");\r\n      const { isSingleRow, isSingleColumn } =\r\n        checkSingleRowOrColumn2(multiActiveCells);\r\n\r\n      if (isSingleRow) {\r\n        let colSpanCount = 0;\r\n        let rowSpanCount = 0;\r\n        Object.keys(tableCells[rowIndex]).forEach((cellK) => {\r\n          if (\r\n            tableCells[rowIndex][cellK] &&\r\n            \"colSpan\" in tableCells[rowIndex][cellK]\r\n          ) {\r\n            colSpanCount += tableCells[rowIndex][cellK]?.colSpan - 1;\r\n          }\r\n\r\n          if (\r\n            tableCells[rowIndex][cellK] &&\r\n            \"rowSpan\" in tableCells[rowIndex][cellK]\r\n          ) {\r\n            rowSpanCount += tableCells[rowIndex][cellK]?.rowSpan - 1;\r\n          }\r\n        });\r\n\r\n        let maxLength = 0;\r\n\r\n        tableCells.forEach((obj) => {\r\n          const keysLength = Object.keys(obj).length;\r\n          if (keysLength > maxLength) {\r\n            maxLength = keysLength;\r\n          }\r\n        });\r\n\r\n        if (\r\n          rowSpanCount <= 0 &&\r\n          colSpanCount <= 0 &&\r\n          multiActiveCells.length === maxLength\r\n        ) {\r\n          return { isEntireRowSelected: true, isEntireColumnSelected: false };\r\n        } else {\r\n          if (colSpanCount > 0 && rowSpanCount <= 0) {\r\n            if (colSpanCount + multiActiveCells.length !== maxLength) {\r\n              return {\r\n                isEntireRowSelected: false,\r\n                isEntireColumnSelected: false,\r\n              };\r\n            } else if (\r\n              Object.keys(tableCells[rowIndex]).length ===\r\n              multiActiveCells.length\r\n            ) {\r\n              return {\r\n                isEntireRowSelected: true,\r\n                isEntireColumnSelected: false,\r\n              };\r\n            } else if (colSpanCount + multiActiveCells.length === maxLength) {\r\n              return {\r\n                isEntireRowSelected: true,\r\n                isEntireColumnSelected: false,\r\n              };\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      if (isSingleColumn) {\r\n        let maxLength = 0;\r\n\r\n        tableCells.forEach((obj) => {\r\n          if (Object.keys(obj).includes(cellKey)) {\r\n            maxLength += 1;\r\n          }\r\n        });\r\n\r\n        let colSpanCount = 0;\r\n        let rowSpanCount = 0;\r\n\r\n        for (let i = 0; i <= tableCells.length - 1; i++) {\r\n          if (tableCells[i][cellKey]) {\r\n            if (tableCells[i][cellKey]?.rowSpan) {\r\n              rowSpanCount += tableCells[i][cellKey]?.rowSpan - 1;\r\n            }\r\n\r\n            if (tableCells[i][cellKey]?.colSpan) {\r\n              colSpanCount += tableCells[i][cellKey]?.colSpan - 1;\r\n            }\r\n          }\r\n        }\r\n\r\n        if (\r\n          rowSpanCount <= 0 &&\r\n          colSpanCount <= 0 &&\r\n          maxLength === multiActiveCells.length\r\n        ) {\r\n          return { isEntireRowSelected: false, isEntireColumnSelected: true };\r\n        } else {\r\n          if (\r\n            rowSpanCount > 0 &&\r\n            rowSpanCount + maxLength === tableCells.length\r\n          ) {\r\n            return { isEntireRowSelected: false, isEntireColumnSelected: true };\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return { isEntireRowSelected: false, isEntireColumnSelected: false };\r\n  }, [multiActiveCells, tableCells]);\r\n\r\n  const handleColumDelete = () => {\r\n    let selectableCellsKey = [];\r\n    for (let index = 0; index < tableCells.length; index++) {\r\n      selectableCellsKey.push(`${index}-${columnPop}`);\r\n    }\r\n    const cellKey = selectableCellsKey[0].split(\"-\")[1];\r\n    const updatedTableCells = tableCells?.map((row) => {\r\n      let copyRow = { ...row };\r\n      delete copyRow[cellKey];\r\n      return copyRow;\r\n    });\r\n\r\n    setTableCells(updatedTableCells);\r\n    updateNodeJson({\r\n      ...node.data,\r\n      tableData: {\r\n        ...node.data.tableData,\r\n        tableCells: updatedTableCells,\r\n      },\r\n    });\r\n    setIsPopoverOpen(false);\r\n  };\r\n\r\n  const handleClickDeleteRowCol = () => {\r\n    if (multiActiveCells.length > 0) {\r\n      let updatedNodes = getNodes();\r\n\r\n      if (isEntireRowOrCol.isEntireRowSelected) {\r\n        const rowIndex = multiActiveCells[0].split(\"-\")[0];\r\n        const updatedTableCells = tableCells.filter(\r\n          (_, i) => i !== Number(rowIndex)\r\n        );\r\n        const removedRow = tableCells[Number(rowIndex)];\r\n\r\n        // Calculate the maximum height of cells in the removed row\r\n        const maxHeight = Object.values(removedRow).reduce(\r\n          (max, cell) => Math.max(max, cell.height),\r\n          0\r\n        );\r\n\r\n        if (updatedTableCells.length > 0) {\r\n          setNodes((nds) => {\r\n            updatedNodes = nds.map((n) => {\r\n              if (n.id === node.id) {\r\n                const newHeight = n.height - maxHeight;\r\n                if (newHeight >= (n.style.minHeight || 0)) {\r\n                  return {\r\n                    ...n,\r\n                    height: newHeight,\r\n                    data: {\r\n                      ...n.data,\r\n                      height: newHeight,\r\n                      tableData: {\r\n                        ...n.data.tableData,\r\n                        tableCells: updatedTableCells,\r\n                      },\r\n                    },\r\n                    style: {\r\n                      ...n.style,\r\n                      height: newHeight,\r\n                    },\r\n                  };\r\n                } else {\r\n                  return {\r\n                    ...n,\r\n                    height: newHeight,\r\n                    data: {\r\n                      ...n.data,\r\n                      height: newHeight,\r\n                      tableData: {\r\n                        ...n.data.tableData,\r\n                        tableCells: updatedTableCells,\r\n                      },\r\n                    },\r\n                    style: {\r\n                      ...n.style,\r\n                      height: newHeight,\r\n                      minHeight: newHeight,\r\n                    },\r\n                  };\r\n                }\r\n              }\r\n\r\n              // Move child nodes in the deleted row upward\r\n              if (n.data?.tableCellInfo && n.parentNode === node.id) {\r\n                const cellRowIndex = parseInt(\r\n                  n.data.tableCellInfo.split(\"-\")[1],\r\n                  10\r\n                );\r\n                if (cellRowIndex > rowIndex) {\r\n                  return {\r\n                    ...n,\r\n                    position: {\r\n                      ...n.position,\r\n                      y: n.position.y - maxHeight,\r\n                    },\r\n                  };\r\n                }\r\n              }\r\n              return n;\r\n            });\r\n\r\n            // Remove nodes in the deleted row\r\n            updatedNodes = updatedNodes.filter((n) => {\r\n              if (n.data?.tableCellInfo && n.parentNode === node.id) {\r\n                const cellRowIndex = n.data.tableCellInfo.split(\"-\")[1];\r\n                return cellRowIndex !== rowIndex;\r\n              }\r\n              return true;\r\n            });\r\n\r\n            localStorage.setItem(\r\n              \"architectureJson\",\r\n              JSON.stringify({\r\n                architecture_json: { nodes: updatedNodes, lastEvent: `` },\r\n              })\r\n            );\r\n            return updatedNodes;\r\n          });\r\n\r\n          setMultiActiveCells([]);\r\n          setSelectedCell(null);\r\n          setActiveCell(\"\");\r\n          setActiveCellData({});\r\n          setTableCells(updatedTableCells);\r\n          setCellEditores([]);\r\n        } else {\r\n          // Remove table entirely\r\n          setNodes((nds) => {\r\n            const updatedNodes = nds.filter((n) => n.id !== node.id);\r\n            localStorage.setItem(\r\n              \"architectureJson\",\r\n              JSON.stringify({\r\n                architecture_json: { nodes: updatedNodes, lastEvent: `` },\r\n              })\r\n            );\r\n            return updatedNodes;\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: JSON.parse(user_data || \"{}\")?.user_id,\r\n              },\r\n            },\r\n            id,\r\n            dispatch,\r\n            a_id,\r\n            should_delete: updatedNodes.length === 0,\r\n            takeSnapshot,\r\n          });\r\n        }\r\n      } else if (isEntireRowOrCol.isEntireColumnSelected) {\r\n        const cellKey = multiActiveCells[0].split(\"-\")[1];\r\n        const updatedTableCells = tableCells.map((row) => {\r\n          const newRow = { ...row };\r\n          delete newRow[cellKey];\r\n          return newRow;\r\n        });\r\n\r\n        // Get max width of deleted column\r\n        const removedCol = tableCells\r\n          .map((row) => row[cellKey])\r\n          .filter((cell) => cell);\r\n        const maxWidth = removedCol.reduce(\r\n          (max, cell) => Math.max(max, cell.width),\r\n          0\r\n        );\r\n\r\n        setNodes((nds) => {\r\n          updatedNodes = nds.map((n) => {\r\n            if (n.id === node.id) {\r\n              const newWidth = n.width - maxWidth;\r\n              if (newWidth >= (n.style.minWidth || 0)) {\r\n                return {\r\n                  ...n,\r\n                  width: newWidth,\r\n                  data: {\r\n                    ...n.data,\r\n                    tableData: {\r\n                      ...n.data.tableData,\r\n                      tableCells: updatedTableCells,\r\n                    },\r\n                  },\r\n                  style: {\r\n                    ...n.style,\r\n                    width: newWidth,\r\n                    minWidth: Math.max(newWidth, n.style.minWidth || 0),\r\n                  },\r\n                };\r\n              } else {\r\n                return {\r\n                  ...n,\r\n                  width: newWidth,\r\n                  data: {\r\n                    ...n.data,\r\n                    tableData: {\r\n                      ...n.data.tableData,\r\n                      tableCells: updatedTableCells,\r\n                    },\r\n                  },\r\n                  style: {\r\n                    ...n.style,\r\n                    width: newWidth,\r\n                    minWidth: newWidth,\r\n                  },\r\n                };\r\n              }\r\n            }\r\n\r\n            // Move child nodes in deleted column to the left\r\n            if (n.data?.tableCellInfo && n.parentNode === node.id) {\r\n              const cellColKey = n.data.tableCellInfo.split(\"-\")[2];\r\n              if (cellColKey > cellKey) {\r\n                return {\r\n                  ...n,\r\n                  position: {\r\n                    ...n.position,\r\n                    x: n.position.x - maxWidth,\r\n                  },\r\n                };\r\n              }\r\n            }\r\n            return n;\r\n          });\r\n\r\n          // Remove nodes in the deleted column\r\n          updatedNodes = updatedNodes.filter((n) => {\r\n            if (n.data?.tableCellInfo && n.parentNode === node.id) {\r\n              const cellColKey = n.data.tableCellInfo.split(\"-\")[2];\r\n              return cellColKey !== cellKey;\r\n            }\r\n            return true;\r\n          });\r\n\r\n          localStorage.setItem(\r\n            \"architectureJson\",\r\n            JSON.stringify({\r\n              architecture_json: { nodes: updatedNodes, lastEvent: `` },\r\n            })\r\n          );\r\n          return updatedNodes;\r\n        });\r\n\r\n        setTableCells(updatedTableCells);\r\n      }\r\n\r\n      // Update JSON\r\n      const search = new URLSearchParams(location.search);\r\n      const a_id = search.get(\"a_id\");\r\n      console.log(updatedNodes, \"updatedNodes\");\r\n\r\n      updateJson({\r\n        json: {\r\n          architecture_json: {\r\n            nodes: updatedNodes,\r\n            lastUpdatedBy: JSON.parse(user_data || \"{}\")?.user_id,\r\n          },\r\n        },\r\n        id,\r\n        dispatch,\r\n        a_id,\r\n        takeSnapshot,\r\n      });\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (!node?.selected) {\r\n      setIsInputVisible(false);\r\n      setCellEditores([]);\r\n      setActiveCell(\"\");\r\n      setIsCellShow(\"\");\r\n      setActiveCellData({});\r\n      setShowTableVariations(false);\r\n      setShowBgColor(false);\r\n      setShowBorderColor(false);\r\n      setShowFontFamily(false);\r\n      setShowFontSizeOpt(false);\r\n      setShowTextDecoration(false);\r\n      setShowAlignment(false);\r\n      setShowTextColor(false);\r\n      setShowTableMoreOptions(false);\r\n      setMultiActiveCells([]);\r\n      setHoveredRowCol({\r\n        row: null,\r\n        col: null,\r\n      });\r\n    }\r\n  }, [node?.selected]);\r\n\r\n  const tableHasRowColSpan = () => {\r\n    let hasColSpan = false;\r\n    let hasRowSpan = false;\r\n\r\n    tableCells.forEach((row) => {\r\n      Object.keys(row).forEach((cellKey) => {\r\n        if (row[cellKey]?.rowSpan) hasRowSpan = true;\r\n\r\n        if (row[cellKey]?.colSpan) hasColSpan = true;\r\n      });\r\n    });\r\n\r\n    return { hasColSpan, hasRowSpan };\r\n  };\r\n\r\n  function findLatestColSpanKey(object, startKey) {\r\n    const startKeyIndex = startKey.replace(\"A\", \"\");\r\n    let keys = Object.keys(object);\r\n    let colSpanColKeys = [];\r\n    let nearestColSpanKey = null;\r\n\r\n    keys.forEach((key) => {\r\n      if (object[key]?.colSpan) {\r\n        colSpanColKeys.push(key);\r\n      }\r\n    });\r\n\r\n    colSpanColKeys.forEach((key) => {\r\n      const currKeyIndex = key.replace(\"A\", \"\");\r\n      if (Number(currKeyIndex) < Number(startKeyIndex)) {\r\n        if (nearestColSpanKey === null) {\r\n          nearestColSpanKey = `A${currKeyIndex}`;\r\n        } else {\r\n          const nearKeyIndex = nearestColSpanKey.replace(\"A\", \"\");\r\n          if (Number(currKeyIndex) > Number(nearKeyIndex)) {\r\n            nearestColSpanKey = `A${currKeyIndex}`;\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    return nearestColSpanKey;\r\n  }\r\n\r\n  const handleAddColumnAfter = (colKey) => {\r\n    const { hasColSpan } = tableHasRowColSpan();\r\n    let updatedCellData = [...tableCells];\r\n    if (!hasColSpan) {\r\n      updatedCellData = node?.data?.tableData?.tableCells.map((row) => {\r\n        let keys = Object.keys(row);\r\n        let updatedRow = {};\r\n\r\n        for (let i = 0; i < keys.length; i++) {\r\n          let currentKey = keys[i];\r\n\r\n          if (currentKey === colKey) {\r\n            const previousEditorHTML = row[currentKey]?.editorHTML || \"\";\r\n\r\n            const defaultText = row[currentKey]?.defaultText || \"\";\r\n            const parser = new DOMParser();\r\n            const doc = parser.parseFromString(previousEditorHTML, \"text/html\");\r\n            const updateTextRecursively = (element) => {\r\n              if (element.nodeType === Node.ELEMENT_NODE) {\r\n                element.childNodes.forEach((child) =>\r\n                  updateTextRecursively(child)\r\n                );\r\n              } else if (element.nodeType === Node.TEXT_NODE) {\r\n                element.textContent = defaultText;\r\n              }\r\n            };\r\n\r\n            updateTextRecursively(doc.body);\r\n\r\n            const updatedHTML = doc.body.innerHTML;\r\n\r\n            updatedRow[currentKey] = row[currentKey];\r\n            let newKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n            const height = row[currentKey]?.height || 100;\r\n            const width = row[currentKey]?.width || 100;\r\n            updatedRow[newKey] = {\r\n              ...row[currentKey],\r\n              text: row[currentKey]?.defaultText || \"\",\r\n              width,\r\n              height,\r\n              editorHTML: updatedHTML,\r\n            };\r\n          } else if (\r\n            parseInt(currentKey.slice(1)) > parseInt(colKey.slice(1))\r\n          ) {\r\n            let shiftedKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n            updatedRow[shiftedKey] = row[currentKey];\r\n          } else {\r\n            updatedRow[currentKey] = row[currentKey];\r\n          }\r\n        }\r\n        return updatedRow;\r\n      });\r\n    } else if (hasColSpan) {\r\n      updatedCellData = node?.data?.tableData?.tableCells.map((row) => {\r\n        let keys = Object.keys(row);\r\n        let updatedRow = {};\r\n        let rowHasColSpan = false;\r\n        let colSpanColKeys = [];\r\n\r\n        keys.forEach((key) => {\r\n          if (row[key]?.colSpan) {\r\n            rowHasColSpan = true;\r\n            colSpanColKeys.push(key);\r\n          }\r\n        });\r\n\r\n        if (!rowHasColSpan) {\r\n          for (let i = 0; i < keys.length; i++) {\r\n            let currentKey = keys[i];\r\n\r\n            if (currentKey === colKey) {\r\n              const previousEditorHTML = row[currentKey]?.editorHTML || \"\";\r\n\r\n              const defaultText = row[currentKey]?.defaultText || \"\";\r\n              const parser = new DOMParser();\r\n              const doc = parser.parseFromString(\r\n                previousEditorHTML,\r\n                \"text/html\"\r\n              );\r\n              const updateTextRecursively = (element) => {\r\n                if (element.nodeType === Node.ELEMENT_NODE) {\r\n                  element.childNodes.forEach((child) =>\r\n                    updateTextRecursively(child)\r\n                  );\r\n                } else if (element.nodeType === Node.TEXT_NODE) {\r\n                  element.textContent = defaultText;\r\n                }\r\n              };\r\n\r\n              updateTextRecursively(doc.body);\r\n\r\n              const updatedHTML = doc.body.innerHTML;\r\n              updatedRow[currentKey] = row[currentKey];\r\n\r\n              let newKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n\r\n              updatedRow[newKey] = {\r\n                ...row[currentKey],\r\n                text: row[currentKey]?.defaultText,\r\n                width: row[currentKey]?.width || 100,\r\n                height: row[currentKey]?.height || 100,\r\n                editorHTML: updatedHTML,\r\n              };\r\n            } else if (\r\n              parseInt(currentKey.slice(1)) > parseInt(colKey.slice(1))\r\n            ) {\r\n              let shiftedKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n              updatedRow[shiftedKey] = row[currentKey];\r\n            } else {\r\n              updatedRow[currentKey] = row[currentKey];\r\n            }\r\n          }\r\n        } else if (rowHasColSpan) {\r\n          for (let i = 0; i < keys.length; i++) {\r\n            let currentKey = keys[i];\r\n            if (currentKey === colKey) {\r\n              if (colSpanColKeys.includes(currentKey)) {\r\n                updatedRow[currentKey] = {\r\n                  ...row[currentKey],\r\n                  colSpan: row[currentKey]?.colSpan + 1,\r\n                };\r\n              } else {\r\n                updatedRow[currentKey] = row[currentKey];\r\n                let newKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n                updatedRow[newKey] = {\r\n                  ...row[currentKey],\r\n                  text: \"\",\r\n                  width: 100,\r\n                  height: row[currentKey]?.height || 100,\r\n                };\r\n              }\r\n            } else if (\r\n              parseInt(currentKey.slice(1)) > parseInt(colKey.slice(1))\r\n            ) {\r\n              let shiftedKey = `A${parseInt(currentKey.slice(1)) + 1}`;\r\n              updatedRow[shiftedKey] = row[currentKey];\r\n            } else {\r\n              updatedRow[currentKey] = row[currentKey];\r\n            }\r\n          }\r\n        }\r\n\r\n        if (!updatedRow[colKey]) {\r\n          const lastColSpan = findLatestColSpanKey(updatedRow, colKey);\r\n\r\n          if (lastColSpan) {\r\n            updatedRow[lastColSpan] = {\r\n              ...updatedRow[lastColSpan],\r\n              colSpan: updatedRow[lastColSpan]?.colSpan + 1,\r\n            };\r\n          }\r\n        }\r\n\r\n        return updatedRow;\r\n      });\r\n    }\r\n\r\n    let updatedNodes = getNodes();\r\n    let updatedNode;\r\n\r\n    const maxCellsRow = updatedCellData.reduce((maxRow, currentRow) => {\r\n      return Object.keys(currentRow).length > Object.keys(maxRow).length\r\n        ? currentRow\r\n        : maxRow;\r\n    }, updatedCellData[0]);\r\n\r\n    const totalWidth = Object.keys(maxCellsRow).reduce((sum, cellKey) => {\r\n      const maxColumnWidth = Math.max(\r\n        ...updatedCellData.map((row) => row[cellKey]?.width || 0)\r\n      );\r\n      return sum + maxColumnWidth;\r\n    }, 0);\r\n\r\n    setNodes((nds) => {\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: nds,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      updatedNodes = nds.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          const updatedHeaders = [\r\n            ...n?.data?.tableData?.headers,\r\n            {\r\n              text: Object.keys(updatedCellData[0]).map((key) => ({\r\n                text: key,\r\n              })),\r\n            },\r\n          ];\r\n          updatedNode = {\r\n            ...n,\r\n            selected: true,\r\n            data: {\r\n              ...n?.data,\r\n              rowsAndCols: {\r\n                ...n.data.rowsAndCols,\r\n                col: n.data.rowsAndCols.col + 1,\r\n              },\r\n              tableData: {\r\n                ...(n?.data?.tableData || {}),\r\n                rowsAndCols: {\r\n                  ...n.data.tableData.rowsAndCols,\r\n                  col: n.data.tableData.rowsAndCols.col + 1,\r\n                },\r\n                tableCells: updatedCellData,\r\n                headers: updatedHeaders,\r\n              },\r\n              width: totalWidth + 5,\r\n              style: {\r\n                ...n.data.style,\r\n                width: totalWidth + 5,\r\n              },\r\n            },\r\n            style: {\r\n              ...n.style,\r\n              width: totalWidth + 5,\r\n            },\r\n            width: totalWidth + 5,\r\n          };\r\n\r\n          return updatedNode;\r\n        }\r\n        return n;\r\n      });\r\n\r\n      return updatedNodes;\r\n    });\r\n    setTableCells(updatedCellData);\r\n\r\n    const search = new URLSearchParams(location.search);\r\n    const a_id = search.get(\"a_id\");\r\n    let parsedData = {};\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n    updateJson({\r\n      json: {\r\n        architecture_json: {\r\n          nodes: updatedNodes,\r\n          lastUpdatedBy: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n    updateEdgeHandles();\r\n  };\r\n  const [isPopoverOpen, setIsPopoverOpen] = useState(false);\r\n  const handlePopoverOpen = (event) => {\r\n    if (anchorEl === null && !isPopoverOpen) {\r\n      setAnchorEl(event.currentTarget);\r\n      setIsPopoverOpen(true);\r\n    }\r\n  };\r\n  // const tableRef = useRef(null);\r\n\r\n  const handlePopoverClose = () => {\r\n    setIsPopoverOpen(false);\r\n    setTimeout(() => setAnchorEl(null), 200);\r\n  };\r\n  const handleAddColumnAtStart = (colKey) => {\r\n    let updatedCellsData = tableCells.map((row) => {\r\n      let updatedRowData = {};\r\n      const rowKeys = Object.keys(row);\r\n      updatedRowData[rowKeys[0]] = { ...row[rowKeys[0]], text: \"\" };\r\n\r\n      if (updatedRowData[rowKeys[0]]?.colSpan) {\r\n        delete updatedRowData[rowKeys[0]]?.colSpan;\r\n      }\r\n\r\n      for (let i = 1; i <= rowKeys.length; i++) {\r\n        if (rowKeys[i]) {\r\n          updatedRowData[rowKeys[i]] = row[rowKeys[i - 1]];\r\n        } else {\r\n          const lastColKeyNum = rowKeys[rowKeys.length - 1].replace(\"A\", \"\");\r\n          updatedRowData[`A${Number(lastColKeyNum) + 1}`] = row[rowKeys[i - 1]];\r\n        }\r\n      }\r\n\r\n      return updatedRowData;\r\n    });\r\n\r\n    let updatedNodes = getNodes();\r\n    let updatedNode;\r\n\r\n    const maxCellsRow = updatedCellsData.reduce((maxRow, currentRow) => {\r\n      return Object.keys(currentRow).length > Object.keys(maxRow).length\r\n        ? currentRow\r\n        : maxRow;\r\n    }, updatedCellsData[0]);\r\n\r\n    const totalWidth = Object.keys(maxCellsRow).reduce((sum, cellKey) => {\r\n      const maxColumnWidth = Math.max(\r\n        ...updatedCellsData.map((row) => row[cellKey]?.width || 0)\r\n      );\r\n      return sum + maxColumnWidth;\r\n    }, 0);\r\n\r\n    setNodes((nds) => {\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: nds,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n      updatedNodes = nds.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          const updatedHeaders = [\r\n            ...n?.data?.tableData?.headers,\r\n            {\r\n              text: Object.keys(updatedCellsData[0]).map((key) => ({\r\n                text: key,\r\n              })),\r\n            },\r\n          ];\r\n          updatedNode = {\r\n            ...n,\r\n            selected: true,\r\n            data: {\r\n              ...n?.data,\r\n              rowsAndCols: {\r\n                ...n.data.rowsAndCols,\r\n                col: n.data.rowsAndCols.col + 1,\r\n              },\r\n              tableData: {\r\n                ...(n?.data?.tableData || {}),\r\n                rowsAndCols: {\r\n                  ...n.data.tableData.rowsAndCols,\r\n                  col: n.data.tableData.rowsAndCols.col + 1,\r\n                },\r\n                tableCells: updatedCellsData,\r\n                headers: updatedHeaders,\r\n              },\r\n              width: totalWidth + 5,\r\n              style: {\r\n                ...n.data.style,\r\n                width: totalWidth + 5,\r\n              },\r\n            },\r\n            style: {\r\n              ...n.style,\r\n              width: totalWidth + 5,\r\n            },\r\n          };\r\n\r\n          return updatedNode;\r\n        }\r\n        return n;\r\n      });\r\n\r\n      return updatedNodes;\r\n    });\r\n    setTableCells(updatedCellsData);\r\n\r\n    const search = new URLSearchParams(location.search);\r\n    const a_id = search.get(\"a_id\");\r\n    let parsedData = {};\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n    updateJson({\r\n      json: {\r\n        architecture_json: {\r\n          nodes: updatedNodes,\r\n          lastUpdatedBy: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n    updateEdgeHandles();\r\n  };\r\n  let maxLength = 0;\r\n  const maxRowLength = tableCells\r\n    ?.map((obj) => {\r\n      const keysLength = Object.keys(obj).length;\r\n      if (keysLength > maxLength) {\r\n        maxLength = keysLength;\r\n        return keysLength;\r\n      }\r\n\r\n      return 0;\r\n    })\r\n    .reduce((perv, current) => current + perv, 0);\r\n\r\n  const handleAddRowBetween = (place, index) => {\r\n    if (index < 0 || index >= tableCells?.length) {\r\n      return;\r\n    }\r\n\r\n    const insertIndex = place === \"after\" ? index + 1 : index;\r\n\r\n    const keys = Array.from(new Set(tableCells.flatMap(Object.keys)));\r\n\r\n    const newRowData = {};\r\n    keys.forEach((key) => {\r\n      const refCellData = { ...(tableCells[index][key] || {}) };\r\n      const row = tableCells[index];\r\n\r\n      if (Object.keys(refCellData).length === 0) {\r\n        return;\r\n      }\r\n\r\n      // if (refCellData.rowSpan) delete refCellData.rowSpan;\r\n      // if (refCellData.colSpan) delete refCellData.colSpan;\r\n\r\n      const previousEditorHTML = row[key]?.editorHTML || \"\";\r\n\r\n      const defaultText = row[key]?.defaultText || \"\";\r\n      const parser = new DOMParser();\r\n      const doc = parser.parseFromString(previousEditorHTML, \"text/html\");\r\n      const updateTextRecursively = (element) => {\r\n        if (element.nodeType === Node.ELEMENT_NODE) {\r\n          element.childNodes.forEach((child) => updateTextRecursively(child));\r\n        } else if (element.nodeType === Node.TEXT_NODE) {\r\n          element.textContent = defaultText;\r\n        }\r\n      };\r\n      updateTextRecursively(doc.body);\r\n      const updatedHTML = doc.body.innerHTML;\r\n\r\n      newRowData[key] = {\r\n        ...refCellData,\r\n        backgroundColor: row[key]?.backgroundColor || \"\",\r\n        text: row[key]?.defaultText || \"\",\r\n        editorHTML: updatedHTML,\r\n      };\r\n    });\r\n\r\n    const updatedTableData = tableCells?.map((row, rowIndex) => {\r\n      const updatedRow = { ...row };\r\n\r\n      Object.keys(row).forEach((colKey) => {\r\n        const cell = row[colKey];\r\n\r\n        if (\r\n          cell.rowSpan &&\r\n          rowIndex < insertIndex &&\r\n          rowIndex + cell.rowSpan > insertIndex\r\n        ) {\r\n          updatedRow[colKey] = { ...cell, rowSpan: cell.rowSpan + 1 };\r\n        }\r\n      });\r\n\r\n      return updatedRow;\r\n    });\r\n\r\n    const previousRow = tableCells[index];\r\n    const skipKeys = Object.keys(previousRow).filter((key) => {\r\n      const cell = previousRow[key];\r\n      return (\r\n        cell.rowSpan &&\r\n        index < insertIndex &&\r\n        insertIndex < index + cell.rowSpan\r\n      );\r\n    });\r\n\r\n    skipKeys.forEach((key) => {\r\n      delete newRowData[key];\r\n    });\r\n\r\n    updatedTableData.splice(insertIndex, 0, newRowData);\r\n\r\n    let updatedNodes = getNodes();\r\n    let updatedNode;\r\n\r\n    const totalHeight = updatedTableData.reduce((totalHeight, row) => {\r\n      const rowHeight = Math.max(\r\n        ...Object.values(row).map((cell) => cell?.height || 0)\r\n      );\r\n      return totalHeight + rowHeight;\r\n    }, 0);\r\n\r\n    setNodes((nds) => {\r\n      localStorage.setItem(\r\n        \"architectureJson\",\r\n        JSON.stringify({\r\n          architecture_json: {\r\n            nodes: nds,\r\n            lastEvent: ``,\r\n          },\r\n        })\r\n      );\r\n\r\n      updatedNodes = nds?.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          updatedNode = {\r\n            ...n,\r\n            selected: true,\r\n            data: {\r\n              ...n?.data,\r\n              rowsAndCols: {\r\n                ...n.data.rowsAndCols,\r\n                col: n.data.rowsAndCols.col + 1,\r\n              },\r\n              tableCells: updatedTableData,\r\n              tableData: {\r\n                ...(n?.data?.tableData || {}),\r\n                rowsAndCols: {\r\n                  ...n.data.tableData.rowsAndCols,\r\n                  col: n.data.tableData.rowsAndCols.col + 1,\r\n                },\r\n                tableCells: updatedTableData,\r\n              },\r\n              height: totalHeight + 5,\r\n              style: {\r\n                ...n.data.style,\r\n                height: totalHeight + 5,\r\n              },\r\n            },\r\n            style: {\r\n              ...n.style,\r\n              height: totalHeight + 5,\r\n            },\r\n          };\r\n\r\n          return updatedNode;\r\n        }\r\n        return n;\r\n      });\r\n      setTableCells(updatedTableData);\r\n      return updatedNodes;\r\n    });\r\n\r\n    const search = new URLSearchParams(location.search);\r\n    const a_id = search.get(\"a_id\");\r\n    let parsedData = {};\r\n    if (user_data) {\r\n      parsedData = JSON.parse(user_data);\r\n    }\r\n    updateJson({\r\n      json: {\r\n        architecture_json: {\r\n          nodes: updatedNodes,\r\n          lastUpdatedBy: parsedData?.user_id,\r\n        },\r\n      },\r\n      id,\r\n      dispatch,\r\n      undo,\r\n      a_id,\r\n      takeSnapshot,\r\n    });\r\n    updateEdgeHandles();\r\n  };\r\n\r\n  const debouncedSearch = useMemo(\r\n    () =>\r\n      debounce((updatedNodes) => {\r\n        const search = new URLSearchParams(location.search);\r\n        const a_id = search.get(\"a_id\");\r\n        let parsedData = {};\r\n        if (user_data) {\r\n          parsedData = JSON.parse(user_data);\r\n        }\r\n\r\n        updateJson({\r\n          json: {\r\n            architecture_json: {\r\n              nodes: updatedNodes,\r\n              lastUpdatedBy: parsedData?.user_id,\r\n            },\r\n          },\r\n          id,\r\n          dispatch,\r\n          undo,\r\n          a_id,\r\n          takeSnapshot,\r\n        });\r\n      }, 750),\r\n    []\r\n  );\r\n\r\n  const handleClickRename = () => {\r\n    setIsInputVisible(true);\r\n    if (inputRef.current) {\r\n      inputRef.current.focus();\r\n      inputRef.current.select();\r\n      setIsInputFocused(true);\r\n    }\r\n  };\r\n\r\n  const handleDelete = () => {\r\n    const selectedCellKeys = Object.keys(rowDelete).map(\r\n      (ck) => `${row?.row}-${ck}`\r\n    );\r\n    const rowIndex = selectedCellKeys[0].split(\"-\")[0];\r\n    const updatedTableCells = tableCells.filter(\r\n      (_, i) => i !== Number(rowIndex)\r\n    );\r\n\r\n    if (updatedTableCells.length > 0) {\r\n      setMultiActiveCells([]);\r\n      setSelectedCell(null);\r\n      setActiveCell(\"\");\r\n      setActiveCellData({});\r\n      setTableCells(updatedTableCells);\r\n      setCellEditores([]);\r\n      updateNodeJson({\r\n        ...node.data,\r\n        tableData: {\r\n          ...node.data.tableData,\r\n          tableCells: updatedTableCells,\r\n        },\r\n      });\r\n    } else {\r\n      let parsedData = {};\r\n      if (user_data) {\r\n        parsedData = JSON.parse(user_data);\r\n      }\r\n\r\n      let updatedNodes = getNodes();\r\n\r\n      setNodes((nds) => {\r\n        localStorage.setItem(\r\n          \"architectureJson\",\r\n          JSON.stringify({\r\n            architecture_json: {\r\n              nodes: nds,\r\n              // lastUpdatedBy: parsedData?.user_id,\r\n              lastEvent: ``,\r\n            },\r\n          })\r\n        );\r\n        updatedNodes = nds.filter((n) => n.id !== node.id);\r\n        return updatedNodes;\r\n      });\r\n      const search = new URLSearchParams(location.search);\r\n      const a_id = search.get(\"a_id\");\r\n      updateJson({\r\n        json: {\r\n          architecture_json: {\r\n            nodes: updatedNodes,\r\n            lastUpdatedBy: parsedData?.user_id,\r\n          },\r\n        },\r\n        id,\r\n        dispatch,\r\n        undo,\r\n        a_id,\r\n        should_delete: updatedNodes.length > 0 ? false : true,\r\n        takeSnapshot,\r\n      });\r\n    }\r\n    setIsPopoverOpen(false);\r\n  };\r\n  const handleResizeStartRow = (e, rowIndex) => {\r\n    setIsResizeRowCol(true);\r\n    const startY = e.clientY;\r\n\r\n    // Store initial row heights\r\n    const initialRowHeights = tableCells[rowIndex]\r\n      ? Object.keys(tableCells[rowIndex]).map(\r\n          (key) => tableCells[rowIndex][key]?.height || 50\r\n        )\r\n      : [];\r\n\r\n    setNodes((nds) => {\r\n      return nds?.map((n) =>\r\n        n?.id === node?.id\r\n          ? {\r\n              ...n,\r\n              data: { ...n?.data, height: \"auto\" },\r\n              style: { ...n.style, height: \"auto\" },\r\n              height: \"auto\",\r\n            }\r\n          : n\r\n      );\r\n    });\r\n\r\n    let updatedTableCells;\r\n\r\n    const handleMouseMoveRow = (moveEvent) => {\r\n      const diffY = moveEvent.clientY - startY;\r\n\r\n      setTableCells((prev) => {\r\n        updatedTableCells = prev.map((row, i) => {\r\n          if (i === rowIndex) {\r\n            const updatedRow = {};\r\n            Object.keys(row).forEach((cellKey, colIndex) => {\r\n              updatedRow[cellKey] = {\r\n                ...row[cellKey],\r\n                height: Math.max(20, initialRowHeights[colIndex] + diffY),\r\n              };\r\n            });\r\n            return updatedRow;\r\n          }\r\n          return row;\r\n        });\r\n\r\n        return updatedTableCells;\r\n      });\r\n    };\r\n\r\n    const handleMouseUp = () => {\r\n      if (!updatedTableCells) return;\r\n      setIsResizeRowCol(false);\r\n\r\n      setNodes((nds) =>\r\n        nds?.map((n) => {\r\n          if (n?.id === node?.id) {\r\n            const totalHeight = updatedTableCells.reduce(\r\n              (sum, row) =>\r\n                sum +\r\n                Math.max(\r\n                  ...Object.values(row).map((cell) => cell?.height || 0)\r\n                ),\r\n              0\r\n            );\r\n\r\n            return {\r\n              ...n,\r\n              selected: true,\r\n              data: {\r\n                ...n?.data,\r\n                height: totalHeight + 5,\r\n                tableCells: updatedTableCells,\r\n                tableData: {\r\n                  ...(n?.data?.tableData || {}),\r\n                  tableCells: updatedTableCells,\r\n                },\r\n              },\r\n              style: { ...n.style, height: totalHeight + 5 },\r\n              height: totalHeight + 5,\r\n            };\r\n          }\r\n          return n;\r\n        })\r\n      );\r\n\r\n      debouncedUpdateNodeHeightForRow(updatedTableCells); // Pass correct data\r\n\r\n      document.removeEventListener(\"mousemove\", handleMouseMoveRow);\r\n      document.removeEventListener(\"mouseup\", handleMouseUp);\r\n    };\r\n\r\n    document.addEventListener(\"mousemove\", handleMouseMoveRow);\r\n    document.addEventListener(\"mouseup\", handleMouseUp);\r\n  };\r\n\r\n  const findCellHorizontalPosition = (rowIndex, columnKey, tableCells) => {\r\n    let positionX = 0;\r\n    const row = tableCells[rowIndex];\r\n    const columnKeys = Object.keys(row);\r\n\r\n    for (const key of columnKeys) {\r\n      if (key === columnKey) break;\r\n      positionX += row[key]?.width || 100;\r\n    }\r\n\r\n    return positionX;\r\n  };\r\n\r\n  const handleResizeStartCol = (e, rowIndex, columnKey) => {\r\n    setIsResizeRowCol(true);\r\n    const startX = e.clientX;\r\n    let initialColumnWidths = {};\r\n    let diffX = 0;\r\n\r\n    const columnKeys = Object.keys(tableCells[0] || {});\r\n    const currentColumnIndex = columnKeys.indexOf(columnKey);\r\n    const nextColumnKeys = columnKeys.slice(currentColumnIndex + 1);\r\n\r\n    let initialChildPositions = {};\r\n    nodes.forEach((n) => {\r\n      if (\r\n        nextColumnKeys.includes(n.data?.tableCellKey) &&\r\n        n.parentNode === node?.id\r\n      ) {\r\n        initialChildPositions[n.id] = n.position.x;\r\n      }\r\n    });\r\n\r\n    setNodes((nds) => {\r\n      return nds?.map((n) => {\r\n        if (n?.id === node?.id) {\r\n          return {\r\n            ...n,\r\n            data: {\r\n              ...n?.data,\r\n              width: \"auto\",\r\n            },\r\n            style: {\r\n              ...n.style,\r\n              width: \"auto\",\r\n            },\r\n            width: \"auto\",\r\n          };\r\n        }\r\n        return n;\r\n      });\r\n    });\r\n\r\n    setTableCells((prev) => {\r\n      initialColumnWidths = prev.reduce((acc, row) => {\r\n        Object.keys(row).forEach((key) => {\r\n          if (!acc[key]) {\r\n            acc[key] = row[key]?.width || 100;\r\n          }\r\n        });\r\n        return acc;\r\n      }, {});\r\n      return prev;\r\n    });\r\n\r\n    const positionX = findCellHorizontalPosition(\r\n      rowIndex,\r\n      columnKey,\r\n      tableCells\r\n    );\r\n    const childNodes = nodes.filter(\r\n      (n) => n.parentNode === node?.id && n.data?.tableCellKey === columnKey\r\n    );\r\n\r\n    const childNodePositions = childNodes.map((child) => {\r\n      const childX = child.positionAbsolute?.x - node?.xPos;\r\n      return childX - positionX;\r\n    });\r\n\r\n    const maxChildRelativeX = Math.max(...childNodePositions, 0);\r\n    const maxChildWidth = childNodes.reduce((maxWidth, child) => {\r\n      return Math.max(maxWidth, child.width || 0);\r\n    }, 0);\r\n\r\n    let updatedTableCells;\r\n\r\n    const handleMouseMoveCol = (moveEvent) => {\r\n      diffX = moveEvent.clientX - startX;\r\n\r\n      setTableCells((prev) => {\r\n        updatedTableCells = prev?.map((row) => {\r\n          const updatedRow = { ...row };\r\n          if (row[columnKey]) {\r\n            const newWidth = Math.max(\r\n              20,\r\n              initialColumnWidths[columnKey] + diffX\r\n            );\r\n            updatedRow[columnKey] = {\r\n              ...row[columnKey],\r\n              width: Math.max(newWidth, maxChildWidth + maxChildRelativeX),\r\n            };\r\n          }\r\n          return updatedRow;\r\n        });\r\n\r\n        return updatedTableCells;\r\n      });\r\n\r\n      setNodes((nds) => {\r\n        return nds.map((n) => {\r\n          if (\r\n            nextColumnKeys.includes(n.data?.tableCellKey) &&\r\n            n.parentNode === node?.id\r\n          ) {\r\n            console.log(n.position.x, \"n.position.x\");\r\n\r\n            return {\r\n              ...n,\r\n              position: {\r\n                ...n.position,\r\n                x: (initialChildPositions[n.id] || n.position.x) + diffX,\r\n              },\r\n            };\r\n          }\r\n          return n;\r\n        });\r\n      });\r\n    };\r\n\r\n    const handleMouseUp = () => {\r\n      if (!updatedTableCells) return;\r\n      setIsResizeRowCol(false);\r\n\r\n      setNodes((nds) => {\r\n        return nds.map((n) => {\r\n          if (n?.id === node?.id) {\r\n            const maxCellsRow = updatedTableCells.reduce(\r\n              (maxRow, currentRow) =>\r\n                Object.keys(currentRow).length > Object.keys(maxRow).length\r\n                  ? currentRow\r\n                  : maxRow,\r\n              updatedTableCells[0]\r\n            );\r\n\r\n            const totalWidth = Object.keys(maxCellsRow).reduce(\r\n              (sum, cellKey) => {\r\n                const maxColumnWidth = Math.max(\r\n                  ...updatedTableCells?.map((row) => row[cellKey]?.width || 0)\r\n                );\r\n                return sum + maxColumnWidth;\r\n              },\r\n              0\r\n            );\r\n\r\n            return {\r\n              ...n,\r\n              data: {\r\n                ...n?.data,\r\n                width: totalWidth + 5,\r\n                tableCells: updatedTableCells,\r\n                tableData: {\r\n                  ...(n?.data?.tableData || {}),\r\n                  tableCells: updatedTableCells,\r\n                },\r\n              },\r\n              style: {\r\n                ...n.style,\r\n                width: totalWidth + 5,\r\n              },\r\n              width: totalWidth + 5,\r\n            };\r\n          }\r\n\r\n          return n;\r\n        });\r\n      });\r\n\r\n      debouncedUpdateNodeHeightForRow(updatedTableCells);\r\n      document.removeEventListener(\"mousemove\", handleMouseMoveCol);\r\n      document.removeEventListener(\"mouseup\", handleMouseUp);\r\n    };\r\n\r\n    document.addEventListener(\"mousemove\", handleMouseMoveCol);\r\n    document.addEventListener(\"mouseup\", handleMouseUp);\r\n  };\r\n\r\n  const debouncedUpdateNodeHeightForRow = useMemo(\r\n    () =>\r\n      debounce((updatedNodes) => {\r\n        localStorage.setItem(\r\n          \"architectureJson\",\r\n          JSON.stringify({\r\n            architecture_json: {\r\n              nodes: updatedNodes,\r\n              lastEvent: ``,\r\n            },\r\n          })\r\n        );\r\n\r\n        const search = new URLSearchParams(location.search);\r\n        const a_id = search.get(\"a_id\");\r\n        const parsedData = user_data ? JSON.parse(user_data) : {};\r\n        updateJson({\r\n          json: {\r\n            architecture_json: {\r\n              nodes: updatedNodes,\r\n              lastUpdatedBy: parsedData?.user_id,\r\n            },\r\n          },\r\n          id,\r\n          dispatch,\r\n          undo,\r\n          a_id,\r\n          takeSnapshot,\r\n        });\r\n      }, 500),\r\n    [setNodes, location.search, user_data, id, dispatch, undo, takeSnapshot]\r\n  );\r\n\r\n  // const inputWidth = useMemo(() => {\r\n  //   return !isInputFocused\r\n  //     ? inputSpanRef?.current?.offsetWidth >\r\n  //       (currentNode.style.width - 8) * (mainZoomPercentages / 100)\r\n  //       ? mainZoomPercentages === 100\r\n  //         ? currentNode.style.width - 8\r\n  //         : (currentNode.style.width - 8) * (mainZoomPercentages / 100)\r\n  //       : inputSpanRef?.current?.offsetWidth > 1000\r\n  //       ? inputSpanRef?.current?.offsetWidth - 125\r\n  //       : inputSpanRef?.current?.offsetWidth > 600\r\n  //       ? inputSpanRef?.current?.offsetWidth - 75\r\n  //       : inputSpanRef?.current?.offsetWidth > 400\r\n  //       ? inputSpanRef?.current?.offsetWidth - 40\r\n  //       : inputSpanRef?.current?.offsetWidth > 200\r\n  //       ? inputSpanRef?.current?.offsetWidth - 20\r\n  //       : inputSpanRef?.current?.offsetWidth\r\n  //     : inputSpanRef?.current?.offsetWidth > 1000\r\n  //     ? inputSpanRef?.current?.offsetWidth - 125\r\n  //     : inputSpanRef?.current?.offsetWidth > 600\r\n  //     ? inputSpanRef?.current?.offsetWidth - 75\r\n  //     : inputSpanRef?.current?.offsetWidth > 400\r\n  //     ? inputSpanRef?.current?.offsetWidth - 40\r\n  //     : inputSpanRef?.current?.offsetWidth > 200\r\n  //     ? inputSpanRef?.current?.offsetWidth - 20\r\n  //     : inputSpanRef?.current?.offsetWidth;\r\n  // }, [\r\n  //   currentNode.style.width,\r\n  //   isInputFocused,\r\n  //   mainZoomPercentages,\r\n  //   inputSpanRef?.current?.offsetWidth,\r\n  // ]);\r\n  const [isInputVisible, setIsInputVisible] = useState(false);\r\n\r\n  // useEffect(() => {\r\n  //   cellEditors.forEach(({ editor }) => {\r\n  //     if (editor) {\r\n  //       editor.chain().focus();\r\n  //     }\r\n  //   });\r\n  // }, [cellEditors]);\r\n\r\n  return (\r\n    <>\r\n      <NodeToolbar\r\n        isVisible={mainZoomPercentages > 25 ? true : false}\r\n        position={Position.Top}\r\n        align=\"start\"\r\n        style={{\r\n          left: 0,\r\n          top: \"-5px\",\r\n        }}\r\n      >\r\n        <Stack\r\n          sx={{\r\n            width: isInputVisible ? \"100vw\" : currentNode?.style?.width,\r\n            flex: 1,\r\n          }}\r\n        >\r\n          <Stack\r\n            alignItems={\"center\"}\r\n            justifyContent={\"flex-start\"}\r\n            direction={\"row\"}\r\n            sx={{\r\n              width: isInputVisible ? \"100vw\" : currentNode?.style?.width,\r\n              height: node.data.variant === \"section\" ? \"26px\" : \"auto\",\r\n              px: node.data.variant === \"section\" ? \"10px\" : 0,\r\n              color: \"#848382\",\r\n              // left: node.data.variant === \"section\" ? \"-1px\" : 0,\r\n              borderRadius: node.data.variant === \"section\" ? \"6px\" : 0,\r\n              // top: node.data.variant === \"section\" ? \"-25px\" : \"-18px\",\r\n              background:\r\n                node.data.variant === \"section\"\r\n                  ? node.data.style.background\r\n                  : \"transparent\",\r\n              \"& input\": {\r\n                fontSize: \"14px !important\",\r\n                border: \"none !important\",\r\n                outline: \"none !important\",\r\n                background: \"transparent !important\",\r\n                width: \"100% !important\",\r\n                whiteSpace: isInputFocused ? \"normal\" : \"nowrap\",\r\n                overflow: isInputFocused ? \"visible\" : \"hidden\",\r\n                textOverflow: isInputFocused ? \"clip\" : \"ellipsis\",\r\n              },\r\n            }}\r\n          >\r\n            {isInputVisible ? (\r\n              <TextField\r\n                value={node?.data?.tableName}\r\n                ref={inputRef}\r\n                autoFocus\r\n                autoComplete=\"off\"\r\n                onFocus={() => setIsInputFocused(true)}\r\n                onBlur={() => setIsInputFocused(false)}\r\n                onChange={(e) => {\r\n                  let updatedNodes = [];\r\n                  setNodes((prev) => {\r\n                    localStorage.setItem(\r\n                      \"architectureJson\",\r\n                      JSON.stringify({\r\n                        architecture_json: {\r\n                          nodes: prev,\r\n                          // lastUpdatedBy: userData?.user_id,\r\n                          lastEvent: ``,\r\n                        },\r\n                      })\r\n                    );\r\n                    updatedNodes = prev?.map((_) => {\r\n                      if (_?.id === node?.id) {\r\n                        _.data = {\r\n                          ..._.data,\r\n                          tableName: e.target.value,\r\n                        };\r\n                        return _;\r\n                      } else {\r\n                        return _;\r\n                      }\r\n                    });\r\n\r\n                    return updatedNodes;\r\n                  });\r\n                  debouncedSearch(updatedNodes);\r\n                }}\r\n                onClick={(e) => {\r\n                  if (clickTimeout1.current) {\r\n                    clearTimeout(clickTimeout1.current);\r\n                  }\r\n\r\n                  clickTimeout1.current = setTimeout(() => {\r\n                    const input = e.target;\r\n                    const selectionStart = input.selectionStart;\r\n                    const selectionEnd = input.selectionEnd;\r\n\r\n                    if (selectionStart !== selectionEnd) {\r\n                      const clickPosition =\r\n                        e.nativeEvent.offsetX / input.scrollWidth;\r\n                      const cursorIndex = Math.floor(\r\n                        clickPosition * input.value.length\r\n                      );\r\n                      input.setSelectionRange(cursorIndex, cursorIndex);\r\n                    }\r\n                  }, 300);\r\n                }}\r\n                onDoubleClick={(e) => {\r\n                  if (clickTimeout1.current) {\r\n                    clearTimeout(clickTimeout1.current);\r\n                  }\r\n                }}\r\n                sx={{\r\n                  \"& .MuiOutlinedInput-root\": {\r\n                    // width:inputWidth,\r\n                    border: \"none\",\r\n                    padding: \"0px\",\r\n                    \"& fieldset\": {\r\n                      border: \"none\",\r\n                    },\r\n                    \"&:hover fieldset\": {\r\n                      border: \"none\",\r\n                    },\r\n\r\n                    \"& .MuiInputBase-input\": {\r\n                      padding: \"0\",\r\n                      border: \"none\",\r\n                      color: \"#848382 !important\",\r\n                      fontSize: \"14px\",\r\n                      fontWeight: \"400\",\r\n                      resize: \"none\",\r\n                      borderRadius: \"0px\",\r\n                    },\r\n                  },\r\n                }}\r\n                style={{\r\n                  backgroundColor: \"transparent\",\r\n                  border: \"none\",\r\n                  outline: \"none\",\r\n                  width: \"100vw\",\r\n                }}\r\n              />\r\n            ) : (\r\n              <div\r\n                onClick={() => {\r\n                  if (!node?.data?.locked) {\r\n                    setIsInputVisible(true);\r\n                  }\r\n                }}\r\n                style={{\r\n                  color: \"#848382\",\r\n                  resize: \"none\",\r\n                  fontSize: \"14px\",\r\n                  width: currentNode.style.width,\r\n                  whiteSpace: \"nowrap\",\r\n                  overflow: \"hidden\",\r\n                  textOverflow: \"ellipsis\",\r\n                  cursor: \"pointer\",\r\n                  height: \"20px\",\r\n                }}\r\n              >\r\n                {node?.data?.tableName}\r\n              </div>\r\n            )}\r\n            <span\r\n              ref={inputSpanRef}\r\n              style={{\r\n                position: \"absolute\",\r\n                visibility: \"hidden\",\r\n                whiteSpace: \"pre\",\r\n                fontSize: \"14px !important\",\r\n              }}\r\n            >\r\n              {node?.data?.tableName}\r\n            </span>\r\n          </Stack>\r\n        </Stack>\r\n      </NodeToolbar>\r\n      <NodeToolbar\r\n        isVisible={\r\n          !isInputFocused &&\r\n          !isNodeSelectionStarted &&\r\n          (selectedCell || multiActiveCells.length > 0) &&\r\n          node.selected &&\r\n          !node.dragging\r\n            ? true\r\n            : false\r\n        }\r\n        position={Position.Top}\r\n        style={{\r\n          top: \"-40px\",\r\n        }}\r\n      >\r\n        <Box\r\n          display={\"flex\"}\r\n          flexDirection={\"row\"}\r\n          alignItems={\"center\"}\r\n          justifyContent={\"space-between\"}\r\n          gap={\"8px\"}\r\n          px={\"7px\"}\r\n          height={\"48px\"}\r\n          sx={{\r\n            background: \"#FFFFFF\",\r\n            border: \"1px solid #EEEEEE\",\r\n            boxShadow:\r\n              \"0px 4px 6px -2px #10182808, 0px 12px 16px -4px #10182808\",\r\n            position: \"relative\",\r\n            zIndex: 9999,\r\n            borderRadius: \"10px\",\r\n          }}\r\n        >\r\n          {(selectedCell || multiActiveCells.length > 0) && node.selected && (\r\n            <>\r\n              <CustomNameTooltip placement=\"top\" title={\"Table Style\"} arrow>\r\n                <Box ref={tabeleVariationsTypesRef}>\r\n                  <CustomTooltip\r\n                    mt={9}\r\n                    PopperProps={{\r\n                      disablePortal: true,\r\n                    }}\r\n                    onClose={() => setShowTableVariations(false)}\r\n                    open={showTableVariations}\r\n                    disableFocusListener\r\n                    disableHoverListener\r\n                    disableTouchListener\r\n                    title={\r\n                      <Stack\r\n                        sx={{\r\n                          p: \"10px\",\r\n                          borderRadius: \"10px\",\r\n                          boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n                          border: \"1px solid #EFF0F3\",\r\n                          width: \"290px\",\r\n                          background: \"#FFF\",\r\n                        }}\r\n                      >\r\n                        <Stack\r\n                          direction={\"row\"}\r\n                          alignItems={\"center\"}\r\n                          gap={\"10px\"}\r\n                        >\r\n                          <Typography\r\n                            fontSize={\"16.2px\"}\r\n                            fontWeight={600}\r\n                            color={\"#18181B\"}\r\n                            height={\"24px\"}\r\n                          >\r\n                            Table Style\r\n                          </Typography>\r\n                        </Stack>\r\n                        <Stack\r\n                          direction={\"row\"}\r\n                          alignItems={\"center\"}\r\n                          justifyContent={\"space-between\"}\r\n                          flexWrap={\"wrap\"}\r\n                          gap={\"10px\"}\r\n                          mt={\"18px\"}\r\n                          maxHeight={\"calc(100% - 60px)\"}\r\n                          sx={{\r\n                            overflow: \"auto\",\r\n                          }}\r\n                        >\r\n                          {tableVariants?.map((variant, i) => {\r\n                            return (\r\n                              <Stack\r\n                                key={i + 1}\r\n                                alignItems={\"center\"}\r\n                                sx={{\r\n                                  width: \"calc(50% - 5px)\",\r\n                                  border: \"1px solid #E1E1E1\",\r\n                                  borderRadius: \"8px\",\r\n                                  p: \"10px\",\r\n                                  cursor: \"pointer\",\r\n                                  transition: \"all 0.3s\",\r\n                                  \"&:hover\": {\r\n                                    border: `1px solid ${colorsConst?.primaryColor}`,\r\n                                  },\r\n                                }}\r\n                                onClick={() => {\r\n                                  variant.onClick && variant.onClick();\r\n                                }}\r\n                              >\r\n                                <variant.Icon />\r\n                              </Stack>\r\n                            );\r\n                          })}\r\n                        </Stack>\r\n                      </Stack>\r\n                    }\r\n                  >\r\n                    <Stack\r\n                      direction={\"row\"}\r\n                      alignItems={\"center\"}\r\n                      justifyContent={\"space-between\"}\r\n                      height={\"36px\"}\r\n                      width={\"62px\"}\r\n                      borderRadius={\"8px\"}\r\n                      pl={\"6px\"}\r\n                      pr={\"4px\"}\r\n                      sx={{\r\n                        cursor: \"pointer\",\r\n                        transition: \"all 0.3s\",\r\n                        \"&:hover\": {\r\n                          background: \"#F5F5F5\",\r\n                        },\r\n                      }}\r\n                      onClick={() => {\r\n                        setShowTableVariations(!showTableVariations);\r\n                        setShowBgColor(false);\r\n                        setShowBorderColor(false);\r\n                        setShowFontFamily(false);\r\n                        setShowFontSizeOpt(false);\r\n                        setShowTextDecoration(false);\r\n                        setShowAlignment(false);\r\n                        setShowTextColor(false);\r\n                        setShowTableMoreOptions(false);\r\n                      }}\r\n                    >\r\n                      <IcTableOutlined fill={\"#18181B\"} />\r\n                      <IcArrowDown2 fill=\"#18181B\" />\r\n                    </Stack>\r\n                  </CustomTooltip>\r\n                </Box>\r\n              </CustomNameTooltip>\r\n              {!node.data.locked && (\r\n                <Box\r\n                  sx={{\r\n                    height: \"36px\",\r\n                    width: \"1px\",\r\n                    background: \"#EAECF0\",\r\n                  }}\r\n                />\r\n              )}\r\n              {!node.data.locked && tableType !== \"ERD\" && (\r\n                <CustomNameTooltip placement=\"top\" title={\"Add Column\"} arrow>\r\n                  <IconButton\r\n                    sx={{\r\n                      height: \"36px !important\",\r\n                      width: \"36px !important\",\r\n                      borderRadius: \"8px\",\r\n                      transition: \"all 0.3s ease\",\r\n                      bgcolor: \"#FFF\",\r\n                      padding: \"0px\",\r\n                    }}\r\n                    onClick={() => {\r\n                      const lastCellKey = Object.keys(tableCells[0])[\r\n                        Object.keys(tableCells[0]).length - 1\r\n                      ];\r\n                      handleAddColumnAfter(lastCellKey);\r\n                    }}\r\n                  >\r\n                    <IcAddCol />\r\n                  </IconButton>\r\n                </CustomNameTooltip>\r\n              )}\r\n              {!node.data.locked && (\r\n                <CustomNameTooltip placement=\"top\" title={\"Add Row\"} arrow>\r\n                  <IconButton\r\n                    sx={{\r\n                      height: \"36px !important\",\r\n                      width: \"36px !important\",\r\n                      borderRadius: \"8px\",\r\n                      transition: \"all 0.3s ease\",\r\n                      bgcolor: \"#FFF\",\r\n                      padding: \"0px\",\r\n                    }}\r\n                    onClick={() => {\r\n                      handleAddRowBetween(\"after\", tableCells.length - 1);\r\n                    }}\r\n                  >\r\n                    <IcAddRow />\r\n                  </IconButton>\r\n                </CustomNameTooltip>\r\n              )}\r\n\r\n              <Box\r\n                sx={{\r\n                  height: \"36px\",\r\n                  width: \"1px\",\r\n                  background: \"#EAECF0\",\r\n                }}\r\n              />\r\n              {multiActiveCells.length > 1 && (singleColumn || singleRow) && (\r\n                <>\r\n                  <CustomNameTooltip\r\n                    placement=\"top\"\r\n                    title={\"Merge Cells\"}\r\n                    arrow\r\n                  >\r\n                    <IconButton\r\n                      sx={{\r\n                        height: \"36px !important\",\r\n                        width: \"36px !important\",\r\n                        borderRadius: \"8px\",\r\n                        transition: \"all 0.3s ease\",\r\n                        bgcolor: disableMerge ? \"#f0f0f0\" : \"#FFF\",\r\n                        color: disableMerge ? \"#d3d3d3\" : \"inherit\",\r\n                        padding: \"0px\",\r\n                        pointerEvents: disableMerge ? \"none\" : \"auto\",\r\n                      }}\r\n                      onClick={handleMergeCells}\r\n                      disabled={disableMerge}\r\n                    >\r\n                      <IcMergeCellOutlined\r\n                        fill={disableMerge ? \"#d3d3d3\" : \"#282828\"}\r\n                      />\r\n                    </IconButton>\r\n                  </CustomNameTooltip>\r\n                  <Box\r\n                    sx={{\r\n                      height: \"36px\",\r\n                      width: \"1px\",\r\n                      background: \"#EAECF0\",\r\n                    }}\r\n                  />\r\n                </>\r\n              )}\r\n\r\n              {multiActiveCells.length === 1 &&\r\n                (activeCellData?.colSpan || activeCellData?.rowSpan) && (\r\n                  <>\r\n                    <CustomNameTooltip\r\n                      placement=\"top\"\r\n                      title={\"Unmerge Cells\"}\r\n                      arrow\r\n                    >\r\n                      <IconButton\r\n                        sx={{\r\n                          height: \"36px !important\",\r\n                          width: \"36px !important\",\r\n                          borderRadius: \"8px\",\r\n                          transition: \"all 0.3s ease\",\r\n                          bgcolor: \"#FFF\",\r\n                          padding: \"0px\",\r\n                        }}\r\n                        onClick={handleUnMergeCells}\r\n                      >\r\n                        <IcUnMergeCellOutlined />\r\n                      </IconButton>\r\n                    </CustomNameTooltip>\r\n                    <Box\r\n                      sx={{\r\n                        height: \"36px\",\r\n                        width: \"1px\",\r\n                        background: \"#EAECF0\",\r\n                      }}\r\n                    />\r\n                  </>\r\n                )}\r\n\r\n              {!node.data.locked && (\r\n                <>\r\n                  <Box ref={backgroundPopupRef}>\r\n                    <ClickAwayListener\r\n                      onClickAway={() => {\r\n                        setShowBgColor(false);\r\n                      }}\r\n                    >\r\n                      <Box>\r\n                        <CustomTooltip\r\n                          mt={11}\r\n                          PopperProps={{\r\n                            disablePortal: true,\r\n                          }}\r\n                          onClose={() => setShowBgColor(false)}\r\n                          open={showBgColor}\r\n                          disableFocusListener\r\n                          disableHoverListener\r\n                          disableTouchListener\r\n                          title={\r\n                            <>\r\n                              <BackgroundTool\r\n                                setCustomBgOpen={setCustomBgOpen}\r\n                                colorHeading={\"Fill Color\"}\r\n                                node={node}\r\n                                selectedNodeColor={\r\n                                  activeCellData?.backgroundColor ||\r\n                                  node?.data?.tableData?.backgroundColor ||\r\n                                  \"rgba(255, 255, 255, 1)\"\r\n                                }\r\n                                onChangeColor={(color) => {\r\n                                  if (tableType === \"ERD\") {\r\n                                    const secondaryColor =\r\n                                      commanService.resourceColor(color);\r\n                                    updateTableColor({\r\n                                      primaryColor: color,\r\n                                      secondaryColor: secondaryColor,\r\n                                    });\r\n                                  } else if (multiActiveCells.length > 0) {\r\n                                    handleChangeMultiCellStyle({\r\n                                      backgroundColor: color,\r\n                                    });\r\n                                  } else {\r\n                                    updateHeaderStyle(\r\n                                      false,\r\n                                      \"backgroundColor\",\r\n                                      color\r\n                                    );\r\n                                  }\r\n                                  setActiveCellData((prev) => ({\r\n                                    ...prev,\r\n                                    backgroundColor: color,\r\n                                  }));\r\n                                }}\r\n                              />\r\n                            </>\r\n                          }\r\n                        >\r\n                          <Box\r\n                            onClick={() => {\r\n                              setShowBgColor(!showBgColor);\r\n                              setShowTableVariations(false);\r\n                              setShowBorderColor(false);\r\n                              setShowFontFamily(false);\r\n                              setShowFontSizeOpt(false);\r\n                              setShowTextDecoration(false);\r\n                              setShowAlignment(false);\r\n                              setShowTextColor(false);\r\n                              setShowTableMoreOptions(false);\r\n                            }}\r\n                          >\r\n                            <ToolTipWithDisabled\r\n                              placement=\"top\"\r\n                              tooltipTitle={\"Fill Color\"}\r\n                              disabled={showBgColor}\r\n                            >\r\n                              <IconButton\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  display: \"flex\",\r\n                                  padding: \"0px\",\r\n                                  flexDirection: \"column\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                }}\r\n                              >\r\n                                <IcChangeBg\r\n                                  // fill={\r\n                                  //   activeCellData?.backgroundColor ||\r\n                                  //   node?.data?.tableData?.backgroundColor ||\r\n                                  //   \"#FFF\"\r\n                                  // }\r\n                                  fill={\r\n                                    color\r\n                                      ? typeof color === \"number\"\r\n                                        ? color === 0\r\n                                          ? node.data.tableStyle.headerColor\r\n                                          : color % 2 === 0\r\n                                          ? node.data.tableStyle.evenRowColor\r\n                                          : \"#FFFFFF\"\r\n                                        : color\r\n                                      : node?.data?.tableStyle?.headerColor\r\n                                  }\r\n                                />\r\n                              </IconButton>\r\n                            </ToolTipWithDisabled>\r\n                          </Box>\r\n                        </CustomTooltip>\r\n                      </Box>\r\n                    </ClickAwayListener>\r\n                  </Box>\r\n\r\n                  {activeCell === \"table\" && (\r\n                    <Box ref={borderPopupRef}>\r\n                      <ClickAwayListener\r\n                        onClickAway={() => setShowBorderColor(false)}\r\n                      >\r\n                        <Box>\r\n                          <CustomTooltip\r\n                            mt={11}\r\n                            PopperProps={{\r\n                              disablePortal: true,\r\n                            }}\r\n                            onClose={() => setShowBorderColor(false)}\r\n                            open={showBorderColor}\r\n                            disableFocusListener\r\n                            disableHoverListener\r\n                            disableTouchListener\r\n                            title={\r\n                              <BorderTool\r\n                                node={node}\r\n                                showOnlyBorderColor={true}\r\n                                onBorderColorChange={(color) => {\r\n                                  updateNodeJson({\r\n                                    ...node?.data,\r\n                                    tableData: {\r\n                                      ...(node?.data?.tableData || {}),\r\n                                      borderColor: color,\r\n                                    },\r\n                                  });\r\n                                }}\r\n                              />\r\n                            }\r\n                          >\r\n                            <Box\r\n                              onClick={() => {\r\n                                setShowBorderColor(!showBorderColor);\r\n                                setShowTableVariations(false);\r\n                                setShowBgColor(false);\r\n                                setShowFontFamily(false);\r\n                                setShowFontSizeOpt(false);\r\n                                setShowTextDecoration(false);\r\n                                setShowAlignment(false);\r\n                                setShowTextColor(false);\r\n                                setShowTableMoreOptions(false);\r\n                              }}\r\n                            >\r\n                              <ToolTipWithDisabled\r\n                                placement=\"top\"\r\n                                tooltipTitle={\"Border color\"}\r\n                                disabled={showBgColor}\r\n                              >\r\n                                <IconButton\r\n                                  sx={{\r\n                                    height: \"36px !important\",\r\n                                    width: \"36px !important\",\r\n                                    borderRadius: \"8px\",\r\n                                    display: \"flex\",\r\n                                    padding: \"0px\",\r\n                                    flexDirection: \"column\",\r\n                                    alignItems: \"center\",\r\n                                    justifyContent: \"center\",\r\n                                  }}\r\n                                >\r\n                                  <IcChangeBorder fill={currentBorderColor} />\r\n                                </IconButton>\r\n                              </ToolTipWithDisabled>\r\n                            </Box>\r\n                          </CustomTooltip>\r\n                        </Box>\r\n                      </ClickAwayListener>\r\n                    </Box>\r\n                  )}\r\n                  {/* {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <Box\r\n                    sx={{\r\n                      height: \"36px\",\r\n                      width: \"1px\",\r\n                      background: \"#EAECF0\",\r\n                    }}\r\n                  />\r\n                  {/* )} */}\r\n                  {/* {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <CustomNameTooltip placement=\"top\" title={\"Font Style\"} arrow>\r\n                    <Box ref={fontFamilyPopupRef}>\r\n                      <ClickAwayListener\r\n                        onClickAway={() => setShowFontFamily(false)}\r\n                      >\r\n                        <CustomTooltip\r\n                          mt={11}\r\n                          PopperProps={{\r\n                            disablePortal: true,\r\n                          }}\r\n                          onClose={() => setShowFontFamily(false)}\r\n                          open={showFontFamily}\r\n                          disableFocusListener\r\n                          disableHoverListener\r\n                          disableTouchListener\r\n                          title={\r\n                            <Stack\r\n                              onMouseLeave={() => {\r\n                                setShowFontFamily(false);\r\n                              }}\r\n                              alignItems={\"center\"}\r\n                              gap={\"8px\"}\r\n                              maxHeight={\"350px\"}\r\n                              overflow={\"auto\"}\r\n                              sx={{\r\n                                boxShadow: \"0px 4px 12px rgba(3, 11, 22, 0.15)\",\r\n                                p: \"5px\",\r\n                                borderRadius: \"10px\",\r\n                              }}\r\n                              onWheelCapture={(e) => {\r\n                                e.stopPropagation();\r\n                              }}\r\n                            >\r\n                              {fontFamilyArr?.map((val, i) => (\r\n                                <Typography\r\n                                  key={i}\r\n                                  fontSize={14}\r\n                                  fontWeight={500}\r\n                                  fontFamily={`${val.family} !important`}\r\n                                  color={\"#18181B\"}\r\n                                  padding={\"5px\"}\r\n                                  sx={{\r\n                                    cursor: \"pointer\",\r\n                                    background:\r\n                                      fontFamily === val.name\r\n                                        ? \"#F7F7F7\"\r\n                                        : \"#FFF\",\r\n                                    width: \"100%\",\r\n                                    \"&:hover\": { bgcolor: \"#F7F7F7\" },\r\n                                    display: \"flex\",\r\n                                    alignItems: \"center\",\r\n\r\n                                    gap: \"5px\",\r\n                                  }}\r\n                                  onClick={() => {\r\n                                    let coppiedTableCells =\r\n                                      structuredClone(tableCells);\r\n                                    cellEditors.forEach(\r\n                                      ({ editor, rowIndex, column }) => {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .setFontFamily(val.family)\r\n                                          .run();\r\n                                        setShowFontFamily(false);\r\n                                        if (editor?.state.selection.empty) {\r\n                                          editor\r\n                                            .chain()\r\n                                            .focus()\r\n                                            .selectAll()\r\n                                            .setFontFamily(val.family)\r\n                                            .run();\r\n                                        }\r\n\r\n                                        coppiedTableCells[rowIndex][column] = {\r\n                                          ...coppiedTableCells[rowIndex][\r\n                                            column\r\n                                          ],\r\n                                          editorHTML: editor?.getHTML(),\r\n                                        };\r\n                                      }\r\n                                    );\r\n                                    // setFontFamily(val.name);\r\n                                    setShowFontFamily(false);\r\n                                    debouncedUpdateHTML(coppiedTableCells);\r\n                                  }}\r\n                                >\r\n                                  {val.name}{\" \"}\r\n                                  {fontFamily === val.name && (\r\n                                    <CheckCircleOutlineIcon\r\n                                      color=\"success\"\r\n                                      fontSize=\"small\"\r\n                                    />\r\n                                  )}\r\n                                </Typography>\r\n                              ))}\r\n                            </Stack>\r\n                          }\r\n                        >\r\n                          <Box\r\n                            id=\"font_btn\"\r\n                            onClick={(e) => {\r\n                              e.stopPropagation();\r\n                              setShowTableVariations(false);\r\n                              setShowBgColor(false);\r\n                              setShowBorderColor(false);\r\n                              setShowFontSizeOpt(false);\r\n                              setShowTextDecoration(false);\r\n                              setShowAlignment(false);\r\n                              setShowTextColor(false);\r\n                              setShowTableMoreOptions(false);\r\n                              setShowFontFamily(!showFontFamily);\r\n                            }}\r\n                          >\r\n                            <Box\r\n                              sx={{\r\n                                height: \"40px !important\",\r\n                                width: \"80px !important\",\r\n                                borderRadius: \"8px\",\r\n                                display: \"flex\",\r\n                                padding: \"8px\",\r\n                                flexDirection: \"column\",\r\n                                alignItems: \"center\",\r\n                                justifyContent: \"center\",\r\n                                cursor: \"pointer\",\r\n                                \"&:hover\": {\r\n                                  backgroundColor: \"#F5F5F5\",\r\n                                },\r\n                              }}\r\n                            >\r\n                              <Typography\r\n                                fontSize={14}\r\n                                fontWeight={500}\r\n                                color={\"#18181B\"}\r\n                                height={\"20px\"}\r\n                                sx={{\r\n                                  overflow: \"hidden\",\r\n                                  whiteSpace: \"nowrap\",\r\n                                  textOverflow: \"ellipsis\",\r\n                                  textAlign: \"center\",\r\n                                  width: \"100%\",\r\n                                }}\r\n                              >\r\n                                {`${fontFamily}`}\r\n                              </Typography>\r\n                            </Box>\r\n                          </Box>\r\n                        </CustomTooltip>\r\n                      </ClickAwayListener>\r\n                    </Box>\r\n                  </CustomNameTooltip>\r\n                  {/* )} */}\r\n                  {/* {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <Box\r\n                    sx={{\r\n                      height: \"36px\",\r\n                      width: \"1px\",\r\n                      background: \"#EAECF0\",\r\n                    }}\r\n                  />\r\n                  {/* )} */}\r\n                  {/* {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <CustomNameTooltip placement=\"top\" title={\"Font Size\"} arrow>\r\n                    <Box ref={fontSizePopupRef}>\r\n                      <ClickAwayListener\r\n                        onClickAway={() => setShowFontSizeOpt(false)}\r\n                      >\r\n                        <Box sx={{ display: \"flex\", flexDirection: \"row\" }}>\r\n                          <Box>\r\n                            <CustomTooltip\r\n                              mt={11}\r\n                              PopperProps={{\r\n                                disablePortal: true,\r\n                              }}\r\n                              onClose={() => setShowFontSizeOpt(false)}\r\n                              open={showFontSizeOpt}\r\n                              disableFocusListener\r\n                              disableHoverListener\r\n                              disableTouchListener\r\n                              title={\r\n                                <Stack\r\n                                  id=\"font_items\"\r\n                                  alignItems={\"center\"}\r\n                                  gap={\"12px\"}\r\n                                  sx={{\r\n                                    boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n                                    p: \"12px 8px\",\r\n                                    borderRadius: \"10px\",\r\n                                    width: \"80px !important\",\r\n                                  }}\r\n                                >\r\n                                  {fontSizeArr?.map((val, i) => {\r\n                                    return (\r\n                                      <Typography\r\n                                        key={i + 1}\r\n                                        fontSize={14}\r\n                                        fontWeight={500}\r\n                                        color={\"#18181B\"}\r\n                                        height={\"20px\"}\r\n                                        sx={{ cursor: \"pointer\" }}\r\n                                        onClick={(_) => {\r\n                                          let coppiedTableCells =\r\n                                            structuredClone(tableCells);\r\n                                          cellEditors.forEach(\r\n                                            ({ editor, rowIndex, column }) => {\r\n                                              if (\r\n                                                editor.state.selection.empty\r\n                                              ) {\r\n                                                editor\r\n                                                  .chain()\r\n                                                  .focus()\r\n                                                  .selectAll()\r\n                                                  .setFontSize(`${val}px`)\r\n                                                  .run();\r\n                                              } else {\r\n                                                editor\r\n                                                  .chain()\r\n                                                  .focus()\r\n                                                  .setFontSize(`${val}px`)\r\n                                                  .run();\r\n                                              }\r\n                                              coppiedTableCells[rowIndex][\r\n                                                column\r\n                                              ] = {\r\n                                                ...coppiedTableCells[rowIndex][\r\n                                                  column\r\n                                                ],\r\n                                                editorHTML: editor?.getHTML(),\r\n                                              };\r\n                                            }\r\n                                          );\r\n                                          setFontSize(val);\r\n                                          setShowFontSizeOpt(false);\r\n                                          debouncedUpdateHTML(\r\n                                            coppiedTableCells\r\n                                          );\r\n                                        }}\r\n                                      >\r\n                                        {val}\r\n                                      </Typography>\r\n                                    );\r\n                                  })}\r\n                                </Stack>\r\n                              }\r\n                            >\r\n                              <Box\r\n                                id=\"font_btn\"\r\n                                onClick={(e) => {\r\n                                  e.stopPropagation();\r\n                                  setShowTableVariations(false);\r\n                                  setShowBgColor(false);\r\n                                  setShowBorderColor(false);\r\n                                  setShowFontFamily(false);\r\n                                  setShowTextDecoration(false);\r\n                                  setShowAlignment(false);\r\n                                  setShowTextColor(false);\r\n                                  setShowTableMoreOptions(false);\r\n                                  setShowFontSizeOpt(!showFontSizeOpt);\r\n                                }}\r\n                              >\r\n                                <Box\r\n                                  sx={{\r\n                                    height: \"40px !important\",\r\n                                    width: \"65px !important\",\r\n                                    borderRadius: \"8px\",\r\n                                    display: \"flex\",\r\n                                    flexDirection: \"row\",\r\n                                    alignItems: \"center\",\r\n                                    justifyContent: \"space-between\",\r\n                                    px: \"12px\",\r\n                                    cursor: \"pointer\",\r\n                                    \"&:hover\": {\r\n                                      backgroundColor: \"#F5F5F5\",\r\n                                    },\r\n                                  }}\r\n                                >\r\n                                  <Typography\r\n                                    fontSize={14}\r\n                                    fontWeight={500}\r\n                                    color={\"#18181B\"}\r\n                                    height={\"20px\"}\r\n                                  >\r\n                                    {/* {`${fontSize.replace(\"px\", \"\")}`} */}\r\n\r\n                                    {`${\r\n                                      fontSize?.toString().includes(\"px\")\r\n                                        ? fontSize\r\n                                        : fontSize + \"px\" || \"16px\"\r\n                                    }`}\r\n                                  </Typography>\r\n                                </Box>\r\n                              </Box>\r\n                            </CustomTooltip>\r\n                          </Box>\r\n                          <Box\r\n                            sx={{\r\n                              display: \"flex\",\r\n                              flexDirection: \"column\",\r\n                              gap: \"2px\",\r\n                              // marginLeft: \"5px\",\r\n                              marginTop: \"7px\",\r\n                            }}\r\n                          >\r\n                            <IconButton\r\n                              sx={{\r\n                                height: \"12px !important\",\r\n                                width: \"12px !important\",\r\n                                minWidth: \"10px !important\",\r\n                                padding: \"0 !important\",\r\n                              }}\r\n                              onClick={() => {\r\n                                setShowFontSizeOpt(false);\r\n                                handleFontSizeChange(\"increase\");\r\n                              }}\r\n                            >\r\n                              {\" \"}\r\n                              <IcDecresFontSize />\r\n                            </IconButton>\r\n                            <IconButton\r\n                              sx={{\r\n                                height: \"12px !important\",\r\n                                width: \"12px !important\",\r\n                                minWidth: \"10px !important\",\r\n                                padding: \"0 !important\",\r\n                              }}\r\n                              onClick={() => {\r\n                                setShowFontSizeOpt(false);\r\n\r\n                                handleFontSizeChange(\"decrease\");\r\n                              }}\r\n                            >\r\n                              <IcIncreseFontSize />\r\n                            </IconButton>\r\n                          </Box>\r\n                        </Box>\r\n                      </ClickAwayListener>\r\n                    </Box>\r\n                  </CustomNameTooltip>\r\n                  {/* )} */}\r\n                  {/* {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <Box\r\n                    sx={{\r\n                      height: \"36px\",\r\n                      width: \"1px\",\r\n                      background: \"#EAECF0\",\r\n                    }}\r\n                  />\r\n                  {/* )} */}\r\n                  {/* \r\n                  {cellEditors.some(\r\n                    ({ editor }) => !editor.state.selection.empty\r\n                  ) && ( */}\r\n                  <Box ref={textDecorationPopupRef}>\r\n                    <ClickAwayListener\r\n                      onClickAway={() => setShowTextDecoration(false)}\r\n                    >\r\n                      <Box\r\n                        onClick={() => {\r\n                          setShowTextDecoration(!showTextDecoration);\r\n                          setShowTableVariations(false);\r\n                          setShowBgColor(false);\r\n                          setShowBorderColor(false);\r\n                          setShowFontFamily(false);\r\n                          setShowFontSizeOpt(false);\r\n                          setShowAlignment(false);\r\n                          setShowTextColor(false);\r\n                          setShowTableMoreOptions(false);\r\n                        }}\r\n                      >\r\n                        <CustomTooltip\r\n                          mt={11}\r\n                          PopperProps={{\r\n                            disablePortal: true,\r\n                          }}\r\n                          onClose={() => setShowTextDecoration(false)}\r\n                          open={showTextDecoration}\r\n                          disableFocusListener\r\n                          disableHoverListener\r\n                          disableTouchListener\r\n                          title={\r\n                            <Stack\r\n                              direction={\"row\"}\r\n                              alignItems={\"center\"}\r\n                              justifyContent={\"flex-start\"}\r\n                              gap={\"0px 5px\"}\r\n                              sx={{\r\n                                boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n                                p: \"8px\",\r\n                                borderRadius: \"6px\",\r\n                              }}\r\n                            >\r\n                              <IconButton\r\n                                onClick={(e) => {\r\n                                  e.stopPropagation();\r\n                                  let copiedTableCells =\r\n                                    structuredClone(tableCells);\r\n\r\n                                  cellEditors.forEach(\r\n                                    ({ editor, rowIndex, column }) => {\r\n                                      if (editor.state.selection.empty) {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .selectAll()\r\n                                          .toggleBold()\r\n                                          .run();\r\n                                      } else {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .toggleBold()\r\n                                          .run();\r\n                                      }\r\n                                      copiedTableCells[rowIndex][column] = {\r\n                                        ...copiedTableCells[rowIndex][column],\r\n                                        editorHTML: editor?.getHTML(),\r\n                                      };\r\n                                    }\r\n                                  );\r\n                                  debouncedUpdateHTML(copiedTableCells);\r\n                                }}\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  transition: \"all 0.3s ease\",\r\n                                  display: \"flex\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                  gap: \"7px\",\r\n                                  bgcolor: \"#FFF\",\r\n                                  \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                }}\r\n                              >\r\n                                <IcTextBold fill=\"#18181B\" />\r\n                              </IconButton>\r\n                              <IconButton\r\n                                onClick={(e) => {\r\n                                  e.stopPropagation();\r\n                                  let coppiedTableCells =\r\n                                    structuredClone(tableCells);\r\n                                  cellEditors.forEach(\r\n                                    ({ editor, rowIndex, column }) => {\r\n                                      if (editor.state.selection.empty) {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .selectAll()\r\n                                          .toggleItalic()\r\n                                          .run();\r\n                                      } else {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .toggleItalic()\r\n                                          .run();\r\n                                      }\r\n                                      coppiedTableCells[rowIndex][column] = {\r\n                                        ...coppiedTableCells[rowIndex][column],\r\n                                        editorHTML: editor?.getHTML(),\r\n                                      };\r\n                                    }\r\n                                  );\r\n                                  debouncedUpdateHTML(coppiedTableCells);\r\n                                }}\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  transition: \"all 0.3s ease\",\r\n                                  display: \"flex\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                  gap: \"7px\",\r\n                                  bgcolor: \"#FFF\",\r\n                                  \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                }}\r\n                              >\r\n                                <IcTextItalic fill=\"#18181B\" />\r\n                              </IconButton>\r\n\r\n                              <IconButton\r\n                                onClick={(e) => {\r\n                                  e.stopPropagation();\r\n                                  let coppiedTableCells =\r\n                                    structuredClone(tableCells);\r\n                                  cellEditors.forEach(\r\n                                    ({ editor, rowIndex, column }) => {\r\n                                      if (editor.state.selection.empty) {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .selectAll()\r\n                                          .toggleUnderline()\r\n                                          .run();\r\n                                      } else {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .toggleUnderline()\r\n                                          .run();\r\n                                      }\r\n                                      coppiedTableCells[rowIndex][column] = {\r\n                                        ...coppiedTableCells[rowIndex][column],\r\n                                        editorHTML: editor?.getHTML(),\r\n                                      };\r\n                                    }\r\n                                  );\r\n                                  debouncedUpdateHTML(coppiedTableCells);\r\n                                }}\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  transition: \"all 0.3s ease\",\r\n                                  display: \"flex\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                  gap: \"7px\",\r\n                                  bgcolor: \"#FFF\",\r\n                                  \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                }}\r\n                              >\r\n                                <IcTextUnderline fill=\"#18181B\" />\r\n                              </IconButton>\r\n                              <IconButton\r\n                                onClick={(e) => {\r\n                                  e.stopPropagation();\r\n                                  let coppiedTableCells =\r\n                                    structuredClone(tableCells);\r\n                                  cellEditors.forEach(\r\n                                    ({ editor, rowIndex, column }) => {\r\n                                      editor\r\n                                        .chain()\r\n                                        .focus()\r\n                                        .toggleStrike()\r\n                                        .run();\r\n                                      coppiedTableCells[rowIndex][column] = {\r\n                                        ...coppiedTableCells[rowIndex][column],\r\n                                        editorHTML: editor?.getHTML(),\r\n                                      };\r\n                                    }\r\n                                  );\r\n                                  debouncedUpdateHTML(coppiedTableCells);\r\n                                }}\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  transition: \"all 0.3s ease\",\r\n                                  display: \"flex\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                  gap: \"7px\",\r\n                                  bgcolor: \"#FFF\",\r\n                                  \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                }}\r\n                              >\r\n                                <IcTextStrickTrough fill=\"#18181B\" />\r\n                              </IconButton>\r\n                            </Stack>\r\n                          }\r\n                        >\r\n                          <Box id=\"text_align_btn\">\r\n                            <ToolTipWithDisabled\r\n                              placement=\"top\"\r\n                              tooltipTitle={\"Text Decoration\"}\r\n                            >\r\n                              <IconButton\r\n                                sx={{\r\n                                  height: \"36px !important\",\r\n                                  width: \"36px !important\",\r\n                                  borderRadius: \"8px\",\r\n                                  transition: \"all 0.3s ease\",\r\n                                  display: \"flex\",\r\n                                  alignItems: \"center\",\r\n                                  justifyContent: \"center\",\r\n                                  gap: \"7px\",\r\n                                  p: 0,\r\n                                  bgcolor: showTextDecoration\r\n                                    ? \"#EFF0F3\"\r\n                                    : \"#FFF\",\r\n                                  \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                }}\r\n                              >\r\n                                <IcChangeStyle />\r\n                              </IconButton>\r\n                            </ToolTipWithDisabled>\r\n                          </Box>\r\n                        </CustomTooltip>\r\n                      </Box>\r\n                    </ClickAwayListener>\r\n                  </Box>\r\n                  {/* )} */}\r\n                  {/* {activeCell !== \"table\" && ( */}\r\n                  {multiActiveCells.length <= 1 &&\r\n                    activeCell &&\r\n                    activeCell !== \"table\" && (\r\n                      // cellEditors.some(\r\n                      //   ({ editor }) => !editor.state.selection.empty\r\n                      // ) &&\r\n                      <Box ref={alignmentPopupRef}>\r\n                        <ClickAwayListener\r\n                          onClickAway={() => setShowAlignment(false)}\r\n                        >\r\n                          <Box\r\n                            onClick={() => {\r\n                              setShowAlignment(!showAlignment);\r\n                              setShowTableVariations(false);\r\n                              setShowBgColor(false);\r\n                              setShowBorderColor(false);\r\n                              setShowFontFamily(false);\r\n                              setShowFontSizeOpt(false);\r\n                              setShowTextDecoration(false);\r\n                              setShowTextColor(false);\r\n                              setShowTableMoreOptions(false);\r\n                            }}\r\n                          >\r\n                            <CustomTooltip\r\n                              mt={11}\r\n                              PopperProps={{\r\n                                disablePortal: true,\r\n                              }}\r\n                              onClose={() => setShowAlignment(false)}\r\n                              open={showAlignment}\r\n                              disableFocusListener\r\n                              disableHoverListener\r\n                              disableTouchListener\r\n                              title={\r\n                                <Stack\r\n                                  sx={{\r\n                                    p: \"8px\",\r\n                                    borderRadius: \"10px\",\r\n                                    boxShadow: \"0px 3px 8px 0px #030B1614\",\r\n                                    border: \"1px solid #EFF0F3\",\r\n                                    width: \"137px\",\r\n                                  }}\r\n                                >\r\n                                  <Stack\r\n                                    direction={\"row\"}\r\n                                    alignItems={\"center\"}\r\n                                    justifyContent={\"flex-start\"}\r\n                                    gap={\"0px 5px\"}\r\n                                    flexWrap={\"wrap\"}\r\n                                  >\r\n                                    <IconButton\r\n                                      onClick={(_) => {\r\n                                        let coppiedTableCells =\r\n                                          structuredClone(tableCells);\r\n                                        cellEditors.forEach(\r\n                                          ({ editor, rowIndex, column }) => {\r\n                                            if (editor.state.selection.empty) {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .selectAll()\r\n                                                .setTextAlign(\"justify\")\r\n                                                .run();\r\n                                            } else {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .setTextAlign(\"justify\")\r\n                                                .run();\r\n                                            }\r\n                                            coppiedTableCells[rowIndex][\r\n                                              column\r\n                                            ] = {\r\n                                              ...coppiedTableCells[rowIndex][\r\n                                                column\r\n                                              ],\r\n                                              editorHTML: editor?.getHTML(),\r\n                                            };\r\n                                          }\r\n                                        );\r\n                                        debouncedUpdateHTML(coppiedTableCells);\r\n                                      }}\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        display: \"flex\",\r\n                                        alignItems: \"center\",\r\n                                        justifyContent: \"center\",\r\n                                        gap: \"7px\",\r\n                                        bgcolor: \"#FFF\",\r\n                                        \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignLeft fill={\"#18181B\"} />\r\n                                    </IconButton>\r\n                                    <IconButton\r\n                                      onClick={(_) => {\r\n                                        let coppiedTableCells =\r\n                                          structuredClone(tableCells);\r\n                                        cellEditors.forEach(\r\n                                          ({ editor, rowIndex, column }) => {\r\n                                            if (editor.state.selection.empty) {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .selectAll()\r\n                                                .setTextAlign(\"center\")\r\n                                                .run();\r\n                                            } else {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .setTextAlign(\"center\")\r\n                                                .run();\r\n                                            }\r\n                                            coppiedTableCells[rowIndex][\r\n                                              column\r\n                                            ] = {\r\n                                              ...coppiedTableCells[rowIndex][\r\n                                                column\r\n                                              ],\r\n                                              editorHTML: editor?.getHTML(),\r\n                                            };\r\n                                          }\r\n                                        );\r\n                                        debouncedUpdateHTML(coppiedTableCells);\r\n                                      }}\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        display: \"flex\",\r\n                                        alignItems: \"center\",\r\n                                        justifyContent: \"center\",\r\n                                        gap: \"7px\",\r\n                                        bgcolor: \"#FFF\",\r\n                                        \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignCenter fill={\"#18181B\"} />\r\n                                    </IconButton>\r\n                                    <IconButton\r\n                                      onClick={(_) => {\r\n                                        let coppiedTableCells =\r\n                                          structuredClone(tableCells);\r\n                                        cellEditors.forEach(\r\n                                          ({ editor, rowIndex, column }) => {\r\n                                            if (editor.state.selection.empty) {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .selectAll()\r\n                                                .setTextAlign(\"right\")\r\n                                                .run();\r\n                                            } else {\r\n                                              editor\r\n                                                .chain()\r\n                                                .focus()\r\n                                                .setTextAlign(\"right\")\r\n                                                .run();\r\n                                            }\r\n                                            coppiedTableCells[rowIndex][\r\n                                              column\r\n                                            ] = {\r\n                                              ...coppiedTableCells[rowIndex][\r\n                                                column\r\n                                              ],\r\n                                              editorHTML: editor?.getHTML(),\r\n                                            };\r\n                                          }\r\n                                        );\r\n                                        debouncedUpdateHTML(coppiedTableCells);\r\n                                      }}\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        display: \"flex\",\r\n                                        alignItems: \"center\",\r\n                                        justifyContent: \"center\",\r\n                                        gap: \"7px\",\r\n                                        bgcolor: \"#FFF\",\r\n                                        \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignRight fill={\"#18181B\"} />\r\n                                    </IconButton>\r\n                                  </Stack>\r\n                                  <CommonDivider my=\"8px\" />\r\n                                  <Stack\r\n                                    direction={\"row\"}\r\n                                    alignItems={\"center\"}\r\n                                    justifyContent={\"flex-start\"}\r\n                                    gap={\"0px 5px\"}\r\n                                    flexWrap={\"wrap\"}\r\n                                  >\r\n                                    <IconButton\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        bgcolor:\r\n                                          activeCellData?.justifyContent ===\r\n                                          \"flex-start\"\r\n                                            ? \"#E3EEFD\"\r\n                                            : \"#FFF\",\r\n                                        \"&:hover\": {\r\n                                          bgcolor:\r\n                                            activeCellData?.justifyContent ===\r\n                                            \"flex-start\"\r\n                                              ? \"#E3EEFD\"\r\n                                              : \"#EFF0F3\",\r\n                                        },\r\n                                      }}\r\n                                      onClick={() => {\r\n                                        handleChangeMultiCellStyle({\r\n                                          justifyContent: \"flex-start\",\r\n                                        });\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignItemTop\r\n                                        fill={\r\n                                          activeCellData?.justifyContent ===\r\n                                          \"flex-start\"\r\n                                            ? colorsConst?.primaryColor\r\n                                            : \"#18181B\"\r\n                                        }\r\n                                      />\r\n                                    </IconButton>\r\n                                    <IconButton\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        bgcolor:\r\n                                          activeCellData?.justifyContent ===\r\n                                            \"center\" ||\r\n                                          !activeCellData?.justifyContent\r\n                                            ? \"#E3EEFD\"\r\n                                            : \"#FFF\",\r\n                                        \"&:hover\": {\r\n                                          bgcolor:\r\n                                            activeCellData?.justifyContent ===\r\n                                              \"center\" ||\r\n                                            !activeCellData?.justifyContent\r\n                                              ? \"#E3EEFD\"\r\n                                              : \"#EFF0F3\",\r\n                                        },\r\n                                      }}\r\n                                      onClick={() => {\r\n                                        handleChangeMultiCellStyle({\r\n                                          justifyContent: \"center\",\r\n                                        });\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignItemCenter\r\n                                        fill={\r\n                                          activeCellData?.justifyContent ===\r\n                                            \"center\" ||\r\n                                          !activeCellData?.justifyContent\r\n                                            ? colorsConst?.primaryColor\r\n                                            : \"#18181B\"\r\n                                        }\r\n                                      />\r\n                                    </IconButton>\r\n                                    <IconButton\r\n                                      sx={{\r\n                                        height: \"36px !important\",\r\n                                        width: \"36px !important\",\r\n                                        borderRadius: \"8px\",\r\n                                        transition: \"all 0.3s ease\",\r\n                                        bgcolor:\r\n                                          activeCellData?.justifyContent ===\r\n                                          \"flex-end\"\r\n                                            ? \"#E3EEFD\"\r\n                                            : \"#FFF\",\r\n                                        \"&:hover\": {\r\n                                          bgcolor:\r\n                                            activeCellData?.justifyContent ===\r\n                                            \"flex-end\"\r\n                                              ? \"#E3EEFD\"\r\n                                              : \"#EFF0F3\",\r\n                                        },\r\n                                      }}\r\n                                      onClick={() => {\r\n                                        handleChangeMultiCellStyle({\r\n                                          justifyContent: \"flex-end\",\r\n                                        });\r\n                                      }}\r\n                                    >\r\n                                      <IcTextAlignItemBottom\r\n                                        fill={\r\n                                          activeCellData?.justifyContent ===\r\n                                          \"flex-end\"\r\n                                            ? colorsConst?.primaryColor\r\n                                            : \"#18181B\"\r\n                                        }\r\n                                      />\r\n                                    </IconButton>\r\n                                  </Stack>\r\n                                </Stack>\r\n                              }\r\n                            >\r\n                              <Box id=\"text_align_btn\">\r\n                                <ToolTipWithDisabled\r\n                                  placement=\"top\"\r\n                                  tooltipTitle={\"Text Align\"}\r\n                                >\r\n                                  <IconButton\r\n                                    sx={{\r\n                                      height: \"36px !important\",\r\n                                      width: \"36px !important\",\r\n                                      borderRadius: \"8px\",\r\n                                      transition: \"all 0.3s ease\",\r\n                                      display: \"flex\",\r\n                                      alignItems: \"center\",\r\n                                      justifyContent: \"center\",\r\n                                      gap: \"7px\",\r\n                                      p: 0,\r\n                                      bgcolor: showAlignment\r\n                                        ? \"#EFF0F3\"\r\n                                        : \"#FFF\",\r\n                                      \"&:hover\": { bgcolor: \"#EFF0F3\" },\r\n                                    }}\r\n                                  >\r\n                                    <IcTextAlignLeft fill={\"#18181B\"} />\r\n                                  </IconButton>\r\n                                </ToolTipWithDisabled>\r\n                              </Box>\r\n                            </CustomTooltip>\r\n                          </Box>\r\n                        </ClickAwayListener>\r\n                      </Box>\r\n                    )}\r\n                  {/* )} */}\r\n                  {/* {activeCell !== \"table\" && ( */}\r\n                  {/* {multiActiveCells.length <= 1 &&\r\n                    activeCell &&\r\n                    activeCell !== \"table\" &&\r\n                    cellEditors.some(\r\n                      ({ editor }) => !editor.state.selection.empty\r\n                    ) && ( */}\r\n                  <>\r\n                    <Box\r\n                      sx={{\r\n                        height: \"36px\",\r\n                        width: \"1px\",\r\n                        background: \"#EAECF0\",\r\n                      }}\r\n                    />\r\n                    <Box ref={textColorPopupRef}>\r\n                      <ClickAwayListener\r\n                        onClickAway={() => setShowTextColor(false)}\r\n                      >\r\n                        <Box\r\n                          onClick={() => {\r\n                            setShowTextColor(!showTextColor);\r\n                            setShowTableVariations(false);\r\n                            setShowBgColor(false);\r\n                            setShowBorderColor(false);\r\n                            setShowFontFamily(false);\r\n                            setShowFontSizeOpt(false);\r\n                            setShowTextDecoration(false);\r\n                            setShowAlignment(false);\r\n                            setShowTableMoreOptions(false);\r\n                          }}\r\n                        >\r\n                          <CustomTooltip\r\n                            mt={11}\r\n                            PopperProps={{\r\n                              disablePortal: true,\r\n                            }}\r\n                            onClose={() => setShowTextColor(false)}\r\n                            open={showTextColor}\r\n                            disableFocusListener\r\n                            disableHoverListener\r\n                            disableTouchListener\r\n                            title={\r\n                              <BackgroundTool\r\n                                node={node}\r\n                                selectedNodeColor={toRgba(\r\n                                  multiActiveCells.length > 1\r\n                                    ? multiCellTextColor\r\n                                    : activeCellData?.textColor || \"#000\"\r\n                                )}\r\n                                onChangeColor={(color) => {\r\n                                  let coppiedTableCells =\r\n                                    structuredClone(tableCells);\r\n                                  cellEditors.forEach(\r\n                                    ({ editor, rowIndex, column }) => {\r\n                                      if (editor.state.selection.empty) {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .selectAll()\r\n                                          .setColor(color)\r\n                                          .run();\r\n                                      } else {\r\n                                        editor\r\n                                          .chain()\r\n                                          .focus()\r\n                                          .setColor(color)\r\n                                          .run();\r\n                                      }\r\n                                      coppiedTableCells[rowIndex][column] = {\r\n                                        ...coppiedTableCells[rowIndex][column],\r\n                                        editorHTML: editor?.getHTML(),\r\n                                      };\r\n                                    }\r\n                                  );\r\n                                  debouncedUpdateHTML(coppiedTableCells);\r\n                                }}\r\n                              />\r\n                            }\r\n                          >\r\n                            <Box>\r\n                              <ToolTipWithDisabled\r\n                                placement=\"top\"\r\n                                tooltipTitle={\"Text Color\"}\r\n                              >\r\n                                <IconButton\r\n                                  sx={{\r\n                                    height: \"36px !important\",\r\n                                    width: \"36px !important\",\r\n                                    borderRadius: \"8px\",\r\n                                    display: \"flex\",\r\n                                    padding: \"0px\",\r\n                                    flexDirection: \"column\",\r\n                                    alignItems: \"center\",\r\n                                    justifyContent: \"center\",\r\n                                  }}\r\n                                >\r\n                                  <IcTextColor fill={\"#18181B\"} />\r\n                                  <Box\r\n                                    sx={{\r\n                                      mt: \"2px\",\r\n                                      height: \"3px\",\r\n                                      width: \"20px\",\r\n                                      background:\r\n                                        multiActiveCells.length > 1\r\n                                          ? multiCellTextColor\r\n                                          : activeCellData?.textColor ||\r\n                                            \"#18181B\",\r\n                                    }}\r\n                                  />\r\n                                </IconButton>\r\n                              </ToolTipWithDisabled>\r\n                            </Box>\r\n                          </CustomTooltip>\r\n                        </Box>\r\n                      </ClickAwayListener>\r\n                    </Box>\r\n                  </>\r\n                  {/* )} */}\r\n                  {/* )} */}\r\n                  {!node.data.locked && (\r\n                    <Box\r\n                      sx={{\r\n                        height: \"36px\",\r\n                        width: \"1px\",\r\n                        background: \"#EAECF0\",\r\n                      }}\r\n                    />\r\n                  )}\r\n                  {multiActiveCells.length <= 1 &&\r\n                    activeCell &&\r\n                    activeCell !== \"table\" && (\r\n                      // cellEditors.some(\r\n                      //   ({ editor }) => !editor.state.selection.empty\r\n                      // ) &&\r\n                      <>\r\n                        <ClickAwayListener\r\n                          onClickAway={() => setShowLink(false)}\r\n                        >\r\n                          <Box onClick={() => setShowLink(!showLink)}>\r\n                            <CustomTooltip\r\n                              mt={11}\r\n                              PopperProps={{\r\n                                disablePortal: true,\r\n                              }}\r\n                              onClose={() => setShowLink(false)}\r\n                              open={showLink}\r\n                              disableFocusListener\r\n                              disableHoverListener\r\n                              disableTouchListener\r\n                              // title={\r\n                              //   <LinkTool\r\n                              //     onChange={(e) =>\r\n                              //       setLinkText(e?.target?.value)\r\n                              //     }\r\n                              //     value={linkText}\r\n                              //     placeholder=\"Paste/enter links\"\r\n                              //     onKeyPress={(e) => {\r\n                              //       if (e.key === \"Enter\") {\r\n                              //         updateHeaderStyle(\r\n                              //           false,\r\n                              //           \"linkText\",\r\n                              //           linkText\r\n                              //         );\r\n                              //         setShowLink(false);\r\n                              //       }\r\n                              //     }}\r\n                              //   />\r\n                              // }\r\n                            >\r\n                              <Box>\r\n                                <ToolTipWithDisabled\r\n                                  placement=\"top\"\r\n                                  tooltipTitle={\"Link\"}\r\n                                >\r\n                                  <IconButton\r\n                                    sx={{\r\n                                      height: \"36px !important\",\r\n                                      width: \"36px !important\",\r\n                                      borderRadius: \"8px\",\r\n                                      display: \"flex\",\r\n                                      padding: \"0px\",\r\n                                      flexDirection: \"column\",\r\n                                      alignItems: \"center\",\r\n                                      justifyContent: \"center\",\r\n                                    }}\r\n                                  >\r\n                                    <IcLinkOutlined3 />\r\n                                  </IconButton>\r\n                                </ToolTipWithDisabled>\r\n                              </Box>\r\n                            </CustomTooltip>\r\n                          </Box>\r\n                        </ClickAwayListener>\r\n                        <Box\r\n                          sx={{\r\n                            height: \"36px\",\r\n                            width: \"1px\",\r\n                            background: \"#EAECF0\",\r\n                          }}\r\n                        />\r\n                      </>\r\n                    )}\r\n                </>\r\n              )}\r\n\r\n              {(isEntireRowOrCol.isEntireColumnSelected ||\r\n                isEntireRowOrCol.isEntireRowSelected) && (\r\n                <>\r\n                  <ToolTipWithDisabled\r\n                    placement=\"top\"\r\n                    tooltipTitle={\"Delete Row/Column\"}\r\n                  >\r\n                    <Stack\r\n                      direction={\"row\"}\r\n                      alignItems={\"center\"}\r\n                      justifyContent={\"center\"}\r\n                      height={\"36px\"}\r\n                      width={\"36px\"}\r\n                      borderRadius={\"8px\"}\r\n                      sx={{\r\n                        cursor: \"pointer\",\r\n                        transition: \"all 0.3s\",\r\n                        \"&:hover\": {\r\n                          background: \"#F5F5F5\",\r\n                        },\r\n                      }}\r\n                      onClick={handleClickDeleteRowCol}\r\n                    >\r\n                      <IcDeleteOutlined height=\"20\" width=\"20\" fill=\"#282828\" />\r\n                    </Stack>\r\n                  </ToolTipWithDisabled>\r\n                  <Box\r\n                    sx={{\r\n                      height: \"36px\",\r\n                      width: \"1px\",\r\n                      background: \"#EAECF0\",\r\n                    }}\r\n                  />\r\n                </>\r\n              )}\r\n\r\n              <ToolTipWithDisabled\r\n                placement=\"top\"\r\n                tooltipTitle={node.data.locked ? \"Unlock\" : \"Lock\"}\r\n              >\r\n                <Stack\r\n                  direction={\"row\"}\r\n                  alignItems={\"center\"}\r\n                  justifyContent={\"center\"}\r\n                  height={\"36px\"}\r\n                  width={\"36px\"}\r\n                  borderRadius={\"8px\"}\r\n                  sx={{\r\n                    cursor: \"pointer\",\r\n                    transition: \"all 0.3s\",\r\n                    \"&:hover\": {\r\n                      background: \"#F5F5F5\",\r\n                    },\r\n                  }}\r\n                  onClick={toggleLockedTabel}\r\n                >\r\n                  {node.data.locked ? <IcLockLocked /> : <IcLockUnLocked />}\r\n                </Stack>\r\n              </ToolTipWithDisabled>\r\n              <Box\r\n                sx={{\r\n                  height: \"36px\",\r\n                  width: \"1px\",\r\n                  background: \"#EAECF0\",\r\n                }}\r\n              />\r\n              <Box ref={moreOptionsPopupRef}>\r\n                {cellEditors.map((val) => val?.editor)?.length !== 1 && (\r\n                  <CustomTooltip\r\n                    mt={9}\r\n                    PopperProps={{\r\n                      disablePortal: true,\r\n                    }}\r\n                    onClose={() => setShowTableMoreOptions(false)}\r\n                    open={showTableMoreOptions}\r\n                    disableFocusListener\r\n                    disableHoverListener\r\n                    disableTouchListener\r\n                    title={\r\n                      <FrameMoreMenus\r\n                        node={node}\r\n                        width={node?.data?.width / 2}\r\n                        height={node?.data?.height / 2}\r\n                        showDuplicate={true}\r\n                        showCopyAsImage={true}\r\n                        showAddComment={true}\r\n                        showLockUnlock={true}\r\n                        showCopyLink={true}\r\n                        showLinkTo={true}\r\n                        showDelete={true}\r\n                        simpleRef={simpleRef}\r\n                        showFrame={true}\r\n                        showDeleteColumn={\r\n                          isEntireRowOrCol.isEntireColumnSelected ? true : false\r\n                        }\r\n                        showDeleteRow={\r\n                          isEntireRowOrCol.isEntireRowSelected ? true : false\r\n                        }\r\n                        exportShow={true}\r\n                        handleClickDeleteRowCol={handleClickDeleteRowCol}\r\n                        setShowFrameMoreOptions={setShowTableMoreOptions}\r\n                        showBringToFrontAndBack={true}\r\n                        showRename={true}\r\n                        handleClickRename={handleClickRename}\r\n                      />\r\n                    }\r\n                  >\r\n                    <Stack\r\n                      direction={\"row\"}\r\n                      alignItems={\"center\"}\r\n                      justifyContent={\"center\"}\r\n                      height={\"36px\"}\r\n                      width={\"36px\"}\r\n                      borderRadius={\"8px\"}\r\n                      sx={{\r\n                        cursor: \"pointer\",\r\n                        transition: \"all 0.3s\",\r\n                        transform: \"rotate(90deg)\",\r\n                        \"&:hover\": {\r\n                          background: \"#F5F5F5\",\r\n                        },\r\n                      }}\r\n                      onClick={() => {\r\n                        setShowTableVariations(false);\r\n                        setShowBgColor(false);\r\n                        setShowBorderColor(false);\r\n                        setShowFontFamily(false);\r\n                        setShowFontSizeOpt(false);\r\n                        setShowTextDecoration(false);\r\n                        setShowAlignment(false);\r\n                        setShowTextColor(false);\r\n                        setShowTableMoreOptions(!showTableMoreOptions);\r\n                      }}\r\n                    >\r\n                      <IcMenuDotsVertical\r\n                        height=\"32\"\r\n                        width=\"32\"\r\n                        fill=\"#282828\"\r\n                      />\r\n                    </Stack>\r\n                  </CustomTooltip>\r\n                )}\r\n                {cellEditors.map((val) => val?.editor)?.length === 1 && (\r\n                  <CustomNameTooltip placement=\"top\" arrow title={\"More\"}>\r\n                    <IconButton\r\n                      sx={{\r\n                        height: \"36px !important\",\r\n                        width: \"37px !important\",\r\n                        borderRadius: \"5px\",\r\n                        transition: \"all 0.3s ease\",\r\n                        bgcolor: \"#FFF\",\r\n                        padding: \"0px\",\r\n                      }}\r\n                      onClick={(e) => {\r\n                        setMoreOption(true);\r\n                        setAnchorEl(e.currentTarget);\r\n                        setIsPopoverOpen(true);\r\n                      }}\r\n                    >\r\n                      <Stack\r\n                        direction={\"row\"}\r\n                        alignItems={\"center\"}\r\n                        justifyContent={\"center\"}\r\n                        height={\"36px\"}\r\n                        width={\"36px\"}\r\n                        borderRadius={\"8px\"}\r\n                        sx={{\r\n                          cursor: \"pointer\",\r\n                          transition: \"all 0.3s\",\r\n                          transform: \"rotate(90deg)\",\r\n                          \"&:hover\": {\r\n                            background: \"#F5F5F5\",\r\n                          },\r\n                        }}\r\n                        onClick={() => {\r\n                          setShowTableVariations(false);\r\n                          setShowBgColor(false);\r\n                          setShowBorderColor(false);\r\n                          setShowFontFamily(false);\r\n                          setShowFontSizeOpt(false);\r\n                          setShowTextDecoration(false);\r\n                          setShowAlignment(false);\r\n                          setShowTextColor(false);\r\n                        }}\r\n                      >\r\n                        <IcMenuDotsVertical\r\n                          height=\"32\"\r\n                          width=\"32\"\r\n                          fill=\"#282828\"\r\n                        />\r\n                      </Stack>\r\n                    </IconButton>\r\n                  </CustomNameTooltip>\r\n                )}\r\n              </Box>\r\n            </>\r\n          )}\r\n        </Box>\r\n      </NodeToolbar>\r\n\r\n      <Box\r\n        ref={mainRef}\r\n        onContextMenu={(e) => {\r\n          e.preventDefault();\r\n          e.stopPropagation();\r\n        }}\r\n        sx={{\r\n          width: \"100%\",\r\n          height: \"100%\",\r\n          ...style,\r\n          display: \"flex\",\r\n          flexDirection: \"column\",\r\n          color: \"red\",\r\n          position: \"relative\",\r\n          boxShadow:\r\n            activeCell === \"table\" &&\r\n            node.selected &&\r\n            !copyAsImage &&\r\n            !isDownload &&\r\n            !isResizeRowCol\r\n              ? `0px 0px 0px ${1.2 / zoom}px rgba(103,98,254,1)`\r\n              : \"none\",\r\n          // border: `1px solid ${\r\n          //   activeCell === \"table\" &&\r\n          //   node.selected &&\r\n          //   !copyAsImage &&\r\n          //   !isDownload\r\n          //     ? colorsConst?.primaryColor\r\n          //     : \"transparent\"\r\n          // }`,\r\n        }}\r\n        // sx={{\r\n        //   width:\"100%\",\r\n\r\n        // }}\r\n        // onClick={(e)=> {handleClickOutside(e);setIsInputVisible(false)}}\r\n        // onMouseDown={() => setIsInputVisible(false)}\r\n        onMouseEnter={() => setShowDots(true)}\r\n        onMouseLeave={() => {\r\n          setShowDots(false);\r\n          setHoveredRowCol({\r\n            row: null,\r\n            col: null,\r\n          });\r\n        }}\r\n        onMouseDownCapture={(e) => {\r\n          node.data.locked === true && e.stopPropagation();\r\n        }}\r\n      >\r\n        {node.selected && !node.data.locked && tableType !== \"ERD\" && (\r\n          <>\r\n            {/* <Box\r\n              sx={{\r\n                cursor: \"pointer\",\r\n                position: \"absolute\",\r\n                top: \"-35px\",\r\n                left: \"50%\",\r\n                transform: \"translate(-50%) rotate(90deg)\",\r\n                zIndex: 9999999999,\r\n                border: `1px solid ${colorsConst?.primaryColor}`,\r\n                borderRadius: \"10px\",\r\n                background: \"#FFF\",\r\n                height: \"28px\",\r\n                width: \"22px\",\r\n              }}\r\n              onClick={(e) => {\r\n                e?.preventDefault();\r\n                setActiveCell(\"table\");\r\n                setSelectedCell(\"table\");\r\n                setMultiActiveCells([]);\r\n              }}\r\n            >\r\n              <IcMenuDotsVertical />\r\n            </Box> */}\r\n            {!showAlignment &&\r\n              !showTextColor &&\r\n              !showTableMoreOptions &&\r\n              !isResizeRowCol && (\r\n                <NodeToolbar\r\n                  isVisible={true}\r\n                  position={Position.Right}\r\n                  align=\"center\"\r\n                >\r\n                  <Box\r\n                    sx={{\r\n                      position: \"absolute\",\r\n                      top: \"50%\",\r\n                      transform: \"translateY(-50%)\",\r\n                      right: \"-34px\",\r\n                      height: \"24px\",\r\n                      width: \"24px\",\r\n                      display: \"flex\",\r\n                      flexDirection: \"column\",\r\n                      justifyContent: \"center\",\r\n                      alignItems: \"center\",\r\n                      cursor: \"pointer\",\r\n                      transition: \"all 0.2s\",\r\n                      \"& circle\": {\r\n                        fill: \"#FFFFFF\",\r\n                        stroke: \"#C2C2C2\",\r\n                        transition: \"all 0.2s\",\r\n                      },\r\n                      \"& path\": {\r\n                        stroke: \"#C2C2C2\",\r\n                        transition: \"all 0.2s\",\r\n                      },\r\n                      \"&:hover\": {\r\n                        \"& circle\": {\r\n                          fill: colorsConst?.primaryColor,\r\n                          stroke: colorsConst?.primaryColor,\r\n                        },\r\n                        \"& path\": {\r\n                          stroke: \"#FFFFFF\",\r\n                        },\r\n                      },\r\n                    }}\r\n                    onClick={() => {\r\n                      const lastCellKey = Object.keys(tableCells[0])[\r\n                        Object.keys(tableCells[0]).length - 1\r\n                      ];\r\n                      handleAddColumnAfter(lastCellKey);\r\n                    }}\r\n                  >\r\n                    <IcAddRowCol />\r\n                  </Box>\r\n                </NodeToolbar>\r\n              )}\r\n          </>\r\n        )}\r\n        <Box>\r\n          {!node?.dragging &&\r\n            !showExport &&\r\n            !node.data.locked &&\r\n            !copyAsImage &&\r\n            !isDownload &&\r\n            !isResizeRowCol && (\r\n              <>\r\n                <Handle\r\n                  id={\"aaa\"}\r\n                  connectionMode=\"loose\"\r\n                  position=\"top\"\r\n                  isConnectable={true}\r\n                  className=\"edge_points\"\r\n                  style={{\r\n                    background: \"transparent\",\r\n                    border: \"none\",\r\n                    zIndex: 9999,\r\n                    position: \"absolute\",\r\n                    left: \"50%\",\r\n                    visibility: sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                    transitionDuration: \"300ms\",\r\n                    transform:\r\n                      hoveredItem === \"top\"\r\n                        ? `scale(1.2)  translateX(-5px)`\r\n                        : `scale(1)  translateX(-6px)`,\r\n                    transformOrigin: \"center\",\r\n                    width: \" 12px\",\r\n                    height: \" 12px\",\r\n                    maxWidth: \"100%\",\r\n                    maxHeight: \"100%\",\r\n                    display: \"flex\",\r\n                    justifyContent: \"center\",\r\n                    alignItems: \"flex-start\",\r\n                  }}\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 || isNodeSelected <= 0) && (\r\n                    <Box\r\n                      sx={{\r\n                        background:\r\n                          (showDots && hoveredItem !== \"top\") ||\r\n                          (node.selected && hoveredItem !== \"top\")\r\n                            ? \"#CCDEF9\"\r\n                            : hoveredItem === \"top\"\r\n                            ? colorsConst?.primaryColor\r\n                            : \"transparent\",\r\n                        border:\r\n                          showDots || node.selected\r\n                            ? `1px solid ${colorsConst?.primaryColor}`\r\n                            : // : \"1px solid transparent\",\r\n                              \"none\",\r\n                        transform: `scale(${1 / zoom}) translateY(-${\r\n                          zoom * 2\r\n                        }px)`,\r\n                        borderRadius: \"50%\",\r\n                        pointerEvents: \"none\",\r\n                        width: \"100%\",\r\n                        height: \"100%\",\r\n                      }}\r\n                    />\r\n                  )}\r\n                </Handle>\r\n                <Handle\r\n                  id=\"ddd\"\r\n                  connectionMode=\"loose\"\r\n                  position=\"bottom\"\r\n                  className=\"edge_points\"\r\n                  isConnectable={true}\r\n                  style={{\r\n                    background: \"transparent\",\r\n                    border: \"none\",\r\n                    zIndex: 9999,\r\n                    position: \"absolute\",\r\n                    left: \"50%\",\r\n                    transitionDuration: \"300ms\",\r\n                    visibility: sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                    transform:\r\n                      hoveredItem === \"bottom\"\r\n                        ? `scale(1.2)  translateX(-5px)`\r\n                        : `scale(1)  translateX(-6px)`,\r\n                    width: \" 12px\",\r\n                    height: \" 12px\",\r\n                    maxWidth: \"100%\",\r\n                    maxHeight: \"100%\",\r\n                    display: \"flex\",\r\n                    justifyContent: \"center\",\r\n                    alignItems: \"flex-end\",\r\n                  }}\r\n                  onConnect={(params) =>\r\n                    console.log(\"handle onConnect\", params)\r\n                  }\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 || isNodeSelected <= 0) && (\r\n                    <Box\r\n                      sx={{\r\n                        background:\r\n                          (showDots && hoveredItem !== \"bottom\") ||\r\n                          (node.selected && hoveredItem !== \"bottom\")\r\n                            ? \"#CCDEF9\"\r\n                            : hoveredItem === \"bottom\"\r\n                            ? colorsConst?.primaryColor\r\n                            : \"transparent\",\r\n                        border:\r\n                          showDots || node.selected\r\n                            ? `1px solid ${colorsConst?.primaryColor}`\r\n                            : // : \"1px solid transparent\",\r\n                              \"none\",\r\n                        transform: `scale(${1 / zoom}) translateY(${\r\n                          zoom * 2\r\n                        }px)`,\r\n                        pointerEvents: \"none\",\r\n                        borderRadius: \"50%\",\r\n                        width: \"100%\",\r\n                        height: \"100%\",\r\n                      }}\r\n                    />\r\n                  )}\r\n                </Handle>\r\n              </>\r\n            )}\r\n\r\n          {tableType === \"ERD\" ? (\r\n            <>\r\n              {!resizingRef.current &&\r\n                !copyAsImage &&\r\n                !isDownload &&\r\n                !isResizeRowCol && (\r\n                  <>\r\n                    {node?.data?.tableData?.tableCells?.map((currRow, ind) => {\r\n                      return (\r\n                        <Fragment key={`left-handle-${ind}`}>\r\n                          <Handle\r\n                            id={`left-handle-${ind}`}\r\n                            // type=\"source\"\r\n                            connectionMode=\"loose\"\r\n                            className=\"edge_points\"\r\n                            position=\"left\"\r\n                            isConnectable={true}\r\n                            style={{\r\n                              width: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                              // height: \"20px\",\r\n                              maxWidth: \"100%\",\r\n                              visibility:\r\n                                sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                              maxHeight: \"100%\",\r\n                              display: \"flex\",\r\n                              justifyContent: \"flex-start\",\r\n                              alignItems: \"center\",\r\n                              zIndex: 9999,\r\n                              position: \"absolute\",\r\n                              background: \"transparent\",\r\n                              border: \"none\",\r\n                              transform: `translateY(-50%)`,\r\n                              top: `${\r\n                                eachRowHeight / 2 +\r\n                                ind * eachRowHeight +\r\n                                tableHeaderHeight\r\n                              }px`,\r\n                              left: node.selected\r\n                                ? \"-3px\"\r\n                                : node?.data?.isGroupHead\r\n                                ? \"-3px\"\r\n                                : showDots\r\n                                ? \"-3px\"\r\n                                : \"1px\",\r\n                            }}\r\n                            onConnect={(params) =>\r\n                              console.log(\"handle onConnect\", params)\r\n                            }\r\n                            onMouseOver={() => {\r\n                              setShowDots(true);\r\n                              setHoveredItem(`left-${ind}`);\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                            <Box\r\n                              sx={{\r\n                                background:\r\n                                  (showDots && hoveredItem !== `left-${ind}`) ||\r\n                                  (node.selected &&\r\n                                    hoveredItem !== `left-${ind}`)\r\n                                    ? \"#CCDEF9\"\r\n                                    : hoveredItem === `left-${ind}`\r\n                                    ? colorsConst?.primaryColor\r\n                                    : \"transparent\",\r\n                                border:\r\n                                  showDots ||\r\n                                  node.selected ||\r\n                                  !copyAsImage ||\r\n                                  !isDownload\r\n                                    ? `1px solid ${colorsConst?.primaryColor}`\r\n                                    : // : \"1px solid transparent\",\r\n                                      \"none\",\r\n                                transform:\r\n                                  hoveredItem === `left-${ind}`\r\n                                    ? \"scale(1.5)\"\r\n                                    : \"\",\r\n                                borderRadius: \"50%\",\r\n                                pointerEvents: \"none\",\r\n                                width: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                                height: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                              }}\r\n                            />\r\n                          </Handle>\r\n                          <Handle\r\n                            key={`right-handle-${ind}`}\r\n                            id={`right-handle-${ind}`}\r\n                            // type=\"target\"\r\n                            connectionMode=\"loose\"\r\n                            position=\"right\"\r\n                            className=\"edge_points\"\r\n                            isConnectable={true}\r\n                            style={{\r\n                              background: \"transparent\",\r\n                              border: \"none\",\r\n                              zIndex: 9999,\r\n                              position: \"absolute\",\r\n                              visibility:\r\n                                sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                              transform: `translateY(-50%)`,\r\n                              width: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                              // height: \"20px\",\r\n                              maxWidth: \"100%\",\r\n                              maxHeight: \"100%\",\r\n                              display: \"flex\",\r\n                              justifyContent: \"flex-end\",\r\n                              alignItems: \"center\",\r\n                              top: `${\r\n                                eachRowHeight / 2 +\r\n                                ind * eachRowHeight +\r\n                                tableHeaderHeight\r\n                              }px`,\r\n                              right: node.selected\r\n                                ? \"-3px\"\r\n                                : node?.data?.isGroupHead\r\n                                ? \"-3px\"\r\n                                : showDots\r\n                                ? \"-3px\"\r\n                                : \"1px\",\r\n                            }}\r\n                            onConnect={(params) =>\r\n                              console.log(\"handle onConnect\", params)\r\n                            }\r\n                            onMouseOver={() => {\r\n                              setShowDots(true);\r\n                              setHoveredItem(`right-${ind}`);\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                            <Box\r\n                              sx={{\r\n                                background:\r\n                                  (showDots &&\r\n                                    hoveredItem !== `right-${ind}`) ||\r\n                                  (node.selected &&\r\n                                    hoveredItem !== `right-${ind}`)\r\n                                    ? \"#CCDEF9\"\r\n                                    : hoveredItem === `right-${ind}`\r\n                                    ? colorsConst?.primaryColor\r\n                                    : \"transparent\",\r\n                                border:\r\n                                  showDots ||\r\n                                  node.selected ||\r\n                                  !copyAsImage ||\r\n                                  !isDownload\r\n                                    ? `1px solid ${colorsConst?.primaryColor}`\r\n                                    : // : \"1px solid transparent\",\r\n                                      \"none\",\r\n                                transform:\r\n                                  hoveredItem === `right-${ind}`\r\n                                    ? \"scale(1.5)\"\r\n                                    : \"\",\r\n                                borderRadius: \"50%\",\r\n                                pointerEvents: \"none\",\r\n                                width: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                                height: isWidthLessthan50 ? \"12px\" : \"8px\",\r\n                              }}\r\n                            />\r\n                          </Handle>\r\n                        </Fragment>\r\n                      );\r\n                    })}\r\n                  </>\r\n                )}\r\n            </>\r\n          ) : (\r\n            !node?.dragging &&\r\n            !showExport &&\r\n            !node.data.locked &&\r\n            !copyAsImage &&\r\n            !isDownload &&\r\n            !isResizeRowCol && (\r\n              <>\r\n                <Handle\r\n                  id={\"bbb\"}\r\n                  connectionMode=\"loose\"\r\n                  className=\"edge_points\"\r\n                  position=\"left\"\r\n                  isConnectable={true}\r\n                  style={{\r\n                    width: \"12px\",\r\n                    height: \"12px\",\r\n                    visibility: sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                    transitionDuration: \"300ms\",\r\n                    transform:\r\n                      hoveredItem === \"left\"\r\n                        ? `scale(1.2)  translateY(-5px)`\r\n                        : `scale(1)  translateY(-6px)`,\r\n                    maxWidth: \"100%\",\r\n                    maxHeight: \"100%\",\r\n                    display: \"flex\",\r\n                    justifyContent: \"flex-start\",\r\n                    alignItems: \"center\",\r\n                    zIndex: 9999,\r\n                    position: \"absolute\",\r\n                    background: \"transparent\",\r\n                    border: \"none\",\r\n                  }}\r\n                  onConnect={(params) =>\r\n                    console.log(\"handle onConnect\", params)\r\n                  }\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 || isNodeSelected <= 0) && (\r\n                    <Box\r\n                      sx={{\r\n                        background:\r\n                          (showDots && hoveredItem !== \"left\") ||\r\n                          (node.selected && hoveredItem !== \"left\")\r\n                            ? \"#CCDEF9\"\r\n                            : hoveredItem === \"left\"\r\n                            ? colorsConst?.primaryColor\r\n                            : \"transparent\",\r\n                        border:\r\n                          showDots || node.selected\r\n                            ? `1px solid ${colorsConst?.primaryColor}`\r\n                            : // : \"1px solid transparent\",\r\n                              \"none\",\r\n                        transform: `scale(${1 / zoom}) translateX(-${\r\n                          zoom * 2\r\n                        }px)`,\r\n                        borderRadius: \"50%\",\r\n                        pointerEvents: \"none\",\r\n                        width: \"100%\",\r\n                        height: \"100%\",\r\n                      }}\r\n                    />\r\n                  )}\r\n                </Handle>\r\n                <Handle\r\n                  id={\"ccc\"}\r\n                  connectionMode=\"loose\"\r\n                  position=\"right\"\r\n                  className=\"edge_points\"\r\n                  isConnectable={true}\r\n                  style={{\r\n                    background: \"transparent\",\r\n                    visibility: sizeAsPerZoom < 25 ? \"hidden\" : \"visible\",\r\n                    border: \"none\",\r\n                    zIndex: 9999,\r\n                    position: \"absolute\",\r\n                    transitionDuration: \"300ms\",\r\n                    transform:\r\n                      hoveredItem === \"right\"\r\n                        ? `scale(1.2)  translateY(-5px)`\r\n                        : `scale(1) translateY( -6px)  `,\r\n                    width: \"12px\",\r\n                    transformOrigin: \"center\",\r\n                    height: \"12px\",\r\n                    maxWidth: \"100%\",\r\n                    maxHeight: \"100%\",\r\n                    display: \"flex\",\r\n                    justifyContent: \"flex-end\",\r\n                    alignItems: \"center\",\r\n                  }}\r\n                  onConnect={(params) =>\r\n                    console.log(\"handle onConnect\", params)\r\n                  }\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 || isNodeSelected <= 0) && (\r\n                    <Box\r\n                      sx={{\r\n                        background:\r\n                          (showDots && hoveredItem !== \"right\") ||\r\n                          (node.selected && hoveredItem !== \"right\")\r\n                            ? \"#CCDEF9\"\r\n                            : hoveredItem === \"right\"\r\n                            ? colorsConst?.primaryColor\r\n                            : \"transparent\",\r\n                        border:\r\n                          showDots || node.selected\r\n                            ? `1px solid ${colorsConst?.primaryColor}`\r\n                            : // : \"1px solid transparent\",\r\n                              \"none\",\r\n                        transform: `scale(${1 / zoom}) translateX(${\r\n                          zoom * 2\r\n                        }px) `,\r\n                        borderRadius: \"50%\",\r\n                        pointerEvents: \"none\",\r\n                        width: \"100%\",\r\n                        height: \"100%\",\r\n                      }}\r\n                    />\r\n                  )}\r\n                </Handle>\r\n              </>\r\n            )\r\n          )}\r\n\r\n          {sizeAsPerZoom > 25 &&\r\n            node?.selected &&\r\n            !node.data.locked &&\r\n            !showExport &&\r\n            !copyAsImage &&\r\n            !isDownload &&\r\n            !isNodeSelectionStarted &&\r\n            !isResizeRowCol && (\r\n              <>\r\n                <NodeResizeControl\r\n                  position=\"bottom-right\"\r\n                  onResize={() => {\r\n                    resizingRef.current = true;\r\n                    onResize();\r\n                  }}\r\n                  onResizeStart={() => {\r\n                    onResizeStart(node);\r\n                  }}\r\n                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                  keepAspectRatio={\r\n                    node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\"\r\n                      ? false\r\n                      : true\r\n                  }\r\n                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                  minHeight={\r\n                    node?.data?.tableData?.height || tableCells?.length * 45\r\n                  }\r\n                  // {...((node.data.key === \"Erd_Field_22\" ||\r\n                  //   node.data.key === \"Erd_Field_23\" ||\r\n                  //   node.data.key === \"Erd_Field_24\" ||\r\n                  //   node.data.key === \"Erd_Field_25\") && {\r\n                  //   maxHeight: node?.data?.tableData?.height,\r\n                  // })}\r\n                  style={{\r\n                    zIndex: 999999999999,\r\n                    backgroundColor: \"transparent\",\r\n                    border: \"1px solid transparent\",\r\n                  }}\r\n                >\r\n                  <Box\r\n                    sx={{\r\n                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                      width: \"12px\",\r\n                      height: \"12px\",\r\n                      borderRadius: \"1.5px\",\r\n                      transform: `scale(${1 / zoom}) translate(-${\r\n                        zoom * 5\r\n                      }px, -${zoom * 5}px)`,\r\n                      transformOrigin: \"center\",\r\n                      border:\r\n                        node?.selected && !copyAsImage && !isDownload\r\n                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                          : \"none\",\r\n                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                    }}\r\n                  />\r\n                </NodeResizeControl>\r\n                <NodeResizeControl\r\n                  position=\"bottom-left\"\r\n                  onResize={() => {\r\n                    resizingRef.current = true;\r\n                    onResize();\r\n                  }}\r\n                  onResizeStart={() => {\r\n                    onResizeStart(node);\r\n                  }}\r\n                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                  keepAspectRatio={\r\n                    node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\"\r\n                      ? false\r\n                      : true\r\n                  }\r\n                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                  minHeight={\r\n                    node?.data?.tableData?.height || tableCells?.length * 45\r\n                  }\r\n                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\") && {\r\n                    maxHeight: node?.data?.tableData?.height,\r\n                  })}\r\n                  style={{\r\n                    zIndex: 999999999999,\r\n                    backgroundColor: \"transparent\",\r\n                    border: \"1px solid transparent\",\r\n                  }}\r\n                >\r\n                  <Box\r\n                    sx={{\r\n                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                      width: \"12px\",\r\n                      height: \"12px\",\r\n                      borderRadius: \"1.5px\",\r\n                      transform: `scale(${1 / zoom}) translate(-${\r\n                        zoom * 5\r\n                      }px, -${zoom * 5}px)`,\r\n                      transformOrigin: \"center\",\r\n                      border:\r\n                        node?.selected && !copyAsImage && !isDownload\r\n                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                          : \"none\",\r\n                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                    }}\r\n                  />\r\n                </NodeResizeControl>\r\n                <NodeResizeControl\r\n                  position=\"top-right\"\r\n                  onResize={() => {\r\n                    resizingRef.current = true;\r\n                    onResize();\r\n                  }}\r\n                  onResizeStart={() => {\r\n                    onResizeStart(node);\r\n                  }}\r\n                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                  keepAspectRatio={\r\n                    node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\"\r\n                      ? false\r\n                      : true\r\n                  }\r\n                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                  minHeight={\r\n                    node?.data?.tableData?.height || tableCells?.length * 45\r\n                  }\r\n                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\") && {\r\n                    maxHeight: node?.data?.tableData?.height,\r\n                  })}\r\n                  style={{\r\n                    zIndex: 999999999999,\r\n                    backgroundColor: \"transparent\",\r\n                    border: \"1px solid transparent\",\r\n                  }}\r\n                >\r\n                  <Box\r\n                    sx={{\r\n                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                      width: \"12px\",\r\n                      height: \"12px\",\r\n                      borderRadius: \"1.5px\",\r\n                      transform: `scale(${1 / zoom}) translate(-${\r\n                        zoom * 5\r\n                      }px, -${zoom * 5}px)`,\r\n                      transformOrigin: \"center\",\r\n                      border:\r\n                        node?.selected && !copyAsImage && !isDownload\r\n                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                          : \"none\",\r\n                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                    }}\r\n                  />\r\n                </NodeResizeControl>\r\n                <NodeResizeControl\r\n                  position=\"top-left\"\r\n                  onResize={() => {\r\n                    resizingRef.current = true;\r\n                    onResize();\r\n                  }}\r\n                  onResizeStart={() => {\r\n                    onResizeStart(node);\r\n                  }}\r\n                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                  keepAspectRatio={\r\n                    node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\"\r\n                      ? false\r\n                      : true\r\n                  }\r\n                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                  minHeight={\r\n                    node?.data?.tableData?.height || tableCells?.length * 45\r\n                  }\r\n                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                    node.data.key === \"Erd_Field_23\" ||\r\n                    node.data.key === \"Erd_Field_24\" ||\r\n                    node.data.key === \"Erd_Field_25\") && {\r\n                    maxHeight: node?.data?.tableData?.height,\r\n                  })}\r\n                  style={{\r\n                    zIndex: 999999999999,\r\n                    backgroundColor: \"transparent\",\r\n                    border: \"1px solid transparent\",\r\n                  }}\r\n                >\r\n                  <Box\r\n                    sx={{\r\n                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                      width: \"12px\",\r\n                      height: \"12px\",\r\n                      borderRadius: \"1.5px\",\r\n                      transform: `scale(${1 / zoom}) translate(-${\r\n                        zoom * 5\r\n                      }px, -${zoom * 5}px)`,\r\n                      transformOrigin: \"center\",\r\n                      border:\r\n                        node?.selected && !copyAsImage && !isDownload\r\n                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                          : \"none\",\r\n                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                    }}\r\n                  />\r\n                </NodeResizeControl>\r\n                {/* <NodeResizeControl\r\n                                  position=\"bottom-right\"\r\n                                  onResize={() => (resizingRef.current = true)}\r\n                                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                                  keepAspectRatio={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? false\r\n                                      : true\r\n                                  }\r\n                                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                                  minHeight={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? currentNode?.height\r\n                                      : node?.data?.tableData?.height || tableCells?.length * 45\r\n                                  }\r\n                                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\") && {\r\n                                    maxHeight: currentNode?.height,\r\n                                  })}\r\n                                  style={{\r\n                                    zIndex: 99,\r\n                                  }}\r\n                                >\r\n                                  <Box\r\n                                    sx={{\r\n                                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                                      width: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      height: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      borderRadius: \"1.5px\",\r\n                                      transform: isWidthLessthan100\r\n                                        ? `translate(-6px, -7px)`\r\n                                        : isWidthLessthan50\r\n                                        ? `translate(-9px, -10px)`\r\n                                        : isWidthLessthan25\r\n                                        ? `translate(-6px, -6.5px)`\r\n                                        : `translate(-4.5px, -4.5px)`,\r\n                                      border:\r\n                                        node?.selected && !copyAsImage && !isDownload\r\n                                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                                          : \"none\",\r\n                                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                                    }}\r\n                                  />\r\n                                </NodeResizeControl>\r\n                                <NodeResizeControl\r\n                                  position=\"bottom-left\"\r\n                                  onResize={() => (resizingRef.current = true)}\r\n                                  keepAspectRatio={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? false\r\n                                      : true\r\n                                  }\r\n                                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                                  minHeight={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? currentNode?.height\r\n                                      : node?.data?.tableData?.height || tableCells?.length * 45\r\n                                  }\r\n                                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\") && {\r\n                                    maxHeight: currentNode?.height,\r\n                                  })}\r\n                                  style={{\r\n                                    zIndex: 99,\r\n                                  }}\r\n                                >\r\n                                  <Box\r\n                                    sx={{\r\n                                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                                      width: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      height: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      borderRadius: \"1.5px\",\r\n                                      transform: isWidthLessthan100\r\n                                        ? `translate(-5px, -6px)`\r\n                                        : isWidthLessthan50\r\n                                        ? `translate(-9px, -9px)`\r\n                                        : isWidthLessthan25\r\n                                        ? `translate(-6px, -6.5px)`\r\n                                        : `translate(-3.5px, -4.5px)`,\r\n                                      border:\r\n                                        node?.selected && !copyAsImage && !isDownload\r\n                                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                                          : \"none\",\r\n                                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                                    }}\r\n                                  />\r\n                                </NodeResizeControl>\r\n                                <NodeResizeControl\r\n                                  position=\"top-right\"\r\n                                  onResize={() => (resizingRef.current = true)}\r\n                                  keepAspectRatio={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? false\r\n                                      : true\r\n                                  }\r\n                                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                                  minHeight={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? currentNode?.height\r\n                                      : node?.data?.tableData?.height || tableCells?.length * 45\r\n                                  }\r\n                                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\") && {\r\n                                    maxHeight: currentNode?.height,\r\n                                  })}\r\n                                  style={{\r\n                                    zIndex: 99,\r\n                                  }}\r\n                                >\r\n                                  <Box\r\n                                    sx={{\r\n                                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                                      width: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      height: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      borderRadius: \"1.5px\",\r\n                                      transform: isWidthLessthan100\r\n                                        ? `translate(-6px, -5px)`\r\n                                        : isWidthLessthan50\r\n                                        ? `translate(-9px, -9px)`\r\n                                        : isWidthLessthan25\r\n                                        ? `translate(-6px, -6.5px)`\r\n                                        : `translate(-4.5px, -3.5px)`,\r\n                                      border:\r\n                                        node?.selected && !copyAsImage && !isDownload\r\n                                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                                          : \"none\",\r\n                                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                                    }}\r\n                                  />\r\n                                </NodeResizeControl>\r\n                                <NodeResizeControl\r\n                                  position=\"top-left\"\r\n                                  onResize={() => (resizingRef.current = true)}\r\n                                  keepAspectRatio={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? false\r\n                                      : true\r\n                                  }\r\n                                  onResizeEnd={(e) => onResizeEnd(e, node)}\r\n                                  minWidth={node?.data?.tableData?.width || maxRowLength * 75}\r\n                                  minHeight={\r\n                                    node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\"\r\n                                      ? currentNode?.height\r\n                                      : node?.data?.tableData?.height || tableCells?.length * 45\r\n                                  }\r\n                                  {...((node.data.key === \"Erd_Field_22\" ||\r\n                                    node.data.key === \"Erd_Field_23\" ||\r\n                                    node.data.key === \"Erd_Field_24\" ||\r\n                                    node.data.key === \"Erd_Field_25\") && {\r\n                                    maxHeight: currentNode?.height,\r\n                                  })}\r\n                                  style={{\r\n                                    zIndex: 99,\r\n                                  }}\r\n                                >\r\n                                  <Box\r\n                                    sx={{\r\n                                      background: node?.selected ? \"#FFFFFF\" : \"transparent\",\r\n                                      width: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      height: isWidthLessthan100\r\n                                        ? \"13px\"\r\n                                        : isWidthLessthan50\r\n                                        ? \"20px\"\r\n                                        : isWidthLessthan25\r\n                                        ? \"30px\"\r\n                                        : \"10px\",\r\n                                      borderRadius: \"1.5px\",\r\n                                      transform: isWidthLessthan100\r\n                                        ? `translate(-5px, -5px)`\r\n                                        : isWidthLessthan50\r\n                                        ? `translate(-9px, -9px)`\r\n                                        : isWidthLessthan25\r\n                                        ? `translate(-6px, -6.5px)`\r\n                                        : `translate(-3.5px, -3.5px)`,\r\n                                      border:\r\n                                        node?.selected && !copyAsImage && !isDownload\r\n                                          ? `1px solid ${colorsConst?.primaryColor}`\r\n                                          : \"none\",\r\n                                      \"&:hover\": { bgcolor: colorsConst?.primaryColor },\r\n                                    }}\r\n                                  />\r\n                                </NodeResizeControl> */}\r\n              </>\r\n            )}\r\n          {/* <Box\r\n            onClick={() => setIsInputVisible(false)}\r\n            // onMouseEnter={() => setHoverPlus(true)}\r\n            // onMouseLeave={() => setHoverPlus(false)}\r\n\r\n       \r\n          > */}\r\n          <TableContainer\r\n            ref={simpleRef}\r\n            sx={{\r\n              width: \"100%\",\r\n              position: \"absolute\",\r\n              height: \"100%\",\r\n              overflow: \"visible\",\r\n            }}\r\n          >\r\n            <Table\r\n              size=\"small\"\r\n              aria-label=\"adense table\"\r\n              ref={tableRef}\r\n              sx={{\r\n                height: \"100%\",\r\n              }}\r\n              onClick={() => setIsInputVisible(false)}\r\n            >\r\n              <TableBody\r\n                sx={{\r\n                  ...(tableType === \"ERD\" && {\r\n                    border: `1px solid ${currentBorderColor}`,\r\n                  }),\r\n                }}\r\n              >\r\n                {tableCells?.map((row, rowIndex) => {\r\n                  const maxCellHeight = Object.values(row).reduce(\r\n                    (maxHeight, cell) => Math.max(maxHeight, cell?.height || 0),\r\n                    0\r\n                  );\r\n                  return (\r\n                    <TableRow\r\n                      // onContextMenu={(e) => {\r\n                      //   e.preventDefault();\r\n                      //   e.stopPropagation();\r\n                      // }}\r\n                      key={rowIndex}\r\n                      ref={rowIndex === 0 ? firstRowRef : null}\r\n                      sx={{\r\n                        position: \"relative\",\r\n                        minHeight: `${maxCellHeight}px`,\r\n                        maxHeight: `${maxCellHeight}px`,\r\n                        height: `${maxCellHeight}px`,\r\n                      }}\r\n                      onMouseEnter={() => setHoverPlus(true)}\r\n                      onMouseLeave={() => setHoverPlus(false)}\r\n                    >\r\n                      {!node.data.locked && (\r\n                        <Stack\r\n                          // direction={\"row\"}\r\n                          alignItems={\"center\"}\r\n                          justifyContent={\r\n                            heightDynamic?.heights[0] < 30\r\n                              ? \"center\"\r\n                              : \"space-between\"\r\n                          }\r\n                          height={\"100%\"}\r\n                          sx={{\r\n                            position: \"absolute\",\r\n                            bottom: 0,\r\n                            left: \"-6.5%\",\r\n                          }}\r\n                          onMouseOverCapture={() => {\r\n                            setHoveredRowCol({\r\n                              row: rowIndex,\r\n                              col: null,\r\n                            });\r\n                          }}\r\n                          onMouseEnter={() => setHoverPlus(false)}\r\n                        >\r\n                          {heightDynamic?.heights[0] > 25 && (\r\n                            <Stack\r\n                              direction={\"row\"}\r\n                              alignItems={\"center\"}\r\n                              justifyContent={\"center\"}\r\n                              height={\"14px\"}\r\n                              width={\"14px\"}\r\n                              borderRadius={\"8px\"}\r\n                              sx={{\r\n                                cursor: \"pointer\",\r\n                                transition: \"all 0.3s\",\r\n                                background: \"#F5F5F5\",\r\n                                borderRadius: \"12px\",\r\n                                opacity:\r\n                                  hoveredRowCol.row === rowIndex && !hoverPlus\r\n                                    ? 1\r\n                                    : 0,\r\n                              }}\r\n                              onClick={(e) => {\r\n                                e.stopPropagation();\r\n                                handleAddRowBetween(\"before\", rowIndex);\r\n                              }}\r\n                            >\r\n                              <IcPlus2 fill=\"#282828\" />\r\n                            </Stack>\r\n                          )}\r\n                          <Stack\r\n                            direction={\"row\"}\r\n                            alignItems={\"center\"}\r\n                            justifyContent={\"center\"}\r\n                            width={\"14px\"}\r\n                            height={\"20px\"}\r\n                            borderRadius={\"8px\"}\r\n                            sx={{\r\n                              cursor: \"pointer\",\r\n                              transition: \"all 0.3s\",\r\n                              background: \"#F5F5F5\",\r\n                              borderRadius: \"12px\",\r\n                              opacity: hoveredRowCol.row === rowIndex ? 1 : 0,\r\n                            }}\r\n                            onClick={(e) => {\r\n                              e.stopPropagation();\r\n                              setDisableMerge(false);\r\n                              handleSelectRowCol(\"row\", row);\r\n                            }}\r\n                            onMouseOverCapture={() => {\r\n                              setHoveredRowCol({\r\n                                col: null,\r\n                                row: rowIndex,\r\n                              });\r\n                            }}\r\n                          >\r\n                            <IcMenuDotsVertical\r\n                              height=\"32\"\r\n                              width=\"32\"\r\n                              fill=\"#282828\"\r\n                            />\r\n                          </Stack>\r\n                          {heightDynamic?.heights[0] > 25 && (\r\n                            <Stack\r\n                              direction={\"row\"}\r\n                              alignItems={\"center\"}\r\n                              justifyContent={\"center\"}\r\n                              height={\"14px\"}\r\n                              width={\"14px\"}\r\n                              borderRadius={\"8px\"}\r\n                              sx={{\r\n                                cursor: \"pointer\",\r\n                                transition: \"all 0.3s\",\r\n                                background: \"#F5F5F5\",\r\n                                borderRadius: \"12px\",\r\n                                opacity:\r\n                                  hoveredRowCol.row === rowIndex && !hoverPlus\r\n                                    ? 1\r\n                                    : 0,\r\n                              }}\r\n                              onClick={(e) => {\r\n                                e.stopPropagation();\r\n                                handleAddRowBetween(\"after\", rowIndex);\r\n                              }}\r\n                            >\r\n                              <IcPlus2 fill=\"#282828\" />\r\n                            </Stack>\r\n                          )}\r\n                        </Stack>\r\n                      )}\r\n                      {Object.keys(row)?.map((column, colIndex) => {\r\n                        const cellKey = `${rowIndex}-${column}`;\r\n\r\n                        return (\r\n                          <TableCell\r\n                            key={`${node?.id}-${cellKey}-${colIndex}-${rowIndex}`}\r\n                            id={`${node?.id}-${cellKey}`}\r\n                            colSpan={row[column]?.colSpan || 1}\r\n                            rowSpan={row[column]?.rowSpan || 1}\r\n                            ref={keyRef}\r\n                            sx={{\r\n                              outline: \"none\",\r\n                              background:\r\n                                tableType === \"ERD\"\r\n                                  ? currentNode?.data?.tableData?.secondaryColor\r\n                                  : row[column]?.backgroundColor\r\n                                  ? row[column]?.backgroundColor\r\n                                  : rowIndex === 0\r\n                                  ? node.data.tableStyle.headerColor\r\n                                  : rowIndex % 2 === 0\r\n                                  ? node.data.tableStyle.evenRowColor\r\n                                  : \"#FFFFFF\",\r\n                              borderWidth:\r\n                                activeCell === cellKey ||\r\n                                multiActiveCells.includes(cellKey)\r\n                                  ? \"1px\"\r\n                                  : node.data.variant === 4\r\n                                  ? `${rowIndex === 1 ? \"1px\" : \"0px\"} ${\r\n                                      rowIndex === 0 ? \"0px\" : \"1px\"\r\n                                    } ${\r\n                                      rowIndex ===\r\n                                      node?.data?.tableData?.tableCells\r\n                                        ?.length -\r\n                                        1\r\n                                        ? \"1px\"\r\n                                        : \"0px\"\r\n                                    } ${rowIndex === 0 ? \"0px\" : \"1px\"}`\r\n                                  : \"1px 1px 1px 1px\",\r\n                              fontSize: currentFontSize,\r\n                              fontFamily: row[column]?.fontFamily\r\n                                ? row[column]?.fontFamily?.includes(\"important\")\r\n                                  ? row[column]?.fontFamily\r\n                                  : `${row[column]?.fontFamily} !important`\r\n                                : currentFontFamily?.includes(\"important\")\r\n                                ? currentFontFamily\r\n                                : `${currentFontFamily} !important`,\r\n                              borderColor: `${currentBorderColor} !important`,\r\n                              ...(tableType === \"ERD\" && {\r\n                                borderBottom: \"none !important\",\r\n                                borderTop: \"none !important\",\r\n                              }),\r\n                              // width: `${\r\n                              //     row[column]?.width || 100\r\n                              //   }px !important`,\r\n                              minWidth: `${\r\n                                row[column]?.width ? row[column]?.width : 100\r\n                              }px !important`,\r\n\r\n                              maxWidth: `${\r\n                                row[column]?.width ? row[column]?.width : 100\r\n                              }px !important`,\r\n                              position: \"relative\",\r\n                              padding: \"0px !important\",\r\n                              \"& .MuiOutlinedInput-input\": {\r\n                                padding: \"0px !important\",\r\n                              },\r\n                              \"& .MuiTableCell-root\": {\r\n                                padding: \"0px !important\",\r\n                              },\r\n                            }}\r\n                            tabIndex={activeCell === cellKey ? 0 : -1}\r\n                            onKeyDown={async (e) => {\r\n                              if (\r\n                                [\r\n                                  \"Tab\",\r\n                                  \"ArrowLeft\",\r\n                                  \"ArrowRight\",\r\n                                  \"ArrowDown\",\r\n                                  \"ArrowUp\",\r\n                                ].includes(e.key)\r\n                              ) {\r\n                                e.stopPropagation();\r\n                                setIsEditorShow(false);\r\n                                cellEditors.forEach(({ editor }) => {\r\n                                  if (editor) {\r\n                                    if (!editor.isFocused) {\r\n                                      handleChangeCellOnTab(\r\n                                        e,\r\n                                        row,\r\n                                        colIndex,\r\n                                        rowIndex\r\n                                      );\r\n                                    }\r\n                                  }\r\n                                });\r\n                              } else if (\r\n                                (e.key === \"Delete\" || e.key === \"Backspace\") &&\r\n                                activeCell !== \"table\"\r\n                              ) {\r\n                                e.stopPropagation();\r\n                                cellEditors.forEach(({ editor }) => {\r\n                                  if (editor) {\r\n                                    const content = editor.getText();\r\n                                    if (content.length > 0) {\r\n                                      const newContent = content.slice(0, -1);\r\n                                      editor.commands.setContent(newContent);\r\n                                      // editor.chain().focus().run();\r\n                                    }\r\n                                  }\r\n                                });\r\n                                return;\r\n                              } else if (\r\n                                /^[a-zA-Z0-9]$/.test(e.key) &&\r\n                                !(e.ctrlKey || e.metaKey)\r\n                              ) {\r\n                                cellEditors.forEach(({ editor }) => {\r\n                                  if (editor) {\r\n                                    editor\r\n                                      .chain()\r\n                                      .focus()\r\n                                      .insertContent(e.key)\r\n                                      .run();\r\n                                  }\r\n                                });\r\n                                e.preventDefault();\r\n                              } else if (\r\n                                e.key === \"c\" &&\r\n                                (e.ctrlKey || e.metaKey) &&\r\n                                activeCell !== \"table\"\r\n                              ) {\r\n                                e.stopPropagation();\r\n                                e.preventDefault();\r\n\r\n                                const editorContents = [];\r\n                                cellEditors.forEach(({ editor }) => {\r\n                                  if (editor) {\r\n                                    const content = editor.getHTML();\r\n                                    // editor.chain().focus().run();\r\n                                    editorContents.push({ content });\r\n                                  }\r\n                                });\r\n\r\n                                navigator.clipboard.writeText(\r\n                                  JSON.stringify(editorContents)\r\n                                );\r\n                              } else if (\r\n                                e.key === \"v\" &&\r\n                                (e.ctrlKey || e.metaKey) &&\r\n                                activeCell !== \"table\"\r\n                              ) {\r\n                                e.stopPropagation();\r\n                                e.preventDefault();\r\n\r\n                                try {\r\n                                  let textContent = \"\";\r\n                                  const clipboardData =\r\n                                    await navigator.clipboard.read();\r\n\r\n                                  for (const item of clipboardData) {\r\n                                    if (item.types.includes(\"text/plain\")) {\r\n                                      const textBlob = await item.getType(\r\n                                        \"text/plain\"\r\n                                      );\r\n                                      textContent = await textBlob.text();\r\n                                    }\r\n                                  }\r\n\r\n                                  if (!textContent) return; // Exit if clipboard is empty\r\n\r\n                                  let copiedCells;\r\n                                  try {\r\n                                    copiedCells = JSON.parse(textContent); // Ensure valid JSON\r\n                                  } catch (error) {\r\n                                    console.error(\r\n                                      \"Invalid clipboard data\",\r\n                                      error\r\n                                    );\r\n                                    return;\r\n                                  }\r\n\r\n                                  let newRows = JSON.parse(\r\n                                    JSON.stringify(\r\n                                      node?.data?.tableData?.tableCells || []\r\n                                    )\r\n                                  );\r\n\r\n                                  if (!column) return;\r\n\r\n                                  let columnLetterMatch =\r\n                                    column.match(/[A-Z]+/);\r\n                                  let columnNumberMatch = column.match(/\\d+/);\r\n\r\n                                  if (!columnLetterMatch || !columnNumberMatch)\r\n                                    return;\r\n\r\n                                  let columnLetter = columnLetterMatch[0]; // Extract column letter\r\n                                  let columnNumber = parseInt(\r\n                                    columnNumberMatch[0]\r\n                                  ); // Extract row number\r\n\r\n                                  // Create new columns dynamically based on copiedCells length\r\n                                  let newColumnKeys = [];\r\n                                  for (let i = 1; i < copiedCells.length; i++) {\r\n                                    let newColumnNumber = columnNumber + i; // Shift for multiple columns\r\n                                    let newColumnKey =\r\n                                      columnLetter + newColumnNumber;\r\n                                    newColumnKeys.push(newColumnKey);\r\n                                  }\r\n\r\n                                  copiedCells.forEach((cellContent, index) => {\r\n                                    let targetRowIndex = rowIndex; // Row where paste happens\r\n\r\n                                    newRows.forEach((row) => {\r\n                                      // Ensure each new column exists in the row\r\n                                      newColumnKeys.forEach((colKey) => {\r\n                                        if (!row[colKey]) {\r\n                                          row[colKey] = {\r\n                                            text: \"\",\r\n                                            width: 100,\r\n                                            height: 50,\r\n                                          };\r\n                                        }\r\n                                      });\r\n                                    });\r\n\r\n                                    let targetColumn =\r\n                                      index === 0\r\n                                        ? column\r\n                                        : newColumnKeys[index - 1];\r\n\r\n                                    if (\r\n                                      newRows[targetRowIndex] &&\r\n                                      newRows[targetRowIndex][targetColumn]\r\n                                    ) {\r\n                                      newRows[targetRowIndex][\r\n                                        targetColumn\r\n                                      ].editorHTML = cellContent.content;\r\n                                    }\r\n                                  });\r\n\r\n                                  let updatedNodes = getNodes();\r\n                                  let updatedNode;\r\n                                  const maxCellsRow = newRows.reduce(\r\n                                    (maxRow, currentRow) => {\r\n                                      return Object.keys(currentRow).length >\r\n                                        Object.keys(maxRow).length\r\n                                        ? currentRow\r\n                                        : maxRow;\r\n                                    },\r\n                                    newRows[0]\r\n                                  );\r\n\r\n                                  const totalWidth = Object.keys(\r\n                                    maxCellsRow\r\n                                  ).reduce((sum, cellKey) => {\r\n                                    const maxColumnWidth = Math.max(\r\n                                      ...newRows.map(\r\n                                        (row) => row[cellKey]?.width || 0\r\n                                      )\r\n                                    );\r\n                                    return sum + maxColumnWidth;\r\n                                  }, 0);\r\n\r\n                                  setNodes((nds) => {\r\n                                    localStorage.setItem(\r\n                                      \"architectureJson\",\r\n                                      JSON.stringify({\r\n                                        architecture_json: {\r\n                                          nodes: nds,\r\n                                          lastEvent: ``,\r\n                                        },\r\n                                      })\r\n                                    );\r\n                                    updatedNodes = nds.map((n) => {\r\n                                      if (n?.id === node?.id) {\r\n                                        updatedNode = {\r\n                                          ...n,\r\n                                          selected: true,\r\n                                          data: {\r\n                                            ...n?.data,\r\n                                            rowsAndCols: {\r\n                                              ...n.data.rowsAndCols,\r\n                                              col:\r\n                                                n.data.rowsAndCols.col +\r\n                                                newColumnKeys.length,\r\n                                            },\r\n                                            tableData: {\r\n                                              ...(n?.data?.tableData || {}),\r\n                                              rowsAndCols: {\r\n                                                ...n.data.tableData.rowsAndCols,\r\n                                                col:\r\n                                                  n.data.tableData.rowsAndCols\r\n                                                    .col + newColumnKeys.length,\r\n                                              },\r\n                                              tableCells: newRows,\r\n                                            },\r\n                                            width: totalWidth + 5,\r\n                                            style: {\r\n                                              ...n.data.style,\r\n                                              width: totalWidth + 5,\r\n                                            },\r\n                                          },\r\n                                          style: {\r\n                                            ...n.style,\r\n                                            width: totalWidth + 5,\r\n                                          },\r\n                                          width: totalWidth + 5,\r\n                                        };\r\n\r\n                                        return updatedNode;\r\n                                      }\r\n                                      return n;\r\n                                    });\r\n\r\n                                    return updatedNodes;\r\n                                  });\r\n                                  setTableCells(newRows);\r\n\r\n                                  const search = new URLSearchParams(\r\n                                    location.search\r\n                                  );\r\n                                  const a_id = search.get(\"a_id\");\r\n                                  let parsedData = {};\r\n                                  if (user_data) {\r\n                                    parsedData = JSON.parse(user_data);\r\n                                  }\r\n                                  updateJson({\r\n                                    json: {\r\n                                      architecture_json: {\r\n                                        nodes: updatedNodes,\r\n                                        lastUpdatedBy: parsedData?.user_id,\r\n                                      },\r\n                                    },\r\n                                    id,\r\n                                    dispatch,\r\n                                    undo,\r\n                                    a_id,\r\n                                    takeSnapshot,\r\n                                  });\r\n                                  updateEdgeHandles();\r\n                                } catch (err) {\r\n                                  console.error(\r\n                                    \"Error pasting clipboard data:\",\r\n                                    err\r\n                                  );\r\n                                }\r\n                              }\r\n                            }}\r\n                            onContextMenu={(e) => {\r\n                              e.preventDefault();\r\n                              e.stopPropagation();\r\n                              setMoreOption(false);\r\n                              if (!isPopoverOpen) {\r\n                                handlePopoverOpen(e);\r\n                              }\r\n                            }}\r\n                            onClick={(e) => {\r\n                              setRow({\r\n                                row: rowIndex,\r\n                                col: null,\r\n                              });\r\n                              setColumnPop(column);\r\n                              setAnchorEl(null);\r\n                              setIsEditorShow(false);\r\n                              setIsInputVisible(false);\r\n                              setIsPopoverOpen(false);\r\n                              setRowDelete(row);\r\n                              if (!node?.data?.locked) {\r\n                                if (\r\n                                  showTableVariations ||\r\n                                  showBgColor ||\r\n                                  showBorderColor ||\r\n                                  showFontFamily ||\r\n                                  showFontSizeOpt ||\r\n                                  showTextDecoration ||\r\n                                  showAlignment ||\r\n                                  showTextColor ||\r\n                                  showTableMoreOptions\r\n                                ) {\r\n                                  setShowTableVariations(false);\r\n                                  setShowBgColor(false);\r\n                                  setShowBorderColor(false);\r\n                                  setShowFontFamily(false);\r\n                                  setShowFontSizeOpt(false);\r\n                                  setShowTextDecoration(false);\r\n                                  setShowAlignment(false);\r\n                                  setShowTextColor(false);\r\n                                  setShowTableMoreOptions(false);\r\n                                } else {\r\n                                  if (node.selected) {\r\n                                    e.preventDefault();\r\n                                    e.stopPropagation();\r\n                                    if (\r\n                                      isCellShow === \"active\" &&\r\n                                      activeCell === cellKey\r\n                                    ) {\r\n                                      cellEditors.forEach(({ editor }) => {\r\n                                        if (editor) {\r\n                                          editor.chain().focus();\r\n                                        }\r\n                                      });\r\n                                    }\r\n                                    if (e.ctrlKey || e.metaKey) {\r\n                                      toggleMultipleActiveCells(e, cellKey);\r\n                                    } else if (e.shiftKey) {\r\n                                      multipleActiveCells(e, cellKey);\r\n                                    } else {\r\n                                      setSelectedCell(cellKey);\r\n                                      setActiveCell(cellKey);\r\n                                      setActiveCellData(row[column]);\r\n                                      setColor(\r\n                                        row[column]?.backgroundColor\r\n                                          ? row[column]?.backgroundColor\r\n                                          : rowIndex\r\n                                      );\r\n                                      // setAnchorEl(e.currentTarget);\r\n                                      setLinkText(row[column]?.linkText || \"\");\r\n                                      setIsCellShow(\"active\");\r\n                                      setMultiActiveCells([cellKey]);\r\n                                      const input = document.getElementById(\r\n                                        `${cellKey}-${colIndex}`\r\n                                      );\r\n                                      input?.focus();\r\n                                    }\r\n                                  } else {\r\n                                    setActiveCell(\"table\");\r\n                                    setSelectedCell(\"table\");\r\n                                    setColor();\r\n                                  }\r\n                                }\r\n                                // setColor(\r\n                                //   row[column]?.backgroundColor\r\n                                //     ? row[column]?.backgroundColor\r\n                                //     : rowIndex\r\n                                // );\r\n                              }\r\n                            }}\r\n                            onMouseOverCapture={(e) => {\r\n                              setHoveredRowCol({\r\n                                row: rowIndex,\r\n                                col: colIndex,\r\n                              });\r\n                            }}\r\n                          >\r\n                            <div\r\n                              style={{\r\n                                position: \"absolute\",\r\n                                bottom: \"-3px\",\r\n                                width: \"100%\",\r\n                                height: \"5px\",\r\n                                cursor: \"row-resize\",\r\n                                background: \"transparent\",\r\n                              }}\r\n                              onMouseDownCapture={(e) => {\r\n                                e.stopPropagation();\r\n                                handleResizeStartRow(e, rowIndex);\r\n                              }}\r\n                            ></div>\r\n                            <div\r\n                              style={{\r\n                                position: \"absolute\",\r\n                                right: \"-3px\",\r\n                                width: \"5px\",\r\n                                top: 0,\r\n                                height: \"100%\",\r\n                                cursor: \"col-resize\",\r\n                                background: \"transparent\",\r\n                              }}\r\n                              onMouseDownCapture={(e) => {\r\n                                e.stopPropagation();\r\n                                handleResizeStartCol(e, rowIndex, column);\r\n                              }}\r\n                            ></div>\r\n                            {!node.data.locked && rowIndex === 0 && (\r\n                              <Stack\r\n                                direction={\"row\"}\r\n                                display={\"flex\"}\r\n                                alignItems={\"center\"}\r\n                                justifyContent={\r\n                                  widthDynamic?.referenceWidth < 35\r\n                                    ? \"center\"\r\n                                    : \"space-between\"\r\n                                }\r\n                                width={\"100%\"}\r\n                                sx={{\r\n                                  position: \"absolute\",\r\n                                  bottom: \"96%\",\r\n                                  left: 0,\r\n                                }}\r\n                                onMouseEnter={() => setHoverPlus(false)}\r\n                                onMouseOverCapture={() => {\r\n                                  setHoveredRowCol({\r\n                                    row: null,\r\n                                    col: colIndex,\r\n                                  });\r\n                                }}\r\n                              >\r\n                                {widthDynamic?.referenceWidth > 35 && (\r\n                                  <Stack\r\n                                    direction={\"row\"}\r\n                                    alignItems={\"center\"}\r\n                                    justifyContent={\"center\"}\r\n                                    height={\"20px\"}\r\n                                    width={\"20px\"}\r\n                                    borderRadius={\"8px\"}\r\n                                    sx={{\r\n                                      cursor: \"pointer\",\r\n                                      transition: \"all 0.3s\",\r\n                                      background: \"#F5F5F5\",\r\n                                      borderRadius: \"12px\",\r\n                                      opacity:\r\n                                        hoveredRowCol.col === colIndex &&\r\n                                        !hoverPlus\r\n                                          ? 1\r\n                                          : 0,\r\n                                    }}\r\n                                    onClick={(e) => {\r\n                                      e.stopPropagation();\r\n                                      if (colIndex > 0) {\r\n                                        const rowKeys = Object.keys(row);\r\n                                        const currKeyIndex =\r\n                                          rowKeys[colIndex - 1];\r\n                                        handleAddColumnAfter(currKeyIndex);\r\n                                      } else {\r\n                                        handleAddColumnAtStart(column);\r\n                                      }\r\n                                    }}\r\n                                  >\r\n                                    <IcPlus2 fill=\"#282828\" />\r\n                                  </Stack>\r\n                                )}\r\n                                <Stack\r\n                                  direction={\"row\"}\r\n                                  alignItems={\"center\"}\r\n                                  justifyContent={\"center\"}\r\n                                  width={\"20px\"}\r\n                                  minHeight={\"25px\"}\r\n                                  borderRadius={\"8px\"}\r\n                                  sx={{\r\n                                    cursor: \"pointer\",\r\n                                    transition: \"all 0.3s\",\r\n                                    background: \"#F5F5F5\",\r\n                                    borderRadius: \"12px\",\r\n                                    transform: \"rotate(90deg)\",\r\n                                    opacity:\r\n                                      hoveredRowCol.col === colIndex ? 1 : 0,\r\n                                  }}\r\n                                  onClick={(e) => {\r\n                                    e.stopPropagation();\r\n                                    setDisableMerge(false);\r\n                                    handleSelectRowCol(\"col\", column);\r\n                                  }}\r\n                                >\r\n                                  <IcMenuDotsVertical\r\n                                    height=\"32\"\r\n                                    width=\"32\"\r\n                                    fill=\"#282828\"\r\n                                  />\r\n                                </Stack>\r\n                                {widthDynamic?.referenceWidth > 30 && (\r\n                                  <Stack\r\n                                    direction={\"row\"}\r\n                                    alignItems={\"center\"}\r\n                                    justifyContent={\"center\"}\r\n                                    height={\"20px\"}\r\n                                    width={\"20px\"}\r\n                                    borderRadius={\"8px\"}\r\n                                    sx={{\r\n                                      cursor: \"pointer\",\r\n                                      transition: \"all 0.3s\",\r\n                                      background: \"#F5F5F5\",\r\n                                      borderRadius: \"12px\",\r\n                                      opacity:\r\n                                        hoveredRowCol.col === colIndex &&\r\n                                        !hoverPlus\r\n                                          ? 1\r\n                                          : 0,\r\n                                    }}\r\n                                    onClick={(e) => {\r\n                                      e.stopPropagation();\r\n                                      handleAddColumnAfter(column);\r\n                                    }}\r\n                                  >\r\n                                    <IcPlus2 fill=\"#282828\" />\r\n                                  </Stack>\r\n                                )}\r\n                              </Stack>\r\n                            )}\r\n                            {(activeCell === cellKey ||\r\n                              multiActiveCells.includes(cellKey)) && (\r\n                              <>\r\n                                <CommonDivider\r\n                                  my=\"0px\"\r\n                                  orientation=\"vertical\"\r\n                                  sx={{\r\n                                    position: \"absolute\",\r\n                                    left: \"-1px\",\r\n                                    top: \"-1px\",\r\n                                    height: \"calc(100% + 2px)\",\r\n                                    backgroundColor: colorsConst?.primaryColor,\r\n                                    borderColor: colorsConst?.primaryColor,\r\n                                    opacity: 1,\r\n                                    zIndex: 10,\r\n                                  }}\r\n                                />\r\n                                <CommonDivider\r\n                                  my=\"0px\"\r\n                                  orientation=\"vertical\"\r\n                                  sx={{\r\n                                    position: \"absolute\",\r\n                                    right: \"-1px\",\r\n                                    top: \"-1px\",\r\n                                    height: \"calc(100% + 2px)\",\r\n                                    backgroundColor: colorsConst?.primaryColor,\r\n                                    borderColor: colorsConst?.primaryColor,\r\n                                    opacity: 1,\r\n                                    zIndex: 10,\r\n                                  }}\r\n                                />\r\n                                <CommonDivider\r\n                                  my=\"0px\"\r\n                                  sx={{\r\n                                    position: \"absolute\",\r\n                                    right: \"-1px\",\r\n                                    top: \"-1px\",\r\n                                    width: \"calc(100% + 2px)\",\r\n                                    backgroundColor: colorsConst?.primaryColor,\r\n                                    borderColor: colorsConst?.primaryColor,\r\n                                    opacity: 1,\r\n                                    zIndex: 10,\r\n                                  }}\r\n                                />\r\n                                <CommonDivider\r\n                                  my=\"0px\"\r\n                                  sx={{\r\n                                    position: \"absolute\",\r\n                                    right: \"-1px\",\r\n                                    bottom: \"-1px\",\r\n                                    width: \"calc(100% + 2px)\",\r\n                                    backgroundColor: colorsConst?.primaryColor,\r\n                                    borderColor: colorsConst?.primaryColor,\r\n                                    opacity: 1,\r\n                                    zIndex: 10,\r\n                                  }}\r\n                                />\r\n                              </>\r\n                            )}\r\n                            <Stack\r\n                              className=\"StickyNoteEditor\"\r\n                              id={`${node?.id}-${cellKey}-${colIndex}-${rowIndex}`}\r\n                              sx={{\r\n                                height: \"100%\",\r\n                                width: \"100%\",\r\n                                justifyContent: row[column]?.justifyContent\r\n                                  ? row[column]?.justifyContent\r\n                                  : \"center\",\r\n                                p: \"5px\",\r\n                                \"& p\": {\r\n                                  margin: \"0px !important\",\r\n                                  // textAlign:\r\n                                  //   row[column]?.align === \"center\"\r\n                                  //     ? \"center\"\r\n                                  //     : \"left\",\r\n                                },\r\n                              }}\r\n                            >\r\n                              <TableInput\r\n                                editorRef={editorRef}\r\n                                row={row}\r\n                                rowIndex={rowIndex}\r\n                                column={column}\r\n                                handleChange={(e) =>\r\n                                  handleChange(e, rowIndex, column)\r\n                                }\r\n                                handleClick={(e) => handleClick(e, row, column)}\r\n                                activeCell={activeCell}\r\n                                cellKey={cellKey}\r\n                                multiActiveCells={multiActiveCells}\r\n                                node={node}\r\n                                getNode={getNode}\r\n                                getNodes={getNodes}\r\n                                setNodes={setNodes}\r\n                                colIndex={colIndex}\r\n                                isCellShow={isCellShow}\r\n                                currentFontFamily={currentFontFamily}\r\n                                focusNodeId={node?.id}\r\n                                location={location}\r\n                                updateJson={updateJson}\r\n                                id={id}\r\n                                dispatch={dispatch}\r\n                                undo={undo}\r\n                                isEditorShow={isEditorShow}\r\n                                setIsEditorShow={setIsEditorShow}\r\n                                setCellEditores={setCellEditores}\r\n                                cellEditors={cellEditors}\r\n                                isCellActive={\r\n                                  activeCell === cellKey ||\r\n                                  multiActiveCells.includes(cellKey)\r\n                                }\r\n                                isPopoverOpen={isPopoverOpen}\r\n                                floatingMenu={floatingMenu}\r\n                                setFloatingMenu={setFloatingMenu}\r\n                                minWidth={row[column]?.width || 100}\r\n                                debouncedUpdateHTML={debouncedUpdateHTML}\r\n                                setTableCells={setTableCells}\r\n                                tableCells={tableCells}\r\n                                setFontFamily={setFontFamily}\r\n                                fontFamilyArr={fontFamilyArr}\r\n                                takeSnapshot={takeSnapshot}\r\n                              />\r\n                            </Stack>\r\n                          </TableCell>\r\n                        );\r\n                      })}\r\n                    </TableRow>\r\n                  );\r\n                })}\r\n              </TableBody>\r\n            </Table>\r\n          </TableContainer>\r\n          {/* </Box> */}\r\n        </Box>\r\n      </Box>\r\n      {node.selected &&\r\n        !node.data.locked &&\r\n        tableType !== \"ERD\" &&\r\n        !showBgColor &&\r\n        !showBorderColor &&\r\n        !showFontFamily &&\r\n        !isResizeRowCol && (\r\n          <NodeToolbar\r\n            isVisible={true}\r\n            position={Position.Bottom}\r\n            align=\"center\"\r\n          >\r\n            <Box\r\n              sx={{\r\n                position: \"absolute\",\r\n                bottom: \"-34px\",\r\n                left: \"50%\",\r\n                transform: \"translate(-50%)\",\r\n                display: \"flex\",\r\n                flexDirection: \"column\",\r\n                justifyContent: \"center\",\r\n                alignItems: \"center\",\r\n                cursor: \"pointer\",\r\n                transition: \"all 0.2s\",\r\n                \"& circle\": {\r\n                  fill: \"#FFFFFF\",\r\n                  stroke: \"#C2C2C2\",\r\n                  transition: \"all 0.2s\",\r\n                },\r\n                \"& path\": {\r\n                  stroke: \"#C2C2C2\",\r\n                  transition: \"all 0.2s\",\r\n                },\r\n                \"&:hover\": {\r\n                  \"& circle\": {\r\n                    fill: colorsConst?.primaryColor,\r\n                    stroke: colorsConst?.primaryColor,\r\n                  },\r\n                  \"& path\": {\r\n                    stroke: \"#FFFFFF\",\r\n                  },\r\n                },\r\n              }}\r\n              onClick={() => {\r\n                handleAddRowBetween(\"after\", tableCells.length - 1);\r\n              }}\r\n            >\r\n              <IcAddRowCol />\r\n            </Box>\r\n          </NodeToolbar>\r\n        )}\r\n      {node?.selected &&\r\n        tableType === \"ERD\" &&\r\n        !isResizing.current &&\r\n        node?.data?.tableData?.tableCells?.map((currRow, ind) => {\r\n          return (\r\n            <Box\r\n              style={{\r\n                background: \"transparent\",\r\n                border: \"none\",\r\n                zIndex: 9999,\r\n                position: \"absolute\",\r\n                transform: `translateY(-50%)`,\r\n                maxWidth: \"100%\",\r\n                maxHeight: \"100%\",\r\n                display: \"flex\",\r\n                justifyContent: \"flex-end\",\r\n                alignItems: \"center\",\r\n                top: `${\r\n                  eachRowHeight / 2 + ind * eachRowHeight + tableHeaderHeight\r\n                }px`,\r\n                right: \"-30px\",\r\n              }}\r\n              onClick={() => handleDeleteRow(ind)}\r\n            >\r\n              <IcDeleteOutlined width=\"20\" height=\"20\" />\r\n            </Box>\r\n          );\r\n        })}\r\n      {date && time && (\r\n        <Popover\r\n          open={Boolean(anchorEl1)}\r\n          anchorEl={anchorEl1}\r\n          id={\"one\"}\r\n          className=\"datepicker\"\r\n          onClose={handleClosePopover1}\r\n          anchorOrigin={{\r\n            vertical: \"bottom\",\r\n            horizontal: \"center\",\r\n          }}\r\n          transformOrigin={{\r\n            vertical: \"top\",\r\n            horizontal: \"center\",\r\n          }}\r\n          sx={{ zIndex: 9999999999 }}\r\n        >\r\n          <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n            <DateTimePicker\r\n              inputRef={DisabledByDefault}\r\n              open={openDatePicker}\r\n              onClose={() => setOpenDatePicker(false)}\r\n              PopperProps={{}}\r\n              onChange={(date) => onChangeDate(date)}\r\n              renderInput={() => null}\r\n            />\r\n          </LocalizationProvider>\r\n        </Popover>\r\n      )}\r\n      {floatingMenu !== null && showLink && (\r\n        <Popover\r\n          open={\r\n            floatingMenu !== null &&\r\n            cellEditors.some(({ editor }) => !editor.state.selection.empty)\r\n          }\r\n          onClose={handleCloseFloatingMenu}\r\n          anchorReference=\"anchorPosition\"\r\n          anchorPosition={\r\n            floatingMenu !== null\r\n              ? { top: floatingMenu.mouseY, left: floatingMenu.mouseX }\r\n              : undefined\r\n          }\r\n          sx={{\r\n            \"& .MuiPaper-root\": {\r\n              p: \"10px\",\r\n              boxShadow: \"none\",\r\n              bgcolor: \"transparent\",\r\n              height: \"auto\",\r\n              overflow: \"visible\",\r\n            },\r\n          }}\r\n        >\r\n          <>\r\n            <div>\r\n              {\" \"}\r\n              <LinkTool\r\n                onChange={(e) => setLinkText(e?.target?.value)}\r\n                value={linkText}\r\n                placeholder=\"Paste/enter links\"\r\n                onKeyPress={(e) => {\r\n                  if (e.key === \"Enter\") {\r\n                    let coppiedTableCells = structuredClone(tableCells);\r\n                    cellEditors.forEach(({ editor, rowIndex, column }) => {\r\n                      if (editor.state.selection.empty) {\r\n                        editor\r\n                          .chain()\r\n                          .focus()\r\n                          .selectAll()\r\n                          .setLink({\r\n                            href: linkText,\r\n                            target: \"_blank\",\r\n                          })\r\n                          .run();\r\n                      } else {\r\n                        editor\r\n                          .chain()\r\n                          .focus()\r\n                          .setLink({\r\n                            href: linkText,\r\n                            target: \"_blank\",\r\n                          })\r\n                          .run();\r\n                      }\r\n                      coppiedTableCells[rowIndex][column] = {\r\n                        ...coppiedTableCells[rowIndex][column],\r\n                        editorHTML: editor?.getHTML(),\r\n                      };\r\n                    });\r\n                    // setFontSize(val);\r\n                    setShowFontSizeOpt(false);\r\n                    debouncedUpdateHTML(coppiedTableCells);\r\n\r\n                    setLinkText(\"\");\r\n                    setFloatingMenu(null);\r\n                    setShowLink(false);\r\n                  }\r\n                }}\r\n              />\r\n            </div>\r\n          </>\r\n        </Popover>\r\n      )}\r\n\r\n      <Popover\r\n        open={\r\n          isPopoverOpen &&\r\n          Boolean(anchorEl) &&\r\n          cellEditors.map((val) => val?.editor)?.length === 1\r\n        }\r\n        anchorEl={anchorEl}\r\n        onClose={handlePopoverClose}\r\n        anchorOrigin={{\r\n          vertical: \"bottom\",\r\n          horizontal: \"right\",\r\n        }}\r\n        BackdropProps={{\r\n          style: { backgroundColor: \"transparent\" },\r\n          onClick: () => setAnchorEl(null),\r\n        }}\r\n        transformOrigin={{\r\n          vertical: \"top\",\r\n          horizontal: \"right\",\r\n        }}\r\n        sx={{\r\n          \"& .MuiPaper-root\": {\r\n            p: \"10px\",\r\n            ml: \"80px\",\r\n            mt: moreOption ? \"0px\" : \"-30px\",\r\n            boxShadow: \"none\",\r\n            bgcolor: \"transparent\",\r\n          },\r\n        }}\r\n      >\r\n        <>\r\n          <Stack\r\n            sx={{\r\n              boxShadow: \"0px 2px 8px 0px #030B160D\",\r\n              border: \"1px solid #EFF0F3\",\r\n              display: \"flex\",\r\n              flexDirection: \"column\",\r\n              bgcolor: \"#FFF\",\r\n              borderRadius: \"10px\",\r\n              p: \"10px\",\r\n              gap: \"2px\",\r\n              minWidth: \"150px\",\r\n            }}\r\n          >\r\n            <Stack\r\n              direction={\"row\"}\r\n              alignItems={\"center\"}\r\n              justifyContent={\"flex-start\"}\r\n              gap={\"8px\"}\r\n              height={\"34px\"}\r\n              px={\"8px\"}\r\n              sx={{\r\n                // bgcolor:\r\n                //   disable !== true ? \"transparent\" : \"#F5F5F5\",\r\n                borderRadius: \"8px\",\r\n                transition: \"all 0.3s ease\",\r\n                cursor: \"pointer\",\r\n                \"&:hover\": {\r\n                  bgcolor: \"#F5F5F5\",\r\n                },\r\n              }}\r\n              onClick={() => {\r\n                const editorHTML =\r\n                  tableCells?.[row?.row]?.[columnPop]?.editorHTML || \"\";\r\n                setCopyContent([\r\n                  {\r\n                    editor: cellEditors\r\n                      ?.map((val) => val.editor)\r\n                      ?.find((val) => val),\r\n                    rowIndex: row?.row,\r\n                    column: columnPop,\r\n                    editorHTML: editorHTML,\r\n                    height: tableCells?.[row?.row]?.[columnPop]?.height,\r\n                    backgroundColor:\r\n                      tableCells?.[row?.row]?.[columnPop]?.backgroundColor ||\r\n                      \"\",\r\n                  },\r\n                ]);\r\n                setIsPopoverOpen(false);\r\n              }}\r\n            >\r\n              <Typography\r\n                fontSize={14}\r\n                // color={disable !== true ? \"#282828\" : \"#84838280\"}\r\n                height={\"18px\"}\r\n              >\r\n                {\"Copy\"}\r\n              </Typography>\r\n            </Stack>\r\n            <Stack\r\n              direction={\"row\"}\r\n              alignItems={\"center\"}\r\n              justifyContent={\"flex-start\"}\r\n              gap={\"8px\"}\r\n              height={\"34px\"}\r\n              px={\"8px\"}\r\n              sx={{\r\n                // bgcolor:\r\n                //   disable !== true ? \"transparent\" : \"#F5F5F5\",\r\n                borderRadius: \"8px\",\r\n                transition: \"all 0.3s ease\",\r\n                cursor: \"pointer\",\r\n                \"&:hover\": {\r\n                  bgcolor: \"#F5F5F5\",\r\n                },\r\n              }}\r\n              onClick={() => {\r\n                if (copyContent?.map((val) => val.editor)?.find((val) => val)) {\r\n                  setCellEditores([\r\n                    {\r\n                      editor: copyContent\r\n                        ?.map((val) => val.editor)\r\n                        ?.find((val) => val),\r\n                      rowIndex: row?.row,\r\n                      column: columnPop,\r\n                    },\r\n                  ]);\r\n                  let coppiedTableCells = structuredClone(tableCells);\r\n                  cellEditors.forEach(({ editor, rowIndex, column }) => {\r\n                    if (editor.state.selection.empty) {\r\n                      editor.commands.setContent(\r\n                        copyContent\r\n                          ?.map((val) => val.editorHTML)\r\n                          ?.find((val) => val)\r\n                      );\r\n                    } else {\r\n                      editor.commands.setContent(\r\n                        copyContent\r\n                          ?.map((val) => val.editorHTML)\r\n                          ?.find((val) => val)\r\n                      );\r\n                    }\r\n                    coppiedTableCells[rowIndex][column] = {\r\n                      ...coppiedTableCells[rowIndex][column],\r\n                      editorHTML: editor?.getHTML(),\r\n                    };\r\n                  });\r\n                  // setFontSize(val);\r\n                  setShowFontSizeOpt(false);\r\n                  debouncedUpdateHTML(coppiedTableCells);\r\n                  setTableCells((prevTableCells) => {\r\n                    const updatedTableCells = [...prevTableCells];\r\n                    const updatedRow = { ...updatedTableCells[row?.row] };\r\n\r\n                    updatedRow[columnPop] = {\r\n                      ...updatedRow[columnPop],\r\n                      editorHTML: copyContent\r\n                        ?.map((val) => val.editorHTML)\r\n                        ?.find((val) => val),\r\n                      backgroundColor: copyContent\r\n                        ?.map((val) => val.backgroundColor)\r\n                        ?.find((val) => val),\r\n                      height: copyContent\r\n                        ?.map((val) => val.height)\r\n                        ?.find((val) => val),\r\n                    };\r\n\r\n                    updatedTableCells[row?.row] = updatedRow;\r\n\r\n                    return updatedTableCells;\r\n                  });\r\n\r\n                  setIsPopoverOpen(false);\r\n                  handleChangeDynamic();\r\n                }\r\n              }}\r\n            >\r\n              <Typography\r\n                fontSize={14}\r\n                // color={disable !== true ? \"#282828\" : \"#84838280\"}\r\n                height={\"18px\"}\r\n              >\r\n                {\"Paste\"}\r\n              </Typography>\r\n            </Stack>\r\n            <Stack\r\n              direction={\"row\"}\r\n              alignItems={\"center\"}\r\n              justifyContent={\"flex-start\"}\r\n              gap={\"8px\"}\r\n              height={\"34px\"}\r\n              px={\"8px\"}\r\n              sx={{\r\n                // bgcolor:\r\n                //   disable !== true ? \"transparent\" : \"#F5F5F5\",\r\n                borderRadius: \"8px\",\r\n                transition: \"all 0.3s ease\",\r\n                cursor: \"pointer\",\r\n                \"&:hover\": {\r\n                  bgcolor: \"#F5F5F5\",\r\n                },\r\n              }}\r\n              onClick={() => {\r\n                handleDelete();\r\n              }}\r\n            >\r\n              <Typography\r\n                fontSize={14}\r\n                // color={disable !== true ? \"#282828\" : \"#84838280\"}\r\n                height={\"18px\"}\r\n              >\r\n                {\"Remove Row\"}\r\n              </Typography>\r\n            </Stack>\r\n            <Stack\r\n              direction={\"row\"}\r\n              alignItems={\"center\"}\r\n              justifyContent={\"flex-start\"}\r\n              gap={\"8px\"}\r\n              height={\"34px\"}\r\n              px={\"8px\"}\r\n              sx={{\r\n                // bgcolor:\r\n                //   disable !== true ? \"transparent\" : \"#F5F5F5\",\r\n                borderRadius: \"8px\",\r\n                transition: \"all 0.3s ease\",\r\n                cursor: \"pointer\",\r\n                \"&:hover\": {\r\n                  bgcolor: \"#F5F5F5\",\r\n                },\r\n              }}\r\n              onClick={() => {\r\n                handleColumDelete();\r\n              }}\r\n            >\r\n              <Typography\r\n                fontSize={14}\r\n                // color={disable !== true ? \"#282828\" : \"#84838280\"}\r\n                height={\"18px\"}\r\n              >\r\n                {\"Remove Coloum\"}\r\n              </Typography>\r\n            </Stack>\r\n          </Stack>\r\n        </>\r\n      </Popover>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default memo(TableNode, (prevProps, nextProps) => {\r\n  return prevProps.data.globalDragging && nextProps.data.globalDragging;\r\n});\r\n"],"names":["fontSizeArr","computeNewRow","row","rIdx","column","editorHTML","editorHeight","multiActiveCells","isVertical","_row$column","_row$column2","_row$column3","_row$column4","cellKey","concat","includes","_objectSpread","width","Math","max","height","TableNode","node","_firstRowRef$current2","_tableHeaderRef$curre2","_node$data","_node$data4","_node$data4$tableData","_currentNode$data","_currentNode$data$tab","_currentNode$data2","_currentNode$data2$ta","_currentNode$data3","_currentNode$data3$ta","_currentNode$style","_currentNode$style2","_node$data26","_node$data28","_node$data29","_node$data30","_node$data30$tableDat","_node$data31","_node$data31$tableSty","_cellEditors$map","_node$data33","_node$data34","_cellEditors$map2","_node$data35","_node$data35$tableDat","_node$data35$tableDat2","_node$data38","_node$data38$tableDat","_node$data39","_node$data39$tableDat","_node$data40","_node$data40$tableDat","_node$data41","_node$data41$tableDat","_node$data42","_node$data42$tableDat","_node$data43","_node$data43$tableDat","_node$data44","_node$data44$tableDat","_node$data45","_node$data45$tableDat","_node$data46","_node$data46$tableDat","_node$data47","_node$data47$tableDat","_node$data48","_node$data48$tableDat","_node$data52","_node$data52$tableDat","_node$data52$tableDat2","_cellEditors$map3","updateNodeInternals","useUpdateNodeInternals","user_data","localStorage","getItem","socket","useSocketContext","userRowData","userData","JSON","parse","isEditorShow","setIsEditorShow","useState","hoverPlus","setHoverPlus","cellEditors","setCellEditores","setRow","showExport","copyAsImage","isDownload","useSelector","state","mindMapStore","isNodeSelectionStarted","useNodeSelectionStarted","selected","zoomLevel","useStore","s","round","transform","mainZoomPercentages","floor","columnPop","setColumnPop","selectedCell","setSelectedCell","showBgColor","setShowBgColor","showBorderColor","setShowBorderColor","showTextColor","setShowTextColor","showLink","setShowLink","showAlignment","setShowAlignment","showTextDecoration","setShowTextDecoration","openDatePicker","setOpenDatePicker","anchorEl1","setAnchorEl1","date","setDate","time","setTime","setNodes","getNode","getNodes","useReactFlow","nodes","isResizeRowCol","setIsResizeRowCol","currentNode","id","activeCell","setActiveCell","isCellShow","setIsCellShow","activeCellData","setActiveCellData","linkText","setLinkText","zoomPercentages","setZoomPercentages","showDots","setShowDots","hoveredItem","setHoveredItem","showTableMoreOptions","setShowTableMoreOptions","showTableVariations","setShowTableVariations","tableCells","setTableCells","customBgOpen","setCustomBgOpen","isInputFocused","setIsInputFocused","setMultiActiveCells","hoveredRowCol","setHoveredRowCol","col","rowDelete","setRowDelete","color","setColor","moreOption","setMoreOption","location","useLocation","useParams","dispatch","useDispatch","undo","takeSnapshot","useUndoRedo","resizingRef","useRef","clickTimeout1","mainRef","isResizing","inputSpanRef","inputRef","editorRef","firstRowRef","keyRef","tableHeaderRef","eachRowHeight","useMemo","_firstRowRef$current","current","offsetHeight","tableHeaderHeight","_tableHeaderRef$curre","simpleRef","tableType","data","type","singleRow","singleColumn","selectedCellsKey","rows","columns","forEach","key","split","push","every","checkSingleRowOrColumn","timeoutRef","updateEdgeHandles","clearTimeout","setTimeout","useEffect","backgroundColor","setShowFontFamily","setShowFontSizeOpt","updateNodeJson","updatedData","_parsedData","parsedData","updatedNode","updatedNodes","nds","setItem","stringify","architecture_json","lastEvent","map","n","a_id","URLSearchParams","search","get","updateJson","json","lastUpdatedBy","user_id","tableRef","debouncedUpdateHTML","debounce","newRows","totalHeight","reduce","Object","values","cell","nd","tableData","style","_node$data2","_node$data2$tableData","_node$data3","_node$data3$tableData","handleFontSizeChange","action","currentSize","parseInt","fontSize","newSize","updateFontSize","size","coppiedTableCells","structuredClone","_ref","editor","rowIndex","selection","empty","chain","focus","selectAll","setFontSize","run","getHTML","debouncedHandleChange","async","_parsedData2","isNodeSelected","filter","floatingMenu","setFloatingMenu","zoom","_state$transform","sizeAsPerZoom","isWidthLessthan50","onChangeDate","value","_node$data7","_node$data7$tableData","_node$data7$tableData2","formattedDate","dayjs","format","formattedTime","formattedDateTime","columnIndex","showFontSizeOpt","showFontFamily","fontFamily","setFontFamily","overflow","position","currentBorderColor","borderColor","currentFontSize","currentFontFamily","widthDynamic","index","length","_data$0$key","referenceWidth","allMatch","record","_record$key","checkWidthsByIndex","heightDynamic","referenceRecord","heights","field","checkHeightsByIndex","onResizeStart","onResize","_mainRef$current","_mainRef$current2","newNodeWidth","Number","offsetWidth","newNodeHeight","oldNodeHeight","oldNodeWidth","heightDiff","widthDiff","updatedTableCells","fromEntries","entries","_ref2","oldHeight","oldWidth","proportionalHeightIncrease","proportionalWidthIncrease","newHeight","newWidth","onResizeEnd","event","_parsedData4","prev","_","_mainRef$current3","_mainRef$current4","_ref3","removeBgFromCell","i","updatedRow","keys","tableVariants","label","Icon","IcTableVariant1","onClick","variant","tableStyle","headerColor","evenRowColor","IcTableVariant3","colorsConst","primaryColor","IcTableVariant4","IcTableVariant7","IcTableVariant8","tabeleVariationsTypesRef","backgroundPopupRef","borderPopupRef","fontFamilyPopupRef","fontSizePopupRef","textDecorationPopupRef","alignmentPopupRef","textColorPopupRef","moreOptionsPopupRef","anchorEl","setAnchorEl","handleClickOutside","_event$target$classLi","_event$target$classLi2","contains","target","classList","document","addEventListener","removeEventListener","handleChangeCellOnTab","e","colIndex","_node$data16","_node$data16$tableDat","_node$data16$tableDat2","newCell","stopPropagation","totalRows","totalCols","shiftKey","_node$data17","_node$data17$tableDat","prevRowIndex","prevRow","lastColKey","slice","prevColKey","_node$data18","_node$data18$tableDat","nextRowIndex","nextRow","firstColKey","nextColKey","_node$data19","_node$data19$tableDat","prevCellKey","_node$data20","_node$data20$tableDat","prevCells","Set","input","getElementById","handleFocusInput","handleClickOutsideTable","window","getSelection","removeAllRanges","_mainRef$current5","_node$data21","_node$data21$tableDat","click","on","socketEvents","NODE_UPDATED","_jsonData$nodes","jsonData","find","val","_currentNode$data4","_currentNode$data4$ta","clickTimeout","setClickTimeout","copyContent","setCopyContent","toggleMultipleActiveCells","_Object$keys","setDisableMerge","firstRecord","prevKey","expectedState","checkValues","allSameState","startsWith","firstRecordKeys","rowSpanCount","rowSpan","colSpanCheck","checkColspanInDynamicKeys","dynamicKey","colSpan","missingCharcter","keysArray","suffixNumbers","substring","minNumber","min","maxNumber","Array","from","num","checkState","rowSpanCheck","checkRowspanInFirstRecord","ctrlKey","metaKey","disableMerge","handleSelectRowCol","selectedCellKeys","ck","arrayLength","hasMatchingRowSpan","some","obj","selectableCellsKey","hasSingleKeyObject","handleChangeMultiCellStyle","activeCellKey","rowI","checkAllSelectedCellHasKey","useCallback","keyName","arguments","undefined","hasKey","hasSameValue","selectedCellData","multiCellTextColor","isEntireRowOrCol","isSingleRow","isSingleColumn","selectedCells","cols","checkSingleRowOrColumn2","colSpanCount","cellK","_tableCells$rowIndex$","_tableCells$rowIndex$2","maxLength","keysLength","isEntireRowSelected","isEntireColumnSelected","_tableCells$i$cellKey","_tableCells$i$cellKey3","_tableCells$i$cellKey2","_tableCells$i$cellKey4","handleClickDeleteRowCol","_JSON$parse2","removedRow","maxHeight","_n$data2","minHeight","tableCellInfo","parentNode","y","_n$data3","_JSON$parse","should_delete","newRow","removedCol","maxWidth","_n$data4","minWidth","x","_n$data5","console","log","setIsInputVisible","handleAddColumnAfter","colKey","_parsedData5","hasColSpan","tableHasRowColSpan","hasRowSpan","_row$cellKey","_row$cellKey2","updatedCellData","_node$data24","_node$data24$tableDat","_node$data25","_node$data25$tableDat","rowHasColSpan","colSpanColKeys","_row$key","currentKey","_row$currentKey11","_row$currentKey12","text","_row$currentKey6","_row$currentKey7","_row$currentKey8","_row$currentKey9","_row$currentKey10","previousEditorHTML","defaultText","doc","DOMParser","parseFromString","updateTextRecursively","element","nodeType","Node","ELEMENT_NODE","childNodes","child","TEXT_NODE","textContent","body","updatedHTML","innerHTML","lastColSpan","object","startKey","startKeyIndex","replace","nearestColSpanKey","_object$key","currKeyIndex","nearKeyIndex","findLatestColSpanKey","_updatedRow$lastColSp","_row$currentKey","_row$currentKey2","_row$currentKey3","_row$currentKey4","_row$currentKey5","newKey","maxCellsRow","maxRow","currentRow","totalWidth","sum","maxColumnWidth","_row$cellKey3","_n$data6","_n$data6$tableData","_n$data7","updatedHeaders","headers","rowsAndCols","isPopoverOpen","setIsPopoverOpen","maxRowLength","perv","handleAddRowBetween","place","_parsedData7","insertIndex","flatMap","newRowData","_row$key2","_row$key3","_row$key4","_row$key5","refCellData","updatedTableData","previousRow","splice","_n$data10","debouncedSearch","_parsedData8","handleResizeStartCol","columnKey","startX","clientX","initialColumnWidths","diffX","columnKeys","currentColumnIndex","indexOf","nextColumnKeys","initialChildPositions","_n$data12","tableCellKey","acc","_row$key7","positionX","findCellHorizontalPosition","_row$key6","_n$data13","childNodePositions","_child$positionAbsolu","positionAbsolute","xPos","maxChildRelativeX","maxChildWidth","handleMouseMoveCol","moveEvent","_n$data14","handleMouseUp","_n$data15","_updatedTableCells","_row$cellKey5","debouncedUpdateNodeHeightForRow","isInputVisible","_jsxs","_Fragment","children","_jsx","NodeToolbar","isVisible","Position","Top","align","left","top","Stack","sx","flex","alignItems","justifyContent","direction","px","borderRadius","background","border","outline","whiteSpace","textOverflow","TextField","tableName","ref","autoFocus","autoComplete","onFocus","onBlur","onChange","selectionStart","selectionEnd","clickPosition","nativeEvent","offsetX","scrollWidth","cursorIndex","setSelectionRange","onDoubleClick","padding","fontWeight","resize","_node$data27","locked","cursor","visibility","dragging","Box","display","flexDirection","gap","boxShadow","zIndex","CustomNameTooltip","placement","title","arrow","CustomTooltip","mt","PopperProps","disablePortal","onClose","open","disableFocusListener","disableHoverListener","disableTouchListener","p","Typography","flexWrap","transition","pl","pr","IcTableOutlined","fill","IcArrowDown2","IconButton","bgcolor","lastCellKey","IcAddCol","IcAddRow","pointerEvents","handleMergeCells","_sortedCells$","_node$data22","sortedCells","sort","a","b","rowA","colA","rowB","colB","rowComparison","localeCompare","updatedCellsData","copyRow","_updatedCellData$text","_updatedCellData$text2","trim","textAdded","_copyRow$cellK","_copyRow$cellK$text","_copyRow$cellK$text$t","_copyRow$cellK2","_updatedCellData$text3","_updatedCellData$text4","_tableCells$row$col","_nextText$trim","nextText","disabled","IcMergeCellOutlined","handleUnMergeCells","_multiActiveCells$","_node$data23","cellData","cellToAdd","addedKey","keyAlpha","keyNum","sortedEntries","_ref4","_ref5","keyA","keyB","_ref6","_ref7","rowCellToAdd","_ref8","_ref9","_ref10","_ref11","IcUnMergeCellOutlined","ClickAwayListener","onClickAway","BackgroundTool","colorHeading","selectedNodeColor","onChangeColor","secondaryColor","commanService","resourceColor","updatedObject","_node$data15","updateHeaderStyle","isBoolean","splittedVal","_node$data8","_node$data8$tableData","_node$data8$tableData2","item","updatedItem","currKey","_item$currKey","_item$currKey$splitte","_node$data9","_node$data10","_node$data11","convertToRgba","_node$data12","_node$data12$tableDat","_node$data12$tableDat2","_row$splittedVal$","_node$data13","_node$data14","_node$data14$tableDat","_node$data14$tableDat2","headerIndex","ind","ToolTipWithDisabled","tooltipTitle","IcChangeBg","BorderTool","showOnlyBorderColor","onBorderColorChange","_node$data32","IcChangeBorder","onMouseLeave","onWheelCapture","fontFamilyArr","family","name","_ref12","CheckCircleOutlineIcon","textAlign","_ref13","toString","marginTop","IcDecresFontSize","IcIncreseFontSize","copiedTableCells","_ref14","toggleBold","IcTextBold","_ref15","toggleItalic","IcTextItalic","_ref16","toggleUnderline","IcTextUnderline","_ref17","toggleStrike","IcTextStrickTrough","IcChangeStyle","_ref18","setTextAlign","IcTextAlignLeft","_ref19","IcTextAlignCenter","_ref20","IcTextAlignRight","CommonDivider","my","IcTextAlignItemTop","IcTextAlignItemCenter","IcTextAlignItemBottom","toRgba","textColor","_ref21","IcTextColor","IcLinkOutlined3","IcDeleteOutlined","toggleLockedTabel","IcLockLocked","IcLockUnLocked","FrameMoreMenus","showDuplicate","showCopyAsImage","showAddComment","showLockUnlock","showCopyLink","showLinkTo","showDelete","showFrame","showDeleteColumn","showDeleteRow","exportShow","setShowFrameMoreOptions","showBringToFrontAndBack","showRename","handleClickRename","select","IcMenuDotsVertical","currentTarget","onContextMenu","preventDefault","onMouseEnter","onMouseDownCapture","Right","right","stroke","IcAddRowCol","Handle","connectionMode","isConnectable","className","transitionDuration","transformOrigin","onMouseOver","onConnect","params","currRow","_node$data36","_node$data37","Fragment","isGroupHead","NodeResizeControl","keepAspectRatio","TableContainer","Table","TableBody","_Object$keys2","maxCellHeight","TableRow","bottom","onMouseOverCapture","opacity","IcPlus2","_row$column7","_row$column8","_currentNode$data5","_currentNode$data5$ta","_row$column9","_row$column10","_node$data49","_node$data49$tableDat","_node$data49$tableDat2","_row$column11","_row$column12","_row$column12$fontFam","_row$column13","_row$column14","_row$column15","_row$column16","_row$column17","_row$column18","_row$column22","_row$column23","_row$column24","TableCell","borderWidth","borderBottom","borderTop","tabIndex","onKeyDown","_ref22","isFocused","_ref23","content","getText","newContent","commands","setContent","test","editorContents","_ref25","navigator","clipboard","writeText","_node$data50","_node$data50$tableDat","_parsedData10","clipboardData","read","types","textBlob","getType","copiedCells","error","columnLetterMatch","match","columnNumberMatch","columnLetter","columnNumber","newColumnKeys","newColumnKey","cellContent","targetRowIndex","targetColumn","_row$cellKey6","_n$data16","err","_ref24","insertContent","_node$data51","_ref26","multipleActiveCells","parseCellKey","colLetter","colNumber","getColumnIndex","letter","charCodeAt","startRow","startColLetter","startColNumber","endRow","endColLetter","endColNumber","newSelection","startColIndex","endColIndex","colNum","String","fromCharCode","cellId","_row$column19","_row$column20","_row$column21","handleResizeStartRow","startY","clientY","initialRowHeights","_tableCells$rowIndex$3","handleMouseMoveRow","diffY","_n$data11","_parsedData6","_updatedRowData$rowKe","updatedRowData","rowKeys","_updatedRowData$rowKe2","lastColKeyNum","_row$cellKey4","_n$data8","_n$data8$tableData","_n$data9","handleAddColumnAtStart","orientation","margin","TableInput","handleChange","_node$data5","_node$data5$tableData","_node$data5$tableData2","_getNodes","handleClick","timeout","_row$column5","_row$column6","focusNodeId","isCellActive","Bottom","_node$data6","_node$data6$tableData","_d","_parsedData3","d","_n$data","handleDeleteRow","Popover","Boolean","handleClosePopover1","anchorOrigin","vertical","horizontal","LocalizationProvider","dateAdapter","AdapterDayjs","DateTimePicker","DisabledByDefault","renderInput","_ref27","handleCloseFloatingMenu","anchorReference","anchorPosition","mouseY","mouseX","LinkTool","_e$target","placeholder","onKeyPress","_ref28","setLink","href","handlePopoverClose","BackdropProps","ml","_tableCells$row$row","_tableCells$row$row$c","_cellEditors$map4","_tableCells$row$row2","_tableCells$row$row2$","_tableCells$row$row3","_tableCells$row$row3$","_copyContent$map","_copyContent$map2","_ref29","_copyContent$map3","_copyContent$map4","prevTableCells","_copyContent$map5","_copyContent$map6","_copyContent$map7","_tableRef$current","_tableRef$current2","_tableRef$current3","_tableRef$current4","_tableRef$current5","_tableRef$current6","_tableRef$current7","_tableRef$current8","handleDelete","_parsedData9","handleColumDelete","memo","prevProps","nextProps","globalDragging"],"sourceRoot":""}