{"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":""}